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

23

В чем разница между двумя ddкомандами , которые имеют разные bsи countзначение, до тех пор , как они размножаются в то же самое? Например:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1
скалистый
источник
4
Обе команды займут много лет. Используйте urandom, если вам нужны случайные числа. Используйте ноль, если вам просто нужен быстрый ввод чего-либо.
Нильс
4
Используйте /dev/urandom, нет /dev/random. См security.stackexchange.com/questions/3936/... , security.stackexchange.com/questions/3259/... , ...
Жиля SO- перестать быть злым »

Ответы:

26

Что касается конечного результата, они будут делать то же самое. Разница в том, как ddбудут обрабатываться данные. И на самом деле, оба ваших примера довольно экстремальны в этом отношении: bsпараметр сообщает, ddсколько данных он должен буферизовать в памяти перед выводом.

Итак, по сути, первая команда будет пытаться прочитать 2 ГБ двумя кусками по 1 ГБ, а вторая попытается прочитать все 2 ГБ за один раз и затем вывести их в aaфайл.

rozcietrzewiacz
источник
17

Результат будет таким же, но в первом случае ddбудут записаны два блока по 1 ГБ, а во втором блоке по 2 ГБ. Разница в том, что ddскопированный блок хранится в памяти. Вам понадобится 1 ГБ оперативной памяти в первом случае и 2 ГБ во втором.

На мой взгляд, нет необходимости использовать такие большие блоки. Вы можете сделать пару тестов, но в моем случае я достигаю большей скорости с намного меньшими блоками (<1MB)

Matteo
источник
9

Первый будет занимать 1 ГБ памяти, заполнять его данными из входного файла и выводить его два раза.

Второй займет 2 ГБ памяти, заполнит его данными из входного файла и выведет его.

golimar
источник
2

Используемый размер блока должен соответствовать лучшим настройкам скорости для источника и целевого устройства.

Вы можете лучше увидеть разницу, если попытаетесь скопировать устройство LV. Использование очень маленького размера BS прервет процесс чтения излишним. Использование очень большого размера BS приведет к долгим ожиданиям во время записи.

Поскольку стандартные LV обычно состоят из блоков размером 4 МБ, что также является хорошим размером для доступа к физическому диску, я использую для них bs = 4M.

Попробуйте поэкспериментировать с 16K или 256M - вы заметите разницу - и посмотрите индикатор диска во время копирования ...

Nils
источник
Штрафы для блоков малого или большого размера несколько компенсируются кэшированием, выполняемым ядром. Смотрите здесь для мини-бенчмарка.
Жиль "ТАК - перестань быть злым"
@ Жиль, я не помню цифры в моих тестах, но они были намного более драматичными, чем твои. Какую физическую настройку жесткого диска вы использовали в своем тесте? Мой был на аппаратном RAID 5 с чередованием 5 дисков (SAS 15k) с 128 КБ. размер полосы
Нильс
Диски SATA, RAID нет, иначе машина простаивает. Я не помню точные характеристики.
Жиль "ТАК - перестань быть злым"