Масштабне дослідження помилок Flash накопичувачів (огляд статті)

Не так давно було опубліковано цікаве дослідження«A Large-Scale Study of Flash Memory Failures in the Field» за авторством Qiang Wu і Sanjev Kumar з Facebook, а також Justin Meza і Onur Mutlu з Університету Карнегі-Меллон. Нижче основні висновки статті з невеликими коментарями.

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

Авторами була зібрана велика статистика за чотири роки експлуатації флеш-накопичувачів у дата-центрах Facebook.

Як багато хто напевно знають, Facebook довгий час була найкращим (і основним) клієнтом компанії Fusuion-IO (зараз куплена SANdisk), яка однією з перших почала випускати PCI-e флеш-накопичувачі.
image

В результаті проведеного аналізу зібраних даних, було зроблено ряд цікавих висновків:

• Ймовірність збою SSD змінюється нелінійно у часі. Можна очікувати, що ймовірність збою буде лінійно зростати разом із зростанням числа циклів запису. Навпаки, спостерігаються окремі піки, у яких ймовірність збоїв зростає, але ці піки визначаються іншими факторами, ніж природний знос.
• Помилки читання на практиці зустрічаються рідко і не є домінуючими.
• Розподіл даних за обсягом SSD накопичувача може істотно впливати на ймовірність збою.
• Підвищення температури призводить до підвищення ймовірності збою, але завдяки підтримці throttling, негативний температурний ефект значно знижується.
• Обсяг даних, який був записаний на SSD операційною системою не завжди точно відображає ступінь зносу накопичувача, так як в контролері працюють внутрішні алгоритми оптимізації, а також використовується буферизація в системному ПЗ.

Об'єкти дослідження.
Авторам вдалося отримати статистичні дані з безлічі накопичувачів 3х типів (різних поколінь) в 6 різних апаратних конфігураціях: 1 або 2 накопичувача 720GB PCI-e v1 x4, 1 або 2 накопичувача 1.2 TB PCI-e v2 x4, 1 або 2 накопичувача 3.2 TB PCI-e v2 x4. Так як всі вимірювання знімалися з „живих“ систем, час роботи накопичувачів (а також записаний/прочитаний обсяг даних) значно відрізняється один від одного. Тим не менш, зібраних даних виявилося достатньо, щоб отримати статистично значущі дані після усереднення результатів в рамках окремих груп. Основним вимірним показником надійності, якими оперують автори статті, є коефіцієнт невиправних бітових помилок (uncorrectable bit error rate, UBER = unrecorectable errors / bits accessed). Це ті помилки, які виникають при читанні/запису, але не можуть бути виправлені контролером ssd. Дуже цікавим видається те, що для деяких систем показники ÜBER порівнянні з точністю до порядку величини з даними, отриманими іншими дослідниками, при вимірюванні бітових помилок (BER) на рівні окремих чіпів в синтетичних тестах (L. M. Grupp, J. D. Davis, and S. Swanson. The Bleak Future of NAND Flash Memory. In FAST, 2012.). Тим не менш, така подібність було отримано тільки для накопичувачів першого покоління і тільки в конфігурації з двома платами в системі. У всіх інших випадках, різниця становить кілька порядків, що виглядає цілком логічно. Швидше за все, причиною став цілий ряд як внутрішніх, так і зовнішніх (температура, напруга) факторів, тому жодних значущих висновків із цього спостереження зробити неможливо.

Розподіл помилок.
Цікаво, що кількість спостережуваних помилок сильно залежить від конкретного накопичувача — автори зазначають, що лише 10% від загального числа SSD накопичувачів показують 95% від усіх невиправних помилок. Крім того, ймовірність виникнення помилок істотним чином залежить від „історії“ накопичувача: якщо протягом тижня спостерігалась хоча б одна помилка, то з імовірністю 99.8% наступного тижня також можна очікувати виникнення помилки на цьому накопичувачі. Також автори відзначають кореляцію між ймовірністю виникнення помилки і числом SSD плат в системі — для конфігурацій з двома накопичувачами ймовірність збою зростала. Тут, однак, необхідно враховувати інші зовнішні чинники — передусім характер навантаження і спосіб перерозподілу навантаження у разі збою накопичувача. Тому не можна говорити про безпосередній вплив накопичувачів один на одного, але при плануванні складних систем, виявляється важливим те, як розподіляється навантаження не тільки в нормальному стані, але і в разі збоїв окремих компонентів. Необхідно планувати комплекс таким чином, щоб збій одного компонента не приводив до лавиноподібного зростання ймовірності збоїв в інших компонентах системи.

Залежність кількості помилок від строку експлуатації (кількості циклів запису).
Добре відомо, що термін життя SSD залежить від числа циклів запису, яке, в свою чергу, досить суворо лімітована в рамках використовуваної технології. Логічно очікувати, що кількість спостережуваних помилок буде зростати пропорційно обсягу записаних на SSD даних. Отримані експериментальні дані показують, що в реальності картина виявляється дещо складнішим. Відомо, що для звичайних жорстких дисків типовою є U-подібна крива, що описує ймовірність виходу з ладу.
image
(Jimmy Yang, Feng-Bin Sun A comprehensive review of hard-disk drive reliability. Reliability and Maintainability Symposium, 1999. Proceedings. Annual)
На початковому етапі експлуатації спостерігається порівняно висока ймовірність збоїв, яка потім знижується і починає знову зростати вже після тривалої експлуатації. Для SSD ми теж бачимо підвищене число збоїв на початковому етапі, але не відразу, а спочатку йде поступове зростання кількості помилок.
image
Автори висувають гіпотезу, що причиною нелінійного поведінки є наявність „слабкої ланки“ — осередків, які зношуються набагато швидше. Ці комірки на ранній стадії експлуатації генерують невиправні помилки, а контролер, у свою чергу, виключає їх з роботи. Залишилися „надійні“ осередки функціонують протягом свого життєвого циклу нормально і починають служити причиною помилок вже тільки через тривалий час експлуатації (так, як і очікується на основі граничного числа циклів запису). Це цілком логічне припущення — первинні збої спостерігаються і для жорстких дисків, і для SSD. Відмінність у поведінці HDD і SSD пояснюється тим, що фізична помилка на жорсткому диску зазвичай призводить до випадання диска з RAID-масиву, а для SSD контролер зазвичай може виправити помилку і перемістити дані на резервний об'єм. Знизити ймовірність виникнення збоїв на початковому етапі експлуатації можна попередніми контролем (»обкаткою"), що іноді практикується вендорами на спеціальних стендах.

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

