Aki ZFS-el dolgozik, és van olyan bátor, hogy root filesystem-nek is azt választ, az hamar bele kell hogy fusson a következő problémába. Ugyanis mi van, akkor ha a root zpoolunkat szeretnénk bővíteni. Persze egyszerű, hozzácsapunk egy új disket a poolhoz, és el van intézve a gond. Csak sajnos ez nem olyan egyszerű.
Az egész ott kezdődik, hogyha megpróbáljuk, akkor a következő hibaüzenetet fogjuk kapni:
-
# zpool add rpool c1t1d0
cannot add to ‘rpool’: root pool can not have multiple vdevs or separate logs
Tehát a gond, az, hogy a root zpool nem állhat több disk-ből. Na de most akkor mit lehet tenni? Lehet újrainstallálni, és végigszívni az egészet az elejéről? Nem feltétlenül. Ugyanis egy kis trükk segítségével a zpool replace parancsot használhatjuk, a kivitelezéshez. Ami sajnos elkerülhetetlen, hogy egy új disk-re lesz szükségünk. Méghozzá pontosan akkorára, amekkorának az új root zpoolt szeretnénk hogy legyen. Ezek után pedig át fogunk rá online migrálni mindent.
A zpool parancs esetében alapvetően a replace a poolba lévő hibás diskek cseréjére szoktuk használni. Viszont arra is képes, hogy akármilyen pool-t, még a root zpool-t is, egy az egybe átrakja (az alatta lévő disket kicserélje) egy másikra, működés közben! Lássuk, hogyan.
Felkészülés
Vegyül kiindulási alapnak a következő állapotot:
-
# zpool status –v
# zpool list
Mint látszik, egy 10GB-os diskből álló rpool nevű zpoolunk van.
Ezek után gondoskodjunk a második leendő rendszer lemezről, ami már 20GB nagyságú az én példámban.
Tegyük elérhetővé a Solaris 10 számára is:
-
# devfsadm –Cv
# format
Bizonyosodjunk meg róla, hogy a 0-s slice megfelelőképpen elő van készítve az új disken, és meg van label-ezve:
zpool migrálása
Ezek után az egész folyamatot egy egyszerű parancs fogja végrehajtani nekünk. Mindenképp használnunk kell a -f (force) kapcsolót, meg kell adnunk a root zpool nevét, és azt, hogy mit mire akarunk cserélni:
-
# zpool replace –f rpool c1t0d0s0 c1t1d0s0
# zpool status -v
Amennyiben befejeződött a csere ezt kell látnunk:
Grub és MBR problémák
Ha ebben az állapotban újraindítjuk a rendszert, akkor a következőt fogjuk tapasztalni:
Sajnos az első disk-ünk tartalmazza a MBR (master boot record)-t, az viszont már nem tagja a root zpoolunknak. Hogy felbootoljuk, a mostmár második disken lévő root zpoolunkat a következőket kell bepötyögni:
-
> root=(hd1,0,a)
> kernel=/boot/multiboot root=(hd1,0,a)
Ugye a hd0,0,a jelöli az első disk első slice-át, a hd1,0,a pedig a második disk 0. slice-át. Ha mindkét sort beütöttük, nyomjuk ESC-pet, mire beugrik a grafikus menü már.
Válasszuk ki most a normál bootolást, és láss csodát, feláll a rendszerünk a második (átmigrált) diskről. Ezt viszont most minden reboot esetében meg kell tennünk.
Permanens grub frissítés
Sajnost csak a következő két lépéses megoldást tudtam sikeresen alkalmazni. Először is a most működő második diskről betöltött rendszerünknek kell létrehozni a MBR-ját.
-
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0
Most állítsuk le a gépünket, és távolítsuk el a régi, első disk-t a rendszerünkből. Így az eddigi második disk lesz az egyetlen tehát az első. Mivel betöltöttük erre a disk-re is az MBR-t, már lesz szép GRUB menünk, de mivel azt még akkor tettük, amikor az még második disk volt, ezért betöltődni a rendszer nem fog tudni. Ezért a bootnál válasszuk a FAILSAFE módot.
Most szépen elindul a recovery mód, aminek fel kell ismernie, hogy van egy zpoolunk, amit mountoltassunk is fel a /a mountpoint alá vele.
Most már nincs más dolgunk, mint az előző MBR frissítő parancsot kiadni:
-
# installgrub /a/boot/grub/stage1 /a/boot/grub/stage2 /dev/rsdk/c1t0d0s0
Befejeztük ezzel a migrációt. Indítsuk újra a gépet, és már automatikusan el kell indulnia rendszerünknek.
A cél ellenőrzése
Természetesen ne feledkezzünk el az eredeti célról, a megnövelt root zpool tárterületéről. Természetesen ennek már 20GB-nak kell lennie.
-
# zpool list
# zpool status
MRB (master boot record) ?????
MBR, haver :) tobb helyes is elirod..
Jogos, ez van ha este irsz… Javitottam.