Administrar la cuota de disco en los sistemas de archivos es una de las tareas operativas diarias más comunes para los administradores de Linux. En este artículo, demostraremos cómo configurar la cuota de disco en el sistema de archivos/partición XFS en servidores Linux como CentOS, RHEL, ubuntu y Debian. Aquí la cuota de disco significa implementar un límite en el uso del disco y el uso de archivos o inodos.
La cuota de disco en el sistema de archivos XFS se implementa de la siguiente manera:
- Cuota de usuario
- Cuota de grupo
- Cuota de proyecto (o Cuota de directorio)
Para configurar la cuota de disco en el sistema de archivos XFS, primero debemos habilitar la cuota usando las siguientes opciones de montaje:
- uquota: habilite la cuota de usuario y también haga cumplir los límites de uso.
- uqnoenforce: habilite la cuota de usuario y el uso de informes, pero no imponga límites de uso.
- gcuota: habilite la cuota de grupo y también haga cumplir los límites de uso.
- gqnoenforce: habilite la cuota de grupo y el uso de informes, pero no imponga límites de uso.
- prjcuota / pcuota: habilite la cuota del proyecto y haga cumplir los límites de uso.
- pqnohacer cumplir: habilite la cuota del proyecto y el uso de informes, pero no imponga límites de uso.
En el artículo, implementaremos la cuota de disco de usuario y grupo en la partición /home y, aparte de esto, también veremos cómo configurar la cuota de inodo en el sistema de archivos /home y la cuota del proyecto en el sistema de archivos /var.
[[email protected] ~]# df -Th /home /var Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/Vol-home xfs 16G 33M 16G 1% /home /dev/mapper/Vol-var xfs 18G 87M 18G 1% /var [[email protected] ~]#
Habilitar cuota de usuario y grupo en /home
Desmonte la partición /home y luego edite el archivo /etc/fstab,
[[email protected] ~]# umount /home/
Agregue uquota y gquota después de la palabra clave predeterminada para la partición /home en el archivo /etc/fstab, el ejemplo se muestra a continuación
[[email protected] ~]# vi /etc/fstab …………………………… /dev/mapper/Vol-home /home xfs defaults,uquota,gquota 0 0 ……………………………
Ahora monte la partición /home usando a continuación “montar -a” comando,
[[email protected] ~]# mount -a [[email protected] ~]#
Verifique si la cuota está habilitada en /home o no,
[[email protected] ~]# mount | grep /home /dev/mapper/Vol-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota) [[email protected] ~]#
Nota : Mientras desmonta la partición /home si obtiene /home está ocupado, edite el archivo fstab, agregue las palabras clave uquota y gquota después de la palabra clave predeterminada para la partición /home y luego reinicie su sistema. Después de reiniciar, veremos que la cuota está habilitada en /home.
La cuota en el sistema de archivos XFS es administrada por la herramienta de línea de comando llamada “xfs_quota“. xfs_quota funciona en dos modos:
- Modo básico – Para este modo, simplemente escriba xfs_quota, luego ingresará al modo básico donde puede imprimir el uso del disco de todo el sistema de archivos y la cuota del disco para los usuarios, el ejemplo se muestra a continuación
- Modo experto – Este modo se invoca usando la opción “-x” en el comando “xfs_quota”, como sugiere el nombre, este modo se usa para configurar la cuota de disco y archivo para usuarios locales en el sistema de archivos xfs.
Para imprimir la cuota de disco en cualquier sistema de archivos, digamos /home, use el siguiente comando,
[[email protected] ~]# xfs_quota -x -c 'report -h' /home User quota on /home (/dev/mapper/Vol-home) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] pkumar 12K 0 0 00 [------] Group quota on /home (/dev/mapper/Vol-home) Blocks Group ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] pkumar 12K 0 0 00 [------] [[email protected] ~]#
Configurar cuota de usuario
Supongamos que tenemos un usuario llamado «pkumar», configuremos la cuota de disco y archivo en su directorio de inicio usando el comando «xfs_quota»
[[email protected] ~]# xfs_quota -x -c 'limit bsoft=4250m bhard=4550m pkumar' /home
En el comando anterior, suave es el límite flexible de bloques en MB y bhard es un límite máximo de bloque en MB, limit es una palabra clave para implementar un límite de disco o archivo en un sistema de archivos para un usuario específico.
Establezcamos un límite de archivo o inodo para el usuario pkumar en su directorio de inicio,
[[email protected] ~]# xfs_quota -x -c 'limit isoft=400 ihard=500 pkumar' /home
En el comando anterior, isoft es inodo o límite flexible de archivo e ihard es inodo o límite rígido de archivo.
Tanto el límite de bloque (disco) como el límite de inodo (archivo) se pueden aplicar usando un solo comando, el ejemplo se muestra a continuación,
[email protected] ~]# xfs_quota -x -c 'limit bsoft=4250m bhard=4550m isoft=400 ihard=500 pkumar' /home [[email protected] ~]#
Ahora verifique si los límites de disco e inodo están implementados en el usuario de pkumar usando el siguiente comando xfs_quota,
[[email protected] ~]# xfs_quota -x -c "report -bih" /home
En el comando xfs_quota anterior, informe es una palabra clave, b es para informe de bloque, i es para informe de inodo y h es para mostrar informe en formato legible por humanos,
Configurar cuota de grupo
Supongamos que tenemos un grupo llamado «Ingeniería” y dos usuarios locales (shashi y rakesh) cuyo grupo secundario es ingeniería
Ahora establezca las siguientes cuotas:
- Límite de bloque suave: 6 GB (o 6144 MB),
- Límite de bloque duro: 8 GB (o 8192 MB),
- Límite de archivo suave: 1000
- Límite de archivos duros: 1200
Entonces, para configurar la cuota de disco y archivo en el grupo de ingeniería, use el comando debajo de xfs_quota,
[[email protected] ~]# xfs_quota -x -c 'limit -g bsoft=6144m bhard=8192m isoft=1000 ihard=1200 engineering' /home [[email protected] ~]#
Nota: En xfs_quota también podemos especificar el tamaño límite del bloque en GB como “bsoft=6g y bhard=8g”
Ahora verifique los detalles de la cuota para la ingeniería de grupo usando el siguiente comando,
[[email protected] ~]# xfs_quota -x -c "report -gbih" /home Group quota on /home (/dev/mapper/Vol-home) Blocks Inodes Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- root 0 0 0 00 [------] 3 0 0 00 [------] pkumar 12K 0 0 00 [------] 4 0 0 00 [------] engineering 0 6G 8G 00 [------] 0 1000 1.2k 00 [------] shashi 12K 0 0 00 [------] 4 0 0 00 [------] rakesh 12K 0 0 00 [------] 4 0 0 00 [------] [[email protected] ~]#
Como podemos ver arriba, la salida del comando, la cuota de disco y archivo se implementa en el grupo de ingeniería y en el grupo de ingeniería, tenemos dos usuarios.
Configurar cuota de proyecto (o directorio)
Supongamos que queremos establecer una cuota de proyecto o una cuota de directorio en «/var/registro“, Entonces primero habilite la cuota del proyecto (prjcuota) en el sistema de archivos /var, edite el archivo /etc/fstab, agregue “prjcuota” después de la palabra clave predeterminada para el sistema de archivos /var, el ejemplo se muestra a continuación,
[[email protected] ~]# vi /etc/fstab ………………………………. /dev/mapper/Vol-var /var xfs defaults,prjquota 0 0 …………………………………
Guardar y salir del archivo
Para que los cambios anteriores surtan efecto, debemos reiniciar nuestro sistema,
[[email protected] ~]# init 6
Después de reiniciar, podemos verificar si la cuota del proyecto está habilitada o no en el sistema de archivos /var usando el siguiente comando de montaje
[[email protected] ~]# mount | grep /var /dev/mapper/Vol-var on /var type xfs (rw,relatime,seclabel,attr2,inode64,prjquota) [[email protected] ~]#
Como podemos ver en el resultado anterior, la cuota del proyecto está habilitada ahora, por lo que para configurar el directorio de cuota /var/log, primero debemos definir la ruta del directorio y su identificación única en el archivo /etc/projects (en mi caso, estoy tomando 151 como identificación única para /var/log)
[[email protected] ~]# vi /etc/projects 51:/var/log
Guardar y salir del archivo
Ahora asocie la identificación anterior «151» a un proyecto llamado «Registros”, crea un archivo /etc/projid y añádele el siguiente contenido,
[[email protected] ~]# vi /etc/projid Logs:151
Guardar y salir del archivo
Inicialice el directorio del proyecto «Registros» usando el comando xfs_quota,
Sintaxis: # xfs_quota -x -c ‘proyecto -s nombre_proyecto’ directorio_proyecto
[[email protected] ~]# xfs_quota -x -c 'project -s Logs' /var Setting up project Logs (path /var/log)... Processed 1 (/etc/projects and cmdline) paths for project Logs with recursion depth infinite (-1). [[email protected] ~]#
Supongamos que queremos implementar un límite de disco duro de 10 GB y un límite flexible de 8 GB en el directorio /var/log, ejecute el siguiente comando xfs_quota,
[[email protected] ~]# xfs_quota -x -c 'limit -p bsoft=8g bhard=10g Logs' /var [[email protected] ~]#
En el comando anterior, hemos usado «-p» después de la palabra clave límite, lo que muestra que queremos implementar la cuota del proyecto
Use el siguiente comando xfs_quota para establecer el límite de archivo o inodo en el directorio /var/log
[[email protected] ~]# xfs_quota -x -c 'limit -p isoft=1800 ihard=2000 Logs' /var [[email protected] ~]#
Use el siguiente comando para imprimir los detalles de la cuota del proyecto
[[email protected] ~]# xfs_quota -xc 'report -pbih' /var Project quota on /var (/dev/mapper/Vol-var) Blocks Inodes Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- #0 137.6M 0 0 00 [------] 1.5k 0 0 00 [------] Logs 3.1M 8G 10G 00 [------] 33 1.8k 2k 00 [------] [[email protected] ~]#
Pruebe la cuota del proyecto creando archivos grandes en la carpeta /var/log y vea si puede cruzar el límite de bloque de 10 GB,
[[email protected] ~]# cd /var/log/ [[email protected] log]# dd if=/dev/zero of=big_file bs=1G count=9 9+0 records in 9+0 records out 9663676416 bytes (9.7 GB) copied, 37.8915 s, 255 MB/s [[email protected] log]# dd if=/dev/zero of=big_file2 bs=1G count=5 dd: error writing ‘big_file2’: No space left on device 1+0 records in 0+0 records out 1069219840 bytes (1.1 GB) copied, 3.90945 s, 273 MB/s [[email protected] log]#
El comando de error dd anterior confirma que la cuota del proyecto configurado funciona bien, también podemos confirmar lo mismo desde el comando xfs_quota,
Eso es todo de este tutorial, espero que estos pasos lo ayuden a comprender la cuota en el sistema de archivos XFS, comparta sus comentarios en la sección de comentarios a continuación.