Перенос FreeBSD с одного жёсткого диска на другой
Автор: lissyara.
Появилась необходимость перенести работающую систему - почтовый сервер (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 секунд, и ввести:
После загрузки монтируем разделы, описанные в /etc/fstab, такой командой:
Затем монтируем разделы, на которые будем копировать инфу (например /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/>
|
Всё нормально. У меня корректно перенеслось всё даже в многопользовательском режиме, но это тестовая машина, и хотя на ней стит куча ПО, с ней кроме меня никто не работает. Посему не надо на рабочих серваках так делать. Надо в однопользовательском!
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=8136. источник: http://www.lissyara.su
{jcomments on}
|