|
![]() |
||||||||||
|
Ha egyszerűen definiálni akarnám hogy mik is azok a Solaris Zónák, azt mondanám a Solaris saját virtualizációs megoldása. Persze szerintem ez nem helyes egy érdeklődő fül számára, mert manapság virtualizáció alatt mindenki a VMWare-s virtualizációra gondol, ahol szabadon futtathatunk bármilyen operációs rendszert egy meglévő mellett, ugyan azon a vason. Na a Solaris zónák ezt nem tudják. Ha pontosan akarnám definiálni, jobb lenne ha azt mondanám egy Solaris Zóna nem más, mint egy vason (fizikai hardware-n) futó Solaris operációs rendszer egy duplikációja (tehát kötelezően egy másik Solaris), ami nem a fizikai hardware erőforrásait használja, hanem a számára emulált, virtualizált, ezáltal szabályozható erőforrásokat (CPU, Memória, Disk terület). Mi forradalmi a Solaris Zónákban?Először is az elkülönített, duplikált solarisok hivatalos definiált, a futtató rendszer számára kezelhető módon léteznek. Mitöbb struktúra szerint két változatot is ismer és kezel a Solaris 10 a zónáiból. Global Zóna: A global zóna alapból minden Solaris 10-en létezik. Ez testesíti meg a fizikai gépen futó, host rendszert. Ez a zóna korlátlanul tudja a hardver eszközöket elérni, illetve ebbõl a zónából kezelhetõ az összes lokális zóna. Ezt nem kell piszkálni, módosítgatni, kitörölni. Van és kész. Kis zóna: ![]() Ahogy a képen is látszik a kis zóna a global zónájával (tehát a futtató környezetével) közös rendszer file-kat használ. Ez ugye a disk-en helytakarékos, és a memóriában is csak egy példányban kell léteznie a shared lib-eknek, és egy azon kernel szolgálja ki az összes rendszert. Ez pedig már nem kis dolog, hisz nagy zónaszámnál rengeteg helyet, és memóriát tudunk spórolni. Nézzük milyen lépések szükségeltetnek egy kis zóna létrehozásához:
smallzone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:smallzone> create zonecfg:smallzone> set autoboot=true zonecfg:smallzone> set zonepath=/export/smallzone zonecfg:smallzone> add net zonecfg:smallzone:net> set address=192.168.2.101 zonecfg:smallzone:net> set physical=ce0 zonecfg:smallzone:net> end zonecfg:smallzone> info zonepath: /export/smallzone autoboot: true pool: inherit-pkg-dir: dir: /lib inherit-pkg-dir: dir: /platform inherit-pkg-dir: dir: /sbin inherit-pkg-dir: dir: /usr net: address: 10.0.0.112 physical: ce0 zonecfg:smallzone> verify zonecfg:smallzone> commit zonecfg:smallzone> exit # # zoneadm list -cv ID NAME STATUS PATH 0 global running / - smallzone configured /export/smallzone # # mkdir /export/smallzone # chmod 700 /export/smallzone # # zoneadm -z smallzone verify # # zoneadm -z smallzone install Preparing to install zone smallzone. Creating list of files to copy from the global zone. Copying <2574> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <987> packages on the zone. Initialized <987> packages on zone. Zone smallzone is initialized. Installation of these packages generated warnings: sunwcsr SUNWdtdte The file contains a log of the zone installation. # # zoneadm list -cv ID NAME STATUS PATH 0 global running / - smallzone installed /export/smallzone # # zoneadm -z smallzone boot # # zoneadm list -cv ID NAME STATUS PATH 0 global running / 1 smallzone running /export/smallzone # zlogin -C smallzone [Connected to zone 'smallzone' console] 100/100 What type of terminal are you using? 1) ANSI Standard CRT 2) DEC VT52 3) DEC VT100 4) Heathkit 19 5) Lear Siegler ADM31 6) PC Console 7) Sun Command Tool 8) Sun Workstation 9) Televideo 910 10) Televideo 925 11) Wyse Model 50 12) X Terminal Emulator (xterms) 13) CDE Terminal Emulator (dtterm) 14) Other Type the number of your choice and press Return: ........ Akkor nézzünk egy kis magyarázatot is ehhez, hogy mi is történt: ![]() 14. mkdir-el létrehozzuk azt a könyvtárat ahova fel szeretnénk építeni a zónánkat, és amit már előzetesen megadtunk a zonánk konfigurációja során. Nagy zóna: ![]() Ahogy a képen is látszik a nagy zóna a global zónájától (tehát a futtató környezetétől) teljesen különálló rendszert jelent. Ez mint méretben mint felhasznált memória méretében több igényt jelent, és a zónák számával ez csak dinamikusabban nő és nő. Nagy zóna esetén minden rendszerfile-ból több példány van, ami lehetővé teszi, hogy kedvünkre testre szabhassuk. Eltávolíthassunk, illetve a global zónától függetlenül hozzáadhassunk valamit. Nézzük milyen lépések szükségeltetnek egy kis zóna létrehozásához:
bigzone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:bigzone> create zonecfg:bigzone> set autoboot=true zonecfg:bigzone> set zonepath=/export/bigzone zonecfg:bigzone> add net zonecfg:bigzone:net> set address=192.168.2.102 zonecfg:bigzone:net> set physical=ce0 zonecfg:bigzone:net> end zonecfg:bigzone> info zonepath: /export/bigzone autoboot: true pool: net: address: 10.0.0.112 physical: ce0 zonecfg:bigzone> verify zonecfg:bigzone> commit zonecfg:bigzone> exit # # zoneadm list -cv ID NAME STATUS PATH 0 global running / - bigzone configured /export/bigzone # # mkdir /export/bigzone # chmod 700 /export/bigzone # # zoneadm -z big verify # # zoneadm -z bigzone install Preparing to install zone bigzone. Creating list of files to copy from the global zone. Copying <118457> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <987> packages on the zone. Initialized <118457> packages on zone. Zone bigzone is initialized. Installation of these packages generated warnings: sunwcsr SUNWdtdte The file contains a log of the zone installation. # # zoneadm list -cv ID NAME STATUS PATH 0 global running / - bigzone installed /export/bigzone # # zoneadm -z bigzone boot # # zoneadm list -cv ID NAME STATUS PATH 0 global running / 1 bigzone running /export/bigzone # zlogin -C bigzone [Connected to zone 'bigzone' console] 100/100 What type of terminal are you using? 1) ANSI Standard CRT 2) DEC VT52 3) DEC VT100 4) Heathkit 19 5) Lear Siegler ADM31 6) PC Console 7) Sun Command Tool 8) Sun Workstation 9) Televideo 910 10) Televideo 925 11) Wyse Model 50 12) X Terminal Emulator (xterms) 13) CDE Terminal Emulator (dtterm) 14) Other Type the number of your choice and press Return: ........ Akkor nézzünk egy kis magyarázatot is ehhez, hogy mi is történt: ![]() 14. mkdir-el létrehozzuk azt a könyvtárat ahova fel szeretnénk építeni a zónánkat, és amit már előzetesen megadtunk a zonánk konfigurációja során. Zóna BackupMivel alap helyzetben a zónák közös és csak olvasható filerendszereket is használnak ezért ezen részeket nem kívánjuk menteni. Egyrészt felesleges, hisz ugyan az mindig, másrészről okozhat problémákat. Ezért a következő megoldások létezhetnek:
!!! Fontos !!! Backup esetén fontos a /etc/zones folder-ben lévő ZONANEVE.xml file-t is learchiválni. Zóna leállítása és úgy a zóna file-jainak másolása: Amennyiben leállítjuk a zonát, nem fognak megjelenni a read-only lofs közös filerendszerek, tehát akármilyen tool segítségével nyugottan lemásolhatóak a zóna foldere, teljes egészében. A következő példában az ufsdumpal tesszük ezt meg.
# zoneadm list -cv ID NAME STATUS PATH 0 global running / - smallzone installed /export/smallzone # ufsdump 0f /backup/smallzone.ufsdump /export/smallzone DUMP: Date of this level 0 dump: Thu Apr 14 08:55:56 2005 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t0d0s0 (lambda:/) to /backup/smallzone.ufsdump. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Writing 32 Kilobyte records DUMP: Estimated 235508 blocks (114.99MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: 234494 blocks (114.50MB) on 1 volume at 2394 KB/sec DUMP: DUMP IS DONE # zoneadm -z smallzone boot UFS Snapshot A Solaris 8 2/02-es verziójától megjelent a fssnap, snapshot készítő alkalmazás, amivel egyszerűen készíthető működő rendszerről konzisztens backup. Tehát készítünk egy snapshotot, amit felmountolunk, és a felmountolt "statikus" állapotot megint tetszés szerint backupolhatjuk:
/dev/fssnap/0 # mount -o ro /dev/fssnap/0 /mnt # ufsdump 0f /backup/smallzone.ufsdump /mnt/export/smallzone DUMP: Date of this level 0 dump: Wed Apr 13 09:08:14 2005 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rfssnap/0 (lambda:/mnt) to /backup/smallzone.ufsdump. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Writing 32 Kilobyte records DUMP: Estimated 231034 blocks (112.81MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: 230014 blocks (112.31MB) on 1 volume at 2227 KB/sec DUMP: DUMP IS DONE # umount /mnt # fssnap -d / Deleted snapshot 0. find and cpio A következő módszerrel működő zónáról archiválhatunk a find és cpio segítségével. Feltesszük, hogy a zóna filerendszere UFS, és használjuk a find parancs kapcsolóit, hogy szűrt keresés hajtson végre - és ezzel kihagyjuk LOFS (a global zónával közös) mountpointokat. Symantec (Veritas) NetBackup A NetBackup tud futó zónát is menteni, természetesen be kell állítani hogy a közös LOFS filerendszereket hagyja ki, ami a zóna konfigurációja során is be lett állítva. Legato NetWorker A NetWorker tud futó zónát is menteni, természetesen be kell állítani hogy a közös LOFS filerendszereket hagyja ki, ami a zóna konfigurációja során is be lett állítva. Zónák PatcheléseNagy Zóna Patchelése Egy nagy zóna esetében A global zóna és a local (nagy) zóna teljesen különálló rendszerfile-okból áll, és mindkét helyen minden file és filerendszer írható és olvasható. Tehát:
!!!Figyelem!!! A harmadik, a teljes rendszer patchelése és összes local zóna esetében figyelni kell arra, hogy amikor kiadjuk a patchadd parancsot, az el fogja indítani az olyan zónákat is, amik aktuálisan nem futnak. Ezek single user módban el fognak indulni, majd végrehajtódik rajtuk automatikusan a patch, végül visszatér a zóna az eredeti állapotba. Ezzel persze nem megvalósítható, hogy külön zónáknak különböző patch szintjei legyenek, mert a global zóna szinkronba fogja tartani ezeket. Nem is ajánlja senkinek a SUN hogy különböző patch szinteket akarjon használni zónák alatt. Kis Zóna Patchelése: Egy kis zóna esetén ugye vannak read-only LOFS filrendszerek amik közösek a global zónával. Ezek természetesen a local zóna esetében nem módosíthatóak, így különleges helyzetek állnak elő.
!!! FONTOS !!! A második esetben ugyan csak a global zónát patcheljük meg, viszont mivel a kis zóna a főbb rendszer könyvtár struktúráját csak read-only LOFS filerendszerként kapja ezért érinti a kis zónákat is. Sajnos a /var nem fog ezáltal frissülni, így számolni kell esetleges problémákkal. Ezért ebben az esetben ezt a módszert nem ajánlja a SUN. A harmadik módszer az alapvetően elfogadott a kis zónák esetében. Solaris Zona ParancsokA Solaris 10 zónákhoz kapcsolódóan megjelent pár zónakezeléshez használatos parancs, illetve pár meglévő parancsok is meghívhatóak zóna specifikusan. Zónakezelõ parancsok: zonecfg - Ezzel a paranccsal hozhatunk létre új zónát, illetve módosíthatjuk a már elkészült zónák konfigurációját. Három féle módon tudjuk használni:
zoneadm zlogin zonename Régi parancsok zónás extrákkal ps prstat ptree ifconfig df pkgadd Zónák Erőforrás kezeléseAmi nagyon nagy újdonság a Solaris Zónák esetében az az operációs rendszer által kontrollált módon végrehajtható erőforrás kezelés, resource control. Nem scripteket kell hack-elni hanem egy meglévő, Solaris által megszokott stílusban tudunk limitációkat adni a zónáknak, vagy épp resrouce-t rendelni hozzá. Ez egy hihetetlen nagy előny, és leegyszerűsíti az adminisztrációt. Akkor jöjjön a teljesség igénye nélkül néhány fontosabb resource felsorolása egy-egy példával: dedicated-cpu Solaris 10 8/07: Megadhatjuk a zónához rendelt CPU-k számát(ncpus) és opcionálisan a fontosságát (importance). A következő példa egy ilyet mutat meg importance beállításával
zonecfg:my-zone:dedicated-cpu> set ncpus=1-3 zonecfg:my-zone:dedicated-cpu> set importance=2 zonecfg:my-zone:dedicated-cpu> end capped-cpu Itt is CPU-k számát kell megadnununk, de míg a dedicated-cpu-nál hozzá dedikálunk CPU-kat, itt csak egy felső korlátot adunk meg.
zonecfg:my-zone:capped-cpu> set ncpus=3.5 zonecfg:my-zone:capped-cpu> end capped-memory Limitálhatjuk a zóna memória méretét. Megadhatjuk a fizikai, swap és lockolt memória méretét. Mind opcionális, de legalább egyet meg kell adnunk közülük ha ezt akarjuk definiálni.
zonecfg:my-zone:capped-memory> set physical=50m zonecfg:my-zone:capped-memory> set swap=100m zonecfg:my-zone:capped-memory> set locked=30m zonecfg:my-zone:capped-memory> end fs Az FS erőforrásban definiálhatunk egy paramétert amivel tárterületet adunk a zonánk számára. A következő paraméterek megadásával tudjuk ezt a resource-t definiálni:
Egy filesystem mountpoint megadása a zónában.
Block device megadása vagy a a global zone mountpointjának a megadása.
Speciális raw device megadása amin előtte mindenképp egy fsck-t kell futtatnunk.
Filesystem típusa
Bármilyen opció amit mountolásnál (direktbe egy mount parancs esetében) megadnánk ehhez a filesystemhez. A következő péda a global zonában elérhető /dev/dsk/c0t0d0s2 disk device-t teszi elérhetővé a /mnt folderben a local zónánk számára. A fenti device megfeleli slice-án előtte fsck-t futtattunk. A filesystem UFS-re van formázva. Mount opcióként a nodevices és logging van megadva.
zonecfg:my-zone:fs> set dir=/mnt zonecfg:my-zone:fs> set special=/dev/dsk/c0t0d0s2 zonecfg:my-zone:fs> set raw=/dev/rdsk/c0t0d0s2 zonecfg:my-zone:fs> set type=ufs zonecfg:my-zone:fs> add options [nodevices,logging] zonecfg:my-zone:fs> end A következő példában egy global zónában definiált ZFS volume-t definiálunk a local zóna számára:
zonecfg:my-zone:fs> set type=zfs zonecfg:my-zone:fs> set special=tank/zone/zion zonecfg:my-zone:fs> set dir=/export/shared zonecfg:my-zone:fs> end inherit-pkg-dir Az itt meghatározott könyvtár a global zónából read-only módban lesz élérhető a local zóna számára.
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw zonecfg:my-zone:inherit-pkg-dir> end net Egy shared, osztott hálózati cím definiálásával a zónánk számára definiált ip cím egy új IP aliasként (virtuális IP címként) fog megjelenni a global zónában. Ezt lehet a következő példában látni
zonecfg:my-zone:net> set physical=hme0 zonecfg:my-zone:net> set address=192.168.0.1 zonecfg:my-zone:net> end Az exklúziv kiajánláskor semmilyen virtuális device nem létezik, hanem mi a global zónában elérhető fizikai eszközt egy az egyben átadjuk a zónánk számára.
zonecfg:my-zone> add net zonecfg:my-zone:net> set physical=bge32001 zonecfg:my-zone:net> end device A követkő példa a /dev/pts device-okat elérhetővé teszi a zóna számára.
zonecfg:my-zone:device> set match=/dev/pts* zonecfg:my-zone:device> end Zóna mozgatása két külön fizikai rendszer global host közöttElőször is az itteni megoldás feltételezi azt, hogy a zónák egy közös, shared storage-n találhatóak, és mindkét global zóna, azaz fizikai Solaris gép hozzáfér a zóna adatfileaihoz. (Persze kiváltható ez a közös storage azzal is ha a tároló disket, pendrive-t lecsatoljuk az egyik rendszerről majd a másikba felcsatoljuk).
host1# zoneadm -z my-zone detach host2# zonecfg -z my-zone my-zone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:my-zone> create -a /export/zones/my-zone zonecfg:my-zone> commit zonecfg:my-zone> exit host2# zoneadm -z my-zone attach 1. Leállítjuk a zónát. Nagyon fontos, hogy futó zónát nem lehet migrálni. Most lássuk, mi történik akkor, amikor egy olyan global zónára akarjuk fecsatlakoztatni a zónánkat, ahol más csomagok, és patchek érhetőek el?
source host packages inconsistent with local host SUNWgnome-libs (2.6.0,REV=101.0.3.2005.12.06.20.27) version mismatch (2.6.0,REV=101.0.3.2005.12.19.21.22) SUNWudaplr (11.11,REV=2005.12.13.01.06) version mismatch (11.11,REV=2006.01.03.00.45) SUNWradpu320 (11.10.0,REV=2005.01.21.16.34) is not installed SUNWaudf (11.11,REV=2005.12.13.01.06) version mismatch (11.11,REV=2006.01.03.00.45) NCRos86r (11.10.0,REV=2005.01.17.23.31) is not installed local host packages inconsistent with source host SUNWukspfw (11.11,REV=2006.01.03.00.45) was not installed SUNWsmcmd (1.0,REV=2005.12.14.01.53) was not installed source host patches inconsistent with local host 120081 is not installed 118844 is not installed 118344 is not installed local host patches inconsistent with source host 118669 was not installed 118668 was not installed 116299 was not installed Nem kell megijedni, egy -F kapcsolóval (zoneadm -z my-zone attach -F) ezen figyelmeztetéseket figyelmen kívül hagyhatjuk és véghezvihetjük a felcsatolást. Persze a végeredményért senki nem vállal felelőséget amennyiben komoly patch eltérések vannak. Ez ugye főleg kis zóna esetén lehet nagy baj, de akár össze nem illő kernelpatchek is boríthatnak egy nagy zónát is. Tehát érdemes rá figyelni. Zóna KlónozásaZóna klónozására is van lehetőségünk, amikor is egy teljesen beállított feltelepítet, beconfigurált rendszert szeretnénk duplikálni, és nem kívánjuk az egész procedúrát végigvinni, csupán lemásolni. A következő képpen történik:
# vi zone2.cfg # zonecfg -z zone2 -f zone2.cfg # zoneadm -z zone1 halt # zoneadm -z zone2 clone zone1 Cloning zonepath /export/zones/zone1... This took around 5 minutes to clone a 1GB zone (see notes below) # zoneadm list -vc # zoneadm -z zone1 boot # zlogin -C zone2 1. Ki kell exportálni file-ba a klónozni kívánt zóna konfigurációját. Remélem e áttekintő valamelyest engedett bepillantást a Solaris Zónák lelki világába. Arról is, hogy Linux és BSD-vel ellentétben mennyivel kézenfekvőbb és egyszerűbb a kezelésük. |
|||||||||||
| Published január 14th, 2010 in Informatika and SUN. 1 Comment | |||||||||||
![]() |




















Nagyon jó dokumentáció lett.
Csak a zfs-en lévő a zónák mentését tenném még hozzá.
részlet a zpool history ból:
2010-04-16.00:00:02 zfs snapshot -r rpool/webzona@zfs-auto-snap:daily-2010-04-16-00:00
A mentés:
pfexec zfs send rpool/webzona/ROOT/zbe@zfs-auto-snap:daily-2010-04-16-00:00 > /backups/mentes.img
A visszaállitás:
pfexec zfs restore rpool/webzona/ROOT/zbe < /backups/mentes.img
Konkluzió:
A zbe szelet birtokában más rendszerre is átvihető az adott zóna a feltétel csak az, hogy a rendszereken ugyanaz a verzió és architektúra legyen. Tehát klónozás és biztonsági mentés funkciót is betölt a technika.
A leirás naggyából passzol OpenSolaris rendszerre is annyi megkötéssel, hogy a Sparse és a whoole zónák helyett 1 "IPKG" tipusu zóna használható