Чому GNU подрібнюється швидше, ніж dd, коли заповнює диск із випадковими даними?


8

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

Як це можливо? Я здогадуюсь, що вузьким місцем є обмежений обсяг виробництва /dev/urandom. Чи використовує клаптик якийсь генератор псевдовипадковості, який менш випадковий і достатній лише для його єдиної мети (тобто більш ефективного), ніж urandom?


Зауважте, що найкращим варіантом для стирання накопичувачів, особливо ssd-дисків, є команда SATA для безпечного стирання. Будь-який інший варіант - знищення заборони - не вдасться. Це набагато швидше, і на SSD він може зайняти лише кілька секунд.
Maarten Bodewes

Відповіді:


11

Shred використовує внутрішній псевдовипадковий генератор

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

Наприклад, файл пристрою / dev / urandom може використовуватися як джерело випадкових даних. Зазвичай цей пристрій збирає екологічний шум від драйверів пристроїв та інших джерел у пул ентропії та використовує пул для генерування випадкових біт. Якщо пулу не вистачає даних, пристрій повторно використовує внутрішній пул для отримання більшої кількості бітів, використовуючи криптографічно захищений генератор псевдовипадкових чисел. Але майте на увазі, що цей пристрій не розроблений для масового генерування випадкових даних і є відносно повільним .

Я не переконаний , що випадкові дані є більш ефективними , ніж один прохід з нулів (або будь-яке інше значення байта) при затуляючи попередній вміст.

Щоб надійно вивести з експлуатації привід, я використовую великий магніт і великий молоток.


2

Я думаю, що це було б спричинено скоріше за ddдопомогою менших фрагментів для запису даних. Спробуйте dd if=... of=... bs=(1<<20)перевірити, чи працює вона краще.


Я спробую це в наступний раз і опублікую результати.

+1 ddРозмір блоку за замовчуванням - 512. Він виконується нижче меж диска на моєму комп’ютері.
Piotr Findeisen

/ dev / urandom, швидше за все, досить швидкий - розмір блоку dd - це майже певна проблема.
Dan Pritts

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.