Тема эксплуатации твердотельных накопителей является одной из наиболее обсуждаемых на компьютерных сайтах и это неудивительно. В отличие от HDD, диски SSD имеют ограниченный ресурс, обуславливаемый количеством циклов перезаписи. Следовательно, чем меньше пользователь пишет на диск, тем дольше он прослужит. С вопросом срока службы SSD тесно связан вопрос производительности накопителя, который по идее должен изменяться в зависимости от того, какой объем данных уже записан на диск. Существует мнение, что для обеспечения хорошей производительности на SSD-диске нужно оставлять энный процент свободного места или нераспределённого пространства, причём по этому поводу нередко возникают споры.
Надо ли на SSD оставлять пустое место в виде резервной области
И впрямь, что лучше — нераспределённое пространство или просто свободное место, и нужно ли вообще предпринимать какие-то действия по оптимизации SSD? Давайте разбираться. Чтобы понять, откуда берутся все эти советы по оптимизации SSD, нужно знать принцип работы памяти твердотельного накопителя. Диски этого типа имеют блочную память, в которой каждый блок представляет собой набор страниц, в которые записываются данные. При изменении данных в нескольких страницах контроллеру приходилось переносить содержимое целых блоков (мы сейчас не берём в расчёты технологию TRIM) в другие блоки, причём последние должны быть полностью свободными.
Когда таких блоков много, контроллер диска имеет достаточно места для манёвров, поэтому скорость чтения/записи остаётся достаточно высокой, но что должно произойти, когда блоков останется совсем немного? Правильно, производительность диска должна резко упасть, но этого не происходит. Почему? Всё очень просто. Диски SSD имеют в своём распоряжении больше свободного пространства, которое может увидеть и использовать операционная система. Оно так и называется — резервная область SSD, или иначе Spare Area. Размер такой резервной области составляет плюс-минус 7 процентов. Кстати, это может послужить ответом на вопрос «почему на моем диске меньше места, чем заявлено». Взгляните на эти скриншоты.

Примечание: чтобы узнать фактический размер диска (доступное пользователю и системе) пространство, разделите заявленный размер диска на 1,073741824.
Для чего на SSD резервируется место
Первая причина для отвода части пространства под резерв — предоставить контроллеру больше места для манёвров и уменьшить объем операций по сбору мусора. Вторая причина — обеспечить как можно более ровный износ накопителя, для чего контроллеру нужны свободные блоки. Если их мало, контроллеру придётся записывать данные в одни и те же блоки, что вскоре приведёт к их неработоспособности. Третья и ничуть не менее важная причина — обеспечить резервный ресурс на случай выхода из строя отдельных блоков памяти. Если какой-то блок исчерпает свои возможности, контроллер тут же подыщет ему замену в резервной области. Что касается влияния размера резервной области на производительность SSD, связь между ними демонстрируется на результатах этих тестов, — чем больше процент резерва, тем выше IOPS. Итого, резервная область на SSD увеличивает производительность и одновременно продлевает срок службы накопителя.

