Обнуление SSD накопителей

18

Мы принимаем VPS для клиентов. Каждому клиенту VPS предоставляется LVM LV на стандартном жестком диске шпинделя. Если клиент уходит, мы обнуляем этот LV, чтобы его данные не передавались другим клиентам.

Мы думаем о переходе на SSD для нашего хостинга. Учитывая, что твердотельные накопители имеют технологию «выравнивания износа», делает ли обнуление бессмысленным? Означает ли это, что идея SSD неосуществима, учитывая, что мы не можем допустить, чтобы данные клиента передавались другому клиенту?

jtnire
источник

Ответы:

23

Если предположить, что вы пытаетесь предотвратить, то следующий клиент читает диск, чтобы увидеть данные старого клиента, тогда запись всех нулей на самом деле будет работать. Запись нулей в сектор «n» означает, что при считывании сектора «n» будут возвращены все нули. Дело в том, что реальные фактические данные все еще могут быть на микросхемах флэш-памяти, но поскольку вы не можете выполнить обычное чтение, чтобы получить к ним доступ, это не проблема для вашей ситуации.

Это проблема, если кто-то может физически завладеть диском и разобрать его (потому что тогда они могут напрямую считывать микросхемы флэш-памяти), но если единственный доступ, который у них есть, это шина SATA, то запись всех нулей в целое диск подойдет просто отлично.

Майкл Кохне
источник
1
Именно ответ я искал, и когда я подумал об этом, я пришел к такому же выводу :)
jtnire
2
Я предположил бы (но не знаю наверняка, и, конечно, это будет зависеть от набора микросхем контроллера, используемого в SSD), что запись нулевого сектора в SSD даже не затронет реальные флеш-чипы. Контроллер должен заметить, что это все нули и просто пометить этот сектор как «обнуленный» (или просто указать его на сектор, который содержит все нули). Написание сектора нулей - достаточно распространенная вещь, а специальный корпус - дешевый и простой способ уменьшить износ флэш-памяти, поэтому я был бы шокирован, если бы по крайней мере Intel и Sandforce этого не сделали.
любезно
20

Никогда не заполняйте нулями SSD, никогда. Как минимум, это приведет к потере части срока службы записи на SSD практически без выгоды. В крайнем худшем случае вы можете перевести контроллер SSD в (временно) состояние пониженной производительности .

Из этого источника :

Многократная перезапись всего диска несколькими повторениями может успешно уничтожить данные, но из-за уровня трансляции прошивки (FTL) это значительно сложнее и занимает больше времени, чем на традиционных жестких дисках. По их результатам это непривлекательный вариант

Ваш лучший вариант, безопасное удаление с помощью полного шифрования диска:

Некоторые современные твердотельные накопители могут использовать полнодисковое шифрование - например, новые накопители Intel 320 и некоторые накопители Sandforce 2200. Эти диски можно безопасно и просто удалить без износа дисков.Диск использует шифрование AES для всех записанных данных, поэтому безопасное стирание просто означает удаление старого ключа AES и его замену новым. Это фактически делает все «старые» данные на диске невосстановимыми.

Однако безопасное стирание Intel нелегко автоматизировать. AFAIK это нужно сделать из приложения Intel для Windows GUI, его можно запускать только на пустом не загружаемом диске и так далее. См. Стр. 21 и далее в документации Intel.

Ваш другой вариант, безопасное стирание ATA:

Другой вариант - ввести команду ATA Secure Erase через fx HDPARM в Linux. Это будет намного проще автоматизировать с помощью сценариев.

При условии, что на диске реализовано безопасное удаление ATA Secure, следует ожидать, что он по крайней мере удалит «слой флэш-трансляции» (FTL). Таблица FTL содержит отображение между логическими секторами (которые «видит» операционная система) и физическими страницами NVRAM на самом диске. После уничтожения этой таблицы сопоставления восстановление данных с диска должно быть очень трудным, но, вероятно, не невозможным.

Тем не менее, я не знаю ни одного исследования, которое бы показало, что ATA Secure Erase последовательно и хорошо реализована на дисках всех производителей, поэтому я не решаюсь сказать, что это всегда будет работать - вы должны прочитать техническую документацию производителей.

