Програмне забезпечення та апаратне забезпечення RAID та використання кешу


73

Я багато читав про RAID-контролери / установки, і одне, що дуже багато, - це те, як апаратні контролери без кешу пропонують таку ж ефективність, як і програмний RAID. Це справді так?

Я завжди думав, що апаратні RAID-карти пропонують кращу продуктивність навіть без кешу. Я маю на увазі, у вас є виділене обладнання для виконання завдань. Якщо це так, то яка вигода отримати RAID-карту, яка не має кешу, щось на зразок LSI 9341-4i, що не зовсім дешево.

Крім того, якщо підвищення продуктивності можливе лише з кеша, чи є конфігурація кешу, яка записує на диск відразу, але зберігає дані в кеші для операцій зчитування, що робить BBU не пріоритетним?


Щось, що я помітив, сприяє рейду HW: На мій досвід, якщо ви працюєте з SW raid і система робить щось, крім чистого відключення, ви будете винні з масиву і доведеться перебудувати. HW-рейд не винен, якщо він не писав, коли система вийшла з ладу.
Лорен Печтел

Відповіді:


146

Якщо коротко: якщо ви використовуєте низькокачественну RAID-карту (без кешу), зробіть собі послугу і перейдіть на програмний RAID. Якщо ви використовуєте плату середнього та найвищого класу (з BBU або NVRAM), то апаратне забезпечення часто (але не завжди! Див. Нижче) - хороший вибір.

Довга відповідь: коли обчислювальна потужність була обмежена, апаратні RAID-карти мали істотну перевагу для вивантаження розрахунку паритету / синдрому для схем RAID, що включають їх (RAID 3/4/5, RAID6, ecc).

Однак із постійно зростаючою продуктивністю процесора ця перевага в основному зникла: навіть давній процесор мого ноутбука (Core i5 M 520, покоління Westmere) має XOR продуктивність понад 4 ГБ / с, а продуктивність синдрому RAID-6 - понад 3 ГБ / с протягом одне ядро ​​виконання .

Перевагою, яку сьогодні підтримує апаратний RAID, є наявність кешу DRAM, захищеного від втрати енергії, у вигляді BBU або NVRAM. Цей захищений кеш дає дуже низьку затримку для доступу до випадкового запису (і читання, що потрапив) і в основному перетворює випадкові записи в послідовні записи. Контролер RAID без такого кешу майже марний . Більше того, деякі контролери RAID низького класу не тільки залишаються без кешу, але насильно вимикають диск приватного кешу DRAM, що призводить до більш повільної продуктивності, ніж без RAID-картки. Прикладом можуть слугувати карти PERC H200 та H300 DELL: якщо новіша прошивка цього не змінила, вони повністю відключають приватний кеш диска (і його неможливо повторно включити, коли диски підключені до контролера RAID). Робіть собі користь і робітьніколи ніколи не купуйте таких контролерів. Хоча навіть контролери вищого класу часто відключають приватний кеш диска, вони принаймні мають свій захищений кеш, що робить приватний кеш жорсткого диска (але не SSD!) Дещо зайвим.

Це ще не кінець. Навіть здатні контролери (той, який має кеш BBU або NVRAM) можуть дати непослідовні результати при використанні з SSD, в основному тому, що SSD-дискам дійсно потрібен швидкий приватний кеш для ефективного програмування / стирання сторінки FLASH. І хоча деякі (більшість?) Контролерів дозволяють вам повторно ввімкнути приватний кеш диска (наприклад: PERC H700 / 710 / 710P, дозволити користувачеві повторно включити його), якщо цей приватний кеш не захищений від запису, ви ризикуєте втратити дані у випадку втрати електроенергії. Точна поведінка дійсно залежить від контролера та вбудованого програмного забезпечення (наприклад: на DELL S6 / i з кешем WB 256 МБ та включеним кешем диска , я не мав втрат під час багаторазових, запланованих тестувань втрат електроенергії), викликаючи невизначеність та велику стурбованість.