Увеличить объем зарезервированного пространства на SSD можно, но исключительной необходимости в этом нет. Современные SSD-диски достаточно надёжны, благодаря использованию оптимизирующей технологии TRIM они могут служить годами. Увеличивая резервную область, можно разве что сделать свободное место на диске более ровным, но ждать чего-то особого от этой манипуляции на современных SSD не приходится. Что до выделяемого объёма, это примерно 10, максимум 20 процентов, выделять больше просто нерационально.
Расширить резервную область можно, либо не используя указанный процент места на диске (установка квоты как вариант), либо преобразовать его в нераспределённое пространство. Принципиальной разницы нет, но принято считать, что второй вариант более правильный, вероятно потому что на некоторых дисках резервная область идентифицировалась системой именно как нераспределённое пространство. Мы же склоняемся к тому, чтобы просто не заполнять диск под завязку, оставляя те же 20 процентов доступного вам пространства свободными.
Введение в SSD. Часть 5. Контроллерная
В прошлых частях цикла мы рассказывали про историю накопителей, о применяемых интерфейсах и форм-факторах, а также про организацию на физическом уровне. Пятая же часть посвящена «мозгу» современного твердотельного накопителя.
Контроллер современного накопителя — маленький компьютер, который принимает стандартизированные команды и выполняет соответствующие действия с подконтрольным ему хранилищем. При этом внутреннее устройство контроллера может быть любым.
У Intel есть накопитель P4618 6.4 TB, который представляется системе как два накопителя по 3.2 TB. Аналогичное встречается и среди жестких дисков. Накопители Seagate с технологией MACH.2 — это два диска, «заключенные» в одном корпусе и объединенные единым контроллером.
Контроллер — достаточно сложное устройство, которое в зависимости от предназначения диска выполняет различные задачи по управлению данными. Например, базы данных часто требуют от накопителя запись непосредственно в энергонезависимую память, минуя кэш, и в этом случае серверный SATA SSD будет быстрее, чем пользовательский NVMe. Из-за большой вариативности контроллеров не будем вдаваться в детали конкретных устройств, а поговорим об общих принципах работы современного твердотельного накопителя.
Особенности записи
Блоки и страницы в NAND-памяти. Источник
Хранилище твердотельного накопителя состоит из множества полевых транзисторов, соединенных друг с другом. При таком подходе чтение и запись выполняются страницами данных, размер которых обычно 4 КиБ. Таким образом, изменение одного бита на диске приводит к необходимости перезаписать всю страницу данных. Эта проблема называется усилением записи (Write Amplification).
Кроме того, твердотельные накопители не могут обновить данные в странице. Обновление страницы производится в четыре шага:
Износостойкость
Выравнивание износа. Источник
Современные накопители построены на базе ячеек TLC, ресурс которых в разы меньше, чем у накопителей с ячейками SLC и MLC. Если какая-то программа в ОС будет постоянно перезаписывать маленький файл, а контроллер будет «наивно» обновлять одну страницу данных, то вскоре блок с этой страницей исчерпает ресурс. Исчерпание ресурса будет отображено в показателях накопителя, что неизбежно приведет к беспокойству системного администратора.
Во избежание сильного износа единичных блоков накопителя применяются технологии выравнивания износа (Wear Leveling). При этом обновление данных выполняется без очистки страницы накопителя и выглядит так:
Балансировка износа
В каком-то смысле производитель накопителей обманывает нас дважды. Первый раз использует десятичные приставки вместо двоичных: 480 ГБ — это 447 ГиБ. А второй раз, когда фактический объем накопителя больше, чем доступно пользователю. Часть объема зарезервирована производителем для внутренних нужд контроллера. Такой резерв называется запасной областью (spare).
Таким образом, у контроллера всегда есть немного свободного пространства, которое может быть использовано для внутренних процессов. Хотя точных данных нет, в различных источниках утверждается, что для контроллера резервируется от 7 до 28 % объема накопителя.
Как бы то ни было, вернуть зарезервированную производителем область в собственное пользование не получится.
Процесс «сбора мусора». Источник
Помимо балансирования износа, в контроллерах в фоновом режиме часто проходит процесс «сбора мусора» (garbage collection). В ходе него с нескольких блоков собираются актуальные страницы и помещаются в один блок. Затем исходные блоки очищаются, так как в них не осталось страниц с данным.
Важно отметить, что сборщик мусора занимается перекладыванием данных в хранилище, чтобы было как можно больше чистых блоков. При этом он не может понять, что на файловой системе какой-то файл отмечен удаленным, так как контроллер накопителя не умеет работать в терминах файловых систем.
Для решения этой проблемы в каждом из протоколов есть команда, позволяющая уведомить контроллер об удалении файла. Для NVMe — это deallocate, для SATA — TRIM, а для SCSI — unmap. Суть каждой их этих команд одинакова: пометить страницы с удаленным файлом как «грязные».
Контроллеру приходится постоянно беспокоиться о состоянии страниц хранилища. При этом напрашивается очевидная оптимизация: если операционная система пытается считать данные со страниц, на которых нет данных, то вместо операции чтения можно просто генерировать необходимое количество нулей.
Это легко подтверждается с помощью эксперимента. Проводим Secure Erase для накопителя и запускаем тесты на случайное чтение с глубиной очереди 64. Затем «забиваем» накопитель с помощью последовательной записи, желательно дважды. И повторяем тесты.
| Размер блока | Чистый | Забитый |
|---|---|---|
| 4M | 3400 MiB/s | 3376 MiB/s |
| 8M | 3399 MiB/s | 3336 MiB/s |
В наших тестах использовался SSD-накопитель Micron 7300 1.92 TB, подключенный по PCIe 3.0 x4. Третья версия PCI Express по четырем линиям способна пропускать 3940 МБ/с или 3757 МиБ/с. Мы, конечно, не достигли предела, но надо полагать, это из-за накладных расходов на протокол NVMe. Тем не менее, видно, что чтение с диска без данных «упирается» в предел 3400 МиБ/с. После заполнения диска на 15% результаты тестов стали хуже.
Несмотря на то, что контроллер накопителя всегда пытается сделать как лучше, иногда системному администратору стоит взглянуть на показатели диска своими глазами.
Показатели
Вне зависимости от интерфейса накопителя SSD имеют набор показателей состояния, которые могут быть считаны системным администратором. Для SATA-накопителей используются показатели S.M.A.R.T., которые не стандартизированы. Отсутствие стандарта приводит к появлению различных трактовок одного показателя.
Рассмотрим вывод утилиты smartctl на примере Intel S4510.
Для нашего диска интересны следующие параметры:
С точки зрения износа исправного диска интересен показатель 233 Media_Wearout_Indicator, так как при достижении числа 1023 накопитель программно заблокируется и будет доступен в режиме только для чтения.
Показатели S.M.A.R.T — это особенность протокола SATA. Для NVMe-накопителей есть NVMe log, который также считывается программой smartctl. Аналогичный вывод можно получить с помощью команды nvme smart-log.
В выводе NVMe накопителя меньше непонятных показателей, но все равно есть место разночтениям. Легко предположить, что параметр percentage_used отвечает за объем занятого пользователем пространства на диске, но это не так. Этот параметр эквивалентен Media_Wearout_Indicator и обозначает износ накопителя.
Не стоит забывать, что предоставляемые показатели и поведение контроллера реализуется прошивкой, которая может быть обновлена.
Перепрошивка
О прошивке твердотельных накопителей задумываются нечасто. В лучшем случае после покупки «накатывают» свежую версию и забывают до конца жизни накопителя.
Как бы то ни было, обновления прошивки редко приносят какие-то значительные и заметные для пользователя нововведения. Прошивка, как и любое другое программное обеспечение, может содержать ошибки, в том числе критические. К счастью, это происходит редко, а потому нет надобности постоянно поддерживать актуальность прошивок на всех используемых накопителях.
Хотя NVMe можно перепрошить через команды fw-download и fw-commit, чаще всего обновление прошивки производится через утилиты, предоставляемые производителем накопителя. Во избежание потенциально деструктивных действий мы не будем публиковать точные команды, а порекомендуем обратиться к официальной инструкции от производителя.
Заключение
Контроллеры накопителей — сложные устройства, которые управляют не менее сложными процессами, которые проходят внутри твердотельных накопителей. Мы рассмотрели только самые интересные процессы в общих чертах.
Если вам хочется больше погрузиться в особенности работы с NVMe, рекомендуем статью про пространства имен NVMe.
Over-Provisioning что это и нужно ли включать? (SSD Samsung)

