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
-
option specifica la modalità di funzionamento quotacheck. Può assumere i seguenti
valori
-
-b effettua un backup dei file di quota prima di scrivere altri dati;
-
-v visualizza informazioni sul progresso di quotacheck;
-
-d abilita la modalità di debug: vengono visualizzati molti messaggi
durante il funzionamento del comando;
-
-f forza il controllo dei filesystem sui quali è stato abilitato il quota;
-
-M indica di effettuare un controllo del filesystem in modalità di lettura
e scrittura se l’operazione di remount non va a buon fine (da
usare soltanto nel caso in cui non ci siano processi che scrivono sul
filesystem durante il controllo);
-
-m indica di non tentare di effettuare il remount del filesystem in
modalità sola lettura (v. -M);
-
-i abilità la modalità interattiva: per default se quotacheck rileva un
errore termina la sua attività; in questo modo invece richiede se
procedere;
-
-n indica di considerare valida la prima entry relativa all’utente o il
gruppo a cui è stato assegnato il quota (nei file di quota non corretti
potrebbero esserci più entry relative allo stesso utente o gruppo);
-
-F format_name
controlla il quota secondo il formato specificato da format_name (per
default il controllo del quota effettua una rilevazione automatica del
formato). I valori possibili sono riportati nella tab. 4.23;
| Tabella 4.23: | Formati possibili dei file di gestione del quota. |
|
-
-a controlla tutti i filesystem non NFS elencati in /etc/mtab;
-
-R se utilizzato con -a, tutti i filesystem ad eccezione del root filesystem (/)
vengono controllati;
-
filesystem indica il filesystem sul quale effettuare il controllo relativo al quota;
____________
Dunque è possibile attivare il quota con il comando quotaon (man page quotaon(8)).
__________________________________________________________________________________________________________
Comando: quotaon
Path: /sbin/quotaon
SINTASSI
# quotaon [option] filesystem
DESCRIZIONE
-
option specifica la modalità di funzionamento di quotaon. Può assumere i seguenti
valori
-
-a attiva il quota per tutti i filesystem (non NFS) elencati in /etc/fstab
che hanno l’opzione usrquota o grpquota;
-
-v visualizza un messaggio per ogni filesystem per il quale è stato
attivato il quota;
-
-u attiva il quota per gli utenti (default);
-
-g attiva il quota per i gruppi;
-
-p visualizza lo stato attuale del quota (on o off);
-
-f esegue quotaon come se fosse stato lanciato quotaoff;
-
filesystem specifica il filesystem da considerare;
____________________________________
Analogamente, è possibile disabilitare il quota con il comando quotaoff (man page
quotaon(8)).
__________________________________________________________________________________________________________
Comando: quotaoff
Path: /sbin/quotaoff
SINTASSI
# quotaoff [option] filesystem
DESCRIZIONE
-
option specifica la modalità di funzionamento di quotaoff. Può assumere i seguenti
valori
-
-F format_name
disattiva il quota per i filesystem con il cui formato dei file di
configurazione del quota è specificato da format_name (v. tab. 4.23);
-
-a disattiva il quota per tutti i filesystem (non NFS) elencati in
/etc/fstab che hanno l’opzione usrquota o grpquota;
-
-v visualizza un messaggio per ogni filesystem per il quale è stato
disattivato il quota;
-
-u disattiva il quota per gli utenti (default);
-
-g disattiva il quota per i gruppi;
-
-p visualizza lo stato attuale del quota (on o off);
-
-x delete
(solo per XFS) libera lo spazio del filesystem utilizzato per
memorizzare le informazioni sul quota;
-
-x enforce
(solo per XFS) disabilita i limiti sul filesystem relativi al quota;
-
filesystem specifica il filesystem da considerare;
________________________________________________________________________
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
-
option specifica la modalità di funzionamento edquota. Può assumere i seguenti
valori
-
-r | -n
configura il quota su sistemi remoti;
-
-u configura il quota per un utente (default);
-
-g configura il quota per un gruppo;
- -p protoname
duplica la configurazione del prototipo del quota indicato da
protoname per gli utenti o i gruppi specificati;
-
-F format_name
configura il quota secondo il formato specificato da format_name
(i formati possibili sono elencati nella tab. 4.23). Se non indicato
viene effetuato un riconoscimento automatico del formato dei file di
configurazione del quota;
-
-f filesystem
configura il quota soltanto per il filesystem indicato da filesystem;
-
-t imposta il grace period per i filesystem per i quali è abilitato il quota;
-
username specifica l’utente o il gruppo per il quale si vuole configurare il quota
(possono esere specificati anche un elenco di utenti o gruppi separati da uno
spazio);
__________________________________________________________________________________________________________
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
-
block grace period è il grace period utilizzato per i blocchi;
-
file grace period è il grace period utilizzato per i file (inode).
Per attivare il quota automaticamente all’avvio del sistema, è possibile modificare il file
/etc/fstab
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
crontab.
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
-
option specifica la modalità di funzionamento di repquota. Può assumere i seguenti
valori
-
-a visualizza un report di utilizzo dei filesystem elencati in /etc/mtab
per i quali è abilitato il quota e sono utilizzati;
-
-v visualizza un report di utilizzo dei filesystem elencati in /etc/mtab
per i quali è abilitato il quota;
-
-t tronca la visualizzazione degli username e groupname a 9 caratteri.
-
-n non effettua la risoluzione dei nomi relativi agli UID e GID;
-
-s visualizza lo spazio utilizzato, il numero di inode utilizzati ed i limiti
con unità di misura più appropriate rispetto a quelle di default;
-
-F format_name
visualizza un report realtivo ai file di configurazione del quota nel
formato indicato da format_name (v. tab. 4.23);
-
-g visualizza un report relativo al quota dei gruppi;
-
-u visualizza un report relativo al quota degli utenti (default);
-
filesystem specifica il filesystem da considerare;
_____________________________________________________________
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
-
option specifica la modalità di funzionamento di quota. Può assumere i seguenti
valori
-
-F format_name
visualizza le statistiche relative al quota secondo il formato
specificato da format_name (v. tab. 4.23);
-
-g visualizza le statistiche relative al quota per il gruppo specificato da
user;
-
-u visualizza le statistiche relative al quota per l’utente specificato da
user (default);
-
-v visualizza le statistiche relative al quota anche per i filesystem che
non sono stati ancora utilizzati;
-
-s visualizza lo spazio utilizzato, il numero di inode utilizzati ed i limiti
con unità di misura più appropriate rispetto a quelle di default;
-
-q visualizza le statistiche relative ai filesystem per i quali i limiti del
quota sono già stati superati;
-
user specifica lo username o il groupname di cui si desiderano visualizzare le statistiche
relative al quota (solo il superuser può specificare un utente o gruppo qualunque).
Se non specificato, viene considerato l’utente che ha impartito il comando (o il
gruppo di cui questi fa parte);
____________________________________________________________________________
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
-
option specifica la modalità di funzionamento di warnquota. Può assumere i seguenti
valori
-
-F format_name
specifica il formato del quota: vfsold (versione 1), vfsv0 (versione
2), rpc (quota su NFS) o xfs (quota su filesystem XFS);
-
-q filename
specifica il file contenente la descrizione dei filesystem (default
/etc/quotatab);
-
-c filename
specifica il file contenente la configurazione di warnquota (default
/etc/warnquota.conf);
_______________________________________________________________