Твердотельные накопители. Внутреннее устройство и принципы их построения / Хабр
Наши клиенты часто интересуются внутренним устройством твердотельных накопителей. Чем определяется надежность накопителей? Почему нельзя хранить важные данные на флешках, и бывают ли надежные флешки? Зачем в контроллеры SSD-накопителей ставят многоядерные процессоры? Почему флешки больших объемов пишут быстро, а малых объемов медленно? Многие вопросы требуют длительного погружения в тему, а некоторые отпадают сами собой после небольшого ликбеза по внутреннему устройству твердотельных накопителей, о том и пойдет речь.
USB-флеш-накопитель, карта памяти microSD/SD, SSD-накопитель представляют собой, на первый взгляд, разные устройства, хотя на самом деле являются «близкими родственниками». Все три типа устройств относятся к твердотельным накопителям на основе NAND флеш-памяти. Забавный факт, именуемые в быту «SSD-диски» не являются дисками в прямом смысле. Название «диск» исторически унаследовано от жестких магнитных дисков (Hard Disk Drive — HDD).
Несмотря на разницу в применении, архитектура всех твердотельных накопителей в общем виде выглядит одинаково.
В состав твердотельных накопителей входят:
- Контроллер – основной элемент твердотельного накопителя, выполняющий функции чтения, записи, контроля целостности данных и исправления битовых ошибок, возникающих в структуре NAND флеш-памяти. С одной стороны, контроллер подключается к хосту через внешний интерфейс SATA / USB / SD / PCIe, с другой – к микросхемам NAND флеш-памяти через интерфейс подключения ONFI / Toggle
- NAND флеш-память – массив микросхем, формирующих объем памяти накопителя
Для понимания задач, выполняемых контроллером, необходимо иметь базовые представления об организации NAND флеш-памяти. Микросхемы NAND флеш-памяти достаточно специфичны в использовании, начиная от интерфейса подключения и заканчивая достоверностью хранения информации.
NAND флеш-память
Микросхема NAND флеш-памяти – хранилище для информации пользователя (фотографии, фильмы, документы, системные файлы операционной системы и т.п.).
Остановимся на вопросах интерфейса доступа к данным и актуальных для твердотельных накопителей проблемах сохранности информации в NAND флеш-памяти.
Микросхему NAND флеш-памяти можно сравнить с архивом бумажных документов. Наподобие того, как бумаги хранятся в архиве, также электронные документы хранятся в памяти микросхем.
Важнейшими функциями любой системы хранения данных и архива являются:
- Хранение данных — архив должен иметь условия, обеспечивающие сохранность бумаг
- Доступ к информации — библиотекарь должен иметь возможность поработать с нужным документом, иначе архив бесполезен
Условия хранения, обеспечивающие сохранность бумаг (температура, влажность, защита от грызунов), определяют целостность данных, а наличие входной двери, пролетов между полками обеспечивает доступ к бумагам. По аналогии можно сказать, что каждый бит данных во флеш-памяти хранится в виде заряда в плавающем затворе транзистора (ячейка). Для записи бита информации в ячейку программируется определенный уровень заряда.
Однако система хранения данных во флеш-памяти имеет следующие особенности:
- Заряд с затвора способен «утекать» со временем, что рано или поздно приведет к изменению данных. Например, как чернила на архивных бумагах со временем выцветают или растекаются, превращаясь в неразборчивые пятна. Чем дольше хранятся данные, тем меньше вероятность их потом прочитать.
- После записи одними и теми же цепями одинакового логического уровня заряда в разные ячейки из-за технологического разброса параметров транзисторов появится вероятность прочитать оттуда разные по величине значения заряда. (Бумага может иметь разные свойства впитывания и растекания чернил. Мелкий текст, написанный фломастером, не на каждой бумаге удастся прочитать.)
- Цепи записи и чтения заряда также не идеальны и имеют технологический разброс уровней напряжения программирования и порогов чтения логических уровней. (Похоже на то, как на бумажных носителях разные библиотекари по-разному могут разобрать текст, записанный разными авторами, потому что почерк у всех разный.)
Целью технологии разработки микросхем памяти является создание флеш-памяти с максимальным соотношением «качество/цена». Для хранения данных в накопителях
Понятия интерфейса доступа и правила доступа к NAND флеш-памяти:
- Блок. Весь объем микросхемы разбит на блоки. Объем блока составляет порядка единиц мегабайт. (Например, в архиве, это книга или блокнот в переплете с прошитыми листами)
- Стирание блока. Блок может быть стёрт, при этом каждый бит информации в нем будет установлен в «1». Нельзя стереть только часть блока. (Например, книгу можно выкинуть, но нельзя вырвать из книги лист, не нарушив целостность книги)
- Страница. Блок разделен на страницы размером порядка десятков килобайт. (Например, книги и блокноты тоже имеют страницы)
- Программирование страницы. В NAND флеш-память могут быть записаны (запрограммированы) одновременно данные всей страницы, биты устанавливаются при программировании в значения «0» или «1». (Например, чистые страницы книги или блокнота можно заполнить информацией только единожды)
- Порядок программирования страниц. Страницы в пределах блока должны программироваться строго в порядке возрастания их номеров. (Например, последовательная запись информации в книгу или блокнот)
- Порядок перезаписи. Каждая страница может быть запрограммирована только один раз. Для повторного программирования страницы необходимо стереть полностью блок. (Например, если в уже готовом издании книги необходимо заменить страницу, то придется перепечатать всю книгу и заново сделать переплет)
Перечисленные выше особенности NAND флеш-памяти выглядят довольно безобидно, на первый взгляд, но множество вопросов возникает при первой же попытке перезаписать часть данных (например, один сектор). Задачи записи и чтения непосредственно NAND флеш-памяти решает контроллер.
Контроллер
Контроллер обеспечивает подключение к хосту, и, собственно, представляется накопителем. В общем виде архитектура любого контроллера любого накопителя выглядит типично: имеются аппаратные блоки интерфейсов для обмена данными с хостом (EXT_IF) и NAND-памятью (FLASH_IF).
Между блоками интерфейсов в обязательном порядке присутствует буферная оперативная память (MEM_BUF), предназначенная для оперативного кэширования данных и сглаживания потока записи/чтения данных. В контроллерах USB-накопителей буферная память составляет десятки килобайт и размещается непосредственно в самом контроллере. В высокопроизводительных системах, таких как SSD-накопители, используются внешние микросхемы памяти. Данные между интерфейсными блоками и буферной памятью передаются без непосредственного участия процессора по каналам прямого доступа к памяти (DMA, direct memory access). Участие процессора в передаче данных заключается в настройке каналов DMA и синхронизации работы блоков.Любой из подключаемых накопителей является «блочным устройством». Блочное устройство – это устройство, в котором данные хранятся в виде последовательной цепочки логических блоков, обращение к которым возможно по адресу
Для программистов, работающих с накопителями на физическом уровне (запись/чтение по физическим адресам), вполне очевидно, что запись и чтение одного сектора не должны затрагивать ни коим образом данные других секторов. Также это очевидно для пользователя блочного устройства, но NAND флеш-память, как было сказано ранее, не предоставляет такой возможности. Для того, чтобы заменить один сектор в массиве памяти NAND, необходимо перезаписать весь блок NAND флеш-памяти, размер которого составляет мегабайты. Такой метод решения задачи крайне неэффективен, так как приводит к недопустимому снижению скорости записи в NAND флеш-память относительно ее потенциальных возможностей. К тому же так как операционная система часто пишет в одни и те же адреса устройства (например, записи FAT), то блоки NAND флеш-памяти быстро придут в негодность из-за ограниченного ресурса на стирание.
Чтобы увеличить скорость записи/чтения данных и продлить срок службы NAND флеш-памяти, применяются более хитрые методы адресации, переводящие логические адреса (LBA) накопителя в физические адреса NAND флеш-памяти. Алгоритм трансляции адресов NAND флеш-памяти в зарубежной литературе называется Flash Translation Layer (FTL). Если посмотреть описание контроллеров SSD (например, компании Marvell), то можно увидеть, что в состав контроллера входит до 4 процессорных ядер. Такая высокопроизводительная система в SSD необходима в первую очередь для расчета адресов трансляции.FTL, логическая и физическая адресация
Не существует единого универсального алгоритма FTL, удовлетворяющего все запросы пользователя, в которые входят:
- скорость записи/чтения данных по последовательным адресам
- скорость записи/чтения данных по случайным адресам
- срок службы накопителя
- надежность хранения данных
- объем и тип применяемой памяти
Алгоритмы FTL могут отличаться как для разных типов накопителей (SD/USB/SSD), так и для одного типа. Например, существует разделение SSD по назначению: для серверов, для кэширования в персональном компьютере (ПК), для ноутбуков, для настольных ПК. При этом для каждого применения существуют свои приоритеты в требованиях и свои варианты реализации FTL. Каждый вариант FTL представляет собой компромисс параметров с учетом приоритетов конкретного применения накопителя.
Суть FTL – преобразование логических адресов устройства в физичеcкие адреса NAND флеш-памяти.
Каждому логическому LBA ставится область памяти в NAND. Это называется Logical Unit Number Table (LUN table). Для перезаписи логического блока стираются данные свободного физического блока, после чего происходит замена в LUN table, что создает для пользователя видимость перезаписи. От того, какого размера выбираются логические блоки, зависит размер LUN table (не во всех устройствах целесообразно иметь большие объемы памяти). Существуют два принципиально разных подхода в реализации FTL: блочная адресация и страничная адресация.
Блочная адресация
В блочной адресации размер логического блока соответствует размеру физического блока. В свою очередь в массиве LUN table с индексом, равным адресу логического блока, указывается значение, соответствующее адресу физического блока. Для изменения части блока необходимо переписать весь блок целиком.
Преимуществом блочной адресации является малый размер LUN table, что актуально для устройств с малым объемом оперативной памяти, таких как USB-флеш-накопитель или карта памяти microSD. Недостатком является то, что размер блока довольно большой (порядка мегабайтов), и для перезаписи малых объемов данных (например, 512 байт) приходится переписывать весь блок.
Страничная адресация
В страничной адресации в LUN table сохраняются адреса физических страниц. Размер логического блока при этом составляет порядка десятков килобайт.
Преимуществом страничной адресации является высокая скорость перезаписи данных, как последовательно, так и в случайном порядке. Недостатком является большой размер LUN table. Поэтому в состав большинства SSD входит микросхема оперативной памяти, объемом более 100 Мбайт.
На практике в основном применяются гибридные алгоритмы, сочетающие в себе оба варианта адресации. Например, в компактных накопителях (USB-флеш-накопитель, карта памяти SD) основная часть объема адресуется блочным методом, в то время, как часть объема, к которой часто производится обращение, адресуется постранично.
Такова структура и принципы работы накопителей на NAND флеш-памяти. О методах адресации FTL написано большое количество научных статьей и запатентовано множество решений. Производители контроллеров непрерывно работают над совершенствованием ПО даже после выхода продукта на рынок. В целом, программное обеспечение является неотъемлемой частью контроллера, и его описание заслуживает отдельной статьи.
Твердотельные накопители специального назначения — Comtech Technologies
Сочетание лучших технологий коммерческого предложения (COTS) и проверенных военных методов разработки позволяет создать самые прочные и долговечные твердотельные диски.
ОСОБЕННОСТИ
- Прочный корпус из анодированного алюминия
- Жесткая печатная плата толщиной >1 мм крепится 8 винтами
- Заполнение всех решеток с шариками
- Флэш-память SLC NAND при промышленной температуре
- Безопасное стирание с настраиваемыми штифтами стирания
- Дополнительное конформное покрытие и гелевое наполнение
- Высоконадежный оловянно-свинцовый припой (SnPb63)
БЕНЕФИТЫ
- Самый высокий уровень ударо- и виброустойчивости в отрасли COTS, подтвержденный независимыми испытаниями по стандарту Mil-STD-810
- Высокий уровень сохранения данных и долговечности записи в широком диапазоне температур гарантирует, что ваши данные будут там, где они вам нужны
- Быстрая санация конфиденциальных данных благодаря возможности эмуляции устаревших SSD-накопителей
- Устойчивость к экстремальной влажности, ударам и вибрации
- Долгосрочная надежность без опасений по поводу «оловянных усов»
ПРОТОКОЛ
Твердотельные накопители производства Comtech поддерживают интерфейсы PATA, mSATA, SlimSATA, SATA II/III и PCIe в соответствии с требованиями заказчика. Пожалуйста, свяжитесь с нами для получения информации о нестандартных интерфейсах.
ФОРМ ФАКТОР
- В серийных твердотельных накопителях поддерживаются следующие форм-факторы:
- 2,5″ — подходит для стандартного 2,5-дюймового отсека для дисков
- mSATA — использует разъем mSATA, обычно расположенный на материнской плате,
- SlimSATA — использует стандартный разъем SATA
- M.2 — использует гнездо M.2, обычно расположенное на материнской плате
БЕЗОПАСНОСТЬ
Предлагаются различные варианты безопасного стирания:
- Быстрое стирание (блок безопасного стирания)
- МИНИСТЕРСТВО ОБОРОНЫ 5220.22-M
- Министерство обороны 5220.22- M Sup1
- NSA 130-2
- ARMY AR380-19
- ВМС NAVSO P-5239-26
- ВВС AFSSI-5020
- NSA 9-12
- RCC-TG IRIG 106-07
Диски серии Triton также обеспечивают шифрование диска по стандарту Opal AES256.
ENVIRONMENTAL HARDENING
SSD-накопители Comtech разрабатываются и независимо тестируются в соответствии со строгими критериями.
- Большая высота: Работа на высоте 80 000 футов
- Механический удар:
- Работа ─ 40G@ 11ms, 3x в 6 направлениях
- Хрупкость ─ 1,500G@ 0.5ms, 3x в 6 направлениях
- Случайная вибрация: Рабочий ─ 16Grms, 20Hz до 2KHz, 1 час на ось, 3 оси
- Температурный шок: от -40°C до +85°C, 10 циклов
Дополнительные опции:
- Заполняющий полимер силиконового геля инкапсулирует сборку печатной платы для обеспечения устойчивости к погружению в воду и противостояния механическим ударам и динамическим вибрациям.
- Конформное покрытие ─ тонкая пленка силиконового эластомера обеспечивает дополнительную влагостойкость.
- Закрепление компонентов ─ эпоксидные анкеры для повышения устойчивости к ударам и вибрации.
Твердотельный накопитель — ArchWiki
В этой статье рассматриваются специальные темы по работе с твердотельными накопителями (SSD) и другими устройствами хранения данных на базе флэш-памяти.
Если вы хотите разделить SSD для определенной цели, может быть полезно рассмотреть Список файловых систем, оптимизированных для флэш-памяти.
Для общего использования просто выберите предпочтительную файловую систему и включите #TRIM.
Использование
TRIM
По сравнению с жесткими дисками, где удаление файла обрабатывается только на уровне файловой системы[1], твердотельные накопители выигрывают от информирования контроллера диска, когда блоки памяти свободны для повторного использования. Поскольку ячейки флэш-памяти, из которых они сделаны, немного изнашиваются при каждой операции записи, контроллеры дисков используют алгоритмы для распределения операций записи по всем ячейкам: этот процесс называется выравниванием износа. Без команды NVMe DEALLOCATE, SAS UNMAP или ATA_TRIM (поддерживается большинством твердотельных накопителей) контроллеру диска требуется больше времени для выполнения операции записи, как только нет пустых блоков памяти, поскольку ему приходится перетасовывать данные, чтобы стереть ячейку перед запись на него (см. Википедия: Усиление записи): тест TechSpot показывает влияние на производительность до и после заполнения SSD данными.
Примечание: Если вы хотите использовать TRIM, используйте либо периодическую TRIM , либо непрерывную TRIM. Непрерывный TRIM — это , а не , наиболее предпочтительный способ выполнения команд TRIM в сообществе Linux. Например, Ubuntu включает периодическую TRIM по умолчанию [2], Debian не рекомендует использовать непрерывную TRIM, а Red Hat рекомендует использовать периодическую TRIM вместо непрерывной TRIM, если это возможно [3].
Начиная с версии ядра Linux 3.8, поддержка TRIM постоянно добавлялась для различных файловых систем. Ориентировочный обзор см. в следующей таблице:
Файловая система | Непрерывная ТРИМ ( отбросить опцию ) | Периодический TRIM ( fstrim ) | Ссылки и примечания |
---|---|---|---|
БТРФС | Да | Да | Асинхронное отбрасывание включено по умолчанию, начиная с ядра 6. 2. |
exFAT | Да | Да | fstrim поддерживается, начиная с ядра 5.13, [4] |
доб.3 | Да | Да | |
доб4 | Да | Да | «отбросить, не отбросить (*)» в [5] |
Ф2ФС | Да | Да | |
JFS | Да | Да | [6] |
НИЛФС2 | Да | Да | |
NTFS | Да | № | Драйвер ядраntfs3 поддерживает только непрерывную TRIM. |
№ | Да | ДрайверNTFS-3G поддерживает только периодический TRIM. | |
ВФАТ | Да | Да | fstrim поддерживается, начиная с ядра 4.19, [7] |
XFS | Да | Да | [8] |
Предупреждение: Пользователи должны убедиться, что их твердотельный накопитель поддерживает TRIM, прежде чем пытаться его использовать. В противном случае может произойти потеря данных!
Чтобы проверить поддержку TRIM, выполните:
$ lsblk --discard
И проверьте значения столбцов DISC-GRAN (отбросить гранулярность) и DISC-MAX (отбросить максимальное количество байтов). Ненулевые значения указывают на поддержку TRIM.
Только для твердотельных накопителей SATA пакет hdparm может определить поддержку TRIM с помощью hdparm -I /dev/sda | grep TRIM
в качестве пользователя root. Однако hdparm
не поддерживает твердотельные накопители NVMe.
Периодический TRIM
Пакет util-linux предоставляет fstrim.service
и fstrim.timer
юнит-файлы systemd. Включение таймера активирует услугу еженедельно. Служба выполняет fstrim(8) на всех смонтированных файловых системах на устройствах, поддерживающих операцию discard .
Таймер использует отметку времени /var/lib/systemd/timers/stamp-fstrim.timer
(которую он создаст при первом вызове), чтобы узнать, прошла ли неделя с момента его последнего запуска. Поэтому не нужно беспокоиться о слишком частых вызовах в анакрон — как мод.
Чтобы запросить активность и статус объектов, см. journalctl. Чтобы изменить периодичность запуска таймера или команды, отредактируйте предоставленные файлы модулей.
Continuous TRIM
Вместо того, чтобы выдавать команды TRIM время от времени (по умолчанию один раз в неделю при использовании fstrim.timer
), можно также выдавать команды TRIM каждый раз, когда удаляются файлы. Последний известен как непрерывный TRIM.
Предупреждение: До SATA 3.1 все команды TRIM не ставились в очередь, поэтому непрерывная обрезка приводила к частым зависаниям системы. В этом случае лучше применять #Periodic TRIM реже. Аналогичная проблема существует и для ряда устройств, см. ata_device_blacklist
в исходном коде Linux, для которых выполнение команды TRIM в очереди было занесено в черный список из-за серьезного повреждения данных. В таком случае, в зависимости от устройства, система может быть вынуждена отправлять команды TRIM без очереди на SSD вместо команд TRIM из очереди. См. подробности в Wikipedia:Trim_(computing)#Disadvantages.
Использование опции discard
для монтирования в /etc/fstab
включает непрерывную TRIM в операциях устройства:
/dev/sda1 / ext4 значения по умолчанию, отбросить 0 1
Примечание: Указание параметра монтирования с отбрасыванием в /etc/fstab
не работает с разделами XFS /
. Согласно этому потоку, это должно быть установлено с использованием параметра ядра rootflags=discard
.
В файловой системе ext4 9Флаг 0031 discard также можно установить в качестве параметра монтирования по умолчанию, используя tune2fs :
# tune2fs -o отбросить /dev/sd XY
Использование параметров монтирования по умолчанию вместо записи в /etc/fstab
особенно полезно для внешних дисков, поскольку такой раздел будет смонтирован с параметрами по умолчанию и на других машинах. Таким образом, нет необходимости редактировать /etc/fstab
на каждой машине.
Примечание: Параметры монтирования по умолчанию не указаны в /proc/mounts
.
Обрезка всего устройства
Если вы хотите обрезать весь SSD сразу, например. для новой установки или если вы хотите продать диск, вы можете использовать команду blkdiscard.
LVM
Запросы TRIM, передаваемые из файловой системы на логический том, автоматически передаются на физические тома(ы). Дополнительная настройка не требуется.
Никакие операции LVM ( lvremove , lvreduce и все остальные) не отправляют запросы TRIM к физическим томам по умолчанию. Это делается для того, чтобы можно было восстановить предыдущую конфигурацию группы томов с помощью vgcfgrestore(8). Настройка issue_discards
в /etc/lvm/lvm.conf
определяет, отправляются ли сбросы на базовые физические тома логического тома, когда логический том больше не использует пространство физических томов.
Примечание: Внимательно прочтите комментарий в /etc/lvm/lvm.conf
перед изменением параметра issue_discards
. Это никоим образом не влияет на запросы TRIM, которые передаются из файловой системы на диск (например, удаление файлов внутри файловой системы), а также не влияет на управление пространством в тонком пуле.
Предупреждение: Включение issue_discards
предотвратит восстановление метаданных группы томов с помощью vgcfgrestore . Вариантов восстановления в случае ошибочно выданной LVM-команды не будет.
dm-crypt
Предупреждение: Параметр сброса позволяет передавать запросы на сброс через зашифрованное блочное устройство. Это может улучшить или не улучшить производительность хранилища SSD [9], но имеет последствия для безопасности. Для получения дополнительной информации см. следующее:
- Debian:SSDOptimization#Монтирование файловых систем SSD
- Поддержка dm-crypt/Specialties#Discard/TRIM для твердотельных накопителей (SSD)
Для файловых систем без полномочий root настройте /etc/crypttab
, чтобы включить discard
в список параметров для зашифрованных блочных устройств, расположенных на SSD (см. dm-crypt/Конфигурация системы#crypttab).
Для корневой файловой системы следуйте инструкциям поддержки dm-crypt/Specialties#Discard/TRIM для твердотельных накопителей (SSD), чтобы добавить правильный параметр ядра в конфигурацию загрузчика.
Повышение производительности
Следуйте советам в разделе Повышение производительности#Устройства хранения, чтобы максимально повысить производительность дисков.
Размер сектора
См. Расширенное форматирование#Твердотельные накопители.
Очистка ячеек памяти SSD
В некоторых случаях пользователи могут захотеть полностью сбросить ячейки SSD до исходного состояния, в котором они находились на момент установки устройства, таким образом восстановив производительность записи по умолчанию. Известно, что производительность записи со временем ухудшается даже на твердотельных накопителях со встроенной поддержкой TRIM: TRIM защищает только от удаления файлов, а не от замен, таких как добавочное сохранение.
Сброс можно выполнить, выполнив соответствующую процедуру, указанную в разделе очистка ячеек памяти SSD, для твердотельных накопителей #SATA или #NVMe.
Примечание: Если причиной сброса является стирание данных, вы можете не полагаться на контроллер SSD для его безопасного выполнения, например. , если вы не доверяете производителю или опасаетесь возможных ошибок. В этом случае см. раздел Безопасная очистка диска#Flash-память для получения дополнительной информации и примеров выполнения очистки вручную.
Безопасность
Hdparm показывает «замороженное» состояние
BIOS некоторых материнских плат выдает команду «замораживания безопасности» для устройств SATA при инициализации. Точно так же некоторые SSD (и HDD) BIOS уже настроены на «замораживание безопасности» на заводе. Оба приводят к тому, что в настройках защиты паролем устройства устанавливается значение , замороженное , как показано в следующем выводе:
# hdparm -I /dev/sda
Безопасность: Код версии мастер-пароля = 65534 поддерживается не включено не заблокирован замороженный срок действия не истек: счетчик безопасности поддерживается: расширенное стирание 4 минуты для БЛОКА УДАЛЕНИЯ БЕЗОПАСНОСТИ. 2 минуты для УСОВЕРШЕНСТВОВАННОЙ БЕЗОПАСНОСТИ УДАЛЕНИЯ.
На такие операции, как форматирование устройства или установка операционных систем, не влияет «блокировка безопасности».
Приведенный выше вывод показывает, что устройство не заблокировано паролем жесткого диска при загрузке, а состояние заморожено защищает устройство от вредоносных программ, которые могут попытаться заблокировать его, установив для него пароль во время выполнения.
Если вы собираетесь самостоятельно установить пароль на «зависшее» устройство, необходим BIOS материнской платы с его поддержкой. У многих ноутбуков есть поддержка, потому что она требуется для аппаратного шифрования, но поддержка может быть нетривиальной для системной платы для настольных компьютеров/серверов. Для материнской платы Intel DH67CL/BL, например, материнская плата должна быть переведена в «режим обслуживания» с помощью физической перемычки для доступа к настройкам (см. [10], [11]).
Предупреждение: Не пытайтесь изменить указанное выше заблокируйте настройки безопасности с помощью hdparm
, если вы точно не знаете, что делаете.
Если вы собираетесь стереть SSD, см. разделы Безопасная очистка диска#hdparm и Очистка ячеек памяти.
Установка состояния SSD на «замороженное» после выхода из спящего режима
При выходе из спящего режима SSD, скорее всего, потеряет свое «замороженное» состояние, что сделает его уязвимым для команд ATA SECURE ERASE, подобных тем, которые описаны в /Memory очистка клеток.
Чтобы предотвратить эту проблему, после выхода из спящего режима можно запустить скрипт:
/usr/lib/systemd/system-sleep/ssd-freeze.sh
#!/bin/sh если ["$1" = 'опубликовать']; затем спать 1 если hdparm --security-freeze /dev/disk/by-id/ ata-name-of-disk ; затем logger "$0: команда заморозки SSD выполнена успешно" еще logger "$0: команда заморозки SSD не удалась" фи fi
Аппаратное шифрование
Как отмечено в #Hdparm показывает «замороженное» состояние, установка пароля для устройства хранения (SSD/HDD) в BIOS может также инициализировать аппаратное шифрование поддерживающих его устройств. Если устройство также соответствует стандарту OPAL, это также может быть достигнуто без соответствующей функции BIOS для установки парольной фразы, см. Диски с самошифрованием.
Устранение неполадок
Возможно, проблема, с которой вы столкнулись, связана с ошибкой встроенного ПО, которая не является специфичной для Linux, поэтому, прежде чем пытаться устранить проблему, влияющую на устройство SSD, вы должны сначала проверить, доступны ли обновления для:
- Прошивка SSD
- Прошивка BIOS/UEFI материнской платы
Даже если это ошибка прошивки, возможно, ее можно избежать, поэтому, если нет обновлений прошивки или вы не решаетесь обновить прошивку, может помочь следующее.
Устранение ошибок NCQ
Некоторые твердотельные накопители и наборы микросхем SATA неправильно работают с собственной очередью команд Linux (NCQ). Контрольные ошибки dmesg выглядят так:
[9.115544] ata9: исключение Emask 0x0 SAct 0xf SErr 0x0 действие 0x10 заморожено [ 9. 115550] ata9.00: команда с ошибкой: ЧТЕНИЕ FPDMA В ОЧЕРЕДИ [ 9.115556] ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 тег 0 ncq 2048 в [ 9.115557] res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (тайм-аут)
Чтобы отключить NCQ при загрузке, добавьте libata.force=noncq
в командную строку ядра в конфигурации загрузчика. Чтобы отключить NCQ только для диска 0 на порту 9, используйте: libata.force=9.00:noncq
Кроме того, вы можете отключить NCQ для определенного диска без перезагрузки через sysfs:
# эхо 1 > /sys/block/sdX/device/queue_depth
Если это (а также обновление микропрограммы) не решает проблему или вызывает другие проблемы, отправьте отчет об ошибке.
Устранение ошибок, связанных с управлением питанием SATA
Некоторые твердотельные накопители (например, Transcend MTS400) выходят из строя при включении SATA Active Link Power Management, ALPM. ALPM отключен по умолчанию и включается демоном энергосбережения (например, TLP, инструменты режима ноутбука).
Если вы начинаете сталкиваться с ошибками, связанными с SATA, при использовании такого демона, вам следует попытаться отключить ALPM, установив его состояние на max_performance
для профилей с питанием от батареи и переменного тока.
Внешний твердотельный накопитель с поддержкой TRIM
Эта статья или раздел нуждаются в улучшении языка, синтаксиса вики или стиля. См. Help:Style для справки.
Причина: Несколько проблем со стилем и форматированием, особенно слишком много явных команд — см. Справка: Стиль#Запросы на редактирование файла. (Обсудите в разговоре: Твердотельный накопитель)
Несколько микросхем моста USB-SATA (например, VL715, VL716 и т. д.), а также микросхемы моста USB-PCIe (например, JMicron JMS583, используемый во внешних корпусах NVMe, таких как IB-1817M -C31) поддерживают команды типа TRIM, которые можно отправлять через драйвер USB Attached SCSI (называемый «uas» в Linux).
Но ядро может не обнаружить эту возможность автоматически и, следовательно, не использовать ее. Предполагая, что рассматриваемое блочное устройство — /dev/sdX, вы можете узнать, так ли это, используя команду
# sg_readcap -l /dev/sdX
Если в его выходных данных вы найдете строку с указанием «Инициализация логического блока: lbpme=0», значит, ядро предполагает, что устройство не поддерживает «Управление инициализацией логического блока», поскольку бит (LBPME) не установлен.
Если это так, то вам следует выяснить, сообщается ли на странице «Важно важные данные о продукте» (VPD) в разделе «Инициализация логического блока» вашего устройства о поддерживаемых механизмах для несопоставления данных. Вы можете сделать это с помощью команды:
# sg_vpd -a /dev/sdX
Найдите в выходных данных строки, которые выглядят следующим образом:
Поддерживается команда Unmap (LBPU): 1 Запишите то же самое (16) с поддерживаемым битом отмены отображения (LBPWS): 0 Запишите то же самое (10) с поддерживаемым битом отмены отображения (LBPWS10): 0
В этом примере показано, что устройство поддерживает команду «UNMAP».
Посмотрите на вывод
$ cat /sys/block/sdX/device/scsi_disk/*/provisioning_mode
Если ядро не обнаружило возможность вашего устройства отменить сопоставление данных, скорее всего, будет возвращено значение «полный». Помимо «полного», драйвер хранилища SCSI ядра в настоящее время знает следующие значения для provisioning_mode:
удалить карту пишетsame_16 пишетsame_10 пишетsame_zero неполноценный
Для приведенного выше примера теперь вы можете написать «unmap» в «provisioning_mode», чтобы попросить ядро использовать это:
# echo "unmap" >/sys/block/sdX/device/scsi_disk/*/provisioning_mode
Это должно немедленно позволить вам использовать такие инструменты, как «blkdiscard» на /dev/sdX или «fstrim» на файловых системах, смонтированных на /dev/sdX.
Если вы хотите автоматически включать «provisioning_mode» при подключении внешнего устройства определенного поставщика/продукта, это можно автоматизировать с помощью механизма «udev». Сначала найдите поставщика USB и идентификаторы продукта:
$ cat /sys/block/sdX/../../../../../../idVendor $ cat /sys/block/sdX/../../../../../../idProduct
Затем создайте или добавьте в файл правил udev (пример здесь с использованием idVendor 152d и idProduct 0583):
# echo 'ACTION=="добавить|изменить", ATTRS{idVendor}=="152d", ATTRS{idProduct}=="0583", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' >>/etc/udev/rules.d/10-uas-discard.rules
(Вы также можете использовать команду lsusb
для поиска соответствующего idVendor/idProduct.)
Прошивка
Если поддерживается производителем устройства, рекомендуется обновить прошивку с помощью утилиты fwupd.
ADATA
Обновление встроенного ПО SSD под Linux не поддерживается ADATA. Утилита SSD ToolBox только для Windows предоставляется ADATA через их страницу поддержки и через страницу поддержки ADATA XPG для мониторинга, TRIM, эталонного тестирования и обновления встроенного ПО ADATA SSD.
Предупреждение: Не рекомендуется пытаться обновлять прошивку через Wine, поскольку он не предназначен для работы с аппаратными интерфейсами, а неполное обновление прошивки потенциально может привести к поломке вашего устройства.
Crucial
Crucial предоставляет возможность обновления прошивки с помощью образа ISO. Эти образы можно найти после выбора продукта на их странице поддержки SSD и загрузки «Файла ручной загрузки».
Примечание. Образы ISO , предоставленные Crucial, не кажутся гибридными. Если вы будете использовать только команду dd
для копирования образа на какое-либо устройство, MBR не будет присутствовать, что сделает такое устройство не загружаемым. Установите syslinux и запустите isohybrid path/to/image.iso
.
Владельцы модели M4 Crucial могут проверить необходимость обновления прошивки с помощью smartctl
.
$ smartctl --all /dev/sd X
==> ВНИМАНИЕ: Этот диск может зависнуть через 5184 часа после включения: https://www. tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html См. следующую веб-страницу для получения обновлений встроенного ПО: https://www.crucial.com/usa/en/support-ssd
Пользователям, увидевшим это предупреждение, рекомендуется сделать резервную копию всех важных данных и рассмотрите возможность немедленного обновления . Ознакомьтесь с этой инструкцией, чтобы обновить прошивку Crucial MX100 с помощью образа ISO и Grub.
Intel
У Intel есть средство обновления встроенного ПО на основе операционной системы Linux для операционных систем, несовместимых с программным обеспечением Windows Intel® Memory and Storage Tool (GUI).
Существует также более новая утилита командной строки Linux, которая может перепрошивать прошивку, называемая Intel Memory and Storage (MAS) Tool, доступная как intel-mas-cli-tool AUR . Имеется руководство пользователя в формате PDF.
Пример проверки состояния прошивки:
# intelmas show -intelssd 0
Путь устройства: /dev/nvme0n1 Состояние устройства : исправен Прошивка : 002C FirmwareUpdateAvailable: выбранный твердотельный накопитель Intel содержит микропрограмму, актуальную на момент выпуска этого инструмента.
-intelssd 0
можно опустить, если в системе только один Intel SSD, или 1
передано для второго SSD и так далее.
Если доступно обновление, оно выполняется путем запуска intelmas load -intelmassd 0
. Руководство пользователя в формате PDF предполагает, что эту процедуру необходимо выполнить дважды в Linux с промежуточным включением питания. Последняя прошивка для всех устройств распространяется как часть самого MAS Tool, поэтому ее не нужно загружать отдельно.
Kingston
Инструмент KFU доступен для дисков на базе Sandforce, kingston_fw_updater AUR .
Mushkin
Менее известные твердотельные накопители марки Mushkin также используют контроллеры Sandforce и имеют утилиту Linux (почти идентичную утилите Kingston) для обновления прошивки.
OCZ
OCZ имеет онлайн-инструмент обновления командной строки (CLOUT), доступный для Linux. Существующие пакеты: ocz-ssd-utility AUR , ocztoolbox AUR и oczclout AUR .
Samsung
Несмотря на то, что Samsung считает методы обновления встроенного ПО, не относящиеся к их программному обеспечению Magician, «неподдерживаемыми», они по-прежнему может работать с . Программное обеспечение Magician может создать загрузочный USB-накопитель с обновлением прошивки, однако Samsung больше не предоставляет программное обеспечение для потребительских твердотельных накопителей. Samsung также предоставляет готовые загрузочные образы ISO, которые можно использовать для обновления прошивки. Другой вариант — использовать утилиту Samsung magician , предоставленную samsung_magician-consumer-ssd AUR . Magician поддерживает только твердотельные накопители Samsung; устройства, произведенные Samsung для OEM-производителей (например, Lenovo), не поддерживаются.
Примечание: Samsung вообще не дает понять, что они действительно их предоставляют. Кажется, у них есть 4 разные страницы обновления прошивки, и каждая из них ссылается на разные способы выполнения действий.
Пользователи, предпочитающие запускать обновление микропрограммы с живого USB-накопителя, созданного под Linux (без использования программного обеспечения Samsung Magician под Microsoft Windows), могут обратиться к [12] за более подробной информацией.
Обновление под Linux
Прошивку SSD можно обновить изначально (без создания загрузочного USB-накопителя), как показано ниже. Сначала посетите страницу загрузок Samsung, перейдите в раздел «Прошивка твердотельного накопителя Samsung» и загрузите последнюю версию встроенного ПО для вашего твердотельного накопителя — это должен быть образ ISO.
Примечание: В некоторых ISO-образах отсутствует образ initrd
Linux, упомянутый ниже. Вместо этого см. раздел #Старые твердотельные накопители.
Извлеките образ initrd
Linux из образа ISO:
$ bsdtar xf samsung_ssd_firmware .iso initrd
Экстракт корень/фумаг/
. В этом каталоге находятся файлы обновления прошивки:
$ bsdtar xf initrd root/фумаг
Наконец, запустите root/fumagician/fumagician
с правами суперпользователя и перезагрузите систему (если прошивка была успешно обновлена).
Старые твердотельные накопители
Некоторые ISO-образы встроенного ПО SSD содержат образ FreeDOS вместо образа initrd
Linux, поэтому шаги, необходимые для обновления встроенного ПО SSD, отличаются от описанных выше. В следующей таблице перечислены эти SSD (и соответствующие пути):
Модель твердотельного накопителя | Путь к образу FreeDOS | Путь к пакету прошивки |
---|---|---|
470, 830 | БТДСК.ИМГ | ССР/ |
840 | isolinux/btdsk.img | Самсунг/DSRD/ |
840 EVO (mSATA), Pro | ISOLINUX/BTDSK. IMG |
Сначала извлеките образ FreeDOS из образа ISO:
$ bsdtar xf samsung_ssd_firmware .iso freedos_image_path
Смонтируйте образ FreeDOS на /мнт/
:
# монтирование freedos_image_path /mnt
Получите номер диска SSD под Номер диска из утилиты управления Magician SSD:
# фокусник --list
Обновите микропрограмму SSD для указанного диска, указав путь к пакету микропрограммы:
# волшебник --disk disk_num --firmware-update --fwpackage-path /mnt/ firmware_package_path
Наконец, убедитесь, что прошивка была успешно обновлена, проверив версию ниже Прошивка из вывода magician --list
(с рут правами). Перезагрузите систему, если это так.
SanDisk
SanDisk создает образы прошивки ISO, чтобы позволить обновлять прошивку SSD в операционных системах, которые не поддерживаются их набором инструментов SanDisk SSD Toolkit.
Необходимо выбрать прошивку для правильной модели SSD , и правильной емкости , которая у него есть (например, 60 ГБ, или 256 ГБ). После записи образа микропрограммы ISO просто перезагрузите компьютер, чтобы загрузиться с вновь созданного загрузочного диска CD/DVD (может работать с USB-накопителя).
ISO-образы содержат только ядро Linux и файл initrd. Извлеките их в раздел /boot
и загрузите их с помощью GRUB или Syslinux для обновления прошивки.
См. также:
- Примечания к выпуску прошивки твердотельного накопителя SanDisk Extreme и Руководство по обновлению прошивки версии R211
- Примечания к выпуску прошивки SanDisk Ultra SSD и руководство по обновлению прошивки версии 365A13F0
- SanDisk Ultra+ SSD Примечания к выпуску микропрограммы и ручное обновление микропрограммы версии X2316RL — используйте
smartctl -a /dev/sdX
, чтобы определить, используется ли модель «h3» или «HP».
См. также
- Обсуждение на Reddit об установке Arch на SSD
- Re: Изменение размера листьев и узлов в Btrfs
- Re: Выравнивание SSD и размер сектора Btrfs
- Стереть Блок (Выравнивание) Дезинформация?
- Требуется ли выравнивание для стирания размера блока для современных твердотельных накопителей?
- Поддержка Btrfs для эффективной работы SSD (выравнивание блоков данных)
- SSD, Erase Block Size & LVM: PV на необработанном устройстве, выравнивание
Защищенные твердотельные накопители военного класса
РЕКОМЕНДУЕМЫЙ ПРОДУКТ
MissionPak SLC
Наш новый сверхпортативный, водостойкий и высокозащищенный твердотельный накопитель, созданный для выполнения миссий Success
ЗАГРУЗИТЬ ТЕХНИЧЕСКОЕ ОПИСАНИЕ
Ознакомьтесь с твердотельными накопителями военного класса
Тип | Форм-фактор | Технология NAND | Емкость | Блок | Интерфейс | Сертификаты | Возможность самоуничтожения | Техническое описание | ТРАСТ-Стор | 5″> 2,5 дюйма | SLC | 512 | ГБ | SATA | FIPS 197 | № | Вид 900 03 |
---|---|---|---|---|---|---|---|---|
ТРАСТ-Стор | BGA | SLC | 64 | GB | SATA | FIPS 197 | Да | Вид 9 0045 |
ТРАСТ-Стор | Mission Pak | TLC в режиме SLC | 128, 256 | ГБ | SATA | FIPS 197, FIPS-140-2 и опционально — соответствует требованиям CSFC | 900 44 ДаПросмотр |
ЦЕЛОСТНОСТЬ ДАННЫХ
Защитите критически важные данные
Защитите свои критически важные данные и обеспечьте долговременную целостность данных с помощью расширенных функций безопасности и исправления ошибок, которые предотвращают потерю данных и сбой устройства, а также обеспечивают физическую защиту от ударов, вибрации и экстремальные температуры.
Ваш комментарий будет первым