SATA Диски, які керують кешуванням записів належним чином?


15

Досить часто бачити поради щодо відключення кешу запису на окремих дисках, що використовуються для баз даних, оскільки в іншому випадку деякі диски визнають записи, які ще не внесли його на поверхню диска.

Це означає, що деякі диски не розпізнають записи, поки вони не внесли її на поверхню диска (Оновлення: або що вони точно повідомляють, коли їх просять очистити кеш. Де я можу знайти такі диски або де можна шукати достовірну інформацію де знайти такі диски?

Я налаштовую деякі сервери БД, які справді отримали б користь від використання кешування керування записом, але додаток є чутливим до ціни, і я вважаю за краще не вдвічі перевищувати вартість моєї дискової підсистеми на кешування RAID-контролера, оскільки мені не вистачає інформації, щоб знаю, чи можу я довіряти кеш у кожному диску.


linux дозволяє відключити кеш запису на диску на основі накопичувача через hdparam. Що стосується накопичувачів SATA, я вважаю, що це має бути сценарієм для повторного застосування при кожному перезапуску. Я можу піти таким шляхом, якщо все-таки вдасться виконати наші вимоги до персоналу, не використовуючи контролер рейду, що підтримується батареєю. Я вважаю за краще використовувати програмний RAID, коли це можливо, оскільки його простіше і дешевше. У будь-якому випадку, я обов'язково матиму ДБЖ.
eas

Відповіді:


15

Взагалі кажучи, в прямій відповіді на ваше запитання я не знаю жодних основних марок накопичувачів SATA, які б у самому диску були помилками щодо правильної роботи з увімкненим кешуванням записів. Тобто, лише з точки зору диска, привід робить те, що повинен робити з точки зору кешування. Я хотів би також відзначити , що навіть якщо кешування запису буде включена, що затримка з диска записи на кабель SATA до обертовим ЗМІ фізично оновлюваних досі дуже мало (~ 50 до 100 мс типово). Це не так, як брудні дані кешу будуть просто сидіти там секунди за один раз ..... накопичувач постійно намагається отримати брудні дані з кешуна фізичні носії, як тільки це можливо. Це не лише питання безпеки даних, але й готовність приймати майбутні записи без будь-якої затримки (тобто: писати публікацію).

Проблема, яка виникає при ввімкненому кешуванні, полягає в тому, що порядок запису на накопичувач через кабель SATA та порядок запису на обертовий носій неоднакові. Це ніколи не може спричинити проблеми, БІЛЬШЕ у вас є втрата живлення або збій системи, перш ніж весь вміст кешу перетворить його на диск. Чому? ->

Проблема, яка може виникнути тут, стосується стійкості транзакцій файлової системи та / або вмісту файлу бази даних до цих втрачених записів. Фактично, ті, що потенційно втрачені з ладу записи, теоретично можуть пошкодити цілісність логіки транзакцій, яка б інакше була гарантована записом диска, що відбувається в дуже специфічному порядку для засобів масової інформації.

Тепер, звичайно, розробники файлової системи, баз даних, контролери RAID тощо знають (або, безумовно, повинні знати) цього явища щодо кешування записів. Кешування запису є надзвичайно бажаним з точки зору продуктивності у більшості сценаріїв вводу / виводу типу випадкового доступу. Насправді, доступне кешування записів є ключовим елементом можливості мати будь-яку реальну користь для більш просунутого черги Native Command ( NCQ)), що підтримується на новіших SATA та останніх кількох поколіннях впровадження PATA. Таким чином, щоб гарантувати порядок у фізичних носіях у такі певні критичні моменти, файлова система та / або додаток тощо можуть спеціально вимагати перемивання кеш-записів на носій. Після завершення цього запиту на синхронізацію - все, що очікує на (потенційно) буфери файлів, кешування диска ОС, кешування фізичного диска і т. Д., Насправді виводиться на носії відповідно до розробки системи транзакцій при правильних критичних операціях. Тобто це відбувається правильно, якщо програмісти здійснюють правильний дзвінок у верхній частині І кожен елемент цього ланцюга програмних та апаратних шарів зробив свою роботу правильно. тобто: У цьому плані немає помилок на диску, контролерах RAID, драйверах дисків, кешах ОС, файловій системі, двигуні бази даних тощо. Це велика кількість програмного забезпечення, яке має працювати правильно. Крім того, перевірити правильність у цьому плані дуже складно, оскільки майже в будь-якій ситуації зазвичай запис на замовлення зовсім не має значення .... а сценарії відключення електроенергії та збоїв є складними тестами. Отже, врешті-решт "вимкнення кешування запису" на одному або декількох різних шарах та / або значеннях цього терміна .... має репутацію "виправлення" певних питань. Фактично, вимкнення поведінки кешування запису контролера RAID або кеш-дисків ОС, або Диска тощо, дозволяє уникнути однієї або декількох помилок у системі ..... та джерела подібних джерел. а сценарії відключення електроенергії та аварії - важкі випробування. Отже, врешті-решт "вимкнення кешування запису" на одному або декількох різних шарах та / або значеннях цього терміна .... має репутацію "виправлення" певних питань. Фактично, вимкнення поведінки кешування запису контролера RAID або кеш-дисків ОС, або Диска тощо, дозволяє уникнути однієї або декількох помилок у системі ..... та джерела подібних джерел. а сценарії відключення електроенергії та аварії - важкі випробування. Отже, врешті-решт "вимкнення кешування запису" на одному або декількох різних шарах та / або значеннях цього терміна .... має репутацію "виправлення" певних питань. Фактично, вимкнення поведінки кешування запису контролера RAID або кеш-дисків ОС, або Диска тощо, дозволяє уникнути однієї або декількох помилок у системі ..... та джерела подібних джерел.

