Чинники витривалості SSD, прості та складні

SSD-накопичувачі презентуються хостовій ОС як звичайні блокові пристрої з розміром сектора 512 байт або 4 КБ. Флеш-пам'ять NAND за своєю природою має власні розміри сторінок більше 4 КБ і розміри блоків стирання, вимірювані в мегабайтах. Ця невідповідність є джерелом більшої частини складності адресації. Складність тягне за собою накладні витрати.
"Ахілесова п’ята" SSD
Основним компонентом флеш-пам'яті NAND SSD є транзистор з плаваючим затвором. Затвор зберігає заряд (інформацію) і відділений шаром оксиду. Для читання та запису на затвор подається напруга, кожен цикл зміни якої руйнує оксидний шар, зменшуючи здатність утримувати електричний заряд. Витривалість SSD визначається максимальною кількістю циклів програмування/стирання (P/E), яку може витримати його пам’ять.
На витривалість впливає тип пам’яті. SLC NAND (1 біт на комірку) живе довше, ніж MLC, TLC і QLC NAND, які зберігають кілька біт на комірку. З економічних причин в дата-центрах наразі панують SSD на TLC (з часткою QLC у сховищах холодних даних). За однакової пам’яті, ані виробничі чинники, ані торгові марки не впливають на життєздатність носіїв.
Типовим ресурсом серверних SSD під додатки з переважно читанням (RI) вважається 1 DWPD. Умовному стандарту 3 DWPD відповідають SSD для змішаного використання (MU) у серверах баз даних, кешування, робочих навантажень із високою продуктивністю запису. На жаль, через велику собівартість та вузьке коло застосування пішла у засвіти технологія пам’яті Intel Optane, яка не використовувала NAND, з набагато кращими показниками витривалості. Intel Optane SSD мали ресурс 30, 60 і навіть 100 DWPD.
Підсилення запису
На відміну від HDD, флеш-пам'ять NAND не дозволяє просто так взяти та перезаписати блок даних, його спершу треба стерти. А оскільки блок стирання за розмірами сильно більший за блок запису, то в міру заповнення ємності контролеру SSD доводиться вивільняти місце: кудись зчитувати вміст всього блоку стирання, потім модифікувати в ньому дані, потім стирати блок, повертаючи його у стан готових під нові записи. Це призводить до появи такого небажаного явища, як підсилення запису (Write amplification, WA). Фактично, на диск записується набагато більше даних, ніж їх надсилає хост. Що менше на SSD вільного місця, тим інтенсивніше WA.
Посилення запису має два недоліки: падіння швидкості та прискорення зносу.
Надмірне виділення (overprovisioning, OP)
Природний шлях поліпшення продуктивності випадкового запису та витривалості SSD - резервування ємності NAND, виділення надлишку комірок. Недоступна хосту службова область містить резервні або запасні блоки, потрібні на випадок дефектів і збоїв, для збирання сміття і вирівнювання зносу. Контролер SSD використовує OP як маневровий простір. Це простий спосіб зменшення посилення запису, хоч і за рахунок втрати частини корисної ємності. Чим ближче коефіцієнт WA до одиниці, тим SSD ефективніший і довше прослужить. Серверні накопичувачі постачаються із заводським обсягом надлишкового забезпечення 6-7% і вище. Користувач може його збільшити, вказавши діапазон логічних адрес LBA для запису, менший за загальний розмір диска.
Побачити наслідки надмірного виділення можна на прикладі тестів і досліджень. Резервування додаткових 20% ємності SSD призводить до подвоєння продуктивності запису. Витривалість при цьому зростає приблизно втричі. Саме тому накопичувачі 1.6 / 3.2 / 6.8 … ТБ мають паспортний ресурс 3 DWPD – проти 1 DWPD у 1.92 / 3.84 / 7.68 … ТБ.