З іншого боку, програмні засоби RAID з відкритим кодом є набагато більш контрольованими звірами - їх програмне забезпечення не укладається у власну прошивку і має чітко визначені структури метаданих та поведінку. Програмний RAID робить (правильне) припущення, що приватний кеш DRAM диска не захищений, але в той же час він є критичним для прийнятної продуктивності - тому вони, як правило, не відключають його, скоріше вони використовують команди ATA FLUSH / FUA, щоб бути впевненими, що критичні дані про стабільне зберігання. Оскільки вони часто працюють від портів SATA, приєднаних до чіпсету SB, їх пропускна здатність дуже хороша, а підтримка драйверів - відмінна.

Однак, якщо використовується з механічними жорсткими дисками, синхронізована схема доступу до випадкового запису (наприклад: бази даних, віртуальні машини) сильно постраждає порівняно з апаратним RAID-контролером з кешем WB. З іншого боку, при використанні з корпоративними SSD-дисками (тобто із кешеним запитом керованого запису Powerloss) програмне забезпечення RAID часто перевершує і дає результати навіть вищі, ніж досяжні з апаратними RAID-картами. Це говорить про те, що ви повинні пам’ятати, що споживчі SSD (читати: із незахищеним кешем зворотного запису), хоча вони дуже добре читають та записують асинхронізацію, забезпечують дуже низький IOPS при синхронізованому завантаженні запису.

Також врахуйте, що програмні RAID не всі створені рівними. Програмне забезпечення Windows RAID має погану репутацію, ефективність роботи, і навіть Storage Space здається не надто різним. Linux MD Raid надзвичайно швидкий і універсальний, але стек вводу / виводу Linux складається з декількох незалежних фрагментів, які потрібно ретельно зрозуміти, щоб отримати максимальну продуктивність. RAF парність ZFS (ZRAID) надзвичайно розвинена, але, якщо вона не налаштована правильно, може дати вам дуже погані ВГД; З іншого боку, дзеркальне відображення + смугастість виконує досить добре. У будь-якому випадку йому потрібен швидкий пристрій SLOG для синхронної обробки записів (ZIL).

Нижня лінія:

  1. якщо ваші навантаження не синхронізовані з урахуванням випадкових записів, вам не потрібна RAID-карта
  2. якщо вам потрібна карта RAID, не купуйте RAID-контролер без кешу WB
  3. якщо ви плануєте використовувати програмне забезпечення SSD, бажано використовувати RAID, але майте на увазі, що для високо синхронізованих випадкових записів вам потрібен SSD, захищений від потужності (тобто: Intel S4600, Samsung PM / SM863 тощо). Для чистої продуктивності найкращим вибором є, напевно, Linux MD Raid, але сьогодні я зазвичай використовую смугасті дзеркала ZFS. Якщо ви не можете дозволити собі втратити половину місця через дзеркала і вам потрібні розширені функції ZFS, займіться ZRAID, але уважно подумайте про налаштування VDEV.
  4. якщо вам, навіть використовуючи SSD, справді потрібна апаратна карта RAID, використовуйте SSD з кешами, захищеними від запису (Micron M500 / 550/600 має частковий захист - не дуже, але краще, ніж нічого - в той час як серії Intel DC і S мають повну втрату електроенергії захист, те ж саме можна сказати і для корпоративних SSD-дисків Samsung)
  5. якщо вам потрібен RAID6, і ви будете використовувати звичайні механічні жорсткі диски, подумайте придбати швидку RAID-карту з 512 МБ (або більше) кешами WB. RAID6 має високий показник продуктивності запису, і кеш WB належного розміру може принаймні забезпечити швидке проміжне зберігання для невеликих синхронних записів (наприклад, журнал файлової системи).
  6. якщо вам потрібен RAID6 з жорсткими дисками, але ви не можете / не хочете придбати апаратну RAID-карту, уважно подумайте про налаштування програмного RAID. Наприклад, можливим рішенням з Linux MD Raid є використання двох масивів: невеликий масив RAID10 для записів у журнал / журнали DB та масив RAID6 для зберігання сировини (як файл-сервер). З іншого боку, програмне забезпечення RAID5 / 6 із SSD є дуже швидким, тому для налаштування всіх SSD, ймовірно, вам не потрібна карта RAID.

