Linux - quota per directory?


21

Ho i seguenti scenari:

Partizione singola montata come /, con molto spazio su disco.

C'è una gamma di directory (/ pg / tbs1, / pg / tbs2, / pg / tbs3 e così via) e vorrei limitare la dimensione totale di queste directory.

Un'opzione è quella di creare alcuni file di grandi dimensioni, quindi mkfs e montarli su loopback, quindi impostare la quota, ma ciò rende l'espansione un po 'problematica.

Esiste un altro modo per far funzionare la quota per directory?

linux  quota 

Il montaggio di file tramite loopback non presenta realmente un problema di espansione. Dovresti semplicemente estendere il file sottostante e quindi utilizzarlo resize2fsper far crescere il filesystem. Penso che usare LVM sia una soluzione migliore, ma quello che hai proposto non ha i limiti che pensi che abbia.
Larks

anche btrfs e zfs
hanshenrik

Risposte:


17

Se sei costretto a usare ext3, allora usare LVM è probabilmente la soluzione migliore. Crea un nuovo filesystem per progetto. Sarebbe simile a questo:

# Create a 10g filesystem for "project1" in volume group "vg0"
lvcreate -L 10g -n project1 vg0

# Create an ext3 filesystem.
mke2fs -j /dev/vg0/project1

# Mount it (obviously you would want this in /etc/fstab)
mount /dev/vg0/project1 /projects/project1

Crescere i filesystem di progetto è facile:

# Add 2GB to the volume.
lvextend -L +2g /dev/vg0/project1

# Grow the filesystem.
resize2fs /dev/vg0/project1

6

Se non si fa affidamento su autorizzazioni di gruppo, è possibile utilizzare un gruppo UNIX diverso per ciascuna "directory quota", quindi impostare il bit sgid su ciascuna directory (quindi i file e le directory creati appariranno al gruppo della directory anziché al gruppo primario dell'utente creatore) e utilizzare le quote di gruppo.


5

Sì. Guarda il filesystem XFS e la quota del progetto. Altri filesystem non offrono questa funzione.


Sfortunatamente non posso cambiare fs sottostanti. Ma è bene sapere che XFS ha questa capacità.

5

In realtà volevo farlo da un po 'perché non volevo creare utenti di sistema per tutti i miei utenti di posta virtuale. I filesystem ZFS con quote sarebbero fantastici e zfs-fuse fa progressi ogni giorno, ma quello che volevo era una soluzione molto leggera. Alla fine ho deciso di scrivere un filesystem FUSE che potrei montare come layer su un altro filesystem (qualsiasi directory di base funzionerà effettivamente). Ha un'utilità per la gestione di quote che possono essere copiate facilmente e poiché i valori delle quote sono semplicemente memorizzati come xattrs su directory o file, un mountpoint può fornire supporto per un numero arbitrario di quote.

L'ho provato su un server di posta per un po 'e recentemente ho deciso che aveva raggiunto l'adolescenza ed era pronto per essere rilasciato in libertà. Se sei curioso, puoi verificarlo su http://code.google.com/p/fusequota/ . Gradirei molto qualsiasi feedback.



Lo specchio Git non ha funzionato per me. Nessun errore, ma posso superare la quota (su ext4 con le opzioni di mount rw, relatime, data = ordinate)
timdiels

3

Il nuovo filesystem per ogni cartella condivisa è l'overkill di IMHO. Basta creare un nuovo gruppo per ogni cartella condivisa, impostare il gruppo proprietario della cartella condivisa su questo gruppo, impostare un bit appiccicoso su gruppo (in modo che ogni nuovo file e directory abbia questo gruppo come proprietario) e per le autorizzazioni su file e cartelle utilizzare elenchi acl. Quindi impostare le quote per questi gruppi.


1

Non sono a conoscenza di alcun metodo per impostare le virgolette per directory.

Ma lungo la tua idea di creare file system con dimensioni limitate. Questo potrebbe essere un posto dove lvm sarebbe una buona soluzione.

È possibile eseguire il backup / reinstallare e utilizzare lvm , allocando solo la quantità minima di spazio necessario per i volumi logici. È molto facile estendere i volumi logici di lvm .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.