Introducción
Las cuotas se utilizan para limitar la cantidad de espacio en disco que un usuario o grupo puede utilizar en un sistema de archivos. Sin tales límites, un usuario podría llenar el disco de la máquina y causar problemas a otros usuarios y servicios.
En este tutorial instalaremos herramientas de línea de comandos para crear e inspeccionar cuotas de disco, luego estableceremos una cuota para un usuario de ejemplo.
Prerrequisitos
Este tutorial asume que ha iniciado sesión en un servidor Debian 10, con un usuario no root habilitado para sudo, como se describe en Configuración inicial del servidor con Debian 10.
Las técnicas de este tutorial deberían funcionar generalmente en distribuciones de Linux distintas de Debian, pero pueden requerir alguna adaptación.
Para establecer y verificar cuotas, primero necesitamos instalar las herramientas de línea de comando de cuotas usando apt
. Actualicemos nuestra lista de paquetes, luego instalemos el paquete:
sudo apt update
sudo apt install quota
Puede verificar que las herramientas estén instaladas ejecutando el quota
comando y solicitando su información de versión:
quota --version
Output
Quota utilities version 4.04.
. . .
Está bien si su salida muestra un número de versión ligeramente diferente.
A continuación, actualizaremos el sistema de archivos mount
opciones para habilitar cuotas en nuestro raíz sistema de archivos.
Paso 2: actualización de las opciones de montaje del sistema de archivos
Para activar cuotas en un sistema de archivos en particular, necesitamos montarlo con algunas opciones relacionadas con las cuotas especificadas. Hacemos esto actualizando la entrada del sistema de archivos en el /etc/fstab
archivo de configuración. Abra ese archivo en su editor de texto favorito ahora:
sudo nano /etc/fstab
El contenido del archivo será similar al siguiente:
/ etc / fstab
# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e / ext4 errors=remount-ro 0 1
Esta fstab
El archivo es de un servidor virtual. Una computadora de escritorio o portátil probablemente tendrá un aspecto ligeramente diferente fstab
, pero en la mayoría de los casos tendrás un /
o raíz sistema de archivos que representa todo su espacio en disco.
Actualice la línea que apunta al sistema de archivos raíz agregando opciones de la siguiente manera:
/ etc / fstab
# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e / ext4 errors=remount-ro,usrquota,grpquota 0 1
Agregará las nuevas opciones al final de las opciones existentes, asegurándose de separarlas todas con una coma y sin espacios. El cambio anterior nos permitirá habilitar tanto al usuario- (usrquota
) y en grupo (grpquota
) cuotas en el sistema de archivos. Si solo necesita uno u otro, puede omitir la opción no utilizada.
Vuelva a montar el sistema de archivos para que las nuevas opciones surtan efecto:
sudo mount -o remount /
Nota: Asegúrese de que no haya espacios entre las opciones enumeradas en su /etc/fstab
expediente. Si pones un espacio después del ,
coma, verá un error como el siguiente:
Output
mount: /etc/fstab: parse error at line 2 -- ignored
Si ve este mensaje después de ejecutar la mount
comando, vuelva a abrir el fstab
archivo, corrija los errores y repita el mount
comando antes de continuar.
Podemos verificar que las nuevas opciones se usaron para montar el sistema de archivos mirando el /proc/mounts
expediente. Aquí usamos grep
para mostrar solo la entrada del sistema de archivos raíz en ese archivo:
cat /proc/mounts | grep ' / '
Output
/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota,errors=remount-ro,data=ordered 0 0
Tenga en cuenta las dos opciones que especificamos. Ahora que hemos instalado nuestras herramientas y actualizado nuestras opciones de sistema de archivos, podemos activar el sistema de cuotas.
Paso 3: Habilitación de cuotas
Antes de activar finalmente el sistema de cuotas, debemos ejecutar manualmente el quotacheck
comando una vez:
sudo quotacheck -ugm /
Este comando crea los archivos /aquota.user
y /aquota.group
. Estos archivos contienen información sobre los límites y el uso del sistema de archivos, y deben existir antes de activar la supervisión de cuotas. los quotacheck
los parámetros que hemos utilizado son:
u
: especifica que se debe crear un archivo de cuotas basado en el usuariog
: indica que se debe crear un archivo de cuotas basado en gruposm
: deshabilita volver a montar el sistema de archivos como de solo lectura mientras se realiza el recuento inicial de cuotas. Volver a montar el sistema de archivos como de solo lectura dará resultados más precisos en caso de que un usuario esté guardando archivos activamente durante el proceso, pero no es necesario durante esta configuración inicial.
Si no necesita habilitar las cuotas basadas en usuarios o grupos, puede omitir las quotacheck
opción.
Podemos verificar que se crearon los archivos apropiados enumerando el directorio raíz:
ls /
Output
aquota.group bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
aquota.user boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old
Si no incluyó el u
o g
opciones en el quotacheck
comando, faltará el archivo correspondiente. Ahora estamos listos para activar el sistema de cuotas:
sudo quotaon -v /
Output
/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned on
Nuestro servidor ahora está monitoreando y aplicando cuotas, ¡pero aún no hemos establecido ninguna! A continuación, estableceremos una cuota de disco para un solo usuario.
Paso 4: configuración de cuotas para un usuario
Hay algunas formas en las que podemos establecer cuotas para usuarios o grupos. Aquí, repasaremos cómo establecer cuotas tanto con edquota
y setquota
comandos.
Utilizando edquota
establecer una cuota de usuario
Usamos el edquota
comando para edeso cuotas. Editemos nuestro ejemplo sammy cuota de usuario:
sudo edquota -u sammy
los -u
La opción especifica que esta es una user
cuota que editaremos. Si, en su lugar, desea editar la cuota de un grupo, utilice la -g
opción en su lugar.
Esto abrirá un archivo en el editor de texto predeterminado, similar a cómo crontab -e
abre un archivo temporal para que lo edite. El archivo se verá similar a esto:
Disk quotas for user sammy (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 24 0 0 7 0 0
Esto enumera el nombre de usuario y uid
, los sistemas de archivos que tienen cuotas habilitadas en ellos, y el bloquear– y inodo-Uso y límites basados en. Establecer una cuota basada en inodo limitaría la cantidad de archivos y directorios que un usuario puede crear, independientemente de la cantidad de espacio en disco que use. La mayoría de la gente querrá cuotas basadas en bloques, que limitan específicamente el uso de espacio en disco. Esto es lo que configuraremos.
Nota: El concepto de bloquear está mal especificado y puede cambiar dependiendo de muchos factores, incluida la herramienta de línea de comando que los informa. En el contexto de establecer cuotas en Debian, es bastante seguro asumir que 1 bloque equivale a 1 kilobyte de espacio en disco.
En la lista anterior, nuestro usuario sammy utiliza 24 bloques o 24 KB de espacio en el /dev/vda1
manejar. los soft
y hard
los límites están desactivados con un 0
valor.
Cada tipo de cuota le permite establecer un límite suave y un límite estricto. Cuando un usuario excede el límite flexible, supera la cuota, pero no se le impide de inmediato consumir más espacio o inodos. En su lugar, se le da cierto margen de maniobra: el usuario tiene, de forma predeterminada, siete días para recuperar el uso de su disco por debajo del límite flexible. Al final del período de gracia de siete días, si el usuario aún supera el límite flexible, se tratará como un límite estricto. Un límite estricto es menos indulgente: toda la creación de nuevos bloques o inodos se detiene inmediatamente cuando alcanza el límite estricto especificado. Esto se comporta como si el disco estuviera completamente sin espacio: las escrituras fallarán, los archivos temporales no se podrán crear y el usuario comenzará a ver advertencias y errores mientras realiza tareas comunes.
Actualicemos nuestro sammy usuario para tener una cuota de bloque con un límite flexible de 100 MB y un límite estricto de 110 MB:
Disk quotas for user sammy (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 24 100M 110M 7 0 0
Guarde y cierre el archivo. Para comprobar la nueva cuota podemos utilizar el quota
mando:
sudo quota -vs sammy
Output
Disk quotas for user sammy (uid 1001):
Filesystem space quota limit grace files quota limit grace
/dev/vda1 24K 100M 110M 7 0 0
El comando muestra nuestro estado de cuota actual y muestra que nuestra cuota es 100M
mientras nuestro limite es 110M
. Esto corresponde a los límites blando y duro respectivamente.
Nota: Si desea que sus usuarios puedan verificar sus propias cuotas sin tener sudo
acceso, tendrá que darles permiso para leer los archivos de cuota que creamos en el Paso 4. Una forma de hacerlo sería crear un users
grupo, haga que esos archivos sean legibles por el users
grupo y luego asegúrese de que todos sus usuarios también estén incluidos en el grupo.
Para obtener más información sobre los permisos de Linux, incluida la propiedad de usuarios y grupos, lea Introducción a los permisos de Linux
Utilizando setquota
establecer una cuota de usuario
diferente a edquota
, setquota
actualizará la información de la cuota de nuestro usuario con un solo comando, sin un paso de edición interactivo. Especificaremos el nombre de usuario y los límites suaves y estrictos para las cuotas basadas en bloques y en inodo, y finalmente el sistema de archivos para aplicar la cuota a:
sudo setquota -u sammy 200M 220M 0 0 /
El comando anterior se duplicará sammyLa cuota basada en bloques limita a 200 megabytes y 220 megabytes. los 0 0
para los límites rígidos y blandos basados en inodos indica que permanecen sin establecer. Esto es necesario incluso si no estamos configurando cuotas basadas en inodo.
Una vez más, use el quota
comando para comprobar nuestro trabajo:
sudo quota -vs sammy
Output
Disk quotas for user sammy (uid 1001):
Filesystem space quota limit grace files quota limit grace
/dev/vda1 24K 200M 220M 7 0 0
Ahora que hemos establecido algunas cuotas, averigüemos cómo generar un informe de cuotas.
Paso 5: generación de informes de cuotas
Para generar un informe sobre el uso actual de la cuota para todos los usuarios de un sistema de archivos en particular, utilice el repquota
mando:
sudo repquota -s /
Output
*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 981M 0K 0K 35234 0 0
nobody -- 7664K 0K 0K 3 0 0
ntp -- 12K 0K 0K 3 0 0
_apt -- 8K 0K 0K 2 0 0
debian -- 16K 0K 0K 4 0 0
sammy -- 24K 200M 220M 7 0 0
En este caso, estamos generando un informe para /
raíz sistema de archivos. los -s
el comando dice repquota
utilizar números legibles por humanos cuando sea posible. Hay algunos usuarios del sistema en la lista, que probablemente no tengan cuotas establecidas por defecto. Nuestro usuario sammy se enumera en la parte inferior, con las cantidades utilizadas y los límites suaves y estrictos.
También tenga en cuenta el Block grace time: 7days
rótulo, y el grace
columna. Si nuestro usuario estaba por encima del límite flexible, el grace
La columna mostraría cuánto tiempo les quedaba para volver por debajo del límite.
En el siguiente paso, actualizaremos los períodos de gracia de nuestro sistema de cuotas.
Paso 6: configuración de un período de gracia para excedentes
Podemos configurar el período de tiempo en el que un usuario puede flotar por encima del límite suave. Usamos el setquota
comando para hacerlo:
sudo setquota -t 864000 864000 /
El comando anterior establece los tiempos de gracia de bloque e inodo en 864000 segundos, o 10 días. Esta configuración se aplica a todos los usuarios y se deben proporcionar ambos valores incluso si no usa ambos tipos de cuota (bloque vs. inodo).
Tenga en cuenta que los valores debe ser especificado en segundos.
correr repquota
nuevamente para verificar que los cambios surtieron efecto:
sudo repquota -s /
Output
Block grace time: 10days; Inode grace time: 10days
. . .
Los cambios deben reflejarse inmediatamente en el repquota
salida.
Conclusión
En este tutorial instalamos el quota
herramientas de línea de comandos, configure una cuota basada en bloques para un usuario y genere un informe sobre el uso de la cuota de nuestro sistema de archivos.
Apéndice: Mensajes de error comunes relacionados con las cuotas
A continuación, se muestran algunos errores comunes que puede ver al configurar y manipular las cuotas del sistema de archivos.
quotaon Output
quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]
Este es un error que podría ver si intentó activar las cuotas (usando quotaon
) antes de ejecutar la inicial quotacheck
mando. los quotacheck
comando crea el aquota
o quota
archivos necesarios para activar el sistema de cuotas. Consulte el Paso 3 para obtener más información.
quota Output
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
Este es el error que verá si ejecuta quota
y su usuario actual no tiene permiso para leer los archivos de cuotas de su sistema de archivos. Usted (o el administrador del sistema) deberá ajustar los permisos de archivo de forma adecuada o utilizar sudo
al ejecutar comandos que requieren acceso al archivo de cuotas.
Para obtener más información sobre los permisos de Linux, incluida la propiedad de usuarios y grupos, lea Introducción a los permisos de Linux