Вплив фрагментації даних всередині SSD на збої.
Ще один аспект, на який варто звернути увагу — зв'язок коефіцієнта помилок з навантаженням на буфер. Звичайно, безпосередньо навантаження на буфер (який є звичайною DRAM мікросхемою) ніяк не пов'язана. Однак, чим більш «розмазуються» записуються блоки за обсягом SSD (фрагментація), тим більш активно використовується буфер, який служить для зберігання метаданих. В результаті досліджень отриманих даних, ряд конфігурацій показав явну залежність коефіцієнта помилок від розподілу записуваних даних за обсягом SSD. Це дозволяє припустити значний потенціал у розвитку технологій, що дозволяють оптимізувати операції запису за рахунок оптимального розподілу даних по накопичувачу, що, в свою чергу, дозволить забезпечити більш високу надійність накопичувачів.

Температурні ефекти.
Із зовнішніх факторів, що потенційний вплив на надійність накопичувачів, насамперед, можна виділити температурні ефекти. Як і будь-напівпровідник, чіпи флеш піддані деградації при високих температурах, тому можна очікувати, що зростання температури всередині системи може призвести до зростання коефіцієнта помилок. В реальності така поведінка спостерігається тільки для деяких конфігурацій. Найбільш виразно вплив температури помітно для першого покоління накопичувачів, а також для систем з двома накопичувачами другого покоління. В інших випадках температурний ефект був порівняно малий, а іноді був навіть від'ємним. Така поведінка легко пояснити підтримкою throttling (пропуск циклів) в SSD.
image
Ймовірно, для більш ранніх моделей технологія або не підтримувалася, або не була реалізована на належному рівні. Нові накопичувачі спокійно переносять підвищення температури, правда, ціною цього є зниження продуктивності. Тому, якщо раптом продуктивність SSD накопичувача в системі знизилася, варто перевірити температурний режим. Температурний ефект дуже цікавий особливо в світлі того, що інженерні підрозділи в останні роки намагаються максимально підвищити температуру в ЦОД, щоб знизити витрати на охолодження. В документах, що публікуються ASHRAE (American Society of Heating, Refrigerating and Air-Conditioning Engineers) можна знайти рекомендації для систем з SSD накопичувачами. Ось, наприклад, документ, який цілком може стати в нагоді — Data Center Storage Equipment – Thermal Guidelines, Issues, and Best Practices. При плануванні серйозних обчислювальних комплексів, безумовно, варто враховувати рекомендації ASHRAE і уважно вивчати характеристики планованих до використання накопичувачів, щоб не потрапити в такий температурний режим, коли вже почалася деградація продуктивності для збереження надійності накопичувача.

Достовірність статистичних даних в системному ПЗ.
Ще одне цікаве спостереження авторів — в ряді випадків, хоча метрики операційної системи показували високий обсяг записаних даних, коефіцієнт помилок був нижчий, ніж для систем, де обсяг записаних даних був нижче.
image
Як з'ясувалося, найчастіше метрики операційної системи і безпосередньо контролера SSD значно відрізнялися. Це пов'язано з оптимизациями всередині контролера SSD, а також з буферизацією вводу-виводу як в самій операційній системі, так і в накопичувачі. Як наслідок, не стоїть на всі 100% покладатися на метрики операційної системи — вони можуть бути не зовсім точними, а подальші оптимізації підсистеми вводу-виводу можуть зробити цей розрив ще більш помітним.

Практичні висновки.
Отже, які практичні висновки можна зробити на основі даного дослідження?
1. Проектуючи серйозні рішення на базі SSD, необхідно дуже уважно ставитися до температурного режиму в ЦОД, інакше можна отримати або деградацію продуктивності, або високу ймовірність збою.
2. Перед введенням в продуктив, варто «прогріти» систему з метою виявлення «слабких ланок». Порада ця, правда, однаково добре підходить до будь-яких компонентів, будь то SSD або жорсткі диски, або модулі пам'яті. Навантажувальне тестування дозволяє виявити «проблемні» компоненти, які, у іншому випадку, могли б «попсувати крові» в бойовий інфраструктурі.
3. Якщо накопичувач почав видавати помилки, варто заздалегідь подбати про наявність ЗІП.
4. Статистику краще збирати з усіх доступних джерел, але для ряду показників краще орієнтуватися на низькорівневі дані всередині накопичувачів.
5. Нові покоління SSD зазвичай краще старих :)
У всіх цих радах немає нічого несподіваного, але часто саме прості речі вислизають від уваги.

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

PS термін «надійність» в тексті вживається виключно в якості аналога терміну «число помилок».

Інші статті Трініті можна знайти на хабі Трініті. Підписуйтесь!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.