в чем разница между этими двумя командами

Первая команда

sudo dd if = / dev / zero = = / dev / sda

вторая команда

sudo dd if = / dev / zero of = / dev / sda bs = 1M

Я форматирую свой компьютер в течение 4 часов с первым кодом, но он не закончился.

Первый код неверен?

В чем разница?

1
задан 21 December 2012 в 18:59

3 ответа

Аргумент bs=1M во второй команде означает количество прочитанных, а затем записанных байтов. Таким образом, когда вы запускаете dd с этим аргументом, 1 МБ будет считано из /dev/zero, а затем 1 МБ будет записано в /dev/sda. Когда у вас нет аргумента, используется значение по умолчанию для номера байта, я думаю, что это 512 байтов. Это число байтов намного меньше, поэтому для завершения запрошенной операции требуется больше чтения и записи, и это будет медленнее.

0
ответ дан 21 December 2012 в 18:59

Первая команда использует блоки по 512 байт, тогда как вторая использует блоки по 1 МБ. На самом деле размер блока 4 КБ в большинстве случаев поможет, так как диск использует размер блока 4 КБ на аппаратном уровне.

В первом случае происходит следующее (упрощенное):

  1. считывает блок 4 КБ с диска в буфер памяти
  2. заменяет 512 байт в буфере памяти
  3. [ 112] запись 4 КБ буфера на диск
  4. чтение 4 КБ блока с диска в память
  5. замена следующих 512 байтов в буфере
  6. запись 4 КБ блока на диск
[ 119] ... замена блока 4 КБ требует 8 операций чтения с диска и 8 операций записи на диск.

Полагаю, вы получите представление о том, что происходит, когда вы увеличиваете размер блока до 4 кБ или более (предпочтительно кратно 4 кБ), и о том, как это увеличивает скорость. Больше не нужно читать диск, потому что записаны целые блоки.

Вдобавок к этому ускорению вполне вероятно, что ПК теперь доставляет данные на диск достаточно быстро, что он может, вероятно, записывать последовательный блок один за другим, не дожидаясь, пока вращающийся диск сделает полный оборот, пока правый блок не появится под головами.

0
ответ дан 21 December 2012 в 18:59

Размер блока по умолчанию для dd составляет 512 байт, второй командой вы сообщаете dd использовать размер блока 1 МБ.

Какой размер блока?

Блок - это единица измерения количества байтов, которые считываются, записываются или преобразуются за один раз. Параметры командной строки могут указывать другой размер блока для ввода / чтения (ibs) по сравнению с выводом / записью (obs), хотя параметр размера блока (bs) будет перекрывать как ibs, так и obs. Значение по умолчанию для блоков входного и выходного блоков составляет 512 байт (размер блока блочных устройств Unix). Параметр подсчета для копирования измеряется в блоках, равно как и счет пропуска для чтения и счет поиска для записи. На операции преобразования также влияет размер блока преобразования (cbs).

Для некоторых применений команды dd размер блока может влиять на производительность. Например, при восстановлении данных с жесткого диска небольшой размер блока обычно приводит к восстановлению большей части байтов. Для большей скорости во время операций копирования может использоваться больший размер блока. Когда dd используется для сетевых передач, размер блока может влиять на размер пакета, в зависимости от используемого сетевого протокола.

источник

0
ответ дан 21 December 2012 в 18:59

Другие вопросы по тегам:

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