Shery és RePa

2008. február 13.

zfs, mint home

dyuri @ 12:03:18

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).

Címkék:, ,

Comments are closed.

Ez egy blog. A velemenyunk a mienk, ezert szubjektiv, es meglehet, hogy neha csak picit fedi az egyetemes igazsagot. Mellesleg akinek nem tetszik, az nezze helyette a tvt.

Egyebkent nyugodtan lehet idezni, kepeket toltogetni, szabadok vagyunk.

Ha esetleg valami szemelyes kozolnivalod van, amit nem szeretnel kommentbe leirni, akkor tobbek kozott elerhetsz minket a [akiacikketirta] kukac horak pont hu emailcimen.