18.14. Cuotas en sistemas de ficheros

Las cuotas son una opción del sistema operativo que le permite limitar la cantidad de espacio en disco y/o el número de fichero que un usuario o miembros de un grupo pueden crear en el sistema, pudiendo además hacerlo de forma independiente en cada sistema de ficheros. Suele usarse principalmente en sistemas de tiempo compartido, donde se busca limitar la cantidad de recursos que cualquier usuario o grupo pueden utilizar. Esto evitará que un usuario o un grupo de usuarios consuma todos el espacio disponible en disco.

18.14.1. Configuración del sistema para habilitar cuotas de disco

Antes de intentar configurar el uso de cuotas de disco hay que asegurarse de que las cuotas están activadas en el kernel. La siguiente línea debe estar en el fichero de de configuración del kernel:

options QUOTA

El kernel GENERIC no lo tiene activado por defecto, así que tendrá que configurar, compilar e instalar un kernel personalizado para poder usar cuotas de disco. Por favor, consulte el Capítulo 8, Configuración del kernel de FreeBSD para más información sobre la configuración del kernel.

A continuación tendrá que habilitar las cuotas de disco en /etc/rc.conf. Añadale la siguiente línea:

enable_quotas="YES"

Hay una variable que le permitirá efectuar un control más exhaustivo sobre el arranque de cuotas. Normalmente se revisa la integridad de cuotas de cada sistema de ficheros en el arranque; el responsable es quotacheck(8). quotacheck(8) se asegura de que los datos que hay en su base de datos de cuotas reflejen realmente los datos del sistema de ficheros. Es un proceso que lleva mucho tiempo y que afectará significativamente al tiempo que tardará su sistema en arrancar. Si desea saltarse ese paso puede usar una variable al efecto en /etc/rc.conf:

check_quotas="NO"

Para concluir tendrá que editar /etc/fstab para habilitar las cuotas de disco para cada sistema de ficheros. Es aquí donde podrá habilitar cuotas por usuario, por grupo, o ambos en todos sus sistemas de ficheros.

Para habilitar cuotas por usuario en un sistema de ficheros añada la opción userquota al campo de opciones en la entrada de /etc/fstab que corresponda al sistema de ficheros en el que quiere habilitar las cuotas. Veamos un ejemplo:

/dev/da1s2g   /home    ufs rw,userquota 1 2

En el caso de las cuotas de grupo es muy similar. Use la opción groupquota en lugar de userquota. Para habilitar cuotas por usuario y por grupo modifique la entrada de este modo:

/dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

Por defecto los ficheros de cuota se guardan en el directorio raíz del sistema de ficheros con los nombres quota.user y quota.group para cuotas de usuario y grupo respectivamente. Consulte fstab(5) para más información. Aunque la página de manual de fstab(5) diga que puede especificar otra ubicación para los ficheros de cuota, no se recomienda hacerlo debido a que las diversas herramientas de gestió cuotas no parecen sobrellevar esto adecuadamente.

Hecho todo esto puede reiniciar su sistema con el nuevo kernel. /etc/rc ejecutará automáticamente los comandos apropiados para crear los ficheros de cuota iniciales que requieran todas las entradas en en /etc/fstab, así que no hay necesidad de crear ficheros de cuota de longitud cero.

En el curso normal de operaciones no se le debería pedir que ejecute quotacheck(8), quotaon(8) o quotaoff(8) manualmente. Sin embargo, tal vez quiera leer sus páginas de manual para familiarizarse con su funcionamiento.

18.14.2. Configuración de límites de cuota

Una vez que tenga configurado su sistema para usar cuotas verifique que en realidad estén habilitadas. Una manera sencilla de hacer esto es ejecutar:

# quota -v

Debe ver un resumen de una sola línea de uso del disco y los límites de cuota actuales para cada sistema de ficheros donde estén habilitadas las cuotas.

Ahora puede iniciar la asignación de límites de cuota con edquota(8).

Tiene varias opciones para imponer límites en el espacio de disco que un usuario o grupo puede ocupar, y cuántos ficheros pueden crear. Puede limitar el uso de disco basándose en el espacio en disco (cuotas de bloque) o en el número de ficheros (cuotas de inodo) o una combinación de ambas. Cada uno de estos límites a su vez se divide en dos categorías: límites duros y suaves.

