La utilitat quota permet especificar dos tipus de límits d'espai dins dels filesystems, per usuari i/o per grups d'usuaris. I dins d'aquests dos tipus, per una banda el número màxim d'inodes i/o per altre banda el número màxim de blocks. Aquesta característica em permetrà controlar l'espai consumit (Web, FTP, etc.) per cadascun dels usuaris del sistema.
Dono per suposat que s'ha activat prèviament la opció del kernel referent al tractament de quotas.
Abans de començar a configurar aquesta utilitat, s'ha de tenir molt clar a quins filesystems s'aplicarà aquest control. La majoria de HOWTOs referents a la seva configuració presuposen que el lector aplicarà la quota al root filesystem. Ara bé, en el meu cas no ha estat així perque el contingut del root filesystem és destinat només al propi sistema. És a dir, que els únics filesystems amb tractament de quota seràn d'altres dispositius.
Degut a aquesta diferència important, cal avisar al sistema que durant la càrrega del boot faci un mount dels filesystems externs abans d'executar el programa /sbin/quotacheck. Per fer això, s'haurà de modificar un únic init script, l'anomenat /etc/rc.d/rc.sysinit, aplicant-li les següents modificacions:
S'han de comentar les següents línies:
# elif [ "$rc" = "1" -a -x /sbin/quotacheck ]; then
# echo "Checking filesystem quotas"
# /sbin/quotacheck -v -R -a
i copiar-les una mica més a sota, just després d'on diu mount -a -t nonfs, variant una mica el seu contingut:
if [ -x /sbin/quotacheck ]; then
echo "Checking filesystem quotas"
/sbin/quotacheck -avug -R
fi
if [ -x /sbin/quotaon ]; then
echo "Turning on user and group quotas for local filesystems"
/sbin/quotaon -avug
fi
La opció "-R" indica que no cal que faci un scan del root filesystem.
/etc/fstabDins del meu servidor només hi ha dos tipus d'usuaris que han de ser tractats amb aquesta utilitat. Per una banda les empreses o grups corporatius i per altre banda els usuaris particulars. Seguint aquest esquema, vaig crear dos filesystems:
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda1 2974519 801 2819898 0% /mnt/empreses
/dev/sda2 1321269 96 1252897 0% /mnt/usuaris
Com es pot observar, tots dos filesystems formen la totalitat del primer disc dur SCSI.
Per cada filesystem on es vulgui un tractament de quotas tant pels usuaris com pels grups, s'haurà d'afegir els paràmetres usrquota i grpquota.
# <device> <mountpoint> <fstype> <options> <dump> <fsckorder>
/dev/sda1 /mnt/empreses ext2 defaults,usrquota,grpquota 0 2
/dev/sda2 /mnt/usuaris ext2 defaults,usrquota,grpquota 0 2
També es pot fer servir la utilitat fstool dins del Control Panel per realitzar aquestes modificacions.
A continuació caldrà crear dins del directori base de cada filesystem modificat, els dos fitxers corresponents als paràmetres que s'han donat anteriorment. Cal tenir en compte que el propietari d'ambdos fitxers ha de ser el root i només ell ha de tenir permissos de lectura i d'escriptura.
A continuació es detallen tots aquests passos:
touch /mnt/empreses/quota.user
touch /mnt/empreses/quota.group
chmod 600 /mnt/empreses/quota.user /mnt/empreses/quota.group
touch /mnt/usuaris/quota.user
touch /mnt/usuaris/quota.group
chmod 600 /mnt/usuaris/quota.user /mnt/usuaris/quota.group
Finalment ja només manca fer un reboot del sistema, per refrescar els canvis que s'han fet.
Ara només quedarà establir un ús màxim d'espai pels grups d'usuaris. Aquesta assignació es realitza mitjançant el programa /usr/sbin/edquota.
Penso assignar un espai d'ús màxim de 10MB per les empreses dins del filesystem anomenat /mnt/empreses. El primer pas és executar l'editor de quotes amb el paràmetre "-g", indicant que el tractament a fer serà només pel grup en qüestió:
edquota -g empreses
Aquest programa executarà l'editor vi (o l'editor especificat en la variable d'entorn $EDITOR). El resultat és el següent:
Quotas for group empreses:
/dev/sda1: blocks in use: 40, limits (soft = 10240, hard = 10240)
inodes in use: 22, limits (soft = 0, hard = 0)
/dev/sda2: blocks in use: 0, limits (soft = 1, hard = 1)
inodes in use: 0, limits (soft = 0, hard = 0)
~
~
~
Tal i com es pot comprovar, el programa mostre els dos filesystems on hi ha tractament de quota. A mi, només m'interessa assignar quota al filesystem on residiran totes les empreses.
El programa requereix que les unitats d'assignació siguin en blocks. Sabent que jo vull assignar 10MB d'espai màxim inicial a les empreses, només hauré de multiplicar aquests 10MB per 1024 i així obtindré els blocks. Pel que fa al número d'inodes no acostumo a posar-hi cap límit. Prefereixo fer un control mitjançant els blocks.
Els paràmetres blocks in use i inodes in use, es refereixen a l'espai en blocks que el grup porta consumit actualment i al número actual de fitxers creats, respectivament. Són paràmetres purament informatius.
Els dos paràmetres importants són el Soft Limit i el Hard Limit. Amb aquests dos es pot especificar un límit inicial i un límit final respectivament.
El paràmetre Soft Limit indica la quantitat màxima de blocks o d'inodes pel grup en qüestió. Quan aquest paràmetre es combina amb el que s'anomena Grace Period, actúa com a frontera on a partir d'allà mostrarà missatges d'atenció, notificant que l'usuari està sobrepassant el seu espai d'ús.
El paràmetre Hard Limit especifica el límit absolut d'ús d'espai pel grup en qüestió. Aquest paràmetre però, només funciona quan s'utilitza la opció Grace Period.
La configuració del Grace Period pels grups pot ser realitzada mitjançant la ordre:
edquota -gt
Per defecte el sistema estableix un Grace Period de 7 dies. Degut a que no dono cap marge entre el Soft Limit i el Hard Limit, no hi haurà temps per que actui.
Pel que fa als usuaris, penso assignar un espai d'ús màxim de 3MB dins del filesystem anomenat /mnt/usuaris. El primer pas és executar l'editor de quotes amb el paràmetre "-u", indicant que el tractament a fer serà només per l'usuari en qüestió:
edquota -u mikaku
Tota la resta de passos són els mateixos que es fan en el tractament dels grups. De totes maneres val a dir que, el tractament per un usuari individual, només serà fet en el cas que l'usuari requereixi una ampliació del seu espai d'ús exclusivament per ell.
Per poder estar al corrent de l'espai d'ús per part dels usuaris del sistema, hi ha una utilitat que facilita aquesta tasca. El programa /sbin/quotacheck realitza un scan a cada filesystem on hi ha tractament de quota, per tal de refrescar els registres dels fitxers quota.user i quota.group amb l'ús actual.
Tal i com he explicat anteriorment, aquest programa ja ha estat inclòs en un dels init scripts, o sigui que aquest procés ja s'executarà cada cop que es faci un boot a l'ordinador. Ara bé, com que aquest ordinador té previst estar engegat les 24 hores dels 365 dies de l'any, les quotes no estarien mai refrescades amb les dades actuals.
Per solventar aquest problema i realitzar un scan periòdicament, es fa necessària la inserció de la següent línia dins del fitxer /etc/crontab.
# Scan diari de les quotes
00 05 * * * root /sbin/quotacheck -aug
Aquí s'especifica que cada dia a les 05:00h realitzi un scan dels filesystems especificats dins del fitxer /etc/fstab. Si s'afageix el paràmetre "-v" (de verbose), el cron enviarà un mail a l'usuari root amb la sortida generada pel programa.
Per obtenir un log diari de l'estat actual de les quotes, et recomano que facis un cop d'ull al capítol que tracte sobre la impresió dels logs diaris.