Ми живемо в епоху розквіту HDD: обсяги досягли 4ТБ на диск (і це не межа), ціни на великі (1-4ТБ, 7200 тис. обертів/хв) і швидкі (10/15 тис. обертів/хв) HDD знижуються, повсюдно використовується SSD, зростає продуктивність і нарощується функціонал апаратних RAID контролерів, які давно "подорослішали" рішення на базі ZFS. З'явилась проблема: масиви на кілька десятків терабайт стали доступні порівняно невеликим організаціям, але рівень знань правил і рекомендацій щодо зберігання даних залишився невисоким. Веде це до вельми жалюгідних наслідків - прямим початковим грошовим втратам (результат самодіяльності у виборі обладнання) та подальшої шкоди від втрати даних.
У цій статті ми розглянемо кілька проблем та міфів, пов'язаних із зберіганням даних. Міфів накопичилося достатньо і вони продовжують жити, незважаючи на величезну кількість трагічних історій:
Міф №1.
Найрадикальніший: "RAID взагалі не потрібен (як варіант - можна використовувати RAID-0 + бекапи). Сучасні диски досить надійні, у меня вдома все працює роками".
Зустрічається, в основному, у починаючих недосвідчених ІТ-фахівців. Причина існування цього міфу проста - нерозуміння того, що таке інформація взагалі, і яке відношення має RAID до захисту цілісності інформації. Справа в тому, що RAID захищає не лише від повної втрати диска. Остаточний вихід диска з ладу - це лише кінцева точка його непростого існування, і до моменту втрати інформації на всьому диску ми можемо втрачати невеликі фрагменти з появою збійних секторів. Для побутового застосування втрата (або спотворення) ділянки 512 байт зазвичай не є великою проблемою. Вдома більшу частину дискового простору займають мультимедійні файли: зображення, звук і відео, так що втрата мізерно малого фрагмента ніяк не відбивається на якості, наприклад відео файлі. Для зберігання структурованої інформації (наприклад, бази даних) будь-яке спотворення є неприпустимим і поява будь-якого "беда" (нечитаного збійного сектора) означає повну втрату файлу чи тома. Статистичну ймовірність настання такої події ми розглянемо згодом.
Висновок: дані користувача не можна зберігати на одиночних дисках або в масивах, що не забезпечують надмірності.
Міф №2.
"RAID = бекап. Я потратив на контролер цілих $600! Але дані при цьому захистив, можна спати спокійно, бекапи не потрібні".
Загубити дані із надлишкового масиву не просто, а дуже просто. Можна почати з простого людського фактора, який у статистиці, яка регулярно збирається різними агентствами, займає левову частину всіх випадків втрат даних. Достатньо адміністратору СУБД знести пару таблиць у базі чи якомусь користувачеві видалити кілька файлів ресурсі з неправильно налаштованими правами доступу. При роботі з контролером або СЗД можна помилково видалити потрібний том. Причиною катастрофи може послужити незахищений кеш контролера (включений write-back, батарейки немає або вона несправна, виходить з ладу блок живлення або PDU- і кілька десятків або сотень мегабайт даних, що не потрапили на диски, відлітають у трубу).
Резервне копіювання потрібно завжди. Відсутність бекапів - злочин.
Міф №3.
"Настав цифровий комунізм. Я можу дозволити собі сервер в одному із ваших корпусів Supermicro на 24 диски, зберу один великий RAID-5 або RAID-6 з недорогих домашніх 3ТБ SATA дисків, 60 з лишком терабайт вистачить надовго."
Чи знаєте ви про те, що при певному поєднанні числа, об'єму та якості дисків RAID-5 ви практично гарантовано втратите свої дані під час ребілду? Детальному розгляду декларованих показників надійності жорстких дисків буде присвячена інша частина цієї статті.
Мільйон годин MTBF - багато чи мало?
Що означає величина MTBF (Mean time between failures)? Для жорстких дисків зустрічаються значення від 600-700 тис. годин до двох мільйонів. Розглянемо для прикладу диск WD Red c MTBF рівним мільйону годин. Невже виробник гарантує роботу диска протягом 1000000/8760 = 114 років і чи можна ні про що не турбуватись?
Зовсім ні. Значення MTBF (в випадку HDD правильніше було б використовувати MTTF - mean time to failure) не можна застосовувати до одиночного виробу, це статистичний показник. Ось що
пише з цього приводу Hitachi:
MTBF target is based on a sample population and is estimated by statistical measurements and acceleration algorithms under median operating conditions. MTBF ratings are not intended to predict an individual drive’s reliability. MTBF does not constitute a warranty.
Це означає, що не один диск відпрацює 114 років, а в партії зі 114 дисків за 1 рік очікується виходу з ладу одного диска. Насправді, звісно, зручніше оперувати значенням не MTBF, а AFR (annual failure rate - річна інтенсивність відмов). Спрощена формула (якщо не брати до уваги специфіку розподілу інтенсивності відмов) виглядає так:
AFR=1/(MTBF/8760)
Тобто для того ж WD Red отримаєм величину AFR близько 0,88%, причому вона буде справедлива лише в невеликій області на графіку ймовірності відмов. Після 2-3 років роботи в штатному для цього класу HDD режимі AFR буде не лінійно зростати. А що буде, якщо режим відрізняється від штатного (наприклад, при перевищенні температури, рівня вібрацій чи цілодобової експлуатації побутових дисків Seagate, для яких виробник рекомендує режим роботи 8х5), і що взагалі відбувається насправді? Адже все це теоретичні викладки, можливо, розповіді про те, що "ось у мене вдома старий Макстор працює майже десять років без жодного беда" можна екстраполювати? Ось графік з
відомого звіту Google:
Він ілюструє статистику річних відмов жорстких дисків. Різкий ріст значення AFR після одного року роботи пов'язане з тим, що Google використовував побутові диски в режимі 24х7 (це була перша половина 2000-х, nearline класу ще не існувало). Підсумок: майже два відсотки в перший рік, далі зростання до восьми з лишком відсотків, що є результатом підвищеного навантаження. До речі, ось розподіл AFR залежно від навантаженості дисків:
Як видно з графіка, важкі режими роботи різко збільшують AFR, особливо в перші місяці експлуатації, коли високе навантаження допомагає виявити диски з прихованими виробничими дефектами, і після чотирьох років, коли навантаження добиває зношені диски.
Зверніть увагу на специфікацію сучасних побутових дисків Seagate: MTBF 700000 годин, при цьому вказано параметр Power-On Hours (POH) 2400 годин на рік, що приблизно відповідає режиму роботи 8х5.
Тобто виробник обіцяє відповідність MTBF заявленому лише за дотримання даного режиму роботи. Бажаєте цілодобової експлуатації десктопних Seagate? Отримайте AFR 8% замість 1,25%. У
посібнику є ще одна уточнення:
Average rate of <55TB/year. The MTBF specification for the drive assumes the I/O workload does not exceed the average annualized workload rate limit of 55TB/year.
Тобто лімітується ще і трафік, будьте ласкаві читати/писати не більше 55ТБ в рік. Не влаштовує? Використайте диски nearline класу с MTBF від 1,2 млн годин і нелімітованим Power-On Hours.
До речі, загалом статистика, надана Google, відповідає класичному графіку розподілу відмов. Через характерну форму його ще називають
bathtub curve:
На самому початку відбувається велика кількість відмов виробів, які мають приховані виробничі дефекти, що зветься "дитяча смертність". Потім частота відмов стабілізується на період терміну служби виробу, а потім починає позначатися зношування - відмови не лінійно зростають.
Висновки:
Статистика - річ уперта. Не плутайте MTBF та термін служби. Ставтесь до дисків, як до витратних матеріалів, плануйте заміну для відпрацьованих під високим навантаженням на серверах по три-чотири рока десктопних та nearline дисків. Ви можете розраховувати на AFR близько 1% для nearline дисків, близько 0,5% - для enterprise класу (10k/15k), зрозуміло лише протягом терміну служби і за дотриманням всіх умов експлуатації.
З десктопними дисками при високих навантаженнях гарантувати взагалі нічого не можна: температура, вібрація (у великих дискових полицях вібрація набуває великого значення), підвищене навантаження на блок головок зроблять свою справу, і ви можете отримати масовий відмінок дисків вже після року роботи.
Чи взагалі можливо використовувати побутові диски на серверах, якщо це робив Google? Вся суть в тому, як використовувати. Google - це хмарні технології. Стосовно зберігання даних це означає використання розподіленої файлової системи, у разі -
GFS, Google File System. Аналогічну архітектуру має, наприклад, Parallels Cloud Storage. Дані розбиваються на блоки (chunks) розміром кілька мегабайт, ці блоки реплікуються між кількома серверами. Сервери метаданих зберігають інформацію про розподіл блоків та контролюють процеси читання та запису блоків. Такий підхід вирішує одну з проблем, пов'язаних з експлуатацією побутових дисків - порівняно високу ймовірність появи неповних помилок читання (unrecoverable error rate), що призводить до великих складнощів при роботі в RAID-масивах.
Міф №4. Від низької надійності десктопних дисків рятує RAID.
"Якщо десктопні диски настільки ненадійні, то варто просто закупити їх більше, поставити в RAID, нехай виходять із ладу по 2-3-10% на рік, будемо міняти"
Тут виникає ще одна проблема, пов'язана з якістю - UER (unrecoverable error rate). Означає ймовірність появи невідновної помилки читання, з різних причин: дефект поверхні, збій у роботі головки, контролера тощо. Для сучасних робочих дисків значення UER становить 1 х 10
-14. Це означає, що при передачі 1 х 10
14 біт ви з дуже великою ймовірністю прочитаєте з диску зовсім не те, що туди записали. Далі починається цікава математика, опублікована в одній із
доповідей SNIA:
Диск об'ємом 500ГБ містить 1/25 х 10
14 біт. Припустимо, у нас є RAID-5 із шести таких десктопних дисків із UER рівним 1 x 10
-14. о певного моменту все працює добре, на дисках з'являються та ремапяться збійні сектори, до втрати даних це не призводить, так як в нас є RAID. І тут один із дисків виходить з ладу. Змінюємо диск, починається ребілд, який означає читання 5/25 x 10
14 біт: з п'яти дисків потрібно рахувати страйпи та контрольні суми, розрахувати та записати їх на шостий диск.
5/25 - це 20% тобто з ймовірністю 20% при ребілді ми отримуємо помилку читання та загубимо дані. 500ГБ за сучасними мірками - не дуже багато, в ході диски по 1, 2, 3 і навіть 4 терабайт. Для масиву 8х1ГБ отримаєм 56%, 8х2ГБ - вже 112% (без шансів!), для "супер-великої СЗД-на-все-життя" із 24-х десктопних дисків по 3ТБ виходить і зовсім фантастична цифра в 552%. Цю можливість можна трохи зменшити, періодично запускаючи фонову перевірку цілісності даних на масиві. Можна зменшити її значно, на порядок, використовуючи правильні диски nearline класу з UER = 1 x 10
-15, але для великих масивів цифра виходить все одно неприйнятною, адже не враховується ймовірність повного виходу з ладу другого диска під час ребілду, який при великих обсягах і високе навантаження на масив може розтягнутися на кілька тижнів.
Висновок:
за великих об'ємах сучасних дисків використовувати RAID-5 не можна. Навіть для дисків enterprise класу (UER менше на порядок - 1 x 10
-16) ймовірність отримати помилку читання при ребілді масиву з восьми 450ГБ дисків становить близько 0,3%. Їх ємність теж зростає. Якщо відносно нещодавно диски на 10000 та 15000 об/хв були об'ємами в 36-146ГБ, то зараз це вже 900 та 1200ГБ. Що робити?
По-перше,
для enterprise дисків - не створювати більше дискових груп в RAID-5, використовувати RAID-50.
По-друге,
переходити на RAID-6 та 60 для enterprise та nearline дисків.
Як же все таки бути з десктопними дисками? Можливо, для них підійде RAID-6?
Ні, RAID-6 їх теж не врятує, тому що з'являється наступна проблема - несумісність з апаратними RAID контролерами, однією з причин якої є неконтрольований час доступу при помилках:
Time control (SCT ERC, TLER)
Для одиночного диску з появою помилки читання стоїть завдання прочитати дані цього з цього сектору шляхом неодноразових спроб. Диск один, взяти копію даних більше нема де. Для диска в RAID масиві з надмірністю збійний сектор ніякої проблеми не представляє. Не читається сектор? Диску дається фіксований час для декількох спроб читання цього сектору. Час вийшов, сектор відразу ремапится, дані відновлюються з інших дисків.
Якщо диск довго не відповідає, то контролер вважає його несправним і викидає із масиву, і на практиці зв'язка, наприклад, із контролера Adaptec і WD Green працює з регулярною втратою дисків та постійними ребілдами, аж до повного розвалу масиву. За фіксований час доступу відповідає технологія SCT ERC. Подивитися наявність її підтримки та значення для читання/запису можна за допомогою smartctl:
smartctl -l scterc /dev/sdb
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-3.8.7-1-ARCH] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
SCT capabilities: (0x303f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SCT Error Recovery Control:
Read: Disabled
Write: Disabled
За наявності підтримки можна задати таймінги:
smartctl -l scterc,70,70 /dev/sdb
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-3.8.7-1-ARCH] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
SCT Error Recovery Control set to:
Read: 70 (7.0 seconds)
Write: 70 (7.0 seconds)
Насправді, однієї лише підтримки недостатньо. Вирішальним критерієм під час вибору дисків має бути наявність у списку сумісності від виробника контролера:
Вплив вібрації на продуктивність дисків
І останній аргумент: десктопні диски не розраховані на високий рівень вібрацій. Механіка не та. Причини появи вібраційних навантажень прості: велика кількість дисків в одному корпусі (у Supermicro з'явився варіант на 72 3,5" диска в 4U) і вентилятори по 5-9 тис. обертів на хвилину. Так ось, виміри Seagate показали, що при навантаженні близько 21 рад/с
2 десктопні диски мають дуже великі складнощі з позиціонуванням головок, втрачають доріжку, продуктивність падає на 80 з лишком відсотків.
Першоджерело: Технічний блог компанії True System