From af288d909f7313db7ba2c8092a219695de34821d Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Tue, 16 Aug 2011 17:35:54 +0000 Subject: [PATCH] Ancora materiale sulle quote --- filedir.tex | 97 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 85 insertions(+), 12 deletions(-) diff --git a/filedir.tex b/filedir.tex index da40afb..18bbdc0 100644 --- a/filedir.tex +++ b/filedir.tex @@ -4097,7 +4097,6 @@ ACL di default associata a \func{path}.\footnote{questo però è una estensione \bodydesc{La funzione restituisce $0$ in caso di successo e $-1$ in caso di errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} - \item[\errcode{EBADF}]. \item[\errcode{EINVAL}] o \param{acl} non è una ACL valida, o \param{type} ha in valore non corretto. \item[\errcode{ENOSPC}] non c'è spazio disco sufficiente per contenere i @@ -4158,20 +4157,94 @@ massimi al consumo delle risorse di un filesystem (spazio disco e ha senso solo per i filesystem su cui si mantengono i dati degli utenti\footnote{in genere la si attiva sul filesystem che contiene le \textit{home} degli utenti, dato che non avrebbe senso per i file di sistema - che appartengono all'amministratore} essa deve essere abilitata + che in genere appartengono all'amministratore.} essa deve essere abilitata esplicitamente, questo si fa tramite due distinte opzioni di montaggio, \texttt{usrquota} e \texttt{grpquota} che la attivano rispettivamente per gli utenti e per i gruppi, cosa che consente di abilitare solo quelle che -interessano veramente. - -Il meccanismo prevede che per ciascun filesystem che supporta le quote (i vari -\textit{extN}, \textit{btrfs}, \textit{XFS}, \textit{JFS}, \textit{ReiserFS}) -il kernel provveda a mantenere i dati relativi al consumo delle risorse in due -file riservati,\footnote{la cosa vale per tutti i fileystem tranne - \textit{XFS} che mantiene i dati internamente; con la versione 2 del - supporto delle quote, l'unica rimasta in uso, questi file sono - \texttt{aquota.user} e \texttt{aquota.group} e si trovano nella directory - radice del filesytem su cui si sono attivate le quote.} e a +interessano veramente. + +Il meccanismo delle quote prevede che per ciascun filesystem che le supporta +(i vari \textit{extN}, \textit{btrfs}, \textit{XFS}, \textit{JFS}, +\textit{ReiserFS}) il kernel provveda sia a mantenere aggiornati i dati +relativi al consumo delle risorse da parte di utenti e/o gruppi che a far +rispettare i limiti imposti dal sistema con la generazione di un errore di +\errval{EDQUOT} per tutte le operazioni sui file che porterebbero ad un +superamento degli stessi. + +Per il mantenimento dei dati di consumo delle risorse vengono usati due file +riservati (uno per le quote utente e l'altro per le quote gruppo) nella +directory radice del filesytem su cui si sono attivate le quote;\footnote{la + cosa vale per tutti i fileystem tranne \textit{XFS} che mantiene i dati + internamente.} con la versione 2 del supporto delle quote, l'unica rimasta +in uso, questi file sono \texttt{aquota.user} e \texttt{aquota.group}, in +precedenza erano \texttt{quota.user} e \texttt{quota.group}. Dato che i file +vengono aggiornati soltanto se il filesystem è stato montato con il supporto +delle quote, se si abilita questo in un secondo tempo (o se si eseguono +operazioni sul filesystem senza averlo abilitato) i dati contenuti possono non +corrispondere esattamente allo stato corrente del consumo delle risorse; per +questo in genere prima di montare un filesystem su cui sono abilitate le quote +viene utilizzato il comando \cmd{quotacheck} per verificare e aggiornare i +dati. + +Le restrizioni sul consumo delle risorse prevedono due limiti, il primo viene +detto \textit{soft limit} e può essere superato per brevi periodi di tempo, il +secondo viene detto \textit{hard limit} non può mai essere superato. Il +periodo di tempo per cui è possibile superare il \textit{soft limit} è detto +``\textsl{periodo di grazia}'' (\textit{grace period}), passato questo tempo +il passaggio del \textit{soft limit} viene trattato allo stesso modo +dell'\textit{hard limit}. Questi limiti riguardano separatamente sia lo +spazio disco (i blocchi) che il numero di file (gli \textit{inode}) e devono +pertanto essere specificati per entrambe le risorse. + +La funzione che consente di controllare tutti i vari aspetti della gestione +delle quote è \funcd{quotactl}, ed il suo prototipo è: +\begin{functions} + \headdecl{sys/types.h} + \headdecl{sys/quota.h} + + \funcdecl{quotactl(int cmd, const char *special, int id, caddr\_t addr)} + + Esegue una operazione di controllo sulle quote disco. + + \bodydesc{La funzione restituisce $0$ in caso di successo e $-1$ in caso di + errore, nel qual caso \var{errno} assumerà uno dei valori: + \begin{errlist} + \item[\errcode{EACCES}] il file delle quote non è un file normale. + \item[\errcode{EBUSY}] si è richiesto \const{Q\_QUOTAON} ma le quote sono + già attive. + \item[\errcode{EFAULT}] l'indirizzo \param{addr} non è valido. + \item[\errcode{EIO}] errore di lettura/scrittura sul file delle quote. + \item[\errcode{EMFILE}] non si può aprire il file delle quote avando + superato il limite sul numero di file aperti nel sistema. + \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido, + o il dispositivo \param{special} non esiste. + \item[\errcode{ENODEV}] \param{special} non corrisponde ad un \textit{mount + point} attivo. + \item[\errcode{ENOPKG}] il kernel è stato compilato senza supporto per le + quote. + \item[\errcode{ENOTBLK}] \param{special} non è un dispositivo a blocchi. + \item[\errcode{EPERM}] il . + \item[\errcode{ESRCH}] è stato richiesto uno fra \const{Q\_GETQUOTA}, + \const{Q\_SETQUOTA}, \const{Q\_SETUSE}, \const{Q\_SETQLIM} per un + filesystem senza quote attivate. + \end{errlist} +} +\end{functions} + +La funzione richiede che si indichi il filesystem sul quale si vuole operare +tramite il secondo argomento \param{special} che deve indicare il nome del +file di dispositivo ad esso associato, la funzione richiede che il filesystem +sia montato con il supporto per le quote. Il terzo argomento \param{id} +indica, per le operazioni che lo richiedono l'utente o il gruppo (specificati +rispettivamente per \acr{uid} e \acr{gid}) su cui si vuole operare, infine +l'ultimo argomento specifica l'indirizzo di una struttura dati che dipende di +nuovo dal comando. + + +Il funzionamento di \func{quotactl} è controllato dal valore del primo +argomento, che indica l'operazione che si vuole eseguire e se la si vuole +eseguire per le quote disco o le quote gruppo (posto che siano entrm + % TODO trattare quote disco -- 2.30.2