Már írtam a Solaris Health Check script-tről, mely nagyban tudja segíteni egy Solaris 10 üzemeltető életét. Most viszont egy második scriptet szeretnék bemutatni, mely többnyire a reportolásban nyújthat nagy segítséget.
Bevezetés
Solaris 10 esetében az általam használt Volume Managerek az SVM, ZFS, VxVM. Természetesen ezek egyszerre is lehetnek jelen a gépeken. A probléma pedig általában az szokott lenni, hogy:
- milyen gépen
- milyen metadevice-k, zpool-ok, disk group-ok vannak
- mennyi és mekkora disk tartozik ezekhez a pool-okhoz
- a poolok-ban mennyi ki nem osztott hely van még
- illetve milyen teljesen üres, egyik volume manager által sem használt disk érhető el
A script ezen kérdésekre próbál választ adni egy rövid, tömör report formájában.
Követelmények
- A script maga KSH alapú, így /bin/ksh megléte szükséges, bár Solaris 10 alatt ez adott.
- A script Solaris 10 specifikus parancsokat hív meg, a Solaris 9-es rendszereken ezen eszközök nem elérhetőek. A script önmaga el se indul, ha nem Solaris 10-et azonosít.
- A script standard Solaris parancsokat hív meg, viszont ahol tesztelésnél kijött probléma, ott a teljes PATH-al hívtam meg őket.
- A tesztelő parancsok legtöbbje megkívánja a root jogosultságot, így a script ezen verziója csak root-ként futtatható.
Report Komponensek
A script három komponensből áll. A három komponens a fentebb említett három Volume Manager adatait ellenőrzi. Természetesen amennyiben egy Volume Manager nem elérhető, vagy nincs használatban, akkor a script nem fogja felvenni a report-ba.
SVM
A script alapvetően szerver környezetre íródott, így a script csak a tükrözött metadevice-kal foglalkozik. Kilistázza a nevüket és méretüket.
Amennyiben talál Soft Partition-t, külön kilistázza, hogy melyik metadevice pool-ból és mennyi soft partíció van kiosztva, illetve mennyi szabad még a poolból.
ZFS
Amennyiben létezik akármilyen ZFS filesystem, akkor a script kilistázza a QUOTA beállításukat, a felhasznált és elérhető méretüket, hogy mountolhatóak-e, illetve a device nevüket, és a mountpointjukat.
VxVM
Amennyiben a gépen elérhető Veritas Volume Manager, akkor a script összegzi nekünk, az importált Disk Group-ok méretét, és külön kiszámolja a Disk Group-ban elérhető helyet is.
Ezen túl, a Veritas Volume manager kijelzi azon diszkek számát, melyet egyik volume managerhez sem tartoznak és összegzi ezen méretet.
Használat
Egyszerűen csak el kell indítani a scriptet:
# ./filesystem_report.sh
Screenshot
Letoltes:
Hozzászólások
Megnéztem.
a) *Mindig* *minden* változóhivatkozást "$v" formában írunk. Fenti szösszenetben mit ad isten szerepel olyan használat, ami a meglehetősen csekély kivételek közé tartozna. :-) Grrr. Inkább :-(
b) ha már ksh kell, akkor használd ki a lehetőségeit, pl:
FREE_GB_SUM=`expr $FREE_BLOCKS_SUM / 2 / 1024 / 1024`
helyett nyugodtan lehetne:
FREE_GB_SUM=$(( FREE_BLOCKS_SUM / 2 / 1024 / 1024 ))
is akár. Gyorsabb, olcsóbb, jobban áttekinthető, és nagy eséllyel pont ugyanakkor csordul túl vagy alá.
c) kicsit egyenetlen a tabulálásod, így elsőre azt hittem, hiányzik egy "fi" a kódból.
d) azért a printf használatod minden, de nem szép (az is igaz, értem miért így csinálod)
e) BOLD, NORM és RED nemlétező változók
Saját használatra elmegy ;-)
Hi,
Koszi a tanacsokat! a,b,d-t megprobalom megfogadni a jovore.
c, notebad++-ban irodott, ot teljesen jonak tunt, legalabbis szamomra :)
e, na ez tenyleg hiba. Javitottam is.
MiszterX -- http://blog.xorp.hu
Az awk jóval többet tud, mint amire használod.
Jelen esetben pl FREE_BLOCK_LIST, meg USED_BLOCK_LIST tartalmának ciklusokban való összeadása helyett elegánsabb egy ilyen:
FREE_GB_SUM=$(vxdg -g $P free | grep -v "DEVICE" | awk 'BEGIN{$total=0}{$total+=$5/2048}END{print $total/1024}')
ZFS esetén pedig nem veszed figyelembe, hogy az azonos zpoolban levő file rendszerek esetén a szabad hely minden fs. esetén a teljes poolban levő szabad hellyel egyezik meg. (magyarul a scipted ezen része kb. annyira informatív mint egy sima zfs list.)
SVM metaseteket nem vesz figyelembe a script. (Valódi szerver környezetben előfordulhatnak...)
Az, hogy csak tükrözött metadevice-eket veszel figyelembe, mondván, hogy szerverkörnyezet, elég hibás gondolat. Nagyobb szerver környezetben külső storage esetén elég gyakran storage szinten oldják meg a tükrözést, és nem SVM szinten.
Koszonom az epitojellegu kritikat. Valoban ezek csak elso szarnyprobalgatasok. AWK valoban tobbet tud mint, amire hasznalom. Most viszont ilyen konbinacioban adta ki a helyzet :)
Azert rakom csak ki oket, hogy a paranyi, es zsugorodo Solaris kozossegnek "segitsek".
Koszonom a konkret meglatasokat!
MiszterX -- http://blog.xorp.hu
A teljesen ures diskekkel ovatosan, lehet pl. Oracle ASM kezeli oket, akkor nem szerencses, hogyha a Solaris admin ugy dont, hogy van itt meg hely:). Vagy hasonloan raw devicekent, de az egyre ritkabb.