Вся правда о резервной области SSD, и нужна ли она вообще

Привет, Гиктаймс! Многие производители SSD советуют оставлять неразмеченную область или определенное свободное пространство на твердотельных накопителях для улучшения производительности. Постараемся разобраться, нужна ли вообще резервная область SSD, и как она влияет на производительность накопителей. По традиции все подробности под катом.

f7029052f82ff7e2e9216ee9bf174390.jpg

Немного о главном


В прошлый раз мы рассказывали вам о том, как работает флэш-память. Принцип ее работы визуально отлично характеризует картинка ниже. Блок (X) удалось очистить для последующей записи благодаря наличию свободного блока (Y) — новые страницы были записаны в блок (X), а затем в (Y), после чего и произошло стирание блока (X).

2820f17cad8ce6f0643fe2738e7d40b2.png

Это лишь один из примеров работы флэш-памяти. Суть в том, что когда на SSD много свободного пространства, то и таких блоков, как (Y), становится много. Хотя скорость работы самого контроллера является константой, производительность самого накопителя может изменяться. Чем меньше свободных блоков у флэш-памяти, тем больше процессов ей приходится выполнять, прежде чем данные будут записаны, а значит и скорость работы накопителя будет страдать. К примеру, при заполнении SSD на 98%, свободных блоков остается все меньше и меньше. Вопрос один: что произойдет, если во время такой загруженности накопителя вы начнете записывать большие объемы данных? Здесь-то нам и пригодится резервная область SSD.

Что такое резервная область, и зачем она нужна


На самом деле операционные системы не распознают весь объем памяти твердотельных накопителей. Резервная область SSD или так называемая spare area выделяется по принципу over-provisioning и видна только контроллеру. Чтобы понять, как она работает, полезно рассмотреть, а как же, собственно, измеряется емкость SSD.

Емкость SSD измеряется в гигабайтах (десятичных приставках) и гибибайтах (двоичных приставках). Если в одном гигабайте 1 миллиард байт, то в гибибайте ~ 1,074×10 в девятой степени байт. Производители, в том числе OCZ, указывают емкость в гигабайтах, при этом операционная система производит свой расчет в гибибайтах. Из-за этого получается так, что фактически емкость накопителя меньше заявленной.

Вот, например, интересная статистика по одному из накопителей. У него на борту 264 ГиБ NAND, но пользователю из них доступны только 186 ГиБ при заявленных производителем 200 ГБ. Остальная часть SSD используется в качестве резервной области для улучшения производительности и выносливости накопителя.
4a4470d9638858c81f20730ce44a362c.png

Как правило, резервная область составляет около 7% общей емкости NAND. Для расчета реальной емкости SSD в ГиБ необходимо поделить емкость в гигабайтах на 1,073741824. В случае с накопителем на 256 ГБ это будет 238,4 ГиБ. Оставшаяся часть SSD и используется как spare area. Для наглядности еще раз обратимся к тому, как работает флэш-память.

Часто задают вопрос, почему некоторые SSD имеют емкость 120/240/480 ГБ, когда другие 128/256/512 ГБ. В случае с OCZ физический объем данных пар емкостей накопителя одинаков. Разница заключается в объеме резерва для различных моделей: при полных объемах 128/256/512ГБ резерва нет, а на 120/240/480ГБ присутствует резервная область, недоступная пользователю.

fc769e6d01d6300fc96a10894a41384f.png


Зависимость между усилением записи (Write amplification) и резервной областью хорошо отображена в отчете исследовательской лаборатории IBM:

Как видите, чем больше резервная область, тем меньше усиление записи. Из-за наличия такой зависимости между ними производители и рекомендуют не загружать твердотельный накопитель полностью, а оставлять от 10% до 20% свободного места. Для чего же SSD вообще нужна резервная область?

4716c1dc954f258379feb6ef19e1312d.jpg


Во-первых, так называемый сброс мусора (garbage collection), который мы разобрали на первой картинке, осуществляется реже за счет того, что операционная система не может получить доступ в резервную область и заполнить свободные блоки памяти — следовательно, контроллер получает доступ к большему количеству блоков памяти. Поэтому SSD всегда имеет свободные блоки «про запас», что немаловажно. Кроме того, если один из блоков памяти выходит из строя, контроллер берет свободный из резервной области. Также spare area влияет на выравнивание износа: если данные будут записываться в один и тот же блок, ресурс накопителя будет истощаться за счет увеличения количества циклов перезаписи блоков. Контроллер распределяет данные равномерно, тем самым выравнивая износ.

А что с производительностью?