Для одного раздела:

Когда я читаю комментарии к другим ответам, кажется, что OP хочет только безопасно удалить отдельные разделы. Хороший способ сделать это - создавать только зашифрованные тома, например, используя LUKS или TrueCrypt . Таким образом, вы можете безопасно стереть том, выбрасывая ключ шифрования, аналогично тому, как работает схема полного шифрования диска.

Вывод:

Если вы действительно, действительно хотите это знать, прочитайте статью, на которую есть ссылка в блоге Sophos, и ознакомьтесь с техническими примечаниями производителей дисков относительно безопасного стирания. Однако, если вы хотите «хорошего» безопасного стирания, то, вероятно, лучшим выбором будет SSD с полным шифрованием диска и безопасным стиранием и заменой ключей шифрования. В качестве альтернативы используйте шифрование на уровне операционной системы и выбрасывайте ключ, когда хотите надежно стереть данные.

Джеспер М
источник
1
Осторожность хорошая, но я не уверен, что цитированию двухлетнего уведомления об ошибке контроллера, которая проявлялась только в сильно искусственных рабочих нагрузках на конкретном SSD, который уже давно исправлен, следует придавать большое значение.
Дэниел Лоусон,
1
@ Даниэль Лоусон: Честная точка зрения. :-) Я перефразировал этот раздел и изменил его на временное снижение производительности - и изменил ссылку на обзор диска Crucial M4 / C400 (в настоящее время поставляется), который демонстрирует существенное замедление после тяжелых операций записи.
Джеспер М
6

Выравнивание износа не имеет ничего общего с обнулением данных.

Вы обнуляете данные, чтобы другие люди / приложения не читали эти данные. SSD «изнашивают» свои данные, чтобы гарантировать, что они дольше остаются пригодными для использования из-за «ущерба», который наносит запись SSD. Также диски обычно делают это, когда они не заняты, в серверных ситуациях тихие времена не всегда доступны, поэтому эта работа часто не выполняется.

Вы платите своим клиентам за их операции ввода-вывода? Если нет, то что мешает им в основном убивать свою часть SSD в часах / днях, просто постоянно все время записывая? Твердотельные накопители легче убить, чем может показаться большинству людей , особенно в сложных средах записи.

Chopper3
источник
Я говорил о том, «что делает обнуление бессмысленным», Крис, это две разные вещи
Chopper3
1
if (time < 9am) chriss_try_again()
Крис С
ха-ха - не волнуйся, чувак :)
Chopper3
Хотя правдиво в отношении данных, менее правдиво в отношении убийств. «Флэш-накопители Enterprise» имеют более продолжительный срок службы и размер, чем потребительские твердотельные накопители, но, как и корпоративные жесткие диски, вы платите больше за производительность. Согласно Seagate, их ОУР «Пульсар» имеет 5-летний срок службы, что составляет около 6 петабайт записей. anandtech.com/show/2739/2 - на Pulsar Drive virtualgeek.typepad.com/virtual_geek/2009/02/… - на EFD
Даниэль Б.
3
Я знаю, Дэниел, я покупаю много корпоративных твердотельных накопителей, которые я помещаю в среду чтения на 99%, но когда мы тестировали их, нам все же было на удивление легко «убить» их, например, мы поместили два HP в качестве зеркальной пары в виде диск журнала для достаточно занятой коробки Oracle 10 и все пошло не так в течение 4 недель. Теперь это было ~ 10 месяцев назад, так что это была не новая версия HP этого привода Pulsar. 6PB равняется ~ 38 МБ / с в течение 5 лет или ~ 180 МБ / с в течение одного года - так что вы не можете использовать Pulsar для захвата одного канала видео высокой четкости без его выхода менее чем за год.
Chopper3
3

Поэтому стоит прочитать такие статьи, как эта . Если у кого-то есть физический доступ к диску, то поиск информации проще. Рассматривали ли вы шифрование данных на SSD, и тогда все, что вам нужно сделать, это безопасно забыть о закрытом ключе, что должно быть более легкой проблемой. Я вижу, как SSD выигрывает у VPS из-за гораздо лучшей производительности произвольного доступа.