Як би там не було, повертаючись до основи питання: У розділі SATA специфічна обробка всіх команд читання / запису диска та команд кешу флеш добре визначена специфікаціями SATA . Крім того, виробники приводів повинні мати детальну документацію для кожної моделі приводів або сімейства приводів, що описують їх реалізацію та відповідність цим правилам, як цей приклад для приводів Searac Barracuda . Зокрема, перегляньте деталі ОСОБЛИВОСТІ SATA SETДля відключення кешування диска на рівні диска можна використовувати команду, яка керує робочим режимом диска, а конкретно опцію 82h, тому що за замовчуванням кеш запису записаний на всіх дисках, про які я знаю. Якщо ви дійсно хотіли відключити кеш, цю команду потрібно виконати на початку кожного скидання диска або його включення, і, як правило, знаходиться під контролем драйверів дисків для вашої операційної системи. Можливо, ви зможете заохотити драйвер ОС встановити цей режим за допомогою типу IOCTL та / або налаштування реєстру, але це дуже різниться.


5
Одна редакційна примітка до моєї відповіді: Апаратні RAID-контролери помітно баггі щодо багатьох питань, включаючи проблеми, пов'язані з їх внутрішньою реалізацією кешування записів. Я поняття не маю, чому, але анекдотично кажучи, RAID-контролери, здається, є одним із найпотужніших програм, що коли-небудь написані в плані чогось такого широкого застосування. Звичайно, варто використовувати дуже основне, добре встановлене та широко розгорнене обладнання RAID від дуже авторитетних постачальників ... і навіть тоді патчі на нетривіальні проблеми здаються занадто частими!
Високий Джефф

Спасибі Джеффу. Я багато читав про це, і я майже так само розгублений, як і коли-небудь. Я думаю, що проблема, з якою я зараз стикаюся, стосується "бар'єрів для запису", які дозволяють програмам та файловим системам доручити блоковому шару гарантувати належне впорядкування запису за допомогою різних доступних механізмів. На жаль, з реалізацією бар'єрів виникають всілякі проблеми. З іншого боку, LVM, очевидно, не підтримує їх, навіть якщо базові пристрої це роблять. Крім того, мені здається, що у sysadmins має бути можливість мати функцію fsync примикати кеш накопичувача
eas

@eas - Термін "бар'єри для запису", на який ви посилаєтесь, я вважаю, що це той самий основний механізм, який я назвав "синхронізацією" або "змиванням" кешів у своїй відповіді вище. На ваш погляд, це може ініціюватися на різних шарах у файлі "стек". Щоб побудувати справжній бар'єр для запису, він повинен впливати на всі шари, які мають очікувані дані запису (тобто брудні кеші або буфери для зворотного запису) до фізичних носіїв, щоб фактично працювати за призначенням. Будь-яке відключене посилання в цьому ланцюжку - це те, що створює потенційні проблеми, коли записи впорядковані.
Високий Джефф

Диски можуть затримати запис на носії на кілька секунд, звичайно, якщо є багато інших записів, які переповнюють кеш диска, це змусить записувати носій. NCQ суворо не потребує кеш запису, він все ще може мати багато команд запису та читання в очікуванні та видавати їх у тому порядку, на який диск вважає, що отримає найкращу ефективність, також для NCQ немає сенсу для порядку запису, який робить файлові системи та бази даних повинні використовувати бар'єри вводу-виводу.
Барух Навіть

3

Мій досвід, коли контролер кешованого диска, керований акумулятором, відключить кеш-накопичувач. Я не знаю, як іншим способом відключити кеш диска. Навіть якщо ви могли б відключити кеш-диска, продуктивність значно погіршиться.

Для оптимізації з низькою вартістю ви можете використовувати недорогий ДБЖ, який може сигналізувати вашій системі про впорядковане відключення.


Мій коментар вище повинен був бути доданий сюди. Я досі вивчаю цей сайт.
eas

Деякі контролери RAID постійно вимикають кеш-диск на дисках, деякі не мають, а деякі мають налаштування. Така поведінка принципово залежить від того, якою є реалізація кешування стратегії керування RAID. У деяких реалізаціях вони дійсно хочуть контролювати порядок запису на диск ...., а в інших це має менше значення. Я натякаю на деякі питання тут у своїй відповіді.
високий Джефф