Over-Provisioning — настройка, которая позволяет вручную указать обьем резервной области под нужды контроллера. SSD состоит из ячеек памяти — цикл перезаписи ограничен, для записи данных сперва ячейки необходимо очистить. Задача контроллера — обеспечивать равномерную запись на все ячейки, проводить замену вышедших из строя, очищать ячейки которые больше не используются для хранения данных. Независимо от наличия опции Over-Provisioning каждый SSD производитель резервирует служебную область. Данные по обьему области скорее всего занесены в прошивке SSD.
Без необходимости — не включать, либо выставить настройки по умолчанию.
Область, которая технология Over-Provisioning резервирует под себя становится недоступной для пользователя.
SSD это жесткий диск и работа его в основном зависит именно от контроллера, а не от скоростных характеристик. SSD компании Samsung достаточно высокого уровня, поэтому значение Over-Provisioning стоит оставить по умолчанию, либо увеличить в зависимости от использования.
Современные операционные системы поддерживают технологию по работе с SSD — TRIM. При работе данной технологии на диске желательно оставлять некоторый обьем нераспределенного места (
10-15%), который будет использован контроллером.
При достаточной резервной области, контроллер сможет обеспечить лучшими скоростными характеристиками не в ущерб ресурсу SSD.
Также советую почитать вот эту информацию, здесь много полезного:
Вся правда о резервной области SSD, и нужна ли она вообще
Привет, Гиктаймс! Многие производители SSD советуют оставлять неразмеченную область или определенное свободное пространство на твердотельных накопителях для улучшения производительности. Постараемся разобраться, нужна ли вообще резервная область SSD, и как она влияет на производительность накопителей. По традиции все подробности под катом.

