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

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

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

10 ответов

Решение

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

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

Никогда не заполняйте нулями 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 с полным шифрованием диска и безопасным стиранием и заменой ключей шифрования. В качестве альтернативы используйте шифрование на уровне операционной системы и выбрасывайте ключ, когда хотите надежно стереть данные.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам