Home FreeBSD FreeBSD Траффик Перенос FreeBSD с одного жёсткого диска на другой

Перенос FreeBSD с одного жёсткого диска на другой

Перенос 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/>


Всё нормально. У меня корректно перенеслось всё даже в многопользовательском режиме, но это тестовая машина, и хотя на ней стит куча ПО, с ней кроме меня никто не работает. Посему не надо на рабочих серваках так делать. Надо в однопользовательском!


Обновлено 28.05.2010 13:17  
Интересная статья? Поделись ей с другими:

  • Вопросы по поводу написанных статей можно обсудить в нашем сообществе в Вконтакте / Questions about written articles can be discussed in our community in Vkontakte Вопросы по поводу написанных статей можно обсудить в нашем сообществе в  Вконтакте / Questions about written articles can be discussed in our community in Vkontakte
Яндекс.Метрика