Иногда я использую dcfldd, потому что он имеет больше возможностей и его проще использовать, чем обычный dd. Он дает постоянный статус и быстро обновляет его, а также имеет ввод шаблона, который намного быстрее, чем чтение из / dev / zero или любого другого устройства.
В качестве примера предположим, что я хотел стереть диск с помощью dcfldd, я бы сделал что-то вроде этого
dcfldd pattern="00" of=/dev/hda bs=4096
Где он будет записывать «00000000» в диск побайтно, а затем вы можете использовать функцию vf = для проверки шаблона.
Но я заметил небольшую проблему и хотел узнать, может ли кто-нибудь из вас помочь. Когда я запускаю это
dcfldd pattern="FF" of=/dev/hda bs=4096; sync
or
dcfldd pattern="11111111" of=/dev/hda bs=4096; sync
Я могу заполнить диск единицами, и это происходит очень быстро. Я могу заполнить диск на 74 ГБ, скажем, на 5 ГБ из единиц после его обнуления. Если я использую шестнадцатеричный редактор, например xxd или hd в Linux, я могу видеть все единицы.
Хотя, если я запущу эту команду,
dcfldd pattern="00" of=/dev/hda bs=4096; sync
Скажем, если нулей стоит всего 1 ГБ, то единиц должно быть 4 ГБ. Увидев, что я написал 5 ГБ из единиц и только 1 ГБ из нуля.
Хотя, если я затем посмотрю в шестнадцатеричный редактор, на диске все 0, даже если программное обеспечение заявит, что он записал только 1 ГБ из 0. Я попытался запустить программу как можно короче, отправив SIGINT почти сразу после запуска.
Есть идеи, почему это происходит, и можете ли вы это воспроизвести?
Что произойдет, если вы укажете количество блоков вместо того, чтобы вручную его прерывать?
time dcfldd pattern="FF" of=/dev/hda bs=4096 count=102400; sync
тогда делай
time dcfldd pattern="00" of=/dev/hda bs=4096 count=51200; sync
и сравните полученное время. Затем посмотрите на данные на диске, чтобы убедиться, что граница, где единицы меняются на нули, находится там, где она должна быть (около 200 мегабайт * для этого примера).
* Это настоящий МБ (1024 * 1024), а не «возможно» байты.
Чтобы получить какие-либо значимые результаты, если вы не хотите перезаписать весь раздел или диск, вам необходимо указать аргумент count. В приведенных вами примерах вы не указали количество. Я не понимаю, как вы вообще ожидали получить 5 ГБ единиц или 1 ГБ нулей.