Cómo establecer cuotas del sistema de archivos (disco) en Ubuntu


La cuota del sistema de archivos es una función estándar incorporada que se encuentra en el kernel de Linux. Las cuotas determinan la cantidad de espacio que debe tener un archivo para admitir las actividades del usuario. Las cuotas de disco también limitan la cantidad de archivos que un usuario puede crear en el sistema.

Los sistemas de archivos que admiten el sistema de cuotas incluyen xfs, ext2, ext4 y ext3, por mencionar algunos. La asignación de cuotas es específica para el sistema de archivos y para cada usuario. Este artículo contiene todo lo que necesita saber sobre cómo trabajar con el sistema de archivos de cuotas en un entorno Ubuntu 18.04 multiusuario.

La suposición aquí es que está utilizando el sistema Ubuntu 18.04 con un usuario (tecmint) con derechos de sudo. Las ideas compartidas aquí pueden funcionar en cualquier distribución de Linux siempre que utilice la técnica de implementación correcta.

Paso 1: Instalar Quota en Ubuntu

Para que las cuotas estén listas y sean utilizables, instale la herramienta de línea de comandos de cuotas con el comando apt, pero antes de eso, debe actualizar los paquetes de software del sistema.

$ sudo apt update

Ahora use el siguiente comando para instalar el paquete de cuotas en Ubuntu.

$ sudo apt install quota

Presione Y y luego ENTER para que comience el proceso de instalación.

Confirme la versión de instalación ejecutando el siguiente comando. Su número de versión puede diferir de lo que ve a continuación.

$ quota --version

Paso 2: instalar el módulo para el kernel de cuotas

Aquellos que ejecutan un sistema virtual basado en la nube, la instalación predeterminada de Ubuntu puede no tener los módulos del kernel que admiten el uso de cuotas. Debe confirmar con la herramienta de búsqueda y asegurarse de que los dos módulos, quota_v1 y quota _v2, estén dentro del directorio/lib/modules.

$ find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

Este debería ser el resultado del comando anterior.

No se preocupe por las versiones del kernel siempre que los dos módulos estén presentes. Si no lo encuentra, use el siguiente comando para instalar los módulos del kernel de cuotas como se muestra.

$ sudo apt install linux-image-extra-virtual

Obtendrá los módulos correctos que necesita para la implementación de cuotas.

Paso 3: Actualización de las opciones de montaje del sistema de archivos

Para que las cuotas estén activas en un sistema específico, debe montarse con opciones de cuotas relacionadas. Puede hacerlo actualizando la entrada del sistema de archivos que se encuentra en el archivo/etc/fstab.

$ sudo nano /etc/fstab

Debería estar preparado para editar el archivo de forma adecuada. La diferencia entre un archivo fstab y uno de escritorio es la diferencia en cómo el / o el sistema de archivos raíz representa todo el espacio del disco. Reemplace la línea (/) que apunta al sistema raíz usando las líneas siguientes.

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

Las líneas cambiarán para permitir el acceso a userquota y grpquota. Puedes dejar uno que no forme parte de la configuración final. Si el fstab tenía algunas opciones, agregue las nuevas opciones al final de la línea. Mientras realiza la adición, separe los elementos nuevos con una coma, pero sin espacios entre ellos.

Vuelva a montar el sistema de archivos para que los cambios surtan efecto.

$ sudo mount -o remount /

NOTA: confirme que no existen espacios entre las opciones en/etc/fstab para evitar tales errores.

mount: /etc/fstab: parse error

La verificación del uso de nuevas opciones al montar el sistema de archivos en el archivo/proc/mounts se realiza mediante grep. El comando muestra la entrada del sistema de archivos raíz en el archivo.

$ sudo cat /proc/mounts | grep ' / '

Desde la salida, puede ver las dos opciones que configuramos. Es hora de activar el sistema de cuotas.

Paso 4: Habilitación de cuotas de disco en Ubuntu

Primero, debe ejecutar el comando quotacheck.

$ sudo quotacheck -ugm /

El comando crea dos archivos, un usuario de cuota y un grupo de cuota que tienen información sobre el límite y el uso del sistema de archivos. Estos archivos deben estar presentes antes de comenzar a utilizar la cuota.

A continuación se muestra una definición de los parámetros:

  • -u: symbolizes a user-based quota file will be created.
  • -g: indicates that a group-based quota file will be created.
  • -m: disables remounting of the file system as a read-only while at the same time gives accurate results in an environment where the user keeps saving files. The m option is not mandatory during setup.

Cuando no es necesario habilitar el uso de cuotas según el usuario o el grupo, no es necesario ejecutar la opción quotacheck. Confirme esto enumerando el directorio raíz con el comando ls.

$ ls /
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

Si no se incluyen los parámetros u y g en el comando quotacheck, faltarán los archivos correspondientes.

Ahora estamos listos para activar la cuota en el sistema de archivos raíz (/) con el siguiente comando.

$ sudo quotaon -v /

Paso 5: configurar cuotas para un solo usuario

Podemos usar los comandos edquota y setquota para configurarlos para usuarios o grupos.

Los comandos edquota editan cuotas, por ejemplo, podemos editar una cuota perteneciente a un usuario de tecmint usando:

$ sudo edquota -u tecmint

El uso de la opción -u especifica que la cuota pertenece a un usuario. Utilice la opción -g si necesita editar una cuota que pertenece a un grupo. El comando abrirá un archivo usando su elección de editor de texto.

La salida enumera el nombre de usuario, uid, el sistema de archivos con cuotas activas y el uso de bloques e inodos. Una cuota basada en inodos limita la cantidad de archivos y directorios que los usuarios pueden crear independientemente del tamaño que utilicen en el disco. La mayoría de los administradores prefieren la cuota basada en bloques que controla el espacio en disco.

NOTA: el uso de bloques no muestra cómo puede cambiar dependiendo de diferentes factores, como la herramienta de línea de comandos que los informa. Dentro de las cuotas de contextos en Ubuntu, podemos asumir que un solo bloque es lo mismo que un kilobyte de espacio en disco.

Usando la línea de comando anterior, el usuario usará 2032 bloques, que es lo mismo que 2032 KB de espacio en/dev/sda1. El valor 0 desactiva los límites tanto suaves como estrictos.

Cada conjunto de cuotas permite establecer el límite suave y estricto. Un usuario que supera el límite flexible puede superar su cuota, pero no se le impide utilizar más espacios o inodos. En tal caso, el usuario tiene siete días para canjear su espacio de límite blando, de lo contrario, será difícil guardar o crear archivos.

Un límite estricto significa que la creación de nuevos bloques o inodos se detiene en el momento en que alcanza el límite. Los usuarios informarán que ven advertencias o errores mientras realizan tareas regulares.

Podemos actualizar la cuota de bloque de tecmint para tener un límite flexible de 100 MB y 110 MB para el límite estricto.

Después de editar, cierre el archivo y verifique la nueva configuración de límite de cuota de usuario usando el comando de cuota.

$ sudo quota -vs tecmint

NOTA: para que sus usuarios tengan la oportunidad de analizar sus cuotas sin invocar el comando sudo, deben tener acceso para leer archivos de cuotas durante la fase de creación en el paso cuatro. Una forma sencilla de hacerlo es crear un grupo de usuarios y otorgar acceso al grupo para que pueda agregar usuarios.

setquota actualiza la información de la cuota usando un solo comando sin ninguna configuración interactiva. El comando requiere el nombre de usuario y la configuración de los límites suaves y estrictos que usarán el bloque y el inodo. También deberá declarar el sistema de archivos que utilizará la cuota.

$ sudo setquota -u tecmint 200M 220M 0 0 /

El comando duplica los límites de cuota basados u200bu200ben bloques a 200 megabytes y 220 megabytes. Los dos 0 0 indican que los límites rígidos y flexibles no están establecidos, es un requisito incluso cuando no hay necesidad de establecer cuotas basadas en inodos.

Como de costumbre, use el comando de cuota para verificar su progreso.

$ sudo quota -vs tecmint

Paso 6: generación de informes de cuotas

Al generar un informe de cuotas, debe indicar el uso de todos los usuarios. Se utiliza el comando repquota.

$ sudo repquota -s /

El resultado anterior es un informe sobre el sistema de archivos raíz /. El -s indica a repquota que dé resultados en formato legible por humanos.

El tiempo de gracia del bloque predeterminado es de 7 días. La columna de gracia alerta al usuario sobre la cantidad de días antes de la denegación de acceso al disco de recursos.

Paso 7: establecer los períodos de gracia de la configuración

El período de gracia es el momento en que un usuario obtiene permiso para trabajar más allá del tiempo predeterminado.

$ sudo setquota -t 864000 864000 /

El comando indica al bloque y al inodo que tengan un período de gracia de 864000 segundos, un equivalente a 10 días. La configuración afectará a todos los usuarios, por lo tanto, los valores deben establecerse incluso cuando no haya uso de bloques e inodos. El valor de tiempo debe estar en segundos.

Confirme los cambios y vea si entraron en vigencia usando el comando:

$ sudo repquota -s /

Mensajes de errores comunes

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

El error anterior es común si intenta activar las cuotas usando el comando qoutaon antes de intentar verificar el estado de una cuota usando el comando quotacheck.

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

Este error le dice al administrador que el kernel no es compatible o que podría tener la versión incorrecta en la máquina (tenemos quota_v1 y quota_v2). Para Ubuntu, estos errores son comunes en un servidor virtual basado en la nube.

Corrija el error instalando el paquete Linux-image-extra-virtual usando el comando apt.

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

El error es notable cuando el usuario actual no tiene permiso para leer archivos de cuotas. Como administrador, solo necesita realizar los cambios de permisos correctos o usar sudo cuando necesite acceder a archivos en un sistema de cuotas o archivo.

En la parte superior del artículo, comenzamos con las herramientas de línea de comandos de cuotas y la verificación de la versión del kernel, y fuimos más allá para explicar cómo configurar una cuota basada en bloques para un solo usuario y cómo generar un informe sobre una cuota del sistema de archivos. uso.

El artículo también cubre errores comunes y cómo evitarlos usando un paquete adicional o verificando la versión del kernel en su sistema.