Чи слід запускати мою базу даних з конфігурації RAID 5?


13

Я чув, що ефективність запису RAID 5 може часом бути жахливою. Хоча я хочу, щоб воно було надмірне, але я не хочу жертвувати часом вставки / оновлення своєї бази даних.

Це щось, про що я повинен хвилюватися, і якщо так, то яка б була рекомендація отримати надмірність з хорошою продуктивністю запису?


1
Яка БД? Oracle + RAID 5 раніше був ні-ні. Не впевнений, чи все ще так.
cagcowboy

У цьому конкретному прикладі база даних працює на MySql та MSSQL.
Скотт Саад

Трохи більш конкретизовані питання стосовно програми (суміш для читання / запису БД, вимоги до часу та часу відновлення) можуть отримати більш застосовну відповідь; ці речі можуть змінити найкраще рішення.
Джей Стівенс

Відповіді:


23

RAID 10 зазвичай рекомендується, оскільки введення / виведення є таким випадковим. Ось приклад. Розрахунки трохи спрощені, але досить репрезентативні.

Скажімо, у вас є 6 приводних масивів, і ваші накопичувачі можуть робити 100 в / в в секунду (IOPS). Якщо у вас є 100% зчитування, будуть використані всі шість дисків, і у вас буде близько 600 IOPS як для RAID 10, так і для RAID 5.

Найгірший сценарій - 100% пише. У такому сценарії продуктивність RAID 10 скоротиться навпіл (оскільки кожен запис йде на два накопичувачі), тож він отримає 300 IOPS. RAID-5 перетворить кожне записування у два читання, а потім два записи, тож це отримає 1/4 продуктивності або приблизно 150 IOPS. Це досить великий хіт.

Ваш фактичний шаблон читання / запису буде десь посередині цих двох крайнощів, але саме тому RAID 10 зазвичай рекомендується для баз даних.

Однак якщо у вас немає зайнятого сервера баз даних, ви можете навіть зробити RAID-6. Я часто це роблю, якщо я знаю, що база даних не буде вузьким місцем, оскільки вона дає вам набагато більше безпеки, ніж RAID 10 або RAID 5.


22

Транзакційні бази даних

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

  • Читання в блоці паритету

  • Читання в старому блоці (припустимо, що воно вже не знаходиться в кеші) на XOR значення з блоком парності.

  • Написання нового блоку парності (старий блок парності XOR старий блок даних XOR новий блок даних)

  • Написання нового блоку даних.

Якщо система не використовує кешування назад, це означає, що всі ці дії знаходяться на критичному шляху до завершення вводу / виводу. Часто це трапляється при записі баз даних - адже Microsoft (наприклад) має програму сертифікації обладнання SAN для використання з SQL-сервером, який вимагає від постачальників гарантії такої поведінки. Іноді старше обладнання RAID-5 не використовувало цю оптимізацію і довелося перерахувати паритет з усієї смуги.

RAID-10 має дзеркало для кожного окремого накопичувача і не потрібно читати додаткові дані для обчислення парності. Це означає, що для запису потрібно набагато менше фізичного вводу / виводу.

RAID-50 розташований десь посередині, об'єм розділений на кілька томів RAID-5, які, у свою чергу, смугасті. На RAID-50, створеному з груп, смугастих у схемі 3 + 1, запис створює щонайбільше три додаткові запити вводу / виводу на диск. Якщо ви відчуваєте таке схильність, ви можете розглядати RAID-5 та RAID-10 як особливі випадки RAID-50. RAID-50 в основному використовується для забезпечення великих обсягів на багатьох фізичних дисках

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

Нарешті, одна дзеркальна пара (відома як RAID-1) може забезпечити надмірність та достатню ефективність для виконання деяких завдань. Зокрема, ви, мабуть, виявите, що RAID-1 дає вам достатню пропускну здатність для досить великого трафіку журналу бази даних. Детальніше про це нижче.

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

Колода

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

Системи та файлові сервери, що мають читання

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

У минулому економія коштів на диску, можливо, була значною, але зараз це менш ймовірно.

Кешування назад та RAID-5

На SAN або внутрішньому контролері RAID з кешеним керуванням, можливо, ви зможете ввімкнути кешування "Зворотного запису". Цей кеш записує і повертає контроль до програми. Контролер повідомляє про введення / вивід про завершення. Однак, це не обов'язково записувати дані на диск відразу. Цей інструмент дозволяє суттєво оптимізувати операції читання / запису парності RAID-5 і може пом'якшити штрафну ефективність запису для томів RAID-5x.

Однак це все ще несе в собі невеликий ризик питань цілісності даних. В хост-системі було сказано, що написання завершено, коли це насправді не так. Можливо, при апаратному збої створюються невідповідності даних між (скажімо) журналом та томами даних на сервері баз даних. З цієї причини кешування назад не рекомендується використовувати для транзакційних систем, хоча це може бути виграш у продуктивності для чогось подібного до процесу ETL.

Підсумок

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

На щось схоже на сховище даних ви все ще можете пережовувати простір великими, сильно індексованими таблицями фактів, щоб ви могли отримати невелику виграш цін за допомогою обсягів даних RAID-5 або RAID-50. Однак журнали та tempdb все ж слід розміщувати на томі RAID-10, оскільки вони, ймовірно, отримають багато роботи під час обробки ETL. Однак економія витрат на диску, ймовірно, буде досить невеликою.


