4.17 Il quota

Il sistema GNU/Linux permette di specificare dei limiti all’utilizzo della memoria di massa: il numero di inode che un utente (o gruppo) può possedere (esserne propietario), ed il numero di blocchi disponibili per un utente (o gruppo). In questo modo si può limitare agli utenti l’utilizzo di parte di un filesytem. Questo può essere gestito con il meccanismo del quota, che però necessita che il kernel sia opportunamente predisposto (compilato) per il suo funzionamento.

Per attivare la gestione del quota su un filesystem, è necessario montare il filesystem in questione con l’opzione usrquota o grpquota (o anche entrambi) che indicano rispettivamente di abilitare il quota per utente o per gruppo.

La gestione del quota si basa sui file quota.user e quota.group, presenti nella directory principale del filesystem considerato (ovvero il relativo mount point). Tali file di gestione del quota, servono sia per la memorizzazione delle impostazioni (configurazione), che per la memorizzazione delle informazioni relative alla gestione dello stesso. In effetti esistono due versioni dei file di gestione del quota ed i file precedentemente indicati si riferiscono alla versione 1 (la più vecchia), mentre i corrispondenti file relativi alla versione 2 (la più recente) sono aquota.user e aquota.group. I file con estensione .user si riferiscono al quota gestito per utenti, mentre quelli con estensione .group sono relativi al quota per gruppi.

Quindi, si può effettuare un controllo della gestione del quota con il comando quotacheck (man page quotacheck(8)) (questo è necessario la prima volta per preparare i file di configurazione del quota). All’avvio, quotacheck esamina ogni filesystem per il quale è abilitato il quota e si costruisce una tabella in cui riporta l’utilizzo dello stesso da parte deli utenti (e dei gruppi). Quindi confronta tale tabella con i dati presenti nei file di configurazione del quota. Se incontra una differenza, i file vengono aggiornati. È consigliabile far eseguire quotacheck sui filesystem effettivamente non utilizzati.

____________________________________________________________________

Comando: quotacheck
Path: /sbin/quotacheck

SINTASSI  
# quotacheck [option] [filesystem]  
DESCRIZIONE

____________

Dunque è possibile attivare il quota con il comando quotaon (man page quotaon(8)).

__________________________________________________________________________________________________________

Comando: quotaon
Path: /sbin/quotaon

SINTASSI  
# quotaon [option] filesystem  
DESCRIZIONE

____________________________________

Analogamente, è possibile disabilitare il quota con il comando quotaoff (man page quotaon(8)).

__________________________________________________________________________________________________________

Comando: quotaoff
Path: /sbin/quotaoff

SINTASSI  
# quotaoff [option] filesystem  
DESCRIZIONE

________________________________________________________________________

Quindi, una volta attivato, è necessario configurare il quota con il comando edquota (man page edquota(8)) o setquota (man page setquota(8)).

__________________________________________________________________________________________________________

Comando: edquota
Path: /usr/sbin/edquota

SINTASSI  
# edquota [option] [username]  
DESCRIZIONE

__________________________________________________________________________________________________________

Ad esempio il comando

 
# edquota -u daniele  
Visualizza le impostazioni contenute nel file quota.user relative allo username “daniele”, ovvero qualcosa di analogo a quanto riportato di seguito

Quotas for user daniele:
/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500)
           inodes in use: 356, limits (soft = 1000, hard = 1500)
dove Ad esempio, il comando

 
# edquota -t  
Visualizza le impostazioni relative al grace period, ovvero qualcosa di analogo a quanto riportato di seguito

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda2: block grace period: 5 days, file grace period: 5 days
dove Per attivare il quota automaticamente all’avvio del sistema, è possibile modificare il file /etc/fstab39 inserendo le opportune opzioni nelle righe relative ai filesystem per i quali si desidera abilitare il quota.

Quindi si può attivare il quota con uno script avviato durante la procedura di boot del sistema. Lo script sarà analogo a quello riportato di seguito

# Check quota and then turn quota on.
if [ -x /usr/sbin/quotacheck ]
then
 echo "Checking quotas..."
 /usr/sbin/quotacheck -avug
 echo "  Done."
                                                                        
                                                                        
fi
if [ -x /usr/sbin/quotaon ]
then
 echo "Turning on quota..."
 /usr/sbin/quotaon -avug
 echo "  Done."
fi
Non è una cattiva idea far controllare periodicamente (magari una volta alla settimana) il quota, inserendo il comando quotacheck nel crontab40.

Per avere un dettaglio sull’utilizzo dei vari filesystem (per i quali è abilitato il quota) da parte dei vari utenti o gruppi, si può utilizzare il comando repquota (man page repquota(8)).

____________________________________________________________________

Comando: repquota
Path: /usr/sbin/repquota

SINTASSI  
# repquota [option] filesystem  
DESCRIZIONE

_____________________________________________________________

Ogni utente può ottenere le statistiche relative al proprio utilizzo del quota con il comando quota (man page quota(1)).

____________________________________________________________________

Comando: quota
Path: /usr/bin/quota

SINTASSI  
$ quota [option] [user]  
DESCRIZIONE

____________________________________________________________________________

Il comando warnquota (man page warnquota(8)) controlla l’utilizzo dei filesystem secondo le impostazioni del quota ed invia dei messaggi via e-mail agli utenti che abbiano raggiunto i limiti di utilizzo dello spazio per essi previsto.

__________________________________________________________________________________________________________

Comando: warnquota
Path: /usr/sbin/warnquota

SINTASSI  
# warnquota [option]  
DESCRIZIONE

_______________________________________________________________