Когда неверны настройки bs и count для dd?

(под неправильным я имею в виду"сломает вещи".)

Предположим, мы собираемся использовать dd. Мы выбрали допустимый набор if,of и возможно seek и skip. Мы тщательно следили за тем, чтобы команда не писала дальше нашей предполагаемой области вывода.

как мы можем теперь тонко ломать вещи, выбирая плохую комбинацию bs и count? Откуда нам было это знать?

причина, по которой я спрашиваю, что там, кажется, магия предпочтительные значения, которые появляться. Например, в этом вопросе о генерации случайного файла 1G первые два ответа используют if=/dev/urandom,of=sample.txt,bs=64M и count=16.

как создать 1 ГБ случайного файла в Linux?

конечно, это не единственные допустимые настройки, но оба ответа использовали эти настройки, предполагая, что этот выбор особенно хорош и разумен. Особенно в таком случае, когда нет файловой системы или даже физического диска, мне это не ясно если выбор настроек может быть неправильным - не просто неэффективно, но неправильно. Я предполагаю, что dd должно написать целое число блоков за раз так, как bs повышается использование памяти и эти значения влияют только на производительность.

пример-это только пример, а не то, что меня конкретно интересует, поэтому продолжайте и рассматривайте случаи, когда то, что копируется, имеет файловую систему.

использование dd всегда пугающий прыжок веры для меня.

17
задан Community
30.12.2022 15:52 Количество просмотров материала 3233
Распечатать страницу

2 ответа

помогите! dd - это страшно!

вы не одиноки. От советы для Linux:

команда ' dd ' является одной из оригинальных утилит Unix и должна быть в окне инструментов каждого... Некоторые люди считают, что dd означает "уничтожить диск" или "удалить данные", потому что, если он используется неправильно, раздел или выходной файл может быть уничтожен очень быстро. Поскольку DD является инструментом, используемым для записи заголовков дисков, загрузочных записей и аналогичных областей системных данных, неправильное использование dd имеет наверное, разгромили много жестких дисков и файловых систем.

но не беспокойтесь. Как только вы узнаете о его тонкостях вы будете запускать dd со спокойной грацией ковбоя.

сломается? Что это такое counting bs?

давайте сначала разберемся с первым вопросом.

как мы теперь можем тонко ломать вещи, выбирая плохую комбинацию bs и count? Как бы мы знаешь?

если вы имеете в виду "непредвиденные последствия" под "перерывом", то просто указав их теоретически. Что я под этим подразумеваю? Ну, допустим, вы хотите скопировать image.img на SD-карту, расположенную в /dev/sdc. Таким образом, вы соответствуете параметрам в вашем примере:

# dd if=/home/someone/image.img of=/dev/sdc bs=64M count=16

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

16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 34.1303 s, 31.5 MB/s

скопировано только 1,1 ГБ! Но image.img это 2GB или около того, я хочу, чтобы все это скопировали! Рассказав dd чтобы скопировать 16 лотов 64M (где m=1024*1024, кстати), вы указали размер. Вы бы знали по выходу состояния. Если вы хотите скопировать весь файл, либо соответствовать размеру с bs и count; или просто опустить их полностью:

# dd if=/home/someone/image.img of=/dev/sdc
4364864+0 records in
4364864+0 records out
2234810368 bytes (2.2 GB) copied, 45.9502 s, 48.6 MB/s

что произойдет, если мы действительно шалить и сказать dd скопировать больше данных, чем доступно?

# dd if=/home/someone/image.img of=/dev/sdc bs=1M count=4096
2131+1 records in
2131+1 records out
2234810368 bytes (2.2 GB) copied, 77.9768 s, 28.7 MB/s

а, dd только копии, как многие байты, как он получает. Это удобно.

мониторинг dd

говоря о статусе вывода,dd (вариант GNU) уважает и реагирует на информационный сигнал SIGUSR1:

# echo "In another terminal or TTY"
# pkill -USR1 -n -x dd
# echo "Printed to stdout on the terminal/tty running dd:"
534+0 records in
534+0 records out
559939584 bytes (560 MB) copied, 1.68414 s, 332 MB/s

Handy для держать глаз на переходе который медленн или вы рассчитываете повиснуть для некоторой причины. Прекрасно сочетается с watch, но обязательно дайте watch достаточно длинный интервал времени.

тут dd есть другие варианты, которые я должен знать о чем?

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

  • conv=CONVS: преобразование входного сигнала в один или более параметров преобразования
  • seek=N и skip=N: пропустить N блоков [obs|ibs] размера в начале [output / input]
  • status=X: (подавить вывод) либо noxfer или none

я чувствую себя намного лучше о dd сейчас!

великолепно! В кратчайшие сроки вы будете отправлять загрузочный образ через интернет, чтобы быть записаны прямо на карту microSD с помощью комбинации dd и ssh.

но что значит dd аббревиатура на самом деле означает?

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


чувствуете, рекомендуется задать для уточнения, если что-то более непрозрачным, чем это должно быть!

3
отвечен bertieb 2022-12-31 23:40

ваш вопрос противоречив:

мы тщательно следили за тем, чтобы команда не писала дальше нашей предполагаемой области вывода.

как мы можем теперь тонко ломать вещи, выбирая плохую комбинацию bs и count? Откуда нам было это знать?

если вы выбрали плохую комбинацию bs и count, единственное, что вы можете сломать, - это написать мимо вашей предполагаемой области вывода (или не достичь ее, что я считаю тем же issue)

если вы тщательно обеспечили, что команда не будет писать мимо вашего предполагаемого региона вывода, вы не можете сломать вещи, потому что вы уже обеспечили свою комбинацию bs и count не плохо. Эти два события не могут происходить одновременно. Аналогично, если вы еще не поняли bs и count параметры, вы не можете тщательно убедиться, что ваш регион вывода правильный.

тем не менее,bs параметр в основном настройки производительности параметр. Если указать bs меньше, чем размер физического сектора и Вы читаете / пишете в режиме raw или другое значение, полностью выходящее из строя,dd будет просто, а не тонко ('Abort: ошибка ввода-вывода!). В противном случае, все будет просто медленно.

-3
отвечен qasdfdsaq 2023-01-01 01:57

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх