Configuración de cuotas de uso de espacio en Linux

En determinados casos puede que nos interese acotar el espacio en disco que utiliza un usuario o un grupo de usuarios.

Suele ser frecuente que un usuario de FTP no pueda utilizar más de un determinado espacio para que un solo usuario no pueda agotar todo el espacio de disco.

También es útil en soluciones de almacenamiento de pago.

Instalación de «quota»

Configurar cuotas de almacenamiento de disco en Linux es muy sencillo. Tan solo hay que instalar el programa «quota». En RedHat sería:

yum install quota

Configuración del fichero fstab con cuotas

Una vez instalado el producto, configuraremos en el fstab las opciones de montaje de cuotas. Ejemplo:

# grep test /etc/fstab
/dev/mapper/vgtest-lvtest /test ext4 defaults,usrquota,grpquota 0 0

Configuración de cuotas para usuarios y grupos de Linux

Para configurar las cuotas de almacenamiento en usuarios y grupos, generaremos los ficheros aquota.user y aquota.group:

# quotacheck -F vfsv0 -c /test

fed20dav02 ~]# ll /test
total 26
-rw——-. 1 root root 6144 Oct 7 11:28 aquota.group
-rw——-. 1 root root 6144 Oct 7 11:28 aquota.user
drwx——. 2 ftptest ftp 12288 Oct 7 11:02 lost+found
#

Comprobación de las cuotas configuradas

Chequeamos la estructura de cuotas:

# quotacheck -avugm -F vfsv0
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/mapper/vgtest-lvtest [/test] done
quotacheck: Checked 2 directories and 2 files
#

Activación de las cuotas

Y, si está todo bien, las activamos:

# quotaon -avug
/dev/mapper/vgtest-lvtest [/test]: group quotas turned on
/dev/mapper/vgtest-lvtest [/test]: user quotas turned on
#

Configuración de las cuotas por espacio de uso

Las cuotas se pueden configurar por uso de bloques, espacio en MB e inodos. En el siguiente ejemplo, configuramos block-softlimit block-hardlimit inode-softlimit inode-hardlimit:

# setquota -u ftptest 100M 200M 1000 2000 -a /test

Por defecto, el tamaño se expresa en KB (K), pero en el ejemplo anterior hemos utilizado «M» para MB.

A continuación, revisamos las cuotas configuradas:

# repquota -a
*** Report for user quotas on device /dev/mapper/vgtest-lvtest
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
ftptest — 13 102400 204800 2 1000 2000

#

Testeo de las cuotas

Finalmente, la prueba de fuego: Vamos a intentar escribir un fichero de 1GB cuando la cuota la tenemos limitada a 200MB:

[root@fed20dav02 ~]# su ftptest
bash-4.2$ cd /test
bash-4.2$ dd if=/dev/zero of=/test/test.txt bs=8192 count=131072
dd: error writing ‘/test/test.txt’: Disk quota exceeded
25599+0 records in
25598+0 records out
209698816 bytes (210 MB) copied, 1.02499 s, 205 MB/s
bash-4.2$

bash-4.2$ ls -lah test.txt
-rw-r–r–. 1 ftptest grftp 200M Oct 7 11:45 test.txt
bash-4.2$

Te puede interesar

Crear usuarios y grupos de Linux, modificarlos o eliminarlos

COMPÁRTEME

Deja un comentario