Справа інтелекту
Залишимо фізику перезапису флеш-пам’яті осторонь. За довголіття SSD можна поборотися зміною логіки їхньої роботи. Проблеми ранньої чи підвищеної смертності HDD мали виключно механічну природу. Спочатку їм на зміну в серверах та сховищах даних прийшли SATA і SAS SSD, з успадкованими протоколами ACHI і SAS. Хоча наслідки інтенсивного перезапису будь-яких SSD можна пом’якшити за рахунок OP, посередники заважають повноцінному інтелектуальному втручанню втручанням у керування даними. Інша справа NVMe.
Cпецифікація NVMe розроблена з чистого листа під носії прямого доступу на шині PCIe. Кожний наступний стандарт PCIe поліпшує швидкісні характеристики SSD, кожна наступна редакція протоколу NVMe додає нову функціональність. Оновлення специфікації не розповсюджується автоматично на всі SSD: деякі функції мають сенс тільки для вбудованих систем або розгортань, що гіпермасштабуються, інтенсивно використовують мережевий доступ NVMe-oF і віртуалізацію. Треба оновлювати прошивки SSD і драйвери NVMe в операційних системах - без підтримки з обох боків доступні будуть лише старі набори функцій. Розробка системного програмного забезпечення потребує більше часу, ніж відповідні зміни прошивки SSD, тому реалізації закладених в нові стандарти опцій з’являтимуться у спеціалізованих середовищах. Чи з'являться вони у дистрибутивах ОС загального призначення, велике питання. Можливо і ні.
Простори імен (namespaces) і OP
Простір імен NVMe — це набір адрес логічних блоків (LBA), доступних для програмного забезпечення хоста, доступ якому надає контролер SSD. Якщо partition — це розділ диска на рівні хоста, то простір імен є логічним розділом на рівні контролера, з яким хост працює як з блоковим пристроєм.
Є багато причин розбивати NVMe SSD на кілька просторів імен: для логічної ізоляції, множинного користування, ізоляції безпеки (шифрування для кожного простору імен), захисту простору імен від запису для цілей відновлення, надмірного виділення для покращення продуктивності запису та довговічності. NVMe за замовченням має один простір імен на всю ємність SSD. Достатньо з командного рядка його видалити і створити новий, меншого розміру.
Потоки (streams)
Потоки — функція, додана в специфікації NVMe 1.3. Вона дозволяє хосту позначати та класифікувати дані за допомогою ідентифікатора потоку, який SSD може використовувати для інтелектуального розміщення даних. Мета цієї функції — передавати дані з різною швидкістю (наприклад, гарячі, теплі, холодні) у різні фізичні місця для підвищення ефективності збирання сміття та зменшення WA. Потім прошивка SSD може вирішити, куди на NAND фізично розмістити дані, помічені тим самим ідентифікатором потоку в тому самому наборі блоків стирання на NAND, щоб під час збирання сміття підвищилася ефективність і зменшилася кількість записів.
Зоновані простори імен (ZNS)
В останній версій стандарту NVMe 2.0 з’явилися зоновані простори імен (ZNS) — набір команд, який дозволяє групувати дані на основі їх використання та частоти доступу та зберігати їх послідовно в незалежних зонах на SSD. Без необхідності переміщувати та змінювати дані, твердотільні накопичувачі ZNS можуть значно зменшити кількість операцій запису, знижуючи коефіцієнт посилення запису WA накопичувача.

Джерело: Samsung
ZNS усуває потребу в надлишковому забезпеченні, збираючи сміття на рівні зони та змушуючи посилення запису бути близьким до 1. Компроміс цього покращення вартості та довговічності SSD полягає в більш складному керуванні з боку хоста. Диск, хост, файлова система та програмне забезпечення мають підтримувати ZNS, щоб все працювало належним чином.
Гнучке розміщення даних
Гнучке розміщення даних (FDP) являє собою останню розробку стандартної технології розміщення даних для NVMe. Хоча його варіанти використання схожі на інші функції NVMe, такі як потоки та ZNS, відмінності мають значні наслідки для реалізації в стеках і додатках хост-сховища. Оскільки стеки хостів застосовують різні технології розміщення даних, зростає ризик роздутих кодових баз і надлишкових реалізацій, збільшуючи витрати на обслуговування великих магістральних проектів.
На відміну від ZNS, FDP дозволяє записувати дані як послідовно, так і випадково. У більшій мірі, ніж Streams або ZNS, FDP пропонує інформацію зворотного зв’язку від накопичувача через канал для опитування подій приводу та збору статистики приводу. Для багатьох програм ці комбіновані функції роблять FDP більш практичним вибором для розміщення даних, ніж інші варіанти.
Підтримка FDP має бути інтегрована в ядро ОС, бібліотеки та супутні інструменти.
Домашні завдання розробників
Нові набори команд NVMe б'ють по кількох цілях: зниженню затримок, збільшенню витривалості носіїв, керованістю ними. Всі вони виглядають привабливо на папері, але потребують значних змін в програмному забезпеченні серверів та сховищ (вже не кажучи про вибіркове слідування вендорами специфікаціям NVMe, яке заважає появі універсальних інструментів). Швидких впроваджень не буде, хіба що у вертикальних сегментах ринку, з контрольованою розробкою продуктів «з нуля».
Як би там не було, NVMe розширює межі можливого. Решта в руках прикладних розробників.
За мотивами SNIA
