Наскоро ми се наложи да мигрирам root дяла на една Solaris 10 виртуална машина на нов диск, поради това че бях объркал партишънинга по време на инсталацията и половината диск не се виждаше от ОС-а, като за целта реших да използвам Live Upgrade процедурата вместо да се занимавам да правя дъмп на pool-а и след това да го възстановявам.
Ето как точно се прави това. ![]()
Първо трябва да създадем един нов pool. Вече сме добавили диска и сега остана само да го намерим и създадем новият pool изпълнявайки следните команди:
devfsadm fdisk /dev/rdsk/c1t1d0 format /dev/dsk/c1t1d0 zpool create new-rpool c1t1d0s0
С първата команда указваме на системата да ресканира за нови устройства. В нашият случай диска е закачен на SCSI контролер 1 като target 1 – c1t1d0.
С втората команда трябва да изтрием текущия дял и да създадем нов Solaris2 дял. Това е добре да се направи защото в моя случай VirtualBox-а създаде EFI дял на диска. Това обърка доста неща и ми отне известно време докато разбера защо не мога да оправя слайсовете.
Третата команда трябва да изпълним за да си оправим слайсовете и сложим име на диска. Няма да се занимавам с нея сега – ако някой има въпроси или проблеми да прочете документацията или да ми пише. ![]()
И накрая създаваме новият pool с име new-rpool. В нашия случай използваме слайс 0 а не 2 който е за целия диск, тъй като съм отделил малко място за втори слайс.
След като вече имаме нов диск и нов pool можем да пристъпим към копирането на информацията от текущата работеща среда. Това става със следната команда:
lucreate -c rpool -n new-rpool -p new-rpool
Това ще създаде пълно системно копие като вземе данните от rpool и ги копира в new-pool. С опцията -p указваме в кой pool ще бъде новият Boot Environment (BE).
Процедурата може да отнеме известно време. Можете да видите текущия статус със командата lustatus.
Когато копието е готово остава само да активираме новият BE и да рестартираме системата. Това става със следната команда:
luactivate new-rpool
Тази команда ще извърши нужните промени по системата за да може при следващият старт да бъде стартиран този диск. Естествено ако имате проблеми винаги можете да стартирате от стария. Той си остава там, добавен като допълнителна опция в GRUB менюто.
Вече може да рестартирате системта и да стартирате от новият диск.
Ако искате да махнете старият диск, както ми се наложи на мен, ще трябва да направите още няколко допълнителни неща.
След като вече системата е заредила и сме се уверили че всичко работи трябва да прехвърлим файловата система /export/home заедно със всички потребителски файлови системи или директории на новият ни диск. За тази цел трябва да сме се свързали със системата директно с потребител root. Ако опитате да се свържете с друг потребител – няма да можете да размонтирате файловите системи.
Създаваме новите файлови системи през ZFS:
zfs create new-rpool/export zfs create new-rpool/export/home zfs create new-rpool/export/home/melkor
След като вече са създадени можем да прехвърлим всички данни от текущите файлови системи намиращи се в /export в новите – /new-rpool/export.
След това можем да размонтираме старите, и да оправим пътищата към тях.
zfs umount /export/home/melkor zfs umount /export/home zfs umount /export zfs set mountpoint=/export new-rpool/export zfs set quota=5g new-rpool/export/home
Горните команди ще размонтират старите файлови системи и ще променят точката на монтиране на новите. Също така с последната команда ще сложим квота от 5Gb във файловата система /export/home.
След като вече няма използвани файлови системи на старите pool и BE можем да изтрием старите BE и pool със следните команди:
ludelete -f rpool zpool destroy rpool
След това можем да спрем машината и да махнем диска който вече не ни трябва.
Когато стартирате машината следващия път – влезте първо във failsafe mode. Ако не го направите машината ще влезе в един безкраен цикъл от рестартирания. След като стартирате failsafe mode можете спокойно да рестартирате машината и този път тя ще стартира правилно и ще можете да я използвате.