Дякую за чудові пояснення, я не мав уявлення, що RAID-картки відключили кеш на жорстких дисках. Це не той тип сервера, який гарантує близько 800 доларів США + інвестиції, тож я трохи більше зачитаюсь про налаштування програмного RAID і, ймовірно, пітиму з цим.
ItsJustMe

2
ОП говорить про гіпервізора. Про RAID5 не повинно виникати сумнівів, і кеш запису буде обов'язковим.
ewwhite

1
Насправді навіть у 2016 році 6-накопичувальне програмне забезпечення RAID 5/6 записує при <25 Мб / с, тоді як належна апаратна RAID-карта з 2010 року пише більше> 500 Мб / с. Це стосується як Intel RSTe, так і Windows Storage Spaces. Я просто не розумію, що вузьке місце в сучасному процесорі.
Монсьє

1
Проблема з програмним забезпеченням RAID 5/6 полягає в тому, що записи часто викликають читання-модифікацію-запис, що в свою чергу значно сповільнює диски. Апаратний RAID-контролер, що підтримується BBU, може поєднувати кілька записів в одному диску / трансакції, що значно покращує продуктивність.
shodanshok

1
"[випадкові читання], коли вони використовуються з SSD, вони часто перевершуються" - Якщо SSD не є корпоративним SSD (зазвичай це означає, що він не має конденсатора для захисту від втрати електроенергії) і не бреше, то навіть SSD можуть мають надзвичайно низький IOPS для таких операцій, як послідовні fsync(). Дивіться цю статтю , де показано SSD-накопичувач Samsung NVMe без конденсатора, робіть лише ~ 250 фунтів на секунду (я теж це виміряв). SSD з конденсатором дають ~ 30x більше fsyncs / s, апаратний RAID-контролер з акумулятором на 100 разів більше.
nh2

7

Вам потрібно вирішити кеш-пам'ять із кеш-пам’яттю або кеш-пам’яті для будь-якого придбаного апаратного контролера. Більшість шкодує, що цього не зробила .

Але щоб відповісти на ваше запитання, більшість контролерів мають настроюються коефіцієнти кешу ... тому 100% читання кеш і 0% запис кеш виключають необхідність захисту BBU. Виконання вашого запису просто смокче.

Я не можу вирішити питання про RAID вашого програмного забезпечення, оскільки це залежить. Linux MD RAID відрізняється від програмного забезпечення RAID Windows, який відрізняється від подібного ZFS . Такі рішення, як ZFS, можуть працювати краще, ніж апаратні, оскільки вони використовують ОЗУ та ресурси процесора сервера.


Під "записом продуктивність буде просто смоктати", ви маєте на увазі, що буде приблизно таким же, як Software RAID або Hardware RAID без кешу? Або є штраф за написання продуктивності, що перевищує це, якщо карта присвячує кеш-пам'яті читанню?
ItsJustMe

Це залежить від того, що ти робиш. Якщо у вас немає програми для інтенсивного запису, то хіт продуктивності може не бути проблемою.
ewwhite

Це хост Proxmox з VM для Windows, який використовується для хостингу пошти та веб-хостингу. Використання БД не так багато, але сервіс електронної пошти, ймовірно, має багато активності запису. В даний час я просто обговорюю, чи варто мати кеш-карту лише для читання над програмою RAID Software.
ItsJustMe

Використовуйте підтримуваний флеш-пам'яттю RAID-контролер для віртуалізації.
ewwhite