Джеймс
источник
2

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

У SSD есть другой метод для безопасного стирания. Я скажу, что это кажется очень громоздким, потому что вам обычно требуется определенный тип контроллера SATA, который может выполнять эмуляцию IDE, и процедура может быть сложной. Некоторые производители предоставляют инструменты для безопасного удаления своих собственных твердотельных накопителей, но вы также можете сделать это с помощью hdparm в Linux: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase . Но в этих инструкциях вы заметите, что перед тем, как продолжить, убедитесь, что диск не «заморожен». Это один из наиболее сложных шагов, поскольку для этого требуется найти материнскую плату и контроллер SATA, которые позволят вам «разморозить» диск во время загрузки системы, что обычно включает в себя отсоединение его от кабеля SATA, а затем подключение его обратно.

В любом случае, я рекомендую вам провести исследование и выбрать SSD, который поставляется с утилитой безопасного стирания, которую можно использовать в удобной для вас системе.

churnd
источник
Использование dd для обнуления диска до тех пор, пока вы используете достаточно большой размер блока, а не значение по умолчанию 512 байт, вообще не израсходует много циклов записи / стирания. Он будет приблизительно равен 1. Я говорю примерно, потому что я признаю, что если выравнивание вашей файловой системы неверно, вы можете в некоторых случаях записать в один и тот же блок флэш-памяти два раза. Использование dd bs=1Mприведет к минимальному износу.
Даниэль Лоусон,
2

Хотя один ответ уже принят, я думаю, что blkdiscard /dev/sdXздесь стоит упомянуть команду .

Согласно Arch Wiki: SSD , blkdiscardкоманда отбросит все блоки и все данные будут потеряны. Рекомендуется использовать перед тем, как «вы хотите продать свой SSD».

Я не знаком с тем, как работает TRIM, поэтому я не знаю, есть ли гарантия того, что данные будут удалены. Но я думаю, что это лучше, чем ничего не делать.

Кстати, я боюсь, что эта команда работает только на целое устройство, а не для одного раздела.

Надеюсь это поможет. :)

mksegv
источник
blkdiscardкажется, не во всех случаях безопасным, потому что TRIMсам по себе только запрос, и не все контроллеры SSD выполняют его. Вы можете прочитать больше об этом здесь и здесь . Но, как объясняется там, ядро ​​Linux поддерживает белый список устройств, о которых известно, что они поддерживают TRIM.
nh2
Так что, если hdparm -I /dev/theSSDсодержит Deterministic read ZEROs after TRIM, blkdiscardдолжен быть быстрый и гарантированные нули читаются впоследствии. В противном случае безопасное стирание кажется лучшим решением. Тем не менее, учитывая, что вопрос касается безопасности клиентов, безопасное стирание может быть лучшим решением, так как оно разработано для таких случаев использования.
nh2
1

Самый лучший способ удалить данные из образа виртуальной машины - использовать функцию TRIM. Многие новые операционные системы поддерживают это. Почти все современные твердотельные накопители тоже поддерживают это.

И что делает эту опцию еще лучше, так это то, что любые SAN также поддерживают эту функцию под своим именем SCSI UNMAP . Это отличная команда для сетей SAN, которые реализуют разреженную инициализацию, что является отличной функцией для виртуальных машин, особенно в сочетании с дедупликацией блоков.

Когда команда TRIM передается на SSD, микропрограмма немедленно помечает эти блоки как свободные для повторного использования. Некоторые твердотельные накопители всегда возвращают нули для блоков TRIM . Другие накопители будут возвращать определенные реализацией (то есть случайные) данные.

В операционных системах, которые поддерживают TRIM, простое удаление файла помечает блоки для TRIM. Фактическая операция TRIM может произойти сразу же или может быть сгруппирована для выполнения позже. Иногда существуют инструменты, которые принудительно-TRIM файл или сканировать раздел для всех неиспользуемых блоков.

Производительность TRIM в Linux по-прежнему невелика, поэтому, если вы используете ее, вы захотите изучить свои варианты. На Windows это выглядит довольно солидно.

