Minden informatikai rendszer esetében különösen fontos a patch management. Tehát milyen sűrűn, hogyan, mekkora leállással frissítjük a rendszereket, teszünk fel javításokat. A Solaris a Linuxtól eltérően külön patch „packageket” használ, és nem a meglévő csomagokból rak fel egy újabb verziót. A biztonságos, jól irányított és legkisebb leállással járó patchelés érdekében a SUN kifejlesztette a Live Upgrade funkciót.
Tradicionális modell
Amennyiben valamilyen software raid1 megoldással rendelkezünk, akkor patchelés előtt szétbontjuk a tükröt, ellenőrizzük, hogy a második lábról is hiba esetén is fel tudunk el bootolni, majd az eredeti rendszerünket (első fele a tükörnek) megpatcheljük. Ha minden rendben örülünk és visszaszinkronizáljuk a root diskünket, hiba esetén pedig a másik lábról felállunk és oda szinkronizáljuk vissza az első tükör részt.
Szinte csak hátránya van, sok aprólékos állítgatás, hosszú szinkronizációs idők. Senki se szereti.
Live Upgrade
A tradicionális modellt figyelembe véve próbált erre a kérdésre megoldást találni illetve eszközt készíteni a SUN. Ennek a lehetőségnek lett Live Upgrade a neve.
Boot Environment
Először is fontos megismerkednünk pár új kifejezéssel. Az első ezek közül a boot environment (indulási környezet). Egy boot environment egy olyan „környezetet” fog reprezentálni, ahonnan a rendszerünk szeparát módon képes elindulni. Alap helyzetben nincs egy boot environment sem. Amikor egy újat akarunk létrehozni, akkor a rendszerünk elnevezi az aktuálisat egy névvel, majd egy új helyre átmásolja azt, ezzel létre hozva egy második, teljesen elszeparált részt. Természetesen akár hány boot environmentet létrehozhatunk.
Természetesen az új boot environment helyet is fog foglalni, ezért tudnunk kell, hogy azt eltárolni. Alapvetően három megoldás létezik:
1, Csak egyetlen root diskünik van.
Ebben az esetben találnunk kell egy üres slice-t, fel nem használt tárhellyel amit felhasználhatunk az új boot environment számára.
# lucreate -c solenv1 -m /:/dev/dsk/c0t0d0s3:ufs -n solenv2
2, Egy root diskünk van, de legalább az upgrade idejére tudunk betenni egy új üres disket.
Ebben az esetben az új disk valamelyik (vagy több) slice-jét tudjuk felhasználni az új boot environmentek tárolására.
# lucreate -c solenv1 -m /:/dev/dsk/c0t1d0s5:ufs -n solenv2
3, A root diskünk SVM tükörben van, a tükröt bontjuk és a megbontott tükör második lábát használjuk fel mint új boot environment.
Ebben az esetben azt az időt is meg tudjuk spórolni, amíg egyik helyről átmásolódna az adat a másik helyre. Ugyanis a tükör bontásával biztosra vehetjük, hogy teljesen konzisztens adatokat fogunk kapni. Így ez a leggyorsabb módja az előállításának.
# lucreate -n second_disk -m /:/dev/md/dsk/d20:ufs,mirror -m /:/dev/dsk/c0t1d0s0:detach,attach,preserve
Boot environment létrehozása filesystem bontással vagy egyesítéssel
Természetesen van lehetőségünk az új boot environment létrehozásakor a meglévő struktúrán változtatni. Ha teszem azt az /usr és /opt könyvtárak nincsenek külön filesystemeken, akkor ezt szétválaszthatjuk az új boot environmentek esetében, vagy ha külön vannka, akkor egyesíthetjük azokat.
Egy lemezes esetben:
# lucreate -c solenv1 -m /:/dev/dsk/c0t0d0s3:ufs -m /usr:/dev/dsk/c0t0d0s4:ufs -m /opt:/dev/dsk/c0t0d0s5:ufs -n solenv2
Több lemezes esetben:
# lucreate -c solenv1 -m /:/dev/dsk/c0t1d0s5:ufs -m /usr:/dev/dsk/c0t1d0s6:ufs -m /opt:/dev/dsk/c0t1d0s8:ufs -n solenv2
Egy lemezes esetben:
# lucreate -c solenv1 -m /:/dev/dsk/c0t0d0s5:ufs -n solenv2
Több lemezes esetben:
# lucreate -c solenv1 -m /:/dev/dsk/c0t1d0s0:ufs -n solenv2
Upgrade/Patching
Van tehát már két Boot Environment-ünk, Most már csak meg kellene patchelni/upgradelni az egyiket.
A live upgrade funkció Solaris8, Solaris9 és Solaris 10 alatt is támogatott. A következő csomagok szükségesek:
Ezek után egy viszonylag egyszerű paranccsal tudunk patchelni, upgradelni.
Telepítő CD/DVD-ről vagy imageről upgrade:
# luupgrade -u -n second_disk -s /cdrom/cdrom0 # luupgrade -u -n second_disk -s /net/installmachine/export/Solaris_10/OS_image
(Ha extra CD/DVD-ket akarunk megadni akkor ezt a szintaxist használjuk:
# luupgrade -i -n second_disk -s /cdrom/cdrom0 -O ’-nodisplay-noconsole’
)
Package-ket akarunk installálni a Boot Environment-be:
# luupgrade -P -n second_disk SUNWabc SUNWdef SUNWghi # luupgrade -p -n second_disk -s /net/installmachine/export/packages SUNWijk SUNWlmn SUNWpkr
Patch-eket akarunk installálni a Boot Environment-be:
# luupgrade -T -n second_disk 222222-01 # luupgrade -t -n second_disk -s /net/installmachine/export/packages 333333-01 4444444-01
Boot Environment aktiválása
Amennyiben van már egynél több Boot Envinment-ünk, akkor érdemes lehet minden féle információt kinyerni belőlük, és persze igény szerint váltogatni a kettő között.
Aktuálisan felbootolt rendszer Boot Environment nevének lekérése:
# /usr/sbin/lucurr
Boot Environment átnevezése:
# lurename -e second_disk -n third_disk
Description hozzáadása egy Boot Environmenthez:
# /usr/sbin/ludesc -n second_disk ’Solaris 10 10/08 test build’
Boot Environment filerendszereinek részletes információi:
# lufslist -n BE_name
Boot Environmentek listázása:
# lustatus
Ha aktiválni akarunk egy másik Boot Environmentet, akkor pedig a kövekező egyszerű parancsot kell használnunk:
# /sbin/luactivate -s second_disk # init 6
Ahogy látszik nem kell csodát várni, a luactivate se csinál mást mint a következő bootolást előkészíti, hogy a másik környezetről történjen. Tehát a Boot Environmentek közötti váltáshoz elengedhetetlen az újraindítás.
Persze, ha csak egy file-hoz szeretnénk hozzáférni a nem aktív környezetben, akkor lehetőségünk van mountolni azt az aktív rendszerünkben.
# lumount -n newbe /mnt
Sőt mi több, lehetőségünk van összehasonlítani a Boot Environmenteket.
# /usr/sbin/lucompare -i /etc/lu/compare/ -o /var/tmp/compare.out second_disk
Amennyiben pedig azt fedeztük fel, hogy egy ott kallódó boot environment túl régi, akkor törölhetjük is persze:
# ludelete second_disk
Összefoglalás
Így most sok-sok parancs és kitérést ejtettem, de hogy látszódjon mennyire egyszerű ezzel a lehetőséggel élni íme egy ábra a teljes folyamatról:
Live Upgrade ZFS alapú root zpool-al
Amibe én jobban szeretnék belemenni most, az a ZFS root pool alapú rendszerek Live Upgrade procedúrája. Ugyanis erre fele megy a világ, és a SUN/Oracle is ezt a vonalat nyomja ezerrel.
Íme az erdeti állapot, egy x86 Solaris 10 zfs rpoolal:
# zfs list
Akkor csináljunk egy új Boot Environmentet, és nézzük meg ZFS alatt mi fog történni.
# lucreate -c old -n new
Elemezzük egy kicsit ki mi is történt, méghozzá pillanatok alatt. - A régi környezett old nevet kapott - Az új new nevet kapott - Egy snapshot jött létre az eredeti zfs filerendszerünkről - Ez a snapshotból klónozódott egy új filerendszer new néven. - Ez a klónozódott new filerendszer kapott egy noautomount flag-et, tehát nem fog csak úgy megjelenni automatikusan. - A grub-ba is felvevődött az új környezet, tehát indulásnál most már választható lesz, hogy a new vagy az old Boot Environmentet akarjuk elindítani. Most nézzük meg ez, hogy néz ki filesystem szempontból:
# zfs list
Melyik Boot Environment is aktív:
# lucurr
Nézzünk most egy státusz információt a Boot Environmentekről:
# lustatus
Jól látszik, hogy sorokba vannak gyűjtve a létező Boot Environmentek, oszlopokban pedig a sátusz információk. Láthatjuk, hogy teljes, befejezett Boot Environmentről beszélünk-e, azt hogy aktív-e most, hogy egy újraindítást követően aktív lesz-e, törölhető-e (csak nem aktív törölhető), és ha van neki akkor a másolási státuszát.
Ahogy már írtam most lehetőségünk van összehasonlítani a két Boot Environmentet:
# /usr/sbin/lucompare -i /etc/lu/compare/ -o /var/tmp/compare.out new
Lekérhetjük a filesystem információkat egy Boot Environment-ről:
# lufslist -n new # lufslist -n old
Aktivájuk most a new nevű Boot Environmentet:
# luactivate -s new
# init 6
Bootolásnál a new névvel ellátott Boot Environment lesz az aktív:
# lucurr # lustatus
Most lehetőségünk van a nem aktív (old) Boot Environment-et felmountolni:
# lumount -n old /mnt/ # df -h /mnt
Lemountolni értelemszerűen:
# luumount -n old
Ezek után törölhetjuk is akár a régit, amennyiben úgy érezzük, hogy nincs rá tovább szükség:
# ludelete -n old
Végszó
Remélem a fenti példákból jól látható milyen egyszerű módon kezelhetővé tette a SUN a Solaris rendszerek esetében a több környezet kezelését, és módosítását, és mennyi időt, erőt, és energiát lehet vele megspórolni.
A teljes hivatalos dokumentáció a Live Upgraderől elérhető itt.
“Solaris Live Upgrade” bejegyzéshez 2 hozzászólás