1
Ми запустили сервер електронної пошти з інформацією про 4000 облікових записів на ньому за допомогою програмного забезпечення RAID. Активні акаунти, що потрапляли на нього в будь-який день, були схожі на 300 до 600. Продуктивність була помітно гіршою, ніж наш основний поштовий сервер для вірусів із апаратними RAID та BBU. Кеш BBU та RAID контролера дає гарантію даних, але також дає продуктивність. Це тому, що коли дані надійдуть до контролера, він може повідомити ОС, що запис завершено. Інакше доведеться чекати, коли жорсткий диск сигналізує, що запис завершений. Це економить значні цикли годин. Переведено на апаратний RAID та вирішено.
лабрадорт

7

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

Про HW vs SW-RAID. Я більше не використовую HW-RAID, якщо, наприклад, це коробка з логотипом EMC. З іншого боку, я просто перейшов на SW-RAID багато лун знову з кількох дуже простих причин.

  1. Вам потрібно додаткове обладнання та їх відповідність. Вам також потрібно відповідати прошивці та тримати це синхронізовано. Багато дисків працюватимуть неправильно, і ви не будете чітко пояснювати затримку вводу-виводу без чіткої причини.

  2. Додаткове обладнання коштує дорого, тому ви можете використовувати ці додаткові 1000 доларів (пристойний контролер з двома / трьома дисками) для невеликого рішення краще. Вкладіть його в більше дисків і стандартних контролерів, пам'ять ECC, більш швидкий процесор. І запасний диск на місці, можливо, якщо ви плануєте запустити його довше, ніж гарантійний термін, або не хочете сплачувати експрес-збори за доставку за ніч.

  3. Оновлення - це біль, оскільки вам потрібно відслідковувати патчі ОС та прошивки як для диска, так і для контролера. Це може призвести до ситуації, коли оновлення / оновлення вже неможливе.

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

  5. Це SPOF і вузьке місце. Маючи лише один контролер за одним мостом PCI, це не дає вам продуктивність та надмірність, які вам справді потрібні. При цьому також виникає відсутність шляху міграції для міграції даних до іншого набору дисків поза межами досяжності контролерів.

Більшість із цих питань були використані з новими поколіннями програмного забезпечення SW-RAID або рішеннями, такими як ZFS та BtrFS. Майте на увазі, що врешті ви хочете захистити свої дані і не швидкодоступним, але зайвим сміттям.


3
Я не погоджуюсь. Багато людей задоволені контролерами Dell, HP, IBM та LSI RAID вищого класу. Але, чесно кажучи, більшість сучасних серверів якості вже мають бортові рішення RAID, тому ідея покупки для окремого контролера трохи застаріла. Програмні рішення RAID також повинні враховувати навантаження з низькою затримкою запису. ZFS має ZIL, але багато інших програмних програм RAID не вистачає на цьому фронті.
ewwhite

2
Я б також відрізнявся від вашого останнього абзацу, RAID - це доступність, а не захист. Для захисту потрібні резервні копії, а не RAID.
Роуан Хокінс

4

Я провів останній рік (з 2014 по 2014 рік) на тестуванні декількох паралельних конфігурацій CentOS 6.6 RAID 1 (дзеркальне відображення), використовуючи 2 вірші LSI 9300 HBA, 2 LSI 9361-8i RAID-контролери з системами, побудованими на наступному: 2U Supermicro CSE- Шасі 826BAC4-R920LPB, материнська плата ASUS Z9PE-D16, 2 процесори Intel Xeon E5-2687W v2 восьми'ядерний 3,4 ГГц, дзеркальний Seagate ST6000NM0014 6TB SAS 12 Гбіт, оперативна пам'ять 512 ГБ. Зауважте, що це повністю сумісна SAS3 (12Gbps) конфігурація.