Кеш зворотного запису: якщо ви купуєте RAID-контролер із кешеним зворотним процесом "керування назад", зверніть увагу, що акумулятор, здається, не входить у комплект. Обов’язково поставте постачальника, щоб включити його.
Девід Хікс

Деякі так, деякі ні. У мене досить багато Adaptec 2200, які не поставляються з акумуляторами. Деякі з них постачаються стандартно.
ConcernedOfTunbridgeWells

1
У вашій відповіді виникла помилка. Вам НЕ потрібно читати кожен диск для перерахунку паритету. Письмо стає 2 читанням і 2 записом. Інші 12 дисків у вашому прикладі 14-накопичувального масиву RAID5 не торкнуться.
TorgoGuy

Власне, я вірю, що чоловік має рацію. Ви можете прочитати і XOR співпадіння зі старим значенням блоку і знову з новим значенням блоку. Ніколи не бачив описаного раніше, але це спрацювало б.
ConcernedOfTunbridgeWells

3

Ну, це сильно залежить від вашої вини / толерантності до ризику. У RAID5 багато проблем . На моєму сервері БД на даний момент є два дзеркальних диска, і якби я змінив його масштаб, я б зайнявся чимось більш високим паритетом, можливо, RAID6 або RAID10.

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


3

Залежить від того, скільки ви пишете.

Якщо це досить легкий "веб-додаток", ви навряд чи побачите якісь ефективні результати на RAID5.

Якщо ви будуєте багатогабаритний сховище даних з великими ETL, то буфер запису в RAID 5 швидко переповниться, і ваш напрямок перетвориться на "погану продуктивність запису" RAID 5.

Кожне записування RAID5 викликає щонайменше 3 записи (плюс обчислення CRC). Коли буферизовано, це добре і швидко (невеликі короткі спалахи активності - оновлення та вставки одного запису) Якщо це триває запис (великий масовий вставка / оновлення), це буде помічено.

Це баланс між продуктивністю та простором. RAID 10 (дзеркало смугастих дисків) дає як продуктивність, так і стійкість, але на 50% зменшує ємність.

RAID5 забезпечує більш високу ємність, хорошу ефективність читання, але низьку (велику) ефективність запису.


2

RAID 1, це моя остаточна відповідь

Причини:

дзеркальна пара дає достатню надмірність для несправних дисків, і RAID продовжує функціонувати на останньому диску.

дзеркальна пара дає більшу продуктивність вводу / виводу для читання, якщо ви ретельно розміщуєте свої дані та індекси ... [підказка: Використовуйте окремі томи для даних та її індексів]. Ви можете отримати ще більшу продуктивність, дублюючи контролери.


Чому б не RAID 1 + 0?
Брайан Кноблауш


2

Коротка відповідь: ні.

Довга відповідь: якщо у вас дуже мала база даних або дуже мінімальні вимоги, ні. Пошук даних сильно залежить від операцій вводу / виводу диска в секунду, і накладні витрати на зчитування з часом зникнуть доступ до вашого диска, особливо при тривалих запусках запитів. Більшість баз даних запускаються в налаштуваннях стилю RAID 10 або з певними томами, що містять розділи даних. Так, RAID 10 обійдеться вам у написанні, але продуктивність читання (при правильній настройці) збільшиться .


1

яка б була рекомендація отримати надмірність із гарною продуктивністю запису?

Великий кеш зворотного запису. Збільште оперативну пам’ять на вашому апаратному RAID-контролері або оперативній пам’яті, доступній для вашого програмного рішення RAID (тобто для MDADM Linux збільште системну ОЗУ, MDADM-кулі, щоб використовувати інакше невикористану системну ОЗУ як кеш запису). Ця порада стосується заданих значень "великих" - якщо ви будете часто (5% часу?) Писати дані досить швидко, щоб заповнити кеш запису, незалежно від того, наскільки великим він буде, це мало змінить.


1

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

Створюючи конфігурації RAID, що підтримують ці риси, ви значно підвищуєте продуктивність

Raid 1 - дзеркальне відображення відмінно підходить для файлів журналів. Raid 10 добре підходить для ваших файлів даних. Також варто переглянути розділення TempbDB та резервного копіювання на окремі диски. Додавання файлових груп - ще один спосіб підвищення продуктивності. Що стосується SAN, це не так однозначно. Це залежить від того, ви будуєте конкретні конфігурації рейду для кожного LUN чи покладаєтесь на кількість шпинделів.


0

У дусі недавньої статті блогу StackOverflow, що говорить, що ми не повинні повторно представляти відповіді, вже доступні в Інтернеті, я наказую на це

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


0

Запуск бази даних із RAID5 зазвичай є помилкою. Я бачив це лише у двох випадках - добре розроблені бази даних, які були інтенсивними для читання з кількома записами, і бази даних, де "витрачаючи місце" через RAID5 не було політично життєздатним.

RAID5 знищить ефективність транзакцій.

Крім того, якщо ви розглядаєте RAID5, подивіться, чи можете ви змусити RAID6 працювати. Теоретична надійність набагато краща, хоча надійність у реальному світі часто гірша через незрілі впровадження.

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