Как я ускорил бы полный диск dd?

Я делаю a dd на двух идентичных дисках с этой командой:

 dd if=/dev/sda of=/dev/sdb bs=4096

Оба жестких диска являются тем же самым номером модели, и у обоих есть 1 ТБ пространства памяти. /dev/sda использует blocksize 4 096. /dev/sda локальный диск и /dev/sdb удаленный кэдди. Я смог использовать следующие протоколы:

  • USB2.0 HighSpeed (В настоящее время план)
  • Гигабитный Сверхсетевой клон (Действительно не хотят даже пробовать это),
  • USB3.0 (Если я нахожу своего другого кэдди диска),
  • eSATA (Если я нахожу/покупаю кабель),
  • SATA (Если я нахожу/покупаю кабель, должен любить CD-приводы ноутбука),

Существует ли способ выполнить эту копию диска, которая берет меньше это 96 часов? Я открыт для использования инструментов кроме dd.

Я должен клонировать следующие разделы (включая UUID)

  • Раздел Fat32 EFI (*)
  • Windows Partition NTFS (*)
  • HFS + раздел OSX
  • Раздел EXT4 Ubuntu (*)
  • Раздел подкачки (*)

* Поддерживаемый Clonezilla


Я попробовал Clonezilla (и это было НАМНОГО быстрее), но это не поддерживает HFS + умное копирование, в котором я нуждаюсь. Возможно, новейшая поддержка версии это?

Когда я сделал свой первый клон, я сделал все разделы кроме HFS +, и он пошел очень быстро. (Не больше, чем общее количество 3 часов)

65
задан 12 September 2014 в 21:46

10 ответов

По моему опыту, я не думаю, что существует что-то быстрее в командной строке как dd. Корректировка bs параметр может увеличить скорость, например, у меня есть 2 жестких диска, которые я знаю, имеют скорость чтения-записи, больше, чем 100 МБ/с, таким образом, я делаю это:

dd if=/dev/sda of=/dev/sdb bs=100M

существует также pv (Потребности, которые будут установлены сначала), который проверяет на самую быструю скорость на обоих дисках и затем продолжается на клонировании. Это должно быть сделано, конечно, от корня:

pv < /dev/sda > /dev/sdb

С PV я получил 156 МБ/с

хорошая вещь, которая [приблизительно 116] кроме скорости - то, что это показывает прогресс, текущую скорость, время, так как это началось и ЭТА. В отношении HFS + я не знал бы, просто пытаюсь помочь на части "скорости". С pv или очень оптимизированный bs параметр, можно сделать 4 диска емкостью меньше чем через 7 Часов (6 Часов 50 Минут на текущей скорости 150 МБ/с).

enter image description here

я сделал несколько тестов с типами соединения, которые Вы использовали и другие, которых я имел в наличии. Я использовал Asus Z87 Pro и Intel DZ68DP. Это было моими результатами, но сначала мы должны знать, что теоретические скорости для многих скоростей передачи (Необработанные скорости) являются просто этим, теория . Выполнение реальных тестов показало, что они между 40% к 80% той необработанной скорости. Это тестирует, может измениться в зависимости от используемого Устройства, тип соединения, материнская плата, тип соединительного кабеля, тип файловой системы и т.д. Имея это в виду, это - то, что я получил (я только протестировал скорость Записи к Устройству, читайте, обычно выше):

Connected Device  -  Connection Type  -  Speed (Write Speed)
  USB 2.0                 USB 2.0              25 MB/s
  USB 3.0                 USB 2.0              35 MB/s
  USB 3.0                 USB 3.0              73 MB/s
  eSata                   eSata                80 MB/s
  Sata 2G HDD             Sata 2G              120 MB/s
  Sata 3G HDD             Sata 2G              140 MB/s
  Sata 3G HDD             Sata 3G              190 MB/s
  Sata 2G SDD             Sata 2G              170 MB/s
  Sata 3G SDD             Sata 2G              210 MB/s
  Sata 3G SDD             Sata 3G              550 MB/s 
71
ответ дан 16 November 2019 в 10:08

Скопировать оптовую торговлю разделом, использование cat вместо dd . Я работал сравнительные тесты только что, копируя большой файл, а не раздел, между двумя дисками (на том же диске, относительные синхронизации отличаются):

