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

Опубликовано nekit - ср, 27/04/2011 - 23:11

Возникла необходимость перетащить боевую систему с одного жесткого диска на другой. Поискав решение данной проблемы с помощью стандартных средств системы, было откопано пару утилит: dump/restore и pax. Первая пара утилит предназначена только для бэкапа ФС, тогда как вторая тулза позволяет работать с файловыми архивами и копировать различные директории и их содержимое. Перенос системы FreeBSD 8.3 на другой винт я сделал с помощью утилит dump/restore, о чем по горячим следам я и поведаю в данной статье.

Итак, приступим: выключаем комп и подсоединяем новый жесткий диск, после грузимся в однопользовательский режим (надеюсь понятно зачем - в обычном режиме данные могут измениться в любой момент времени, поэтому перенос данных должен осуществляться с диска, который не доступен для записи на момент переноса). Далее размечаем новый диск по своему усмотрению, так же не забываем записать на него загрузчик системы. В моей конфигурации система установлена на диске ada0, а переносить ее я буду на диск ada1. Вот так выглядит вывод команды df:

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

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

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