Sistema de cuotas

El almacenamiento en disco se puede restringir mediante la implementación de cuotas de disco. Las cuotas se pueden configurar para usuarios individuales o para grupos. Este tipo de flexibilidad hace posible darle a cada usuario una pequeña porción del disco para que maneje sus archivos personales (tales como correo o informes), mientras que se le permite tener más espacio para manejar los proyectos en los que estén trabajando.

Además, se puede configurar las cuotas no sólo para que controlen el número de bloques de disco sino también el número de inodos. Debido a que los inodos son usados para almacenar información relacionada a los archivos, esto permite controlar el número de archivos que pueden ser creados.

El soporte de cuotas de disco ha sido integrado en el kernel Linux desde la versión 1.3.46. Se necesita utilizar un kernel posterior para poder beneficiarse de las cuotas. El paquete software necesario que permite gestionar las cuotas es quota. Además necesitamos tener esa opción compilada en el kernel respondiendo afirmativamente a la opción Quota support. Con esto conseguiremos limitar el espacio de disco consumido por usuario o por un grupo de usuarios.

Activación de las cuotas

Existen dos tipos de cuotas: las cuotas asociadas a los usuarios y las cuotas asociadas a los grupos de usuarios. Las primeras definen el número máximo de archivos y de bloques de disco asociados a cada usuario, las segundas definen el número máximo de archivos asociados a cada grupo de usuarios. Los dos tipos de cuotas pueden ser activados separadamente.

Para activar las cuotas para los usuarios es necesario indicar la opción usrquota para los sistemas de archivos referidos en /etc/fstab. Las cuotas que conciernen a los grupos son reguladas por la opción grpquota. Los archivos de definición de cuotas se llaman respectivamente quota.user y quota.group y están situados en la raíz de cada sistema de archivos involucrado.

Es posible modificar los nombres de los archivos de gestión de cuotas utilizando la sintáxis siguiente:

  usrquota=nombredearchivo
  grpquota=nombredearchivo

He aquí un ejemplo del archivo /etc/fstab:

    /dev/hda2    /         ext3   defaults,rw 0 1
    /dev/hdb2    /home     ext3   defaults,rw,usrquota,grpquota 0 1
    /dev/sda1    /usr/src  ext3   dzfaults,rw,usrquota 0 1

La activación de las cuotas es lanzada por la orden quotaon. Para activarlas automáticamente a la inicialización del sistema, se debe agregar al archivo de inicialización (/etc/rc.d) las líneas:

    quotaon -avug

Para crear los archivos de cuotas (aquota.user y aquota.group) en el sistema de archivos, se usa la opción -c del comando quotacheck.

    quotacheck -acug /home

Puede ser igualmente necesario verificar la coherencia de la información sobre gestión de cuotas después de bloqueos repentinos. Para esto se utiliza la orden quotacheck:

   quotacheck -avug

Si las utilidades han sido compiladas con-DEXTc2DIRECT, la orden quotacheck debe ejecutarse relativamente rápido, en caso contrario puede ser muy lento, pues debe explorar todos los directorios del disco. Es aconsejable de todas maneras ejecutar quotacheck durante la inicialización del sistema antes de la activación de las cuotas con quotaon.

Cuotas de usuario

La orden edquota es utilizada para asignar una cuota a un usuario o a un grupo de usuarios. Su sintáxis es edquota -u usuario o edquota -g grupo. Esta orden lanza un editor de texto que contiene la definición de cuotas asignadas al usuario o al grupo y toma en cuenta el nuevo valor cuando el archivo es reescrito.

Para cada usuario o grupo existen dos limitaciones: el número de archivos y el número de bloques disco (expresados en bloques de 1024 octetos). Para cada uno existen dos límites:

  • El límite "suave": cuando este límite es alcanzado o superado un mensaje advierte al usuario cada vez que un nuevo bloque o archivo es escrito.

  • El límite "duro": cuando este límite es alcanzado el usuario no puede escribir nuevos archivos o nuevos bloques.

El límite "suave" se transforma en límite "duro" cuando ha sido alcanzado o superado transcurrido cierto tiempo (7 días por defecto).

Se puede definir una plantilla de usuario al cual se le asignan las cuotas y utilizarla para adjudicar cuotas a los demás usuarios del sistema.

  edquota -p usuarioplantilla -u usuario

Todo usuario puede obtener el estado de la cuota que le ha sido asignada (limites como el número de archivos y de bloques que le han sido atribuidos) gracias a la orden quota.

El superusuario puede obtener las mismas informaciones sobre cualquier usuario o grupo con la misma orden : quota -u usuario o quota -g grupo. Además es posible utilizar la orden repquota para obtener una lista de cuotas asociadas a uno o varios sistemas de archivos.