dd bs=64M    51.3
dd bs=1M     41.8
dd bs=4k     48.5
dd bs=512    48.9
cat          41.7
cp           45.3

заключение из этого сравнительного теста состоит в том, что выбор размера блока для dd вопросы (но не так очень), и cat автоматически находит лучший способ сделать быструю копию: dd может только замедлить Вас. С маленьким размером блока, dd напрасно тратит время, делая потерянным крошечных чтений и записей. С большим размером блока один диск остается неактивным, в то время как другой читает или пишет. Оптимальный уровень достигается когда одно чтение с диска в то время как другие записи на диск.

Для копирования раздела это может быть быстрее для копирования файлов с cp -a. Это зависит от сколько файлов, там и сколько из файловой системы свободное пространство. Копирование файлов имеет издержки, это примерно пропорционально количеству файлов, но с другой стороны копирование свободного пространства напрасно тратит время.

максимальная скорость передачи данных для USB2 немного находится под 50 МБ/с, который удается к 6†“7 часов для передачи 1 ТБ. Это принимает жесткий диск, это достаточно быстро для насыщения Шины USB; я думаю, что более быстрые диски на 7 200 об/мин могут сделать это, но 5900 об/мин не могли бы быть то, что быстро (возможно, они для линейных записей?).

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

12
ответ дан 16 November 2019 в 10:08

Проблемой является Ваш тип соединения и размер блока. Для самых быстрых результатов Ваш размер блока должен быть половиной самой низкой записи, ускоряют Вас, обычно получают. Это будет давать Вам безопасное поле, но все еще допускать большое количество; конечно, у Вас должно быть достаточно поршня для содержания данных также.

Usb 2.0 составляет 12 мегабит в секунду (Мбит/с), Высокая скорость Usb 2.0 составляет 480 Мбит/с. Это - конечно, необработанная скорость; с 8 битами в байте и структурирующий наверху, применимая скорость в МБ/с обычно является законченным десятичным разрядом. Так, например, 480 сырых данных, становится применимыми 48 МБ. Следует иметь в виду, что это - математическое лучшее в реальном мире, это будет немного ниже. Для высокоскоростных соединений usb 2.0 необходимо ожидать где-нибудь, что приблизительно 30-35 МБ макс. пишут скорость, если устройство настоящего хранения может приравнять или превзойти скорости соединения.

12
ответ дан 16 November 2019 в 10:08

Я соглашаюсь, что необработанная скорость хорошо настроенного dd ('объем плазмы') или команда 'кошки' жестка для избиения, но если существует какая-либо проблема с копией (поврежденный сектор, сбой питания, пользовательская ошибка, и т.д.) тогда необходимо запустить.

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

5
ответ дан 16 November 2019 в 10:08

Я перемещаю Windows 7 от жесткого диска до SSD и нашел это и некоторые другие ответы... Что-то, что я изучил, который мог бы помочь другим. В моем случае исходный диск является более крупным, еще я работал бы в/dev/sda->/dev/sdb уровень устройств.

Win7 и его 3 раздела... Я использовал Xbuntu 14.04 живой CD на usb. Высунутый DVD компьютера победы и положенный SSD на его место. Установленный partclone и попробованный это:

partclone.ntfs -b -N -s /dev/sda3 -o /dev/sdb3

Partclone рвал на ntfs, нуждающемся chkdisk выполненный в Windows, таким образом, быстрое исправление стало partclone счастливый:

ntfsfix -b /dev/sda3
ntfsfix -d /dev/sda3

Все команды, выполненные как корень. ncurses UI Partclone (-N опция) сказал, что передача была 7GB/min и закончилась в 5GB/min, который приравнивается к 83MB/sec. Большая часть является partclone, не копирует неиспользуемое место, таким образом, это сделало клон удивительно быстро.

Дополнительный потенциал gotchyas:

  • , если диск Вы передаете, ранее использовался, он мог бы иметь остатки GPT. Установки фабрики Windows 7 обычно являются msdos/mbr таблицами разделов. Необходимо будет удалить фрагменты GPT из конечного диска. Этот Unix & Linux QA помог мне с этим. Необходимо использовать gdisk на устройстве, использовать x тогда z и да, чтобы убить данные GPT и удостовериться, что Вы СОХРАНЯЕТЕ MBR.

  • И не забывают, не делаете ли Вы уровня устройств dd, необходимо будет скопировать MBR с помощью
    dd if=/dev/sdb of=/dev/sda bs=446 count=1
    , где sdb является источником или старым диском, и sda является целевым или новым диском ( источник )