Я переглядав статті, написані про налаштування програмного забезпечення, і я використовував програмне забезпечення RAID Linux протягом більше 10 років. Під час виконання базових тестів вводу / виводу (dd-oflag = прямі файли від 5 до 100G, hdparam -t тощо) програмне забезпечення RAID, схоже, сприятливо підходить до апаратного нальоту. Програмне забезпечення RAID відображається через окремі HBA. Я пройшов тестування, щоб зробити тестування зі стандартними конфігураціями ядра CentOS 6, kernel-lt і kernel-ml. Я також спробував різні mdadm, файлові системи, дискові підсистеми та налаштування o / s, запропоновані різними онлайн-статтями, написаними про програмне забезпечення RAID Linux. Незважаючи на настройку, тестування, налаштування та тестування, під час роботи у світі читання, системи обробки транзакцій (маючи базу даних MySQL або Oracle), я виявив, що запуск апаратного RAID-контролера призводить до 50-кратного підвищення продуктивності.

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


2

Більшість письменників тут просто не знають про " писати дірку ". Це основа, яка дозволяє викрикувати резервні копії батарейних апаратних апаратних RAIDs та відсутність таких для програмних RAID. Наприклад, наприклад, реалізація RAID програмного забезпечення Linux або підтримує растрові карти операцій запису, або виконує повний перерахунок паритету в разі нечистого відключення. ZFS завжди прагне до повно-смужкових записів, щоб уникнути цієї невідповідності або відкладати її повторну перевірку. Отже, як підсумок, достатньо розумне програмне забезпечення RAID на сьогоднішній день часто є досить хорошим, щоб використовувати його замість "хто знає, що всередині", так званого "апаратного RAID".

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


1
Це ще одна причина уникати апаратних RAID-карт без належного захищеного кешу WB. Примітка про Linux MD Raid: він не повністю захищений від запису. Оскільки він не має захисту від втрати електроенергії, у разі раптових втрат електроенергії дані з часом будуть втрачені (подумайте про вхідні дані та / або часткові записи). Звичайно, це станеться навіть у сценарії з одним диском, але характер парності або RAID5 / 6 посилюють це. За найгіршого сценарію, критичні метадані файлової системи можуть бути пошкоджені, проте сучасні файлові системи є досить стійкими, щоб відновити досить добре. Однак деякі дані можуть бути втрачені.
shodanshok

@shodanshok, ти абсолютно помилився. Подумайте
poige

1
Багато акумуляторів, якщо підтримувати їх у справному стані, можуть заряджати кеш-пам'ять WB протягом 24-96 годин, що є достатньо часу для відновлення живлення, крім дійсно екстремальних ситуацій. Крім того, сучасний контролер перемикається в NVRAM (в такий спосіб: флеш - пам'ять) , як тривале зберігання, тому в разі збою живлення невеликого акумулятора / SuperCap буде очищати вміст кеша в пам'яті NV , яка може зберігати дані в протягом декількох місяців або років в інших слово, контролер RAID BBU буде запобігти RAID5 / 6 отворів в (майже) будь-яких обставин.
shodanshok

1
Ви сказали, що не має права писати дірку. Розробники кажуть, що це не так , хоча вони сказали, що це не має великого значення в реальному використанні.
shodanshok

1
Вибачте, але ви написали: "Це основа, яка дозволяє викрикувати резервні копії батарейних апаратних апаратних RAIDs проти відсутності таких програмних RAID" . Це неправильно . Правильні апаратні RAID-картки забезпечують додатковий захист, і я не раз говорив, що це думка тих самих розробників LSR. Тепер я задаю вам запитання: ваше твердження добре чи неправильно? Оскільки це неправильно, будь ласка, редагуйте свою відповідь, або інший користувач може обдурити цю дурницю.
shodanshok

0

Я працюю над цим постійно. Це сильно залежить від того, що ти робиш, і рівень рейду підтримуєш. Контролер SW, що працює на Raid 0 або 1 для ОС, і нічого особливого не в порядку. Запуск контролера SW з Raid 5 в базі даних задає проблеми! ДЕЯКІ апаратні контролери дійсно покращують продуктивність, але це залежить від того, чи зможе він кешувати і процесорний чіпсет рейд-карти. Також не всі програмні контролери підтримуються всіма операційними програмами. Тому іноді вам, можливо, доведеться купувати HW для запуску ESXi ... Якщо ви не використовуєте sata-з'єднання.

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