FreeBSD kézikönyv
Előző | Fejezet 18. Háttértárak | Következő

# 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 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

Előző | Tartalom | Következő
Az állományrendszerek pillanatképei | Fel | A lemezpartíciók titkosítása

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.