1

У меня есть 3 портативных жестких диска, один - 160 ГБ, два других - 500 ГБ. Я хочу написать им нули, используя Linux и dd. Я нашел эту команду:

dd if=/dev/zero of=/dev/sda bs=?

Как для размера блока, каков идеальный размер блока для моих 3 портативных жестких дисков? (Примечание: я разместил ? в конце команды.)

2 ответа2

1

Для значения bs= я бы рекомендовал установить 1024 следующим образом:

dd if=/dev/zero of=/dev/sda bs=1024

Но если вы параноидально настроены на восстановление данных - и хотите сделать что-то «более сильное», чем просто написать нули - вы можете использовать вместо этого /dev/urandom например:

dd if=/dev/urandom of=/dev/sda bs=1024

Альтернативный способ стереть диск.

Но лично я не люблю использовать dd для такой задачи. Вместо этого я использую небольшой вариант, где я форматирую диск - и перераспределяю разделы, если он должен быть перераспределен - и затем запускаю следующую команду. Обратите внимание, что, хотя некоторые могут считать этот метод предположительно «неэффективным», вы действительно должны быть крайне недоверчивы к тому, как работают разделы и файловые системы, чтобы полагать, что этот метод не является жизнеспособным альтернативным методом:

cat /dev/zero >> /path/to/mounted/drive/junk_file &

Или этот вариант с использованием устройства /dev/urandom как описано выше в примере с dd :

cat /dev/urandom >> /path/to/mounted/drive/junk_file &

Просто измените /path/to/mounted/drive/ на фактический путь смонтированного диска. Для этого в файловой системе создайте файл с именем junk_file и сделайте это как фоновый процесс с добавлением & в конце.

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

Для получения более подробной информации об этих - и других - безопасных методах удаления устройств / файлов, посетите эту страницу в ArchWiki. Эти советы полезны практически для любой Linux / Unix - даже Mac OS X - системы, а не только для ArchLinux.

Скорость очистки данных.

Что касается скорости, общую скорость операций этого типа можно оценить по тому, сколько времени потребуется вашей системе, чтобы скопировать файл 160 ГБ или 500 ГБ на этот же диск. Поскольку запись такого файла на самом деле является эквивалентом «копирования» файла; только в этом случае файл создается.

FWIW, /dev/urandom потребуется больше времени, чтобы сделать это, чем /dev/zero потому что /dev/urandom действительно генерирует рандомизированные данные - так что имейте это в виду, если время является фактором.

0

Я написал это как комментарий, но я собираюсь поместить это как ответ также для наглядности.

Для размера блока dd вам нужен достаточно большой буфер, чтобы программа не просто постоянно выдавала системные вызовы для тривиальных объемов ввода / вывода. Скопировав много дисков с помощью dd , я рекомендую, по крайней мере, bs=1M или даже что-то вроде 16M. Если размер вашего диска не кратен размеру вашего блока, то в конце вы оставите чуть-чуть не перезаписанных данных; это безопасная ставка, там вообще ничего нет, но если вы хотите быть параноиком, вы можете получить этот последний бит вручную.

Использование небольшого размера блока (с /dev/zero или любым другим источником) замедлит вас, но это ничто по сравнению с замедлением, которое вы получите от использования блокирующего источника данных, такого как /dev/random , что и является принятым ответом предлагает на момент написания. Целью /dev/random является генерация данных с максимальной энтропией , а не генерация большого количества данных. Дело не только в том, что он медленный, но в том, что он извлекается из пула энтропии ограниченного размера, и пул не заполняется очень быстро (особенно, если вы ничего не делаете с системой).

Когда пул заканчивается, чтение из /dev/random будет блокироваться, отказываясь предоставлять больше данных, пока пул не будет пополнен. Вы используете /dev/random для таких вещей, как долгосрочные криптографические ключи, а не для объемных данных. Попытка извлечь половину терабайта из /dev/random - абсолютно ужасная идея. Если вам нужно много данных с высокой энтропией, вам нужно использовать /dev/urandom. Он использует псевдослучайные генераторы, чтобы растянуть пул энтропии до произвольного размера, отказываясь от некоторой энтропии в обмен на то, что чтение в нем всегда будет успешным в разумные сроки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .