18.15. Az állományrendszerek kvótái

A kvóták használata az operációs rendszerben egy olyan választható lehetőség, aminek segítségével állományrendszerenként korlátozni tudjuk az egyes felhasználók vagy csoporttagok által elhasznált lemezterület és/vagy állományok mennyiségét. Ezt leggyakrabban olyan időosztásos rendszerekben használják ki, ahol szükség lehet az egyes felhasználókra vagy csoportokra eső erőforrások mennyiségének szabályozására. Ezzel tudjuk megakadályozni, hogy a felhasználók vagy csoportok elfogyasszák az összes rendelkezésre álló lemezterületet.

18.15.1. A kvóták használatának beállítása

Mielőtt nekilátnánk a kvóták használatának, meg kell győződnünk róla, hogy a rendszermagunkban megvan hozzá a szükséges támogatás. A kvótákat a következő sorral lehet engedélyezni a rendszermag beállításait tartalmazó állományban:

options QUOTA

A gyári GENERIC rendszermag ezt alapból nem engedélyezi, ezért ehhez mindenképpen be kell állítani, le kell fordítani és telepíteni egy kell saját rendszermagot. A saját rendszermag létrehozásához kövessük a 8. fejezet - A FreeBSD rendszermag testreszabása utasításait.

Ha ezzel megvagyunk, akkor a következő sorral bővítsük ki az /etc/rc.conf állományt:

enable_quotas="YES"

A kvótákat kezelő rendszer indításának finomabb szabályozására létezik még egy további beállítási lehetőség is. A rendszer indítása során általában az egyes állományrendszerek kvótáját a quotacheck(8) program ellenőrzi. A quotacheck(8) gondoskodik róla, hogy a kvótákat tároló adatbázis ténylegesen az állományrendszeren található adatokat tükrözi. Ez egy nagyon időigényes folyamat, ami rányomja bélyegét a rendszer elindulásához szükséges idő mennyiségére is. Amennyiben szeretnénk megtakarítani ezt a lépést, tegyük bele az /etc/rc.conf állományba a direkt erre a célra kialakított beállítást:

check_quotas="NO"

Végezetül az állományrendszereken az /etc/fstab megfelelő módosításával tudjuk egyenként engedélyezni a lemezkvóták használatát. Itt lehet bekapcsolni az állományrendszerek felhasználókra vagy csoportokra, esetleg mind a kettőjükre vonatkozó kvótáikat.

Ha felhasználói szintű kvótákat akarunk engedélyezni egy állományrendszeren, akkor az /etc/fstab állományban az állományrendszer beállításai közé vegyük fel a userquota opciót. Például így:

/dev/da1s2g   /home    ufs rw,userquota 1 2

Ehhez hasonlóan tudjuk engedélyezni a userquota helyett a groupquota opció használatával a csoportszintű kvótákat is. A felhasználói- és csoportszintű kvóták együttes engedélyezéséhez így kell átírni az állományrendszer bejegyzését:

/dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

Alapértelmezés szerint az állományrendszerekhez tartozó kvóták a gyökerükben található quota.user valamint quota.group állományokban tárolódnak. Erről részletesebben az fstab(5) man oldalon olvashatunk. Noha még az fstab(5) man oldala szerint is megadható más elérési út a kvótákat tároló állományokhoz, semmiképpen sem javasoljuk ezt, mert úgy tűnik, hogy a kvótákat kezelő különböző segédprogramok ezzel nem képesek rendesen megbirkózni.

Most kell újraindítani a rendszerünket az új rendszermaggal. Az /etc/rc magától le fogja futtatni a kezdeti kvótaállományok létrehozásához szükséges parancsokat az /etc/fstab állományban megadott állományrendszereken. Ennek megfelelően tehát nem nekünk kell kézzel létrehoznunk ezeket az állományokat.

Hétköznapi esetben egyáltalán nem kell manuális futtatnunk a quotacheck(8), quotaon(8) vagy quotaoff(8) parancsokat. Habár ha tisztában szeretnénk lenni a pontos működésükkel, akkor mindenképpen lapozzuk fel a hozzájuk tartozó man oldalakat.

18.15.2. A kvóták beállítása

Ahogy sikerült beállítani a kvóták használatát, egyből ellenőrizzük is a működőképességüket. Ezt legegyszerűbben a következő paranccsal tehetjük meg:

# quota -v

Itt egy sorban összefoglalva láthatjuk a jelenlegi lemezhasználatot és az egyes állományrendszereken engedélyezett kvóták korlátait.

Most már készenállunk arra, hogy az edquota(8) paranccsal végre korlátokat is beállítsunk a kvótákhoz.

Számos beállítás áll rendelkezésünkre a felhasználók vagy csoportok által lefoglalható lemezterület vagy a létrehozható állományok számának korlátozását illetően. A helyfoglalást szabályozhatjuk lemezterület alapján (blokk kvóta) vagy az állományok száma szerint (állományleíró kvóta), esetleg a kettő kombinációjával. A korlátok további két kategóriára bonthatóak: erősre és gyengére.

