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


8

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

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


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

Ответы:


11

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

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

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

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

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


2

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


Я попробую это в следующий раз и опубликую результаты.

+1 ddРазмер блока по умолчанию - 512. На моем компьютере он работал намного ниже ограничений диска.
Петр Финдейзен

Вероятно, / dev / urandom достаточно быстрый - размер блока dd почти наверняка является проблемой.
Дэн Притц

2
Как только вы увеличиваете размер блока, кажется, что это /dev/urandomможет стать узким местом - я тестирую некоторые SSD-накопители через USB 3.0 и по той же ddкоманде получаю 326 МБ / с, if=/dev/zeroно только 12,8 МБ / сif=/dev/urandom
austinmarton
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.