Клонирование диска hdd или ssd на centos 6.x

baltun

Администратор
Сообщения
10.908
Реакции
2.597
Баллы
2.003
Алгоритм работы GNU ddrescue таков:
  1. Если нужно, считывается журнал, где описано состояние предыдущего прерванного сеанса работы, либо прежних попыток восстановления различных участков файла.
  2. До указанного места, либо до прерывания пользователем считываются неповрежденные участки входного файла.
  3. Делается попытка прочитать поврежденные участки. Поврежденные участки разбиваются на более маленькие, из них считываются уцелевшие фрагменты; и так пока не будет достигнут физический размер блока устройства, либо работу не прервет пользователь.
  4. Поврежденные блоки считываются в указанное число попыток, либо до прерывания работы.
  5. Если нужно для последующего вызова, записывается журнал работы.
Установка программы:
Код:
yum install ddrescue

Команда на создание образа и лога.
Код:
ddrescue /dev/sde /media/Hard/backup/server.img /media/Hard/backup/server.img.log

Если носитель сильно поврежден делаем в 2 проходы снятие образа.
Код:
Первый проход
ddrescue --no-split --verbose /dev/sde /media/Hard500/backup/server.img /media/Hard500/backup/server.img.log

Второй проход
ddrescue --direct --max-retries=2 --verbose /dev/sde /media/Hard500/backup/server.img /media/Hard500/backup/server.img.log

В этом режиме очень сильно падает скорость, но восстанавливается то, что предыдущие два прохода не смогли
ddrescue --retrim --max-retries=2 --verbose /dev/sde /media/Hard500/backup/server.img /media/Hard500/backup/server.img.log

Итог по завершению работы.
Код:
Press Ctrl-C to interrupt
        Initial status (read from logfile)
        rescued:         0 B,  errsize:       0 B,  errors:       0
        Current status
        rescued:   101763 kB,  errsize:       0 B,  current rate:    3801 kB/s
           ipos:   101711 kB,   errors:       0,    average rate:    2702 kB/s
           opos:   101711 kB

-A или --try-again

Не углубляясь в нюансы работы ddrescure, можно пометить все ошибочные области, как области, которые еще не читались. Рекомендуется использовать опцию, если диск перестает отвечать.

-d или --idirect

При указании данной опции, ddrescure использует прямой доступ к диску, обходя кэши ядра.

-i bytes или --input-position=bytes

Ключ задает откуда (с какого bytes) начинать чтение с infile. По умолчанию установлен в ноль.

-m file или --domain-mapfile=file

Ограничить размер восстанавливаемого раздела последним блоком, обозначенным в логфайле. Используется для слияния образов восстановления. Например, если диск outfile сломался во время восстановления.

-n или --no-scrape

Пропускает т.н. фазу scrape. Уменьшает время восстановления, т.к. снижает время на попытки чтения самых трудных частей файла.

-r n или --retry-passes=n

Задает количество повторных попыток чтения поврежденных областей. По умолчанию - 0. -1 подразумевает, что количество попыток бесконечное. Каждый битый сектор читается один раз, пи этом перечитывается 0 раз по умолчанию, или то количество раз, которое заданно в текущей опции.

-R или --reverse

Обратная последовательность выполнения каждой фазы восстановления. То есть ddrescure читает данные в обратной последовательности.

-f или --force

Заставить ddrescure перезаписать диск outfile. Необходим, когда в качестве outfile используется устройство. Используется для защиты от ошибочного повреждения данных.

-v или --verbose

Verbose mode, он же подробный режим. Можно указать несколько -v (до 4х), что увеличит детальность вывода.

Пример 1: Восстановление целого диска с несколькими разделами ext3 (или любыми другими, хоть NTFS) с /dev/hda на /dev/hdb.
Примечание: Нет необходимости создавать таблицу разделов на /dev/hdb, т.к. данные копируются побайтово вместе со структурой разделов.
Код:
ddrescue -f -n /dev/hda /dev/hdb mapfile
ddrescue -d -f -r3 /dev/hda /dev/hdb mapfile
fdisk /dev/hdb
e2fsck -v -f /dev/hdb1
e2fsck -v -f /dev/hdb2

Пример 2: Восстановление одного раздела с /dev/hda2 на /dev/hdb2.
Примечание: результирующий раздел должен существовать с тем же типом и размером, что и исходный, либо должен быть создан.
Код:
ddrescue -f -n /dev/hda2 /dev/hdb2 mapfile
ddrescue -d -f -r3 /dev/hda2 /dev/hdb2 mapfile
e2fsck -v -f /dev/hdb2
mount -t ext2 -o ro /dev/hdb2 /mnt
# (попробуйте прочитать данные с восстановленного раздела)

Пример 3:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hda остановился и перестал отвечать на позиции 12345678.
Код:
ddrescue -f /dev/hda /dev/hdb mapfile
# ( <-- /dev/hda freezes here --> )
# (переподключите  /dev/hda или перезагрузите компьютер )
# перезапускаем восстановление с байта 12350000
ddrescue -f -i 12350000 /dev/hda /dev/hdb mapfile
# Пробуем восстановить с конца диска
ddrescue -f -R /dev/hda /dev/hdb mapfile

Пример 4:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hdb выдал ошибку и мы пытаемся восстановить данные на третий диск /dev/hdc
Код:
ddrescue -f -n /dev/hda /dev/hdb mapfile1
# (<-- /dev/hdb выдал ошибку -->)
ddrescue -f -m mapfile1 /dev/hdb /dev/hdc mapfile2
ddrescue -f -n /dev/hda /dev/hdc mapfile2
ddrescue -d -f -r3 /dev/hda /dev/hdc mapfile2

Пример 5:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hda перестал отвечать, стал недоступен и невидим в /dev
Код:
ddrescue -f -n /dev/hda /dev/hdb mapfile
# (<-- /dev/hda fails here --> )
# Переподключите /dev/hda или перезагрузите компьютер столько раз, сколько необходимо
ddrescue -f -n -A /dev/hda /dev/hdb mapfile
ddrescue -d -f -r3 /dev/hda /dev/hdb mapfile
 
Последнее редактирование:
Назад
Верх Низ