Solaris 10 Storage Report script

 ( miszterx | 2011. augusztus 18., csütörtök - 15:23 )

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:

http://blog.xorp.hu/solaris-10-storage-report-script

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.