Un límite duro no puede ser excedido. Una vez que un usuario alcanza su límite duro no puede realizar más ubicaciones en el sistema de ficheros en cuestión. Por ejemplo, si el usuario tiene un límite duro de 500 kbytes en un sistema de ficheros y está utilizando 490 kbytes, el usuario solo puede ocupar otros 10 kbytes. Un intento de ocupar 11 kbytes más fallará.

Los límites suaves pueden excederse por un periodo Este periodo de tiempo recibe el nombre de periodo de gracia, que por defecto es una semana. Si un usuario sobrepasa su periodo de gracia el límite suave se convertirá en un límite duro y no se permitir´n usos de disco adicionales. Cuando el usuario devuelve su cuota de uso de recursos a un punto por debajo de su límite suave el periodo de gracia se reinicia.

Veamos un ejemplo de uso de edquota(8). Si se usa edquota(8) se entra en el el editor declarado en la variable de entorno EDITOR, o en el editor vi si no ha modificado el valor por defecto de la variable EDITOR, para que pueda editar los límites de cuota.

# edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)

Debería ver dos líneas por cada sistema de ficheros que tenga habilitadas las cuotas. Una línea para los límites de bloque y una línea para límites de inodo. Por ejemplo, para elevar los límites de este usuario de un límite suave de 50 y un límite duro de 75 a un límite suave de 500 y un límite duro de 600, cambie:

/usr: kbytes in use: 65, limits (soft = 50, hard = 75)

por:

/usr: kbytes in use: 65, limits (soft = 500, hard = 600)

Los nuevos límites de cuota se aplicarán en cuanto salga del editor.

Algunas veces se quieren activar límites de cuota en un rango de UIDs. Esto puede realizarse con la opción -p de edquota(8). Primero asigne el límite de cuota deseado a un usuario y luego ejecute edquota -p protouser startuid-enduid. Por ejemplo, si el usuario test tiene el límite de cuota deseado, el siguiente comando puede usarse para duplicar esos límites de cuota para los UIDs de 10,000 hasta 19,999:

# edquota -p test 10000-19999

Para más información consulte la página de manual edquota(8).

18.14.3. Revisión de los límites de cuota y uso de disco

Puede usar quota(1) o repquota(8) para revisar los límites de cuota y uso del disco. El comando quota(1) le permitirá revisar cuotas individuales de usuario o grupo y uso del disco. Un usuario puede sólamente examinar su propia cuota y la cuota de un grupo al que pertenezca. Sólamente el superusuario puede ver las cuotas de todos los usuarios y grupos. repquota(8) permite obtener un resumen de todas las cuotas y uso del disco de todos los sistemas de ficheros con cuotas habilitadas.

En el siguiente ejemplo vemos la salida de quota -v para un usuario que tiene límites de cuota en dos sistemas de ficheros.

Disk quotas for user test (uid 1002):
     Filesystem  usage    quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60

En el sistema de ficheros /usr del ejemplo este usuario está actualmente 15 kbytes sobre su límite suave de 50 kbytes y le quedan 5 días de su periodo de gracia. Observe el asterisco, * que indica que el usuario está actualmente por encima de su límite de cuota.

Normalmente los sistemas de ficheros en los que el usuario no esté utilizando espacio en disco no se mostrarán en la salida del comando quota(1), incluso si tiene un límite de cuota asignado para esos sistemas de fichero. La opción -v desplegará esos sistemas de ficheros, en nuestro ejemplo el sistema de ficheros /usr/var.

18.14.4. Cuotas en NFS

Las cuotas son impuestas por el subsistema de cuotas en el servidor NFS. El dæmon rpc.rquotad(8) facilita la información a quota(1) en los clientes NFS, permitiéndoles a los usuarios de esas máquinas ver sus estadísticas de cuota.

Habilite rpc.rquotad en /etc/inetd.conf del siguiente modo:

rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

Y reinicie inetd:

# kill -HUP `cat /var/run/inetd.pid`

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.

Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.