2
ответ дан 16 November 2019 в 10:08

Я недавно создавал изображение раздела на 100 ГБ (жесткий диск) и пишу его в новый диск SSD.

Вот подсказка, которая может решительно ускорить процесс:)

файл Разделения в меньшие части (чем больше файл, тем медленнее это работает)

sudo dd if=/dev/sda3 conv=sync,noerror bs=2M | split -a 3 -d -b 1G - /maindisk.img

Во время процесса, можно проверить использование скорости (в отдельный терминал)

pgrep -l '^dd 

Затем когда у Вас есть каталог, полный файлов результата (maindisk.img000, maindisk.img001, и так далее...) использование

sudo cat maindisk.img* | sudo dd of=/dev/sda1

для 'записывания' изображения в новый раздел SSD (parition должен быть тот же размер как старый)

мне, это работало loooot быстрее чем обычно путь (не разделяя). Средняя скорость создания изображения была ~13MB/s. Когда я использую 'нормальный' путь, он запускается с ~15MB/s и затем уменьшающийся к 1MB/s.

#to find PROCESSID kill -USR1 PROCESSID #to check the speed

Затем когда у Вас есть каталог, полный файлов результата (maindisk.img000, maindisk.img001, и так далее...) использование

sudo cat maindisk.img* | sudo dd of=/dev/sda1

для 'записывания' изображения в новый раздел SSD (parition должен быть тот же размер как старый)

мне, это работало loooot быстрее чем обычно путь (не разделяя). Средняя скорость создания изображения была ~13MB/s. Когда я использую 'нормальный' путь, он запускается с ~15MB/s и затем уменьшающийся к 1MB/s.

1
ответ дан 16 November 2019 в 10:08

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

Выполните его дважды:

Первый раунд, скопируйте каждый блок без ошибки чтения и зарегистрируйте ошибки к rescue.log.

sudo ddrescue -f -n /dev/sdX /dev/sdY rescue.log

Второй раунд, скопируйте только сбойные блоки и попытайтесь 3 раза читать из источника перед отказом.

sudo ddrescue -d -f -r3 /dev/sdX /dev/sdY rescue.log

Теперь можно смонтировать новый диск и проверить файловую систему на повреждение.

Подробнее:
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html

1
ответ дан 16 November 2019 в 10:08

Идентификатор рекомендует входу/чтению - файл/диск быть на SATA для повышения скоростей чтения. Высокая скорость USB 2.0 хороша также, поскольку я получаю средние скорости 33 816 Кбит/с с ddrescue по сравнению с тем, когда установка была USB 2.0 к SATA в 2 014 Кбит/с

0
ответ дан 16 November 2019 в 10:08

Используйте другой размер блока. Это - объем данных это dd чтения за один раз. При чтении слишком мало, большая доля времени потрачена на логику программы и, если считано слишком много, много времени проведено, перемещая большие данные вокруг.

Для измерения скорости в различных размерах блока используйте следующий bash сценарий:

  • устанавливает $dev на устройство
  • , фиксируют cbtotal, чтобы быть, по крайней мере, 5x Ваша ожидаемая скорость чтения
    (set -o errexit; skip=0; cbtotal=$((120*1024**2)); bs=256;
    for power in `seq 10`; do
      bs=$((bs*2)); skip=$((skip/2)); count=$((cbtotal/bs));
      if [ "$count" -lt 1 ]; then break; fi;
      echo $bs;
      dd if=$dev of=/dev/null skip=$skip bs=$bs count=$count
      skip=$((skip+count))
    done)

, результат может склоняться к большему размеру из-за чтения с диска вперед - вот почему важно установить cbtotal достаточно большой.

0
ответ дан 16 November 2019 в 10:08
dd if=/dev/sda of=/dev/sdb bs=100M status=progress

Мне удалось получить 430 МБ / с, когда я делал образ с SATA SSD на NVME SSD

0
ответ дан 13 March 2020 в 10:46

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

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