У моєму, мабуть, невеликому наборі тестів (контролери RAID LSI 9261, диски SATA, NL SAS та SAS), я виявив, що включення кешу запису накопичувача, коли диск був підключений до контролера RAID з кешем / потужністю кешу, не впливало на продуктивність вище і вище лише кеш-пам'ять контролера RAID. Я б ще не сказав, що це важке і швидке правило, але мені однозначно зрозуміло, що контролер RAID, що вимикає кеш диска, не обов'язково є проблемою.
Даніель Лоусон

2

Для підтримки кешу я використовую систему RAID із суперконденсатором, а не акумулятором. Акумулятори зношуються, повинні контролюватися, повинні бути замінені і представляти потенційну точку виходу з ладу в цьому відношенні. Конденсатор заряджається при запуску, змиває кеш-пам'ять, коли живлення від ДБЖ припиняється, триває практично вічно, не потребує контролю тощо. Однак, якщо ви не ведете бізнес на межі бідності (не рідкість у ці дні), у вас повинен бути ДБЖ і програмне забезпечення, яке вимикає систему при відмові - я зазвичай даю їй 5-15 хвилин (залежно від навантаження ДБЖ, а отже, і батареї) перед відключенням, якщо живлення буде відновлено.

Під час грози ви можете (або, можливо, - енергосистеми покращуються) бачать, як вогні мерехтять, іноді перед тим, як вони згасають. Це пристрій, який називається повторним блоком. Це автоматичний вимикач, який, коли спрацьовує, намагається закрити відкритий вимикач у випадку, якщо перевантаження є тимчасовим, якого більшість є. Якщо вона не може залишатися закритою після, скажімо, трьох спроб, вона залишається відкритою. Якийсь бідний хлопець повинен виходити під дощем і впоратися з цим. Не сумуйте за нього, при цьому роблячи лише два рази те, що ми з вами робимо, і двічі, якщо це понаднормово, це небезпечна робота.


2

Одне з хибних уявлень, якщо кеш записів на диск - це те, що вони втрачають дані лише про втрату електроенергії. Це не завжди так, особливо на пристроях SATA. Якщо на пристрої SATA є помилка на ньому (наприклад, кутова помилка FW або помилка контролера) і вона скидається або скидається зовнішньо, немає гарантії, що дані в кеш-пам'яті списку все ще доступні після зависання.

Це може призвести до сценаріїв, коли пристрій має тимчасову помилку, скидається знов, втрата даних відбувається при втраті будь-якого брудного кешу, і це мовчить вище рівня блоків драйверів.

Гірше, що вимкнення кешу диска за допомогою інструментів ОС також буде втрачено на скидах пристроїв, тому навіть якщо на пристрої кеш-пам'ять пристрою відключена на початку дня, якщо пристрій буде скинуто, він знову включить кешування назад. Після іншого скидання пристрій втратить дані.

Приводи SCSI / SAS та деякі диски SATA мають змогу зберігати стан профілю списання, щоб уникнути втрати властивості через скидання - але на практиці це використовується рідко.

Контролери RAID, які інтегрують блок-шар у верхні шари, можуть помітити скидання диска та знову відключити кеш-пам'ять запису - але стандартні контролери SATA та SAS цього не робитимуть.

Це обмеження також стосується інших SET FEATURE та подібних параметрів, які налаштовані на продуктивність та надійність.


1

Як ви кажете, правильний RAID-контролер, що підтримується батареєю, буде дорогим, але ви можете знайти контролери Dell Perc5 / i на eBay за 100 фунтів (150 доларів), і особливо з RAID5 швидкість контролера, як Perc5 / i, вас здивує. У мене є кілька серверів з Perc5 / is і шістьма дисковими масивами RAID5, і вони є одними з найшвидших дисків, які я коли-небудь бачив. Спеціально для додатків бази даних швидкі диски дійсно покращать продуктивність.

Я би кусав кулю і купив RAID-контролер.

JR


1

Наскільки я розумію, підробка fsync () є властивістю RAID-контролерів, що підтримуються батареями, а не дисками. Контролер RAID містить батарею, яка може живити кеш запису до моменту відновлення живлення накопичувача, і запис може бути безпечно переданий на диск. Це дозволяє контролеру негайно повернутися в ОС, оскільки це дає певний рівень гарантії, що запис буде записаний на диск.

Слід зазначити, що якщо заповниться кеш запису дисків, запис буде блокуватися, поки кеш не буде записаний назад на диск. Це означає, що кеш-пам'ять, як правило, не настільки ефективний при стійких записах.

Скільки IOPS потрібно додатку? Ви впевнені, що вас обмежує кеш запису накопичувачів, або що невелика (порівняно з пам'яттю вашого сервера) на диску буде корисною?


Тестування, яке я зараз роблю, полягає у визначенні рівня продуктивності нашого додатку, щоб ми могли визначити, як найкраще масштабувати та зменшувати масштаби. Кеш накопичувача може бути порівняно невеликим, але при кешуванні записів на ньому надається диска можливість переупорядковувати запис (коли це доречно), що виглядає так, що він може подвоїти стійку пропускну здатність запису.
eas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.