dd – клонирование диска
Диск на сервере начал сыпать ошибками и поэтому возникла необходимость переноса системы на новый диск. Пробую на виртуальной машине. Выключаем сервер и подключаем новый диск.
Смотрим диски: ada0 – старый ada1 – новый:
# ls /dev/ad* /dev/ada0 /dev/ada0p1 /dev/ada0p2 /dev/ada0p3 /dev/ada1
# gpart show ada0 => 40 33554352 ada0 GPT (16G) 40 1024 1 freebsd-boot (512K) 1064 31456256 2 freebsd-ufs (15G) 31457320 1677312 3 freebsd-swap (819M) 33134632 419760 - free - (205M)
Перенос системы решил делать утилитой dd
# dd if=/dev/ada0 of=/dev/ada1 33554432+0 records in 33554432+0 records out 17179869184 bytes transferred in 26121.526733 secs (657690 bytes/sec)
Если в процессе утилита начнет ругаться можно попробывать опцию
conv=noerror,sync [bs=размер_блока]
conv=noerror – продолжать копирование невзирая на interrupt
HDD с битыми секторами можно копировать используя dd, диск должен быть читабельным (с ошибками, но читабельным).
Ооочень долго переносило 16G данных. После окончания переноса правим fstab, нужно заменить ada0 на ada1 и пререгрузиться. Проще конечно просто вынуть старый и на его место подключить новый, но так как я делал это удаленно приходиться временно переназначить диски, а потом на месте уже заменив, вернуть записи обратно:
# ee /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/ada1p2 / ufs rw 1 1 /dev/ada1p3 none swap sw 0 0
# shutdown -r now
Если после загрузки gpart show покажет предупреждение [CORRUPT], его можно устранить
# gpart recover ada1
где ada1 – текущий загрузочный диск.