Якщо у вас є два фізичних накопичувача:
RAID0: Швидке, але зайве. Будь-яка помилка диска знищить весь масив. Деякі люди ставлять тимчасове сховище на RAID0 (тобто tempdb під MSSQL), але я все одно вважаю це небезпечним, оскільки поки ви не втратите жодних значущих даних, якщо масив, що потрапить на вас, матиме відключення сервера, поки ситуація не буде відновлена.
RAID1: Зайдіть для цього, якщо у вас є два накопичувачі. Немає переваги від продуктивності запису, хоча ви можете побачити підвищення продуктивності читання за допомогою хорошого контролера. Ключовою особливістю RAID1 є те, що один з накопичувачів помирає.
Якщо у вас є три фізичні приводи:
Ваші параметри - це RAID5, нестандартний 3-накопичувальний RAID10 (або RAID1E, як посилаються на нього контролери IBM), якщо вони підтримуються. Звичайно, ви можете використовувати RAID1 і зберігати додатковий диск як запас, коли хтось з інших не спрацьовує, але ви все одно повинні зберігати запасні частини в критичному середовищі місії, так що це само собою зрозуміло.
RAID5 пропонує більше місця, ніж RAID10 (два накопичувачі варто замість півтора), але має потенційну проблему з швидкістю запису, оскільки для кожного записаного блоку контролеру потрібно прочитати блок парності, оновити його та записати його назад. Ця проблема продуктивності запису може бути подвоєна для записів у базу даних, оскільки є щонайменше дві записи для кожного оновлення: одна до журналу транзакцій та одна до фактичних областей даних. Оскільки місця зараз мало, я б рекомендував 3-привідний RAID10, якщо він підтримується для кращої продуктивності запису. Програмне забезпечення Linux RAID пропонує це, як і багато контролери IBM (вони називають його RAID1E). Ви можете знайти його під іншими іменами, оскільки він не вважається стандартним розташуванням, тому не має стандартного імені.
Як R5, так і R10-над трьома дають однакову надмірність (будь-який один привід може вийти з ладу за один раз, і масив виживе) та аналогічні показники продуктивності читання (аналогічно дводисковому масиву RAID0).
Якщо у вас є чотири фізичні приводи:
Якщо створюється лише один масив, то є два варіанти (ігнорування "гарячих запасних" варіацій): RAID6 і "традиційний" RAID10 (RAID0 з RAID1).
Обидва дають однаковий простір (два диски з ваших чотирьох). RAID6 забезпечує кращу надмірність, оскільки будь-які два накопичувачі можуть вийти з ладу в той час, коли RAID10 може вижити лише чотири з шести можливих ситуацій, що відсутній на двох дисках. Обидва дають продуктивність зчитування simialr, але RAID6 має проблеми з швидкістю запису, аналогічні RAID5 (те саме на хорошому контролері, хоча це може бути повільніше, ніж RAID5 на поганому контролері або з програмним RAID, залежно від ОС, можливостей управління введення-виводу. RAID10 - це зазвичай бажані для баз даних з міркувань продуктивності - якщо вам потрібна додаткова надмірність, ви можете використовувати шість накопичувачів і мати RAID0 або 2 RAID1 з 3-х накопичувачами.
Якщо у вас є чотири або більше диска, хоча все стає цікавішим, оскільки у вас може бути окрема пара масивів RAID1. Це може принести значні переваги продуктивності спінінг-дисків, зберігаючи сховища даних в одному масиві, а журнали транзакцій в іншому - це може значно зменшити рухи голови в деяких випадках і шукати часу завдяки «випадковому» доступу - справжній вбивця. Для сховища даних, якщо це означає, що він побачить дуже мало записів відносно кажучи, розділення журналів транзакцій з файлів даних може мати більш обмежену користь, але ви все одно можете розглянути декілька масивів і замість цього розділити свої дані на них для потенційно кращої продуктивності читання .
Якщо у вас більше чотирьох накопичувачів:
Ваші параметри тут широко відкриті, і це дійсно залежить від того, якими є ваші дані та якими очікуються оновлення / читання завантажень / моделей. Наприклад, колись наші послуги працюють на накопичувачах 12 ~ 70 Гбіт:
- 4x як RAID10 для системних областей (ОС, SQL Server (MSSQL в нашому випадку), swap, tempdb).
- 4x як RAID10 для файлів даних
- 4x як RAID10 для журналів транзакцій
Tempdb зберігається в системному масиві. Ми можемо перемістити його до двох інших масивів і просто запустити системний масив як 2 диски в RAID1, оскільки додаткова швидкість не дуже потрібна для системних фрагментів (як це дуже важливо лише під час завантаження або під час заміни, і ми гарантуємо, що є достатньо оперативної пам’яті для того, щоб ніколи не потрібно міняти місцями), але з тим, як ми платимо хостинг-провайдеру за цей набір машин, нам не обійшлося б менше скинути два накопичувачі. Резервні копії також переходять до системного масиву, перш ніж їх буде скопійовано у позасерверні, позаміські та офлайнові резервні копії.
Звичайно, це є серйозною надмірністю для деяких баз даних (не було б сенсу запускати невеликий сервер блогу таким чином!), Але наш головний додаток дуже добре справляється з цим домовленістю.
Якщо у вас є шість дисків, ви можете розглянути три масиви RAID1 або два масиви RAID10 з трьома дисками.
Взагалі
На жаль, немає справжньої простої "найкращої практики", оскільки це дуже залежить від розміру вашої системи та використання моделей. Єдині загальні правила, про які я можу подумати чи такі:
- уникайте RAID5 і 6, якщо ви не знаєте, що проблема з записом не вплине на вас суттєво
- з чотирма або більше накопичувачами на основі обертового диска розглядають можливість розбиття речей на декілька масивів, щоб зменшити рухи голови (вся користь декількох масивів не застосовуватиметься до хороших SSD, оскільки фізичних рухів голови не враховувати, хоча ви можете побачити певну різницю залежно від залежності стратегія поєднання запису SSD-дисків тощо)
- тест, тест та ще раз тестування: завжди добре спробувати знайти час, щоб переконатися, що обрана вами схема дійсно оптимальна
Апаратне чи програмне забезпечення RAID?
Раніше продуктивність програмного забезпечення RAID була нижчою за продуктивність апаратного RAID для RAID 5 за рахунок розрахунків паритету та всіх домовленостей через повільні інтерфейси між накопичувачами та процесором. З сучасними процесорами проблема калькуляції парності насправді не є проблемою, але якщо у вас дуже швидкі накопичувачі, апаратний RAID все одно може виграти, якщо загальна швидкість накопичувачів може прийти де завгоднопоблизу (в порядку порядку, на здогадку), як швидко машина може поговорити з дисковим контролером. Якщо у вас є чотири накопичувальні масиви RAID1 (тобто чотири копії одних і тих же даних для безлічі надмірностей) з програмним RAID, кожна операція запису призведе до того, що ОС відправить чотири лоти даних на контролер вводу / виводу, можливо послідовно - з обладнанням контролер ОС просто надсилає один запит запису, а контролер надсилає це на чотири диски, ймовірно, паралельно.
Хороший апаратний RAID також може запропонувати і інші переваги: деякі контролери високої специфікації мають кеш-запис із резервним запасом акумулятора, щоб очікувані записи не втрачалися в режимі відключення живлення, навіть якщо, наприклад, ваш UPS вийшов з ладу.
Програмний RAID, очевидно, дешевший і портативніший, тому ви не прив’язані до конкретного контролера, якщо вам доведеться переміщувати масиви через несправність контролера / машини.
Дешевий апаратний RAID зазвичай поєднує негативні вимоги програмного та апаратного RAID з кількома (або жодними) перевагами будь-якого, тому найкраще уникати.
Я схильний використовувати програмне забезпечення RAID на наших сервісах розробки, тестування та UAT, а також хороший апаратний RAID для серверів, що працюють на сервісах, що працюють в режимі "клієнт / громадськість".