Project

General

Profile

Quota su disco

Documentazione obsoleta: fuss-server crea autonomamente le quote quando possibile.

In questa guida si assume che si vogliano attivare le quote disco su un filesystem già presente nella macchina (assumeremo che si tratti di /home su /dev/sdb1) partendo da una situazione in cui queste non sono attive. Si assumerà anche l'uso di ext4 come filesystem, che è il default di Debian e del fuss-server.

Metodo tradizionale

Per abilitare le quote disco occorre anzitutto scegliere se si vogliono usare solo le quote utenti, o sia le quote utenti che le quote gruppo. Nel primo caso occorrerà inserire solo l'opzione usrquota nelle opzioni di montaggio del filesystem, nel secondo occorrerà aggiungere anche l'opzione grpquota (vedi man 8 mount).

Con il supporto tradizionale delle quote non si ha il vantaggio delle journaled quota che consentono di evitare il ricalcolo del quotacheck in caso di spegnimento senza corretto shutdown. Per attivarle occorrerà inserire in /etc/fstab nelle opzioni del filesystem una riga del tipo:

/dev/sdb1   /home    ext4  defaults,usrquota,grpquota      0       2

Nuova configurazione

Con le versioni più recenti del kernel anche le informazioni delle quote disco possono essere salvate sul giornale del filesystem per non perdere informazioni in caso di crash. Se si vogliono usare le quote abilitando questa funzionalità (a occorrerà inserire invece le opzioni usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0), vale a dire sarà necessario inserire on /etc/fstab nelle opzioni del filesystem una riga del tipo:

/dev/sdb1  /home  ext4  defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0  0       2

Passi successivi

Una volta modificato /etc/fstab sarà necessario eseguire i seguenti passi:

  • rimontare il filesystem per fargli prendere le opzioni modificate con il comando:
    mount -o remount /home/
    
  • eseguire il comando:
    touch /home/quota.user 
    touch /home/quota.group 
    chmod 600 /home/quota.user 
    chmod 600 /home/quota.group
    quotacheck -vcgum /home/
    
  • attendere la fine del processo di computo delle quote che, a seconda della quantità di file presenti, può durare anche alcuni minuti; inoltre a seconda del tipo di configurazione potrà dare diversi messaggi di avviso, da ignorare
  • infine attivare le quote con il comando:
    quotaon -avug 
    

un riavvio risulterà comunque utile per avere una ulteriore ricostruzione più precisa delle quote, dato che in caso di attività degli utenti durante l'esecuzione di quotacheck il calcolo potrebbe risultare leggermente falsato.

Per verificare manualmente il funzionamento delle quote ed ottenerne un rapporto generale eseguire il comando (il primo stampa le quote utente, il secondo le quote gruppo):

repquota /home; repquota -g /home

Configurazione manuale delle quote

Nel caso si volesse farlo con uno script perché magari gli utenti sono tanti, si può fare nel seguente modo:

edquota -f /home UTENTE

per configurare la quota ad un utente (uno a caso), oppure configurare, per esempio, il softlimit a 200 mb e l'_hardlimit_ a 250 mb per l'utente con seguente comando:

quotatool -u UTENTE -bq 200M -l '250 Mb' /home

e infine per copiare le impostazioni a tutti gli altri utenti:

edquota -f /home -p UTENTE $(ldapsearch -x |grep uid:|grep -v \$$ |cut -f 2 -d " ")

La sintassi è ben illustrata dalla manpage edquota(8); l'espressione

ldapsearch -x |grep uid:|grep -v \$$ |cut -f 2 -d " " 

viene sostituita dal risultato dell'elaborazione dei comandi, generando la lista completa degli utenti del server:

  • ldapsearch -x manda su stdout l'albero ldap
  • grep uid: isola le righe con l'attributo che ci interessa
  • grep -v \$$ elimina (-v) le righe relative agli utenti macchina
  • cut -f 2 -d " " isola la parte della riga contenente lo username

Infine, se vogliamo modificare il "grace time":

edquota -t