Перенос FreeBSD с одного жёсткого диска на другой 
Автор: lissyara.
Оригинал: http://www.lissyara.su/articles/freebsd/trivia/move_system_between_hard_drives/
 Появилась необходимость перенести работающую систему - почтовый сервер (FreeBSD4.11) с одного диска на другой. На старом был массив, софтверный RAID организованный при помощи atacontrol, и в нём отдуплился один диск. Такого же не было, купили два новых, большего размеру, посему на тестовой машине поставил эксперимент по переносу  меньшего диска на больший. Его листинг и выкладываю, с комментариями.
 Имеем один диск в системе:/usr/home/lissyara/>df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   504M    72M   391M    16%    /
/dev/ad0s1e   2.0G    14K   1.8G     0%    /tmp
/dev/ad0s1f    20G   3.7G    14G    21%    /usr
/dev/ad0s1g   5.1G   6.1M   4.6G     0%    /var
procfs        4.0K   4.0K     0B   100%    /proc
/usr/home/lissyara/>dmesg | grep "^[a][t|d][a|0-9]"
atapci0: <VIA 8235 ATA133 controller> port 0xfc00-0xfc0f at device 17.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
ad0: 29325MB <Maxtor 6E030L0> [59582/16/63] at ata0-master UDMA133
/usr/home/lissyara/>
После установки второго на второй канал ATA получаем:/usr/home/lissyara/>dmesg | grep "^[a][t|d][a|0-9]"
atapci0: <VIA 8235 ATA133 controller> port 0xfc00-0xfc0f at device 17.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
ad0: 29325MB <Maxtor 6E030L0> [59582/16/63] at ata0-master UDMA133
ad2: 190782MB <ST3200822A> [387621/16/63] at ata1-master UDMA100
/usr/home/lissyara/>
Диск разбиваем при помощи /stand/sysinstall, можно руками - но это не для слабонервных, я делал один раз в жизни, но впечатлений хватило надолго. Не забываем сделать раздел активным (загрузочным)! Прикол в следующем, если для будущего корневого раздела, поставить точку монтирования отличную от "/" то он не присваивает разделу букву "a". Нужно проделать такие комбинации - установить при создании раздела точку монтирования "/", затем поменять её клавишей "M". Disk: ad2       Partition name: ad2s1   Free: 389668226 blocks (190267MB)
Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ad2s1a    /             512MB UFS   Y
Получится так:Disk: ad2       Partition name: ad2s1   Free: 389668226 blocks (190267MB)
Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ad2s1a    /mnt/root     512MB UFS   Y
Потом второй прикол, то, что если сразу все разделы настругать, то он не разобьёт диск, ругнётся на какую-то ошибку. Посему, записываем изменения буковкой "W", выходим, заходим снова в /stand/sysinstall и делаем остальные разделы. Получается примерно так (корневой раздел не надо по второму разу монтировать, он уже разбит и смонтирован)Disk: ad2       Partition name: ad2s1   Free: 0 blocks (0MB)
Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
ad2s1a    <none>       512MB  UFS   Y
ad2s1b    swap         2048MB SWAP
ad2s1e    /mnt/tmp     2048MB UFS+S Y
ad2s1f    /mnt/usr   153600MB UFS+S Y
ad2s1g    /mnt/var    32571MB UFS+S Y
Снова сохраняем изменения нажатием "W", выходим, и имеем такой расклад:/usr/home/lissyara/>df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   504M    72M   391M    16%    /
/dev/ad0s1e   2.0G    18K   1.8G     0%    /tmp
/dev/ad0s1f    20G   3.7G    14G    21%    /usr
/dev/ad0s1g   5.1G   6.2M   4.6G     0%    /var
procfs        4.0K   4.0K     0B   100%    /proc
/dev/ad2s1a   504M   2.0K   464M     0%    /mnt/root
/dev/ad2s1e   2.0G   2.0K   1.8G     0%    /mnt/tmp
/dev/ad2s1f   148G   2.0K   136G     0%    /mnt/usr
/dev/ad2s1g    31G   2.0K    29G     0%    /mnt/var
Все названия записываем, или копируем экран. Перезагружаемся в однопользовательский режим, для чего надо жмякнуть `ESC` на отсчёте 10 секунд, и ввести:boot -s
После загрузки монтируем разделы, описанные в /etc/fstab, такой командой:# mount -a
Затем монтируем разделы, на которые будем копировать инфу (например /tmp монтировать не обязательно, обычно там ничё нету, и вообще он при перезагрузках у меня очищается.)# mount /dev/ad0s1a /mnt/root
# mount /dev/ad2s1f /mnt/usr
# mount /dev/ad2s1g /mnt/var
После чего дампим инфу и переносим (каюсь, я это делал не в однопользовательском режиме, - лень было переписывать все команды руками, да и система не боевая, на рабочем серваке тоже буду делать в однопользовательском)
# ( dump -0f - / ) | ( cd /mnt/root ; restore -rf - )
 DUMP: Date of this level 0 dump: Thu Aug 10 17:59:02 2006
 DUMP: Date of last level 0 dump: the epoch
 DUMP: Dumping /dev/ad0s1a (/) to standard output
 DUMP: mapping (Pass I) [regular files]
 DUMP: mapping (Pass II) [directories]
 DUMP: estimated 74881 tape blocks.
 DUMP: dumping (Pass III) [directories]
 DUMP: dumping (Pass IV) [regular files]
expected next file 21899, got 21898
 DUMP: DUMP: 75574 tape blocks
 DUMP: finished in 11 seconds, throughput 6870 KBytes/sec
 DUMP: DUMP IS DONE
#
#
#
# ( dump -0f - /var ) | ( cd /mnt/var ; restore -rf - )
 DUMP: Date of this level 0 dump: Thu Aug 10 17:59:25 2006
 DUMP: Date of last level 0 dump: the epoch
 DUMP: Dumping /dev/ad0s1g (/var) to standard output
 DUMP: mapping (Pass I) [regular files]
 DUMP: mapping (Pass II) [directories]
 DUMP: estimated 6638 tape blocks.
 DUMP: dumping (Pass III) [directories]
 DUMP: dumping (Pass IV) [regular files]
 DUMP: DUMP: 7512 tape blocks
 DUMP: finished in 5 seconds, throughput 1502 KBytes/sec
 DUMP: DUMP IS DONE
#
#
#
# ( dump -0f - /usr ) | ( cd /mnt/usr ; restore -rf - )
 DUMP: Date of this level 0 dump: Thu Aug 10 17:59:55 2006
 DUMP: Date of last level 0 dump: the epoch
 DUMP: Dumping /dev/ad0s1f (/usr) to standard output
 DUMP: mapping (Pass I) [regular files]
 DUMP: mapping (Pass II) [directories]
 DUMP: estimated 3957963 tape blocks.
 DUMP: dumping (Pass III) [directories]
 DUMP: dumping (Pass IV) [regular files]
 DUMP: 61.22% done, finished in 0:03
 DUMP: 99.59% done, finished in 0:00
 DUMP: DUMP: 4080794 tape blocks
 DUMP: finished in 636 seconds, throughput 6416 KBytes/sec
 DUMP: DUMP IS DONE
#
Если разделы совпадают, по названиям, то ничё не делаем, если же не совпадают то вначале правим файл /etc/fstab. После чего даём такие команды:# sync
# umount /mnt/root/
# umount /mnt/usr/
# umount /mnt/var/
# shutdown -h now
Выключаем питание, убираем старый хард, на его место подрубаем новый. Загружаемся.
Смотрим, чё получилось:/usr/home/lissyara/>df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   504M    72M   391M    16%    /
/dev/ad0s1e   2.0G  10.0K   1.8G     0%    /tmp
/dev/ad0s1f   148G   3.8G   132G     3%    /usr
/dev/ad0s1g    31G   6.8M    29G     0%    /var
procfs        4.0K   4.0K     0B   100%    /proc
/usr/home/lissyara/>
Всё нормально. У меня корректно перенеслось всё даже в многопользовательском режиме, но это тестовая машина, и хотя на ней стит куча ПО, с ней кроме меня никто не работает. Посему не надо на рабочих серваках так делать. Надо в однопользовательском!
