Как правильно клонировать / dev / sda на / dev / sdb

2490
nikozavar

У меня есть два жестких диска одинакового размера, представленные в виде / dev / sda и / dev / sdb. Я пытаюсь скопировать / dev / sda на / dev / sdb. / dev / sda имеет один раздел ext3. / dev / sda и / dev / sdb имеют одинаковое расположение разделов. Я использую следующую команду:

дд если = / dev / sda из = / dev / sdb

Когда я монтирую файловую систему в / dev / sdb, я вижу, что не все изменения отражаются на устройстве. Другими словами, диски не совпадают. Так что не получается. И я не понимаю, почему. Может ли это повредить таблицу разделов на / dev / sdb. Это правильный способ клонирования диска?

Ну, я не размонтирую файловую систему в / dev / sda, прежде чем начну ее клонировать. Но я абсолютно уверен, что никто не пишет об этом, пока выполняется клонирование.

0
На самом деле, вы можете быть уверены, что кто-то ** пишет ** на / dev / sda, а не наоборот. В Linux есть миллиард сервисов, регистрирующих все виды информации в реальном времени, которые не находятся под вашим контролем, и которые вы должны оставить почти в покое. Правильный способ клонирования диска - тот, который вы используете, но с отключенными обоими дисками. Ваша текущая операция также опасна для / dev / sda. Вам следует прочитать эту вики-страницу Arch Linux, https://wiki.archlinux.org/index.php/Disk_cloning#Create_disk_image, где написано: ** Убедитесь, что с исходного жесткого диска не смонтированы разделы. ** MariusMatutiae 8 лет назад 0
@MariusMatutiae, почему это опасно для / dev / sda? ilkhd 8 лет назад 0
Поскольку информация inode может измениться после того, как dd скопировал inde, информация в inode устареет, части файла будут пропущены, и так далее. MariusMatutiae 8 лет назад 0
@MariusMatutiae dd не блокирует файл во время чтения, или я не прав? ilkhd 8 лет назад 0

1 ответ на вопрос

2
misha256

In order to clone a disk, you absolutely should unmount all partitions. All modern desktop OS' have many services running in the background that write to the OS partition, and may also periodically write to other mounted partitions (even those on other disks) for whatever reason. The writes may be small and few, but any writes -- especially those involving filesystem metadata -- will wreck havoc with your cloning.

Typically one clones entire drives by booting a Linux Live CD/DVD/USB Key (pick any distribution you like, I prefer Mint for this kind of thing). This way your hard drives can remain unmounted.

The command you've got there will work fine, but as it stands, if a sector can't be read for any reason, dd will stop. You may want that behavior, or you may want it to continue... up to you. Arch has excellent documentation on disk cloning and they recommend something like this:

# dd if=/dev/sdX of=/dev/sdY bs=512 conv=noerror,sync 

But read the documentation, especially around adjusting bs to higher values, as that can have a significant impact on cloning speed. If you want dd to stop if it encounters an error, remove the conv=noerror,sync part.

misha256 спасибо за ваш ответ. Между прочим, я также использовал fsfreeze -f / directory_name, чтобы заморозить файловую систему, пока клонирование продолжается, но также происходит сбой. nikozavar 8 лет назад 0
@nikozavar Не беспокойся. Хм, `fsfreeze` выглядит интересно, надо разобраться в этом. Почему-то я не думаю, что `fsfreeze` может (или был разработан для этого) работать с корневым разделом работающей ОС, но я могу ошибаться. misha256 8 лет назад 0

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