Linux: ¿cuota por directorio?


21

Tengo los siguientes escenarios:

Partición única montada como /, con mucho espacio en disco.

Hay una variedad de directorios (/ pg / tbs1, / pg / tbs2, / pg / tbs3, etc.), y me gustaría limitar el tamaño total de estos directorios.

Una opción es hacer algunos archivos grandes, y luego crearlos en mkfs, y montarlos sobre loopback, y luego establecer la cuota, pero esto hace que la expansión sea un poco problemática.

¿Hay alguna otra forma de hacer que la cuota funcione por directorio?

linux  quota 

El montaje de archivos a través de loopback realmente no presenta un problema de expansión. Simplemente extendería el archivo subyacente y luego lo usaría resize2fspara hacer crecer el sistema de archivos. Creo que usar LVM es una mejor solución, pero la que propusiste no tiene las limitaciones que crees que tiene.
Larsks

también btrfs y zfs
hanshenrik

Respuestas:


17

Si se ve obligado a usar ext3, entonces usar LVM es probablemente su mejor solución. Cree un nuevo sistema de archivos por proyecto. Eso se vería así:

# 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

Hacer crecer los sistemas de archivos del proyecto es fácil:

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

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

6

Si no confía en los permisos de grupo, puede usar un grupo UNIX diferente para cada "directorio de cuota", luego establecer un bit sgid en cada directorio (de modo que los archivos y directorios creados pertenecerán al grupo del directorio en lugar del grupo primario) del usuario creador) y use cuotas de grupo.


5

Sí. Mire el sistema de archivos XFS y la cuota del proyecto. Otro sistema de archivos no ofrece esta característica.


Lamentablemente, no puedo cambiar fs subyacentes. Pero es bueno saber que XFS tiene esta capacidad.

5

De hecho, he querido hacer esto por un tiempo porque no quería tener que hacer usuarios del sistema para todos mis usuarios de correo virtual. Los sistemas de archivos ZFS con cuotas serían excelentes, y zfs-fuse progresa todos los días, pero lo que quería era una solución muy ligera. Finalmente, decidí escribir un sistema de archivos FUSE que pudiera montar como una capa sobre otro sistema de archivos (cualquier directorio base funcionará en realidad). Tiene una utilidad para administrar cuotas con la que se puede programar fácilmente y dado que los valores de las cuotas se almacenan simplemente como xattrs en directorios o archivos, un punto de montaje puede proporcionar soporte para un número arbitrario de cuotas.

Lo he estado probando en un servidor de correo durante un tiempo y recientemente decidí que había llegado a la adolescencia y que estaba listo para lanzarse a la naturaleza. Si tiene curiosidad, puede consultarlo en http://code.google.com/p/fusequota/ . Agradecería mucho cualquier comentario.



El espejo Git no me funcionó. Sin errores, pero puedo exceder la cuota (en ext4 con las opciones de montaje rw, relatime, data = ordenado)
timdiels

3

El nuevo sistema de archivos para cada carpeta compartida es excesivo en mi humilde opinión. Simplemente cree un nuevo grupo para cada carpeta compartida, establezca el grupo propietario de la carpeta compartida en este grupo, establezca un bit fijo en el grupo (para que cada nuevo archivo y directorio tenga este grupo como propietario) y para los permisos en archivos y carpetas use listas acl. Luego establezca cuotas para estos grupos.


1

No conozco ningún método para establecer comillas por directorio.

Pero a lo largo de su idea de crear sistemas de archivos con un tamaño limitado. Este podría ser un lugar donde lvm sería una buena solución.

Puede hacer una copia de seguridad / reinstalar y usar lvm , solo asignando la cantidad mínima de espacio necesaria a sus volúmenes lógicos. Es muy fácil extender volúmenes lógicos lvm .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.