Az erős korlátot (hard limit) nem lehet túllépni. Ahogy a felhasználó eléri a számára kiszabott erős korlátot, semmilyen további területet nem használhat fel a kérdéses állományrendszeren. Például, ha a felhasználónak az állományrendszeren 500 kilobyte-os erős korlátot állítottunk be, és éppen 490 kilobyte-nál tart, akkor a felhasználó innen már csak 10 kilobyte-nyi helyet foglalhat le. 11 kilobyte lefoglalása már nem fog sikerrel járni.

Ezzel szemben a gyenge korlátok (soft limit) egy adott ideig átléphetőek. Ezt az időt türelmi időnek (grace period) nevezik, ami alapértelmezés szerint egy hét. Ha a felhasználó a gyenge korláton felül marad a türelmi idő után is, akkor ezt a gyenge korlát erőssé válik és semmilyen további helyfoglalásra nem lesz lehetősége. Amikor a felhasználók újra a gyenge korlát alá kerül, a türelmi idő is visszaáll a beállított értékére.

A most következő példában az edquota(8) parancsot mutatjuk be. Amikor meghívjuk az edquota(8) parancsot, akkor elindul az EDITOR környezeti változónak megfelelő szövegszerkesztő, illetve ennek hiányában a vi, és lehetőségünk nyílik a kvóta korlátainak módosítására.

# edquota -u teszt
Quotas for user teszt:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)

Normális esetben minden kvótával rendelkező állományrendszerhez két sort kapunk. Közülük az egyik sorban szerepelnek a blokkok korlátai, a másikban az állományleírók korlátai. Ha valamelyiküket meg akarjuk változtatni, akkor egyszerűen csak át kell írnunk az adott korlát értékét. Például növeljük meg a felhasználók 50-es gyenge és 75-ös erős blokk korlátját 500-as gyenge és 600-as erős korlátra. Ehhez szerkesszük át a

/usr: kbytes in use: 65, limits (soft = 50, hard = 75)

sort erre:

/usr: kbytes in use: 65, limits (soft = 500, hard = 600)

Az új korlátok akkor fognak érvénybe lépni, miután kiléptünk a szövegszerkesztőből.

Néha hasznos lehet a korlátokat adott felhasználói azonosítókhoz beállítani. Ezt az edquota(8) parancs -p paraméterével tudjuk elvégezni. Először is állítsuk be egy felhasználónak a beállítani kívánt korlátokat, majd futtassuk le az edquota -p teszt kezdőuid-véguid parancsot. Például ha a teszt nevű felhasználónak állítottuk be a számunkra megfelelő korlátokat, akkor a következő paranccsal lehet a rá vonatkozó korlátokat kiterjeszteni a 10 000 és 19 999 közötti azonosítójú felhasználókra:

# edquota -p teszt 10000-19999

Erről bővebben az edquota(8) man oldalán kaphatunk felvilágosítást.

18.15.3. A kvóták korlátainak és a lemezhasználat ellenőrzése

A kvóták korlátait és a lemez jelenlegi kihasználtságát a quota(1) vagy repquota(8) parancsokkal is ellenőrizhetjük. A quota(1) parancs segítségével ellenőrizhető az egyes felhasználók vagy csoportok kvótája és lemezhasználata. A felhasználók csak a saját adataikhoz férhetnek hozzá, illetve mindazon csoportokéhoz, aminek tagjai. Egyedül a rendszeradminisztrátor képes látni az összes felhasználó és csoport kvótáját. A repquota(8) paranccsal kérdezhető le az összes kvóta és lemezhasználat rövid kimutatása minden olyan állományrendszeren, ahol azok engedélyezettek.

A következő kimenet a quota -v parancstól származik, ahol a felhasználónak két állományrendszeren is vannak kvótái:

Disk quotas for user teszt (uid 1002):
     Filesystem  usage    quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60

A fenti példában látható, hogy a felhasználó a /usr állományrendszeren pillanatnyilag 15 kilobyte-tal van az 50 kilobyte-os gyenge korlátja felett és 5 napja van hátra a türelmi időből. Vegyük észre a szám mellett levő csillagot (*), amivel a rendszer jelzi, hogy a felhasználó túllépte a korlátját.

A quota(1) parancs kimenetében általában nem jelennek meg azok az állományrendszerek, amelyeken a felhasználónak ugyan vannak kvótái, de nem foglal rajtuk lemezterületet. A -v beállítás megadásával ezek az állományrendszerek is láthatóvá válnak, mint ahogy azt a fenti példában is megfigyelhettük a /usr/var esetében.

18.15.4. Kvóták NFS-en keresztül

A kvóták az NFS szerver kvótákért felelős alrendszerében is engedélyezhetőek. Az rpc.rquotad(8) démon teszi az NFS klienseken futtatott quota(1) parancsok számára elérhetővé a kvótákkal kapcsolatos információkat, aminek köszönhetően a felhasználók távolról is képesek lekérdezni a kvótáikat.

Az rpc.rquotad aktivilásához a következőt kell beállítani az /etc/inetd.conf állományban:

rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

Majd ne felejtsük el újraindítani az inetd démont sem:

# /etc/rc.d/inetd restart

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <questions@FreeBSD.org>.

Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.