Kvóta mini-HOGYAN <author>Ralf van Dooren <tt>r.vdooren@snow.nl</tt> <date>v0.5, 2003.08.09 <p> FIGYELEM: a dokumentumot nem sikerült tökéletesen PDF formátumba konvertálni! Gyakorlatilag UHU-Linux alatt mégnem tökéletesen kompatibilis nyelvünkkel a linuxdoc-tools programcsomag (ez nem az UHU-Linux hibája). Aki segíteni akar (időmilliomosok előnyben :-) kérem írjon a dacas@freemail.hu címre. <abstract> Előszó: ezt a dokumentumot Ralf van Dooren (r.vdooren@snow.nl) írta. Az eredeti szöveg és a dokumentum összeállítása Albert M.C. Tam copyleft-je, nagyon sok köszönet illeti az eredeti mini-HOGYANért. Erre a dokumentumra a GNU Free Documentation License előírásai érvényesek. A jelen dokumentum változatlan formában szabadon használható, másolható és terjeszthető nem kereskedelmi célból, amennyiben minden másolatban és ahhoz tartozó dokumentumokban feltüntetik a szerző/szerkesztő nevét. A dokumentumot annak reményében terjesztjük, hogy hasznosnak bizonyul, de a szerző SEMMILYEN GARANCIÁT, sem kifejezett, sem beleértett formában nem vállal. Bár mindent megtettünk a jelen dokumentumban található információk pontosságának biztosításáért, a szerző/szerkesztő/karbantartó NEM VÁLLAL FELELŐSSÉPGET az itt előforduló hibákért, vagy az itt szereplő információk alkalmazásából eredő esetleges károkért. <p> A dokumentum leírja, hogyan engedélyezzük a fájlrendszer-kvótát egy Linuxot futtató gépen, hogyan rendeljünk kvótát a felhasználókhoz és csoportokhoz, valamint bemutatja a különböző kvóta-parancsok használatát. A leírás a 2.x verziójú (legutóbb a 2.4.21-esen teszteltük) kernelt használók részére készült. <p> Ha hibát találsz, vagy ha bármilyen információ hiányzik, nyugodtan küldj visszajelzéseket vagy megjegyzéseket az r.vdooren@snow.nl címre. Méltányolni fogom. </abstract> <sect>Mi a kvóta? <sect1>Miért kell a kvóta? <p> A kvóta lehetővé teszi, hogy két szempontból is meghatározhass korlátokat a lemezhasználatra vonatkozóan: az inode-ok számában, amiket egy felhasználó vagy felhasználói csoport birtokolhat; ezen felül a lemezblokkok számában, amit egy felhasználóhoz vagy csoporthoz rendelni lehet. <p> A kvóta lényege az, hogy a felhasználók arra vannak kényszerítve, hogy maradjanak a lemezhasználati korlátjuk alatt, megfosztva őket attól a lehetőségtől, hogy tetszőleges méretű helyet foglalhassanak el a rendszeren. A kvótát felhasználói és fájlrendszer alapon kezeljük. Ha több mint egy fájlrendszer van ahol a felhasználó várhatóan létrehozhat fájlokat, akkor a kvótát egyenként mindegyik fájlrendszerre be kell állítani. Különböző programeszközök léteznek, amelyekkel adminisztrálni és automatizálni lehet a kvóta beállításokat egy adott rendszeren. <sect1>A kvóta jelenlegi állapota a Linuxon <p> Jelenleg több jelentős változás is folyamatban van a kvóta működésével kapcsolatban. Két különböző módszer létezik. Az eszközök ugyanúgy működnek, a különbség csak a használt fájlokban van. Ez a dokumentum az _új_ kvóta-beállítást taglalja. Mivel ez az új beállítás nincs benne a hagyományos kernel-forrásban, szükség van néhány "foltra" (patch). A dokumentumban leírjuk a foltozás módját, és a linuxquota csomag telepítését. Ha már telepítve van kvóta-szoftver a gépeden, akkor nem biztos, hogy fel kell raknod ezt a foltot és csomagot. Ha kérdésed van ezzel kapcsolatban, nyugodtan írhatsz nekem e-mailt. A jelen dokumentum egy későbbi verziójában megpróbálok majd áttekintést adni a disztribúciókról, és kvótakezelés különböző megvalósításairól. <sect>Követelmények a kvóta használatához <p> <sect1>Kernel <p> A 2.x-es kernel-forrás megtalálható a <url url="http://www.kernel.org" name="http://www.kernel.org"> webhelyen. Válassz egy hozzád közeli tükörszervert, hogy takarékoskodj a sávszélességgel. Ha a tar program legújabb változatát használod, letöltheted a .bz2 tömörített fájlt Csomagold ki a kernelt: <code> cd /usr/src tar jxvf /path/to/linux-2.4.21-tar.bz2 - for bzip2 kernel - tar zxvf /path/to/linux-2.4.21-tar.gz - for gzip kernel - ln -s /usr/src/linux-2.4.21 /usr/src/linux </code> <sect1>Kvóta szoftver <p> Attól függően, hogy milyen Linux-disztribúciót használsz elképzelhető, hogy a kvóta-szoftver már telepítve van a rendszeren. A legfrissebb verzió a SourceForge honlapjáról érhető el, és aktív fejlesztés alatt áll. A fejlesztők honlapját a <url url="http://www.sourceforge.net/project/linuxquota" name="http://www.sourceforge.net/projects/linuxquota" > webhelyen találod meg. <sect>A kvóta telepítése és beállítása <sect1>A kernel foltozása <p>Töltsd le a szükséges kernel-foltot az <url url="ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/" name="ftp::/atrey.karlin.mff.cuni.cz/pub/local/jack/quota/" > webhelyről. <p> Válaszd ki az általad használt kernel verzióját, majd töltsd le a foltot. A "patch" parancs segítségével foltozd meg a kernelt. Amennyiben egynél több folt szükséges a kerneledhez, figyelj arra, hogy a megfelelő sorrendben rakd fel azokat. Ehhez használhatod ezt a szkriptet (feltételezem, hogy a letöltött foltok a /tmp/quota/ , a kicsomagolt kernel pedig az /usr/src/linux könyvtárban van) : <code> #!/bin/sh gunzip /tmp/quota/*.gz cd /usr/src/linux COUNT=`ls -1 /tmp/quota/*.diff | wc -l` for I in `seq 1 $COUNT` do patch -p1 < /tmp/quota/quota-2.4.21-$I-*.diff done </code> <sect1>A kernel ismételt beállítása <p> A kernel újrafordítása során a kapcsold be a kvóta-támogatást. <p>A "make menuconfig" vagy "make xconfig" használatakor a Filesystems menü alatt található meg a szükséges választási lehetőség. Ha szükséged van különleges szolgáltatásokra, itt beállíthatod azokat (mint például 32 bites UID támogatás) <p>Mentsd el a beállításokat és fordítsd újra a kernelt. Bizonyosodj meg róla, hogy az új kernel indul el a rendszerindításkor. <sect1>A kvóta-szoftver lefordítása és telepítése <p> Az összes szolgáltatás használatához szükség lehet az új kvóta csomag (quota-package) letöltésére. A fent említett helyről töltheted le azt. <p> A letöltés után végezd el a következő műveleteket: <code>$ gzip -dc <letöltött file> | tar xvf $ cd quota-tools (vagy abba a könyvtárba, ahova letöltötted) $ ./configure $ make $ su # make install </code> <sect1>A rendszerindító szkriptek módosítása a kvóta indításkori ellenőrzésére és bekapcsolására <p> Íme egy példa: <code># Check quota and then turn quota on. if [ -x /usr/sbin/quotacheck ] then echo "Checking quotas. This may take some time." /usr/sbin/quotacheck -avug echo " Done." fi if [ -x /usr/sbin/quotaon ] then echo "Turning on quota." /usr/sbin/quotaon -avug fi </code> Aranyszabály, hogy mindig kapcsold be a kvótát, miután az /etc/fstab-beli fájlrendszert becsatoltad, különben nem fog működni. Ajánlom, hogy kapcsold be a kvótát rögtön azután, hogy a fájlrendszereket becsatolja a rendszerindító szkripted. <sect1>Az /etc/fstab módosítása <p> Azok a partíciók, amelyeken nem engedélyeztük a kvótát, normál esetben valahogy így néznek ki: <code>/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults 1 1 </code> A felhasználói kvóta-támogatás egy fájlrendszeren való engedélyezéséhez írd be a "usrquota" opciót a negyedik mezőbe, ami a "defaults" szót tartalmazza (a részletekért lásd "man fstab"). <code>/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota 1 1 </code> Cseréld le a "usrquota" szót "grpquota"-ra, ha csoportkvótára van szükséged. <code>/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,grpquota 1 1 </code> Mind felhasználói, mind csoportkvótára szükséged van? <code>/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1 </code> <sect1>A kvóta rendszer bekapcsolása <p> A kvóta szoftver aktiválásához újra kell indítani a rendszert azért, hogy az elvégzett változtatások érvényessé váljanak. Ekkor betöltődik az új, kvótát támogató kernel, majd az elkészített rendszerindító szkripteket is végrehajtja a gép. Az első futásnál a "quotacheck" készíti el a megfelelő fájlokat a kvóta-adatbázis karbantartásához. <sect1>A "quotacheck" hozzáadása a crontab-hoz <p> Bár a kvóta működik rendszeres ellenőrzés nélkül is, néha hasznos lehet, ha rendszeres időközönként, mondjuk hetente lefuttatjuk a "quotacheck"-et. Ehhez add hozzá a következő bejegyzést a rendszergazda crontab-jához: <code>0 3 * * 0 /sbin/quotacheck -avug </code> <sect>A kvóta telepítése: programeszközök <p> Ezt a műveletet az "edquota" paranccsal tudjuk végrehajtani ("man edquota", ha a részletekre vagy kíváncsi). <sect1>Kvóta megadása egy adott felhasználóhoz <p> Lássunk egy példát. Van egy bob nevű felhasználó a rendszeremen. Az "edquota -u bob" parancs kiadásával a vi (vagy az $EDITOR környezeti változóban beállított) szövegszerkesztőben találom magam, ahol be tudom állítani bob kvótáját mindegyik olyan partíción, ahol az engedélyezett: <code>Quotas for user bob: /dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500) inodes in use: 356, limits (soft = 1000, hard = 1500) </code> A "blocks in use" a felhasználó által egy partíción elfoglalt összes blokkok száma (kilobájtban). Az "inodes in use" az inode-ok száma, melyeket a felhasználó lefoglal a partíción. <sect1>Kvóta hozzárendelése egy adott csoporthoz <p> Most van egy games nevű csoport a rendszeremen. Az "edquota -g games" ismét a vi-ba léptet, ahol a games csoport kvótáját tudom beállítani: <code> Quotas for group games: /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) inodes in use: 1454, limits (soft = 3000, hard = 4000) </code> <sect1>Kvóta hozzárendelése felhasználók csoportjához, ugyanazzal az értékkel <p> Ahhoz, hogy gyorsan tudjak a rendszeremen lévő bob nevű felhasználóval azonos beállításokkal kvótát hozzárendelni mondjuk 100 felhasználóhoz, először kézzel szerkesztem bob adatait, majd kiadom a következő parancsot: <code>edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd` </code> Feltételezem, hogy csh-t használsz, és a felhasználók UID-jei 500-al kezdődnek. A kvótához kapcsolódóan 3 olyan fogalom van, amikkel meg kell barátkoznod: lágy korlát (soft limit), kemény korlát (hard limit) és türelmi idő (grace period). <sect1>Lágy korlát (Soft Limit) <p> A lágy korlát jelenti azt a maximális mennyiségű lemezterületet, amit egy felhasználó elfoglalhat egy partíción. Amikor a türelmi idővel kombináljuk, úgy viselkedik, mint egy határvonal, ami a felhasználót üzenetekkel látja el a kvóta-beállítás közelgő megsértéséről, ha azt túllépi. <sect1>Kemény korlát (Hard Limit) <p> A kemény korlát csak akkor működik, ha a türelmi időt is beállítjuk. Ez az abszolút korlátot jelenti a lemezfelhasználás szempontjából, amit a felhasználó semmiképpen sem léphet túl. <sect1>Türelmi idő (Grace Period) <p> A türelmi idő az az időhatár, melynek leteltéig érvényes a lágy korlát a kvótát engedélyező fájlrendszereken. Az időértékek lehetnek másodpercben (sec), percben (min), órában (hour), napban (day), hétben (week) és hónapban (month) megadva. Ezt látod az "edquota -t" parancs kiadásakor: <code>Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hda2: block grace period: 0 days, file grace period: 0 days </code> Változtasd meg a "0 days" részt bármely általad megfelelőnek vélt időtartamra. Személy szerint én 7 napot (vagyis egy hetet) választottam. <sect>Egyéb kvótaparancsok <p> <sect1>Quotacheck <p> A "quotacheck" átvizsgálja a fájlrendszert a lemezhasználat megállapításához, és frissíti az "aquota.user" adatfájlt a dolgok legfrissebb állása szerint. Azt ajánlom, hogy a parancsot minden rendszerindításkor, és egy cron-feladaton keresztül időközönként (mondjuk, minden héten?) futtasd le. <sect1>Repquota <p> A "repquota" összesített kvóta-információkat ad egy fájlrendszerről. Az alábbiakban egy minta található a parancs kimenetéről: <code># repquota -a Block limits File limits User used soft hard grace used soft hard grace root -- 175419 0 0 14679 0 0 bin -- 18000 0 0 735 0 0 uucp -- 729 0 0 23 0 0 man -- 57 0 0 10 0 0 user1 -- 13046 15360 19200 806 1500 2250 user2 -- 2838 5120 6400 377 1000 1500 </code> <sect1>Quotaon és Quotaoff <p> A "quotaon" használatos a kvóta bekapcsolására; a "quotaoff" kikapcsolja azt. Jelenleg mindkét fájl hasonló. A rendszerindításkor- és leállításkor hajtjuk őket végre. <sect> Magyar fordítás <p> A magyar fordítást <url url="mailto:laca@janus.gimsz.sulinet.hu_NO_SPAM" name="Szijjártó László"> készítette (2002.11.27). A lektorálást <url url="mailto:tech.translation@axelero.hu_NO_SPAM" name="Varga Zsolt"> végezte el (2003.04.09). Utoljára <url url="mailto:dacas@freemail.hu_NO_SPAM" name="Daczi László"> frissítette (2003.08.26). Bármilyen fordítással kapcsolatos észrevételt a <url url="mailto:linuxhowto@sch.bme.hu_NO_SPAM" name="linuxhowto@sch.bme.hu"> címre küldjetek. A dokumentum legfrissebb változata megtalálható a <url url="http://tldp.fsf.hu/index.html" name="Magyar Linux Dokumentációs Projekt"> honlapján. </article>