Зан Рысь
источник
Извините, но это не имеет никакого смысла. Насколько мне известно, TRIM не имеет ничего общего с тонкой подготовкой, она просто говорит SSD не беспокоить секторы выравнивания износа, которые, как она не знает, были удалены файловой системой, а также совершенно определенно не обнулить блоки.
Chopper3
@ Chopper3: Вы не видите, что ATA TRIM и SCSI UNMAP - это одна и та же команда? UNMAP определенно используется в тонком обеспечении. TRIM обнуляет блоки по крайней мере на некоторых SSD-дисках. После того, как TRIM данные пропали : не существует поддерживаемого метода для его извлечения, накопитель также может возвращать нули, а некоторые возвращают.
Zan Lynx
«диск может также возвращать нули» и «данные не подлежат восстановлению» - это две совершенно разные вещи. В любом случае пользователь на самом деле вообще не хочет стирать SSD, он просто не хочет, чтобы следующий клиент мог получить данные старого клиента, что тоже не одно и то же.
Крис С
0

Вам нужна «SSD Secure Erase Utility». Если вы используете что-то вроде ddвыравнивания износа, это может привести к появлению резервных секторов, которые все еще содержат старые данные клиента. Утилита безопасного стирания удалит все сектора на устройстве (а не только те, которые представлены операционной системой как диск).

Некоторые из этих утилит относятся к конкретному производителю, обратитесь к производителю ваших приводов за рекомендациями, они будут знать лучше нас.

Крис С
источник
Извините, это не то, что я ищу, так как я не хочу стереть весь диск. Я не беспокоюсь о том, что клиентские данные все еще доступны на физическом SDD-диске - я просто не хочу, чтобы другой клиент мог получить к ним доступ через утечку данных в их LV.
jtnire
0

Я не думаю, что запись 0 поможет вам предотвратить чтение диска другим клиентом.

В SSD, когда вы что-то пишете, процесс сильно отличается от обычного жесткого диска.

Представьте себе следующую ситуацию: «пустая» ячейка памяти на SSD-накопителе заполнена единицами. Когда вы что-то записываете, он записывает 0 и оставляет 1 без изменений.

После, когда вы хотите сохранить что-то другое, сравнивается предыдущий контент и новый. Если предыдущий может стать новым, записав несколько нулей, хорошо. Если это невозможно сделать, используется другая ячейка памяти.

«очистить»: 11111111 1-е сохранение: 11011011

новые данные: 00110011, нет способа заставить 11011011 стать 00110011 (обратите внимание, что необходимо было бы повернуть один 0 к 1, и это невозможно сделать в SSD). Итак, будет использоваться другая ячейка памяти.

Когда вы TRIM диск, вы сбрасываете все неиспользуемые ячейки памяти на 1. Таким образом, они будут понятны для повторного использования. И сохраненные данные сохраняются.

Чтобы сделать то, что вы хотите: сначала стереть (удалить) файлы. Ячейки памяти для этих файлов будут помечены как свободные. Затем выполните команду TRIM: все эти ячейки памяти станут единицами без каких-либо признаков данных.

woliveirajr
источник
0

Легко ответить: используйте Linux для переформатирования раздела как EXT4, который сообщает SSD обо всех блоках, которые должны быть готовы к стиранию, как, например, обрезка всех секторов раздела. Побочным эффектом является небольшое количество записей (структуры EXT4).

Забудьте «DDD» со случайным, что значительно сократит жизнь SSD. Некоторые SSD интеллектуальны, и если они видят полный сектор, заполненный нулями, они не пишут, они помечают его для удаления.

Поскольку вы не можете знать внутреннюю информацию о прошивках, ваш лучший вариант - переформатировать раздел как ext4 (без полного переформатирования, только быстрый, только структуры) в современном ядре linux, он выполнит обрезку всего раздела. до форматирования.

Для всех, кто говорит о безопасном стирании, то есть для всего SSD одновременно, то, что спрашивается, - это только один раздел SSD и БЕЗ потери всей сохраненной на нем информации (уровень раздела, а не уровень SSD).

Вывод: переформатируйте в Ext4, затем, если вам нужен другой формат, переформатируйте снова в таком другом формате.

Лаура
источник