ВНИМАНИЕ!
Эти примеры могут привести как сбою компьютера так и к потере данных, если ваши действия не будут выполняться с осторожностью
Эти примеры могут привести как сбою компьютера так и к потере данных, если ваши действия не будут выполняться с осторожностью
bs - аргумент
При использовании dd, bs является одним из наиболее важных аргументов командной строки. Это говорит о размере буфера, используемого для операций. Вы должны помнить, что:
- Буфер будет влиять на производительность. Более большой буфер быстрее, но не делайте bs слишком большим если нет необходимости.
- Место для буфера будет выделено из памяти, так что размер ограничен количеством оперативной памяти и доступного адресного пространства.
- Аргументы count = и другие также можно использовать с bs
Вариант 1
Использование параметра bs (bufer size)
По моему опыту, я не думаю, что есть что-то быстрее чем dd. Регулировка параметра bs может увеличить скорость, например, у меня есть 2 HDD, я знаю, что есть скорость чтения/записи (более 100 МБ / с), так что, мы можем сделать так:
dd if=/dev/sda of=/dev/sdb bs=100M |
Тут, мы также можем использовать pv (должен быть установлен первым), который показывает максимальную скорость обоих дисков, а затем переходит на клонирование. У вас должны быть права root:
pv < /dev/sda > /dev/sdb |
С pv я получил 156 MB/s
Удобство работы с pv заключается в том, что он показывает прогресс, текущую скорость, время, и ETA.
С pv и очень оптимизированного параметра bs, вы можете записать диск 4 ТБ менее чем за 7 часов (6 часов 50 минут при текущей скорости 150 Мб / с).
Вариант 2
Запись образа с разбивкой + bs
У нас есть образ раздела на 100GB (HDD), нам нужно записать его на новый HDD диск.Вот совет, который может резко ускорить процесс: разделить файл на более мелкие части (чем больше файл, тем медленнее dd работает)
Пример
sudo dd if=/dev/sda3 conv=sync,noerror bs=2M | split -a 3 -d -b 1G - /maindisk.img |
В итоге, получится (maindisk.img000, maindisk.img001 и так далее ...)
Затем
cat maindisk.img* | sudo dd of=/dev/sda1 |
Перед записью в новый раздел (partition) HDD - partition должны быть такого же размера, как и старый
Этот способ работает быстрее, чем обычный способ (без разбивки).
Тесты с использованием команды dd и параметра bs и параметра sync
В этих тестах я буду полностью стирать все что находится на USB, включая все разделы используя эту команду:
dd if=/dev/zero |
Еще один пример стирания и записи в ноль, если жалко флэшку :)
dd if=/dev/urandom | pv | dd of=/dev/null |
Каким должен быть "bs" для USB?
Для USB флэшки, я использую bs=1M
В наши дни, bs (block size) должен быть кратен размеру сектора устройства (обычно 4KB), но на самых последних дисках может быть гораздо больше, а на небольших флэшках может быть и меньше, но 4 КБ это разумная середина. Я часто использую 1MB bs с USB устройствами.
Параметр sync - очищает буфер и делает синхронизацию того, что поступило и того что вышло.
В этом приме я не использую bs, по умолчанию bs = 512 bytes
sudo dd if=/dev/zero | pv | sudo dd of=/dev/sdc && sync |
Без bs
8179941376 bytes (8.2 GB) copied, 2519.81 s, 3.2 MB/s
7.62GB 0:41:59 [ 3.1MB/s] [ <=> ]
В этом приме я использую bs равный 1Mб
sudo dd if=/dev/zero | pv | sudo dd of=/dev/sdc bs=1M && sync |
С bs=1M
8179941376 bytes (8.2 GB) copied, 1052.03 s, 7.8 MB/s
7.62GB 0:17:32 [7.42MB/s] [ <=>]
В этом приме я использую bs равный 4Mб
sudo dd if=/dev/zero | pv | sudo dd of=/dev/sdc bs=4M && sync |
С bs=4M
8179941376 bytes (8.2 GB) copied, 1051.14 s, 7.8 MB/s
7.62GB 0:17:31 [7.42MB/s] [ <=> ]
Как видно из примеров выше без bs скорость записи значительно ниже.
bs = 1M и bs = 4M практически не отличаются.
На практике для флэшек рекомендуется использовать bs = 1M
Рекомендую для чтения:
Запись из образа .img или .iso на USB из Linux используя команду "dd"
Команда "dd" как швейцарский нож
Комментариев нет :
Отправить комментарий
Оставить отзыв