Ricerca nel sito web

Come impostare le quote del file system (disco) su Ubuntu


La quota del file system è una funzionalità integrata standard presente nel kernel Linux. Le quote determinano la quantità di spazio che un file dovrebbe avere per supportare le attività dell'utente. Le quote disco limitano inoltre il numero di file che un utente può creare nel sistema.

I filesystem che supportano il sistema di quote includono xfs, ext2, ext4 ed ext3 per citarne alcuni. L'assegnazione delle quote è specifica per il filesystem e per ciascun utente. Questo articolo contiene tutto ciò che devi sapere su come lavorare con il filesystem quota in un ambiente Ubuntu multiutente.

Il presupposto qui è che stai utilizzando il sistema Ubuntu con un utente (tecmint) dotato dei diritti sudo. Le idee condivise qui possono funzionare su qualsiasi distribuzione Linux purché si utilizzi la giusta tecnica di implementazione.

Passaggio 1: installazione di Quota in Ubuntu

Affinché le quote siano pronte e utilizzabili, installa lo strumento da riga di comando quota utilizzando il comando apt, ma prima devi aggiornare i pacchetti software di sistema.

sudo apt update

Ora usa il seguente comando per installare il pacchetto quota su Ubuntu.

sudo apt install quota

Premi Y, quindi INVIO per avviare il processo di installazione.

Conferma la versione di installazione eseguendo il comando seguente. Il numero della tua versione potrebbe differire da quello visualizzato di seguito.

quota --version

Passaggio 2: installazione del modulo per Quota Kernel

Per coloro che utilizzano un sistema virtuale basato su cloud, nell'installazione Ubuntu predefinita potrebbero mancare i moduli del kernel che supportano l'uso della quota. Devi confermare utilizzando lo strumento di ricerca e assicurarti che i due moduli, quota_v1 e quota _v2, siano all'interno della directory /lib/modules.

find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

Questo dovrebbe essere il risultato del comando precedente.

Non preoccuparti delle versioni del kernel finché sono presenti i due moduli. Se non lo trovi, utilizza il comando seguente per installare i moduli del kernel quota come mostrato.

sudo apt install linux-image-extra-virtual

Riceverai i moduli giusti di cui hai bisogno per l'implementazione delle quote.

Passaggio 3: aggiornamento delle opzioni di montaggio del file system

Affinché le quote siano attive su un sistema specifico, è necessario montarlo con le relative opzioni di quota. Puoi farlo aggiornando la voce del file system trovata nel file /etc/fstab.

sudo nano /etc/fstab

Dovresti essere pronto a modificare il file in modo appropriato. La differenza tra un file fstab e uno desktop è la differenza nel modo in cui / o file system root rappresenta l'intero spazio su disco. Sostituisci la riga (/) che punta al sistema root utilizzando le righe seguenti.

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

Le righe cambieranno per consentire l'accesso a userquota e grpquota. Puoi lasciarne uno che non fa parte della configurazione finale. Se fstab avesse alcune opzioni, aggiungi le nuove opzioni alla fine della riga. Mentre aggiungi, separa i nuovi elementi con una virgola ma senza spazi tra loro.

Rimontare il filesystem affinché le modifiche abbiano effetto.

sudo mount -o remount /

NOTA: conferma che non esistono spazi tra le opzioni in /etc/fstab per evitare tali errori.

mount: /etc/fstab: parse error

La verifica dell'utilizzo delle nuove opzioni durante il montaggio del filesystem nel file /proc/mounts viene effettuata tramite grep. Il comando mostra la voce del file system root nel file.

sudo cat /proc/mounts | grep ' / '

Dall'output puoi vedere le due opzioni che abbiamo impostato. È ora di attivare il sistema delle quote.

Passaggio 4: abilitazione delle quote disco su Ubuntu

Per prima cosa devi eseguire il comando quotacheck.

sudo quotacheck -ugm /

Il comando crea due file, un utente quota e un gruppo quota che contengono informazioni sul limite e sull'utilizzo del filesystem. Questi file devono essere presenti prima di iniziare a utilizzare la quota.

Ecco una definizione dei parametri:

  • -u: simboleggia che verrà creato un file di quote basato sull'utente.
  • -g: indica che verrà creato un file di quote basato sul gruppo.
  • -m: disabilita il rimontaggio del file system in sola lettura fornendo allo stesso tempo risultati accurati in un ambiente in cui l'utente continua a salvare i file. L'opzione m non è obbligatoria durante la configurazione.

Quando non è necessario abilitare l'uso delle quote in base all'utente o al gruppo, non è necessario eseguire l'opzione quotacheck. Confermalo elencando la directory root usando il comando ls.

ls /
Uscita del campione
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

Se non si includono i parametri u e g nel comando quotacheck, mancheranno i file corrispondenti.

Ora siamo pronti per attivare la quota sul filesystem (/) root con il seguente comando.

sudo quotaon -v /

Passaggio 5: configurare le quote per un singolo utente

Possiamo utilizzare i comandi edquota e setquota per impostarli per utenti o gruppi.

Utilizzando edquota

I comandi edquota modificano le quote, ad esempio possiamo modificare una quota appartenente a un utente tecmint utilizzando:

sudo edquota -u tecmint

L'uso dell'opzione -u specifica che la quota appartiene a un utente. Utilizza l'opzione -g se devi modificare una quota che appartiene a un gruppo. Il comando aprirà un file utilizzando l'editor di testo di tua scelta.