Для компаний очень важно иметь накопители с большим количеством резервной области, поскольку именно там чаще всего происходят атаки случайными данными. Чем больше блоков резервной области в распоряжении контроллера, тем больше вероятность того, что контроллер сработает верно, и производительность SSD не будет падать даже при большой нагрузке. У OCZ на эти случаи есть отличные корпоративные решения — Z-Drive 6000 NVMe, Toshiba Hawk 4R (THNSN8) и Hawk 4E (THNSN8). 2900 МБ/с на чтение и 1900 МБ/с на запись, емкость до 6,4 ТБ.

a9d29cee5edbfce72197f49b0cfabe4f.jpg

Но не будем голословными, лучше покажем, как зависит производительность SSD от объема резервной области при помощи тестов. Для этого возьмем один из накопителей c неоптимизированным под увеличенную резервную область контроллером и будем постепенно увеличивать размер spare area — от 12% вплоть до 50%. Последний вариант в домашних условиях, конечно же, исключен, но важно уловить суть.

Сравнивать будем по показателю IOPS — количеству операций ввода и вывода — проще говоря, количеству блоков, которое считывается или записывается на носитель. Соответственно, чем это значение выше, тем лучше. Определяется IOPS как частное скорости и размера блока при выполнении операции. Для начала возьмем SSD со стандартным объемом резервной области (около 7%). Вот какими показателями он может похвастаться в тестах:

b70439a971bc4984b438c9cd972aa63a.png


А теперь проведем небольшой опыт — увеличим резервную область до 12% и вновь замерим IOPS.

bd1376d1ea6a705466c67a1a58ac2d25.png


Разница пусть и небольшая, но все же видна — IOPS явно увеличился. Что ж, не будем на этом останавливаться, увеличим резервную область до 25% — четверть накопителя теперь доступна только контроллеру.

be6f12da7f3d006978d91c29f402b66f.png


Думаем, здесь все понятно без слов. Впрочем, отдавать столько под резервную область явно нецелесообразно, поскольку полезной становятся только ¾ SSD. И вряд ли кто-то будет повторять подобное в домашних условиях, однако для чистоты эксперимента мы все же это сделаем. Да, увеличим spare area до 50%.

100b10b36ec615383896b4875c4875d1.png


Изменения в производительности заметны, но уж точно не настолько, чтобы отдавать половину накопителя под резерв. Это попросту нецелесообразно, поскольку рост производительности в данном случае не сможет компенсировать потерянную емкость SSD. Одно ясно точно: размер резервной области действительно влияет на быстродействие накопителя. Если решите повторить такой тест со своими SSD, учитывайте, что результаты могут отличаться в зависимости от контроллера, прошивки и, собственно, производителя и модели самого накопителя.

Помимо производительности, резервная область также снижает износ твердотельных накопителей и продлевает срок их службы. Здесь не нужно проводить какие-либо тесты: очевидно, если выполняется меньше операций чтение/записи, количество записанных данных также уменьшается. Так что чем больше spare area, тем дольше накопитель вам прослужит (но злоупотреблять этим, как мы сказали, не стоит).

Как изменить размер резервной области SSD?


Обычно производители дают такую возможность в своих фирменных утилитах для твердотельных накопителей. У OCZ это реализовано очень просто и удобно при помощи специальной утилиты SSD Guru — она не только следит за состоянием SSD, но и мониторит SMART, включает команду TRIM, проверяет автоматически наличие новых прошивок — в общем, незаменимый помощник для пользователей наших накопителей. С самой утилитой мы вас уже знакомили, так что обратим внимание только на ту вкладку, которая нужна в нашем случае.

Переходим во вкладку Tuner и получаем доступ не только к активации Trim, но и настройке over provisioning прямо на лету: достаточно перетащить ползунок и самостоятельно выбрать размер резервной области. В нашем случае, например, есть возможность увеличить spare area до 134 ГБ — при том, что объем самого накопителя составляет 480 ГБ. Получается почти 28%.

Если же вы хотите сделать это самостоятельно, просто скройте от операционной системы часть накопителя — оставьте на нем неразмеченное пространство.

d0bbd14d5d55c7f80364d0911ac0d453.jpg


Берегите свои накопители!


Безусловно, даже без манипуляций с резервной областью твердотельный накопитель прослужит вам долго: благо большинство мифов о недолговечности SSD удалось развеять. По возможности накопители, разумеется, стоит беречь, но только если это не ограничивает ваши потребности. Самый простой способ — оставлять свободным от 10 до 20% доступного вам объема SSD: именно вам, а не контроллеру.

© Geektimes