zfs, mint home
A zfs az egy disznojo filerendszer, es nagyon sajnalom, hogy liszensz pocskoles miatt kb. sosem lesz linuxra. Meg jo hogy mar a Solaris is ingyenes, sot van belole nyilt forrasu valtozat is.
Mar egy ideje erett a dolog, hogy upgradeljuk a home szerverunket mind tarhely, mind korszeruseg tekinteteben, aztan arra gondoltam, hogy ha mar csinalunk vele valamit, akkor lepjunk nagyot, es legyen rajta zfs.
Na lassuk hogyan is nez ki a dolog, most hogy mar mukodik:
A struktura
A biztonsagert hardware raid felel, ugyhogy a zfs raid kepessegeire nincs szuksegunk.
Elso lepesben letrehoztuk a zpoolt a raid eszkozon:
# zpool create -m /export/home home /dev/dsk/c2t0d0s0
Majd johettek a felhasznalok, akik nalunk ldap adatbazisban laknak, ezert egy scripttel onnan banyasztam ki oket:
USERS=`ldapsearch -h ldapszerver -b automountMapName=auto_home,dc=xxx -D uid=nemmondommeg,ou=people,dc=xxx automountKey='*' automountKey | grep '^auto' | awk -e '{print $2;}' | sort` POOL=home POOLPATH=/export/home USERGRP=users RESERV=3G for USER in $USERS; do USERHOME=${POOL}/${USER} echo Creating $USERHOME ... zfs create $USERHOME zfs set reservation=$RESERV $USERHOME chown ${USER}:${USERGRP} ${POOLPATH}/${USER} done
(A 'people' kontener/tabla/mittomenmi helyett az 'auto_home'-ot hasznaltam, ahol az automountKey eppen a home konyvtar neve, de ez igazan izles kerdese.)
Minden felhasznalo kapott 3 giganyi rezervalt tarteruletet, hogy ha valami renitens megolti az egesz particiot, akkor a tobbiek ne legyenek nagy bajban.
Snapshotok
Legjobbakkal is elofordul, hogy veletlen olyan dolgot torolnek le, amire meg szukseg lenne. Es leggyakrabban az ember erre abban a pillanatban jon ra, hogy rossz terminalban van a fokusz, amikor mar kattant az enter az rm -rf * vegen. Regebben ilyen esetekben szalagrol kellett visszajatszani a tartalmat, ami azert nem a leggyorsabb, es rendszergazda is szukseges hozza.
Nade ha mar van nekunk zfs, akkor hasznaljuk ki, hogy az szinte ingyen lehetove teszi snapshotok (amolyan pillanatkepek) letrehozasat. Ingyenesseg alatt azt ertem, hogy a snapshot nem foglal extra tarteruletet, amig az eredeti allapothoz kepest nem tortent valtozas. Irtam hat egy scriptet, ami minden este lefut, es ezzel meg is van oldva nehany napi tavlatban a veletlen torlesek problemaja.
echo "Creating zfs snapshots..." for fs in `zfs list -H -t filesystem | awk -e '{ print $1;}'`; do echo "Creating snapshot for ${fs}" zfs destroy ${fs}@day3 zfs rename ${fs}@day2 ${fs}@day3 zfs rename ${fs}@day1 ${fs}@day2 zfs snapshot ${fs}@day1 done
Veletlen torleskor eleg ezutan csak belepni a ~/.zfs/snapshot konyvtarba, kivalasztani a kivant napot, es siman visszamasolni a letorolt filet. Painless.
Persze ez a szalagos mentest nem helyettesiti. Ami viszont egyelore nem egyertelmu dolog egy ilyen zfs struktura eseteben.
A mentes
Mi EBS-t hasznalunk szalagos mentesre, annak is a 7.2-es verziojat - 7.3-tol attertek javas guira, es hat nem mondhatni, hogy felgyorsult volna tole a cucc.
Viszont a 7.2-es EBS nem menti el a zfs particiokat, az ACL lista lekeresekor meghal.
Nem volt mit tenni, upgrade-elni kellett. (Szerencsere ezt eleg volt kliens oldalon megtenni, a 7.2-es szerver szepen egyutt mukodik a 7.4-es klienssel.) Amde ha csak azt mondjuk a szerencsetlennek, hogy minden lokalis filerendszert mentsen le az adott gepen ("All"), akkor valamiert a zfs filerendszereket nem erzi lokalis filerendszernek. Egyesevel megadni a szazakarhany felhasznalo home konyvtarat, illetve kezzel kovetni a valtozasokat, na az nem szerencses.
Meg jo, hogy scriptet kb. mindenre lehet irni, ami ezt megcsinalja helyettunk:
SAVESETFILE=/export/home/saveset.txt echo . name: homeszerver > $SAVESETFILE echo update save set: /,/var >> $SAVESETFILE for fs in `zfs list -H -t filesystem | awk -e '{ print $5;}'`; do echo ,${fs} >> $SAVESETFILE done ssh mentoszerver -- /usr/sbin/nsr/nsradmin -i /net/homeszerver/$SAVESETFILE
Ezutan ha az ember megkeri az EBS-t, hogy ezt a scriptet minden mentes elott futassa le a homeszerveren, akkor mindig minden zfs filerendszer (+ a / es a /var) mentesre kerul.
Ennyi, kesz az uj home, nem kell aggodni a notorius helyfoglalok es a veletlen torlok miatt, sot meg a mentes is megy, hasznalhatoak a zfs nfs4 kompatibilis ACL trukkjei (bar ezt sztem kezzel ember nem alligatja).