L'output elenca il nome utente, l'uid, il filesystem con quote attive e l'utilizzo di blocchi e inode. Una quota basata sugli inode limita il numero di file e directory che gli utenti possono creare indipendentemente dalla dimensione utilizzata sul disco. La maggior parte degli amministratori preferisce la quota basata su blocchi che controlla lo spazio su disco.

NOTA: l'uso dei blocchi non mostra come può cambiare a seconda di diversi fattori come lo strumento da riga di comando che li segnala. All'interno delle quote di contesto su Ubuntu, possiamo supporre che un singolo blocco equivalga a un kilobyte di spazio su disco.

Utilizzando la riga di comando sopra, l'utente utilizzerà 2032 blocchi, che equivalgono a 2032 KB di spazio su /dev/sda1. Il valore 0 disabilita sia i limiti soft che quelli hard.

Ogni set di quote consente di impostare limiti flessibili e rigidi. Un utente che supera il limite flessibile potrebbe aver superato la sua quota, ma non gli è impedito di utilizzare più spazi o inode. L'utente in questo caso ha sette giorni per riscattare il proprio spazio con limite flessibile, in caso contrario ciò rende difficile il salvataggio o la creazione di file.

Un limite rigido significa che la creazione di nuovi blocchi o inode si interrompe nel momento in cui raggiungi il limite. Gli utenti segnaleranno la visualizzazione di avvisi o errori durante l'esecuzione di attività regolari.

Possiamo aggiornare la quota di blocco di tecmint per avere un limite flessibile di 100 MB e di 110 MB per il limite rigido.

Dopo la modifica, chiudi il file e controlla le nuove impostazioni del limite della quota utente utilizzando il comando quota.

sudo quota -vs tecmint

NOTA: dando agli utenti l'opportunità di analizzare le proprie quote senza invocare il comando sudo, è necessario concedere loro l'accesso per leggere i file delle quote durante la fase di creazione nel passaggio quattro. Un modo semplice per farlo è creare un gruppo di utenti e concedere l'accesso al gruppo in modo da potervi aggiungere utenti.

Utilizzando setquota

setquota aggiorna le informazioni sulla quota utilizzando un singolo comando senza alcuna configurazione interattiva. Il comando richiede il nome utente e l'impostazione dei limiti soft e hard che verranno utilizzati dal blocco e dall'inode. Sarà inoltre necessario dichiarare il file system che verrà utilizzato dalla quota.

sudo setquota -u tecmint 200M 220M 0 0 /

Il comando raddoppia i limiti di quota basati su blocco portandoli a 200 megabyte e 220 megabyte. I due 0 0 indicano che sia i limiti rigidi che quelli flessibili non sono impostati, è un requisito anche quando non è necessario impostare quote basate su inode.

Come al solito, usa il comando quota per verificare i tuoi progressi.

sudo quota -vs tecmint

Passaggio 6: generazione di report sulle quote

La generazione di un report sulle quote deve indicare l'utilizzo da parte di tutti gli utenti. Viene utilizzato il comando repquota.

sudo repquota -s /

L'output sopra è un report sul filesystem root /. Il -s indica a repquota di fornire risultati in un formato leggibile dall'uomo.

Il tempo di tolleranza predefinito per il blocco è 7 giorni. La colonna di tolleranza avvisa l'utente del numero di giorni prima del rifiuto di accesso al disco delle risorse.

Passaggio 7: impostare i periodi di tolleranza della configurazione

Il periodo di grazia è il tempo in cui un utente ottiene il permesso di lavorare oltre i tempi predefiniti.

sudo setquota -t 864000 864000 /

Il comando indica al blocco e all'inode di avere un periodo di grazia di 864000 secondi, equivalenti a 10 giorni. L'impostazione interesserà tutti gli utenti, pertanto i valori dovranno essere impostati anche quando non verranno utilizzati blocchi e inode. Il valore temporale deve essere espresso in secondi.

Conferma le modifiche e verifica se hanno avuto effetto utilizzando il comando:

sudo repquota -s /

Messaggi di errori comuni

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

L'errore riportato sopra è comune se provi ad attivare le quote utilizzando il comando qoutaon prima di tentare di controllare lo stato di una quota utilizzando il comando quotacheck.

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

Questo errore dice all'amministratore che il kernel non lo supporta o che potresti avere la versione sbagliata sulla macchina (abbiamo quota_v1 e quota_v2). Per Ubuntu tali errori sono tipici su un server virtuale basato su cloud.

Correggi l'errore installando il pacchetto Linux-image-extra-virtual utilizzando il comando apt.

quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

L'errore è notevole quando l'utente corrente non dispone dell'autorizzazione per leggere i file di quota. In qualità di amministratore, devi solo apportare le modifiche corrette alle autorizzazioni o utilizzare sudo quando devi accedere ai file in un sistema di quote o in un file.

Conclusione

All'inizio dell'articolo, abbiamo iniziato con gli strumenti da riga di comando quota e la verifica della versione del kernel e siamo andati oltre spiegando come impostare una quota basata su blocchi per un singolo utente e come generare un rapporto sull'utilizzo della quota del file system.

L'articolo copre anche gli errori comuni e come evitarli utilizzando un pacchetto aggiuntivo o verificando la versione del kernel sul tuo sistema.