Немного о главном
В прошлый раз мы рассказывали вам о том, как работает флэш-память. Принцип ее работы визуально отлично характеризует картинка ниже. Блок (X) удалось очистить для последующей записи благодаря наличию свободного блока (Y) — новые страницы были записаны в блок (X), а затем в (Y), после чего и произошло стирание блока (X).
Это лишь один из примеров работы флэш-памяти. Суть в том, что когда на SSD много свободного пространства, то и таких блоков, как (Y), становится много. Хотя скорость работы самого контроллера является константой, производительность самого накопителя может изменяться. Чем меньше свободных блоков у флэш-памяти, тем больше процессов ей приходится выполнять, прежде чем данные будут записаны, а значит и скорость работы накопителя будет страдать. К примеру, при заполнении SSD на 98 %, свободных блоков остается все меньше и меньше. Вопрос один: что произойдет, если во время такой загруженности накопителя вы начнете записывать большие объемы данных? Здесь-то нам и пригодится резервная область SSD.
Что такое резервная область, и зачем она нужна
На самом деле операционные системы не распознают весь объем памяти твердотельных накопителей. Резервная область SSD или так называемая spare area выделяется по принципу over-provisioning и видна только контроллеру. Чтобы понять, как она работает, полезно рассмотреть, а как же, собственно, измеряется емкость SSD.
Емкость SSD измеряется в гигабайтах (десятичных приставках) и гибибайтах (двоичных приставках). Если в одном гигабайте 1 миллиард байт, то в гибибайте
1,074 x 10 в девятой степени байт. Производители, в том числе OCZ, указывают емкость в гигабайтах, при этом операционная система производит свой расчет в гибибайтах. Из-за этого получается так, что фактически емкость накопителя меньше заявленной.
Вот, например, интересная статистика по одному из накопителей. У него на борту 264 ГиБ NAND, но пользователю из них доступны только 186 ГиБ при заявленных производителем 200 ГБ. Остальная часть SSD используется в качестве резервной области для улучшения производительности и выносливости накопителя.
Как правило, резервная область составляет около 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ГБ присутствует резервная область, недоступная пользователю.
Зависимость между усилением записи (Write amplification) и резервной областью хорошо отображена в отчете исследовательской лаборатории IBM:
Как видите, чем больше резервная область, тем меньше усиление записи. Из-за наличия такой зависимости между ними производители и рекомендуют не загружать твердотельный накопитель полностью, а оставлять от 10 % до 20 % свободного места. Для чего же SSD вообще нужна резервная область?
Во-первых, так называемый сброс мусора (garbage collection), который мы разобрали на первой картинке, осуществляется реже за счет того, что операционная система не может получить доступ в резервную область и заполнить свободные блоки памяти — следовательно, контроллер получает доступ к большему количеству блоков памяти. Поэтому SSD всегда имеет свободные блоки «про запас», что немаловажно. Кроме того, если один из блоков памяти выходит из строя, контроллер берет свободный из резервной области. Также spare area влияет на выравнивание износа: если данные будут записываться в один и тот же блок, ресурс накопителя будет истощаться за счет увеличения количества циклов перезаписи блоков. Контроллер распределяет данные равномерно, тем самым выравнивая износ.
А что с производительностью?
Для компаний очень важно иметь накопители с большим количеством резервной области, поскольку именно там чаще всего происходят атаки случайными данными. Чем больше блоков резервной области в распоряжении контроллера, тем больше вероятность того, что контроллер сработает верно, и производительность SSD не будет падать даже при большой нагрузке. У OCZ на эти случаи есть отличные корпоративные решения — Z-Drive 6000 NVMe, Toshiba Hawk 4R (THNSN8) и Hawk 4E (THNSN8). 2900 МБ/с на чтение и 1900 МБ/с на запись, емкость до 6,4 ТБ.
Но не будем голословными, лучше покажем, как зависит производительность SSD от объема резервной области при помощи тестов. Для этого возьмем один из накопителей c неоптимизированным под увеличенную резервную область контроллером и будем постепенно увеличивать размер spare area — от 12 % вплоть до 50 %. Последний вариант в домашних условиях, конечно же, исключен, но важно уловить суть.
Сравнивать будем по показателю IOPS — количеству операций ввода и вывода — проще говоря, количеству блоков, которое считывается или записывается на носитель. Соответственно, чем это значение выше, тем лучше. Определяется IOPS как частное скорости и размера блока при выполнении операции. Для начала возьмем SSD со стандартным объемом резервной области (около 7 %). Вот какими показателями он может похвастаться в тестах:
А теперь проведем небольшой опыт — увеличим резервную область до 12 % и вновь замерим IOPS.
Разница пусть и небольшая, но все же видна — IOPS явно увеличился. Что ж, не будем на этом останавливаться, увеличим резервную область до 25 % — четверть накопителя теперь доступна только контроллеру.
Думаем, здесь все понятно без слов. Впрочем, отдавать столько под резервную область явно нецелесообразно, поскольку полезной становятся только 3/4 SSD. И вряд ли кто-то будет повторять подобное в домашних условиях, однако для чистоты эксперимента мы все же это сделаем. Да, увеличим spare area до 50 %.
Изменения в производительности заметны, но уж точно не настолько, чтобы отдавать половину накопителя под резерв. Это попросту нецелесообразно, поскольку рост производительности в данном случае не сможет компенсировать потерянную емкость SSD. Одно ясно точно: размер резервной области действительно влияет на быстродействие накопителя. Если решите повторить такой тест со своими SSD, учитывайте, что результаты могут отличаться в зависимости от контроллера, прошивки и, собственно, производителя и модели самого накопителя.
Помимо производительности, резервная область также снижает износ твердотельных накопителей и продлевает срок их службы. Здесь не нужно проводить какие-либо тесты: очевидно, если выполняется меньше операций чтение/записи, количество записанных данных также уменьшается. Так что чем больше spare area, тем дольше накопитель вам прослужит (но злоупотреблять этим, как мы сказали, не стоит).
Как изменить размер резервной области SSD?
Обычно производители дают такую возможность в своих фирменных утилитах для твердотельных накопителей. У OCZ это реализовано очень просто и удобно при помощи специальной утилиты SSD Guru — она не только следит за состоянием SSD, но и мониторит SMART, включает команду TRIM, проверяет автоматически наличие новых прошивок — в общем, незаменимый помощник для пользователей наших накопителей. С самой утилитой мы вас уже знакомили, так что обратим внимание только на ту вкладку, которая нужна в нашем случае.
Переходим во вкладку Tuner и получаем доступ не только к активации Trim, но и настройке over provisioning прямо на лету: достаточно перетащить ползунок и самостоятельно выбрать размер резервной области. В нашем случае, например, есть возможность увеличить spare area до 134 ГБ — при том, что объем самого накопителя составляет 480 ГБ. Получается почти 28 %.
Если же вы хотите сделать это самостоятельно, просто скройте от операционной системы часть накопителя — оставьте на нем неразмеченное пространство.








