dd копирует разделы значительно медленнее, чем gparted. Как это возможно?
Я попытался скопировать разделы с внутреннего твердотельного накопителя M.2 емкостью 500 ГБ на внешний корпус USB3.x вокруг диска M.2 емкостью 2 ТБ.
В моей первой попытке использовался кабель от A до C и команда:
dd if=/dev/nvme01p3 of=/dev/sda1 bs=1M
Для раздела размером 240 ГБ потребовалось примерно 6,5 часов. Он показывал 10 МБ/с. Это казалось очень медленным. Оказалось, что порт, к которому я подключался, вероятно, был USB2, поэтому я использовал короткий кабель USB C — C и получил скорость 40 МБ/с, а для аналогичного раздела потребовалось около 1,5 часов.
dd должен быть довольно низкого уровня, особенно если рассматриваемые файлы являются разделами. Разве это не просто необработанный блок на диске? Поэтому, когда в другом вопросе некоторые ответы предлагали мне использовать раздел копирования в gparted. В любом случае были ошибки, поэтому я попробовал это и был ошеломлен, когда он достиг того, что, по моему мнению, должно было быть больше 1 ГБ/сек. Через 4 минуты раздел был переделан.
Вопрос в том, как возможно, что dd может быть в 40 раз медленнее, чем gparted? Если этот вопрос придется перенести в stackoverflow, я это сделаю, но это находится в серой зоне между программным обеспечением и Linux.
2 ответа
должен быть довольно низкого уровня, особенно если рассматриваемые файлы являются разделами. Разве это не просто необработанный блок на диске?
Верно, но необработанные блоки одинаковы для используемых (занятых данными) и неиспользуемых (пустые/все нули/разреженная/файловая система без данных, т.е. файлы)... Итак, что касается, они копируются на диск в необработанном виде. уровень дисковых блоков, постепенно пропуская их содержимое... т.е. одинаковая скорость для всех дисковых блоков.
Gpartedс другой стороны, это утилита, поддерживающая файловую систему... Чтобы узнать, как это может повлиять на скорость копирования раздела (файловой системы), попробуйте скопировать пустой раздел только с файловой системой, т.е. только что отформатированный и на нем нет файлов... скопирует каждый отдельный блокировать, т. е. как будто файловая система заполнена файлами, что может занять много времени в зависимости от размера источника, скорости обоих дисков и связи между ними, в то время как, с другой стороны, просто воссоздается пустая файловая система на целевой системе бесплатно. space, и это должно быть невероятно быстро, поскольку оно просто форматирует целевое пространство с одинаковым размером и файловой системой того же типа.
Судя по всему, ваш исходный раздел/файловая система не занята достаточным количеством файлов/данных, чтобы принудительноgpartedдля копирования содержимого каждого отдельного блока.
Утилиты, поддерживающие файловую систему, будут работать быстрее, если исходный раздел не заполнен и имеет много свободного места.ddв противном случае может быть быстрее или, по крайней мере, такой же скорости.
Пожалуйста, ознакомьтесь с расширенным обсуждением этого вопроса, посвященным копированию 500 Gig с одного портативного устройства на другое с помощью dd.
Скорость 'dd зависит от размера блока.
Размеры блоков/размеры буфера/настройки упреждающего чтения влияют на последовательное чтение/запись. Если вы используете блоки небольшого размера, диск будет считывать только небольшие объемы данных за один доступ, прежде чем передать их следующему процессу.
Найдите золотую середину иddбудет так же быстро, как gparted.
У Gparted будет метод определения этой золотой точки. Вероятноsudo blockdev --getsz /dev/{device}.