Почему Clonezilla быстрее, чем дд?
На моем изображении SSD (Source и Destination - 2 SSD) я получаю 12GBpm, используя CloneZilla, в то время как с dd я получаю только 5GBpm.
Что делает Clonezilla намного быстрее, чем дд?
3 ответа
ДД просто читает из блока 0 в блок 99999 и копирует данные.
Clonezilla понимает файловые системы и понимает, когда копировать нечего (потому что это пустое пространство или данные из файла, который был удален).
Если вы знаете, что не нужно копировать все бесполезные данные, гораздо проще скопировать реальные данные.
С веб- страницы "Для неподдерживаемой файловой системы копирование между секторами выполняется dd в Clonezilla".
Ну, это зависит от того, что Clonezilla использует для клонирования.
Он использует разные инструменты в зависимости от типа раздела, взятого с их сайта:
Based on Partclone (default), Partimage (optional), ntfsclone (optional), or dd to image or clone a partition.
Он будет использовать их в таком порядке, чтобы попытаться скопировать ваш раздел. dd является последним средством, потому что он просто копирует сектор за сектором и не имеет встроенной оптимизации, которая бы основывалась на типе файловой системы раздела. Например, клонирование раздела ntfs будет намного быстрее, чем клонирование раздела hfs (по крайней мере, с более старой версией clonezilla, не использовавшей его некоторое время), потому что не было встроенного инструмента для эффективного копирования hfs +, и это использовал дд.
Clonezilla может быть быстрее, чем dd по ряду причин.
- Используемое оборудование
- Используемое программное обеспечение (Partclone, partimage, ntfsclone, dd)
- Параметры и настройки дд
Я согласен с обоими ответами, изложенными ранее. Я повторю и дополню каждый из этих ответов.
Предполагая, что все яблоко к яблокам в соотношении 1:1, где CloneZilla использует dd, а кто-то вручную использует dd вместо CloneZilla, используя partclone или что-то в этом роде, я бы сказал, что это должны быть параметры dd, поскольку это будет единственная оставшаяся разница. при условии, что используемое аппаратное и программное обеспечение идентично.
Одним из параметров является размер блока. Как правило, блоки большего размера позволяют копировать быстрее, но есть переломный момент, и не всегда имеет смысл просто выбирать блок самого большого размера, который вы можете.
dd if=/dev/sda of=/dev/sdb bs=<value>
Как значение BS повышает скорость: действительно ли опция «bs» в «dd» увеличивает скорость?
Оба в этом случае не обязательно будут копировать пустые сектора. Вероятно, это самая большая проблема в разнице в производительности. Большинство пользователей, вероятно, не прекратят клонирование после копирования конца последнего раздела. Они, вероятно, использовали бы эту базовую команду
dd if=/dev/sda of=/dev/sdb
Это не остановится в конце последнего раздела.
Чтобы остановить передачу в конце последнего раздела:
fdisk -l
Затем скопируйте значение в столбце END последнего раздела исходного диска. Затем установите счетчик равным этому значению.
dd if=/dev/sda of=/dev/sdb count=<'fdisk -l' END_column_last_parition_result>
Это остановит побайтовое копирование, как только все данные раздела совпадут. Внутри раздела могут быть пустые данные, что еще больше снизит вашу производительность.
Если можете, дефрагментируйте и уменьшите диск, чтобы удалить пустое пространство в разделах, прежде чем запускать dd. Сжатие уменьшит размер разделов и позволит вам копировать быстрее, поскольку вы не будете копировать пустые области.
Обратите внимание: когда вы это сделаете, вам придется расширить раздел на целевом диске после операции dd, чтобы свободное нераспределенное пространство можно было использовать.
Вы также можете увидеть разницу в производительности, поскольку на диске могут быть ошибки.
Кроме того, параметр «conv=sync» добавляет дополнение, которое увеличивает потребление данных целевого диска. Это также делает диск не «идентичным» источнику.
При копировании с неисправного диска обычно используется conv=sync,noerror. Если этот диск исправен, достаточно либо просто noerror, либо не использовать conv=.
Итак, для плохого диска я бы использовал что-то вроде
dd if=/dev/sda of=/dev/sdb bs=512 count=<value> status=progress conv=sync,noerror
для хорошего
dd if=/dev/sda of=/dev/sdb bs=10M count=<value> status=progress