Возникла необходимость перетащить боевую систему с одного жесткого диска на другой. Поискав решение данной проблемы с помощью стандартных средств системы, было откопано пару утилит: dump/restore и pax. Первая пара утилит предназначена только для бэкапа ФС, тогда как вторая тулза позволяет работать с файловыми архивами и копировать различные директории и их содержимое. Перенос системы FreeBSD 8.3 на другой винт я сделал с помощью утилит dump/restore, о чем по горячим следам я и поведаю в данной статье.
Итак, приступим: выключаем комп и подсоединяем новый жесткий диск, после грузимся в однопользовательский режим (надеюсь понятно зачем - в обычном режиме данные могут измениться в любой момент времени, поэтому перенос данных должен осуществляться с диска, который не доступен для записи на момент переноса). Далее размечаем новый диск по своему усмотрению, так же не забываем записать на него загрузчик системы. В моей конфигурации система установлена на диске ada0, а переносить ее я буду на диск ada1. Вот так выглядит вывод команды df:
# df -h -t ufs
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0s1a 495M 85M 370M 19% /
/dev/ada0s1d.journal 12G 623M 11G 5% /var
/dev/ada0s1e.journal 120G 37G 73G 34% /usr
Так я разметил новый жесткий диск (кстати, производить разметку можно в любой момент, хоть на другом компе, какой-либо роли это здесь не сыграет):
### Инициализируем
# fdisk -BI /dev/ada1
******* Working on device /dev/ada1 *******
fdisk: invalid fdisk partition table found
### Размечаем
# bsdlabel -eB /dev/md0s1
### Результат разметки
# bsdlabel /dev/ada1
# /dev/ada1s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 4194304 16 4.2BSD 0 0 0
b: 4194304 4194320 swap
c: 488392002 0 unused 0 0 # "raw" part, don't edit
d: 67108864 8388624 4.2BSD 0 0 0
e: 412894514 75497488 4.2BSD 0 0 0
После разметки нового диска необходимо отформатировать разделы и подключить их куда-нибудь. Вывод команды df:
# newfs -O2 /dev/ada1s1a
# newfs -O2 -U /dev/ada1s1d
# newfs -O2 -U /dev/ada1s1e
# mount /dev/ada1s1a /mnt/root
# mount /dev/ada1s1d /mnt/var
# mount /dev/ada1s1e /mnt/usr
# df -h -t ufs
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0s1a 495M 85M 370M 19% /
/dev/ada0s1d.journal 12G 623M 11G 5% /var
/dev/ada0s1e.journal 120G 37G 73G 34% /usr
/dev/ada1s1a 2G 86M 1.7G 5% /mnt/root
/dev/ada1s1d 31G 628M 27G 2% /mnt/var
/dev/ada1s1e 190G 37G 137G 21% /mnt/usr
Собственно, теперь можно приступать к переносу системы. Перенос будет осуществлен серией простых команд, которые выполняются для каждого раздела диска:
# dump -0 -С 32 -f - / | ( cd /mnt/root && restore -r -f - )
DUMP: Date of this level 0 dump: Thu Aug 6 01:26:11 2012
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/ada0s1a (/) to standard output
DUMP: mapping (Pass I) [regular files]
DUMP: Cache 32 MB, blocksize = 65536
DUMP: mapping (Pass II) [directories]
DUMP: estimated 348168 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
warning: ./.snap: File exists
DUMP: DUMP: 347961 tape blocks
DUMP: finished in 12 seconds, throughput 11999 KBytes/sec
DUMP: DUMP IS DONE
# dump -0 -С 32 -f - /var | ( cd /mnt/var && restore -r -f - )
DUMP: Date of this level 0 dump: Thu Aug 6 01:27:32 2012
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/ada0s1d.journal (/var) to standard output
DUMP: mapping (Pass I) [regular files]
DUMP: Cache 32 MB, blocksize = 65536
DUMP: mapping (Pass II) [directories]
DUMP: estimated 648168 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
warning: ./.snap: File exists
DUMP: DUMP: 647961 tape blocks
DUMP: finished in 54 seconds, throughput 11999 KBytes/sec
DUMP: DUMP IS DONE
# dump -0 -С 32 -f - /usr | ( cd /mnt/usr && restore -r -f - )
DUMP: Date of this level 0 dump: Thu Aug 6 01:28:54 2012
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/ada0s1e.journal (/usr) to standard output
DUMP: mapping (Pass I) [regular files]
DUMP: Cache 32 MB, blocksize = 65536
DUMP: mapping (Pass II) [directories]
DUMP: estimated 39365170 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
warning: ./.snap: File exists
DUMP: 5.50% done, finished in 1:25 at Mon Aug 6 03:00:00 2012
DUMP: 16.84% done, finished in 0:49 at Mon Aug 6 02:28:24 2012
DUMP: 29.62% done, finished in 0:35 at Mon Aug 6 02:19:40 2012
DUMP: 35.17% done, finished in 0:36 at Mon Aug 6 02:25:54 2012
DUMP: 46.27% done, finished in 0:29 at Mon Aug 6 02:23:03 2012
DUMP: 55.71% done, finished in 0:23 at Mon Aug 6 02:22:53 2012
DUMP: 63.02% done, finished in 0:20 at Mon Aug 6 02:24:34 2012
DUMP: 75.44% done, finished in 0:13 at Mon Aug 6 02:22:03 2012
DUMP: 85.20% done, finished in 0:07 at Mon Aug 6 02:21:51 2012
DUMP: 95.73% done, finished in 0:02 at Mon Aug 6 02:21:15 2012
DUMP: DUMP: 39367928 tape blocks
DUMP: finished in 3090 seconds, throughput 12740 KBytes/sec
DUMP: DUMP IS DONE
По окончании процесса переноса не забываем поправить файл /etc/fstab на новом винте, после чего отрубаем старый винт, включаем комп и грузимся с нового. Если все сделано верно, то никаких проблем возникнуть не должно.
ср, 22/01/2020 - 15:01
По окончании процесса переноса не забываем поправить файл /etc/fstab - что это означает? Как его нужно править?
чт, 23/01/2020 - 23:01
Это значит, что нужно изменить имя устройство в нем, чтобы система знала где найти раздел диска и куда его монтировать.
Добавить комментарий