Почему GNU уничтожается быстрее, чем dd при заполнении диска случайными данными?

8228

Я заметил, что при безопасном стирании жесткого диска перед выводом из эксплуатации это dd if=/dev/urandom of=/dev/sdaзанимает почти целый день, а shred -vf -n 1 /dev/sdaна том же компьютере и том же диске - всего пару часов.

Как это возможно? Я думаю, что узким местом является ограниченный объем производства /dev/urandom. Использует ли shred какой-то генератор псевдослучайности, который является менее случайным и достаточным только для его единственной цели (т.е. более эффективной), чем urandom?

8
Обратите внимание, что лучшим вариантом для стирания дисков, особенно дисков ssd, является команда безопасного стирания SATA. Любой другой вариант - запрет уничтожения - потерпит неудачу. Это гораздо быстрее, и может занять несколько секунд на SSD. Maarten Bodewes 7 лет назад 0

2 ответа на вопрос

10
RedGrittyBrick

Шред использует внутренний псевдослучайный генератор

По умолчанию эти команды используют внутренний псевдослучайный генератор, инициализированный небольшой энтропией, но могут быть направлены на использование внешнего источника с параметром --random-source = file. Об ошибке сообщается, если файл не содержит достаточно байтов.

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

Я не убежден, что случайные данные является более эффективными, чем один проход из нулей (или любое другое значение байта) при заслоняя предыдущее содержимое.

Для безопасного вывода из эксплуатации я использую большой магнит и большой молоток.

2
jpalecek

Я полагаю, что это будет вызвано ddиспользованием кусков меньшего размера для записи данных. Попробуйте dd if=... of=... bs=(1<<20)посмотреть, работает ли он лучше.

Я попробую это в следующий раз и опубликую результаты. 12 лет назад 0
+1 Размер блока `dd` по умолчанию - 512. На моем компьютере он работал намного ниже ограничений диска. Piotr Findeisen 10 лет назад 0
Вероятно, / dev / urandom достаточно быстрый - размер блока dd почти наверняка является проблемой. Dan Pritts 9 лет назад 0
Как только вы увеличиваете размер блока, кажется, что `/ dev / urandom` может стать узким местом - я тестирую некоторые SSD-накопители через USB 3.0 и с помощью той же команды` dd` я получаю 326 МБ / с для `if = / dev / ноль`, но только 12,8 МБ / с для `if = / dev / urandom` austinmarton 8 лет назад 2

Похожие вопросы