Перенос системы на другой диск (dump/restore)

Возникла необходимость перетащить боевую систему с одного жесткого диска на другой. Поискав решение данной проблемы с помощью стандартных средств системы, было откопано пару утилит: 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 на новом винте, после чего отрубаем старый винт, включаем комп и грузимся с нового. Если все сделано верно, то никаких проблем возникнуть не должно.

Евгений_ (не проверено)

По окончании процесса переноса не забываем поправить файл /etc/fstab - что это означает? Как его нужно править?
 

Никита (не проверено)

Это значит, что нужно изменить имя устройство в нем, чтобы система знала где найти раздел диска и куда его монтировать.
 

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика