Quota COMO

Albert M.C. Tam (bertie@scn.org),
Traducción: Juan José López (laveneno@hotmail.com)

8 Aug 1997 (trad: 10 Ago 1998)
Este documento describe cómo habilitar las cuotas de sistema de ficheros en una máquina Linux, asignando cuotas para usuarios y grupos, al igual que cómo usar los comandos relacionados. Está destinado a usuarios del kernel 2.x (ha sido probado recientemente en RedHat 4.1 corriendo kernel 2.0.27). Los usuarios de kernels más antiguos necesitarán actualizarse a una versión más moderna para poder disfrutar de las ventajas de las cuotas. Siéntase libre de enviar cualquier comentario a bertie@scn.org si encuentra algún error, o si hay alguna información que no aparece. Lo apreciaré mucho.

1. Copyright

Este documento ha sido escrito por Albert M.C. Tam (bertie@scn.org). Se permite el uso, copia y distribucion de este documento para propósitos no comerciales, siempre que el nombre de autor / editor y esta nota aparezcan en todas las copias y/o documentos de soporte; eso si este documento no es modificado. Este documento se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, ni explícita ni implícita. Aunque se ha tenido el mayor cuidado para asegurar la exactitud de la información documentada aquí, el autor / editor / mantenedor NO ASUME LA RESPONSABILIDAD por los errores, o por destrozos resultado del uso de la presente documentación.

2. ¿Qué es quota?

Quota le permite especificar límites en dos aspectos del almacenamiento en disco: el número de inodos que un usuario o grupo puede poseer; y el número de bloques de disco que pueden ser reservados por un usuario o grupo.

La idea subyaciente en las cuotas es que los usuarios se vean forzados a tener en cuenta sus límites de consumo de espacio en disco, evitando la habilidad de algunos de consumir espacio ilimitado en un sistema.

La cuota se maneja con un planteamiento de un usuario / en un sistema de ficheros. Si hay más de un sistema de ficheros en el cual un usuario tiene posibilidades de crear ficheros, entonces debe habilitarse la cuota para ambos sistemas de ficheros por separado.

3. El estado actual de las cuotas en Linux

El soporte para cuotas de disco han sido integradas en el kernel desde la versión 1.3.8x. Actualmente es parte de la versión 2.0 del kernel de Linux. Si su sistema no acepta las cuotas, realmente le recomiendo una actualización.

Actualmente las cuotas de disco solo pueden usarse con el sistema de ficheros ext2.

4. Requerimientos para el uso de cuotas en Linux

Kernel:

La versión 2.0 del kernel está disponible en

http://sunsite.unc.edu/pub/Linux/kernel/v2.0

Quota

Dependiendo de la distribución de Linux de que disponga, puede que ya disponga del software de quota instalado en su sistema. Si no lo tiene, puede obtenerlo de

ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

5. Instalación de las cuotas en Linux

5.1 La configuración

Reconfigurar el kernel

Reconfigure su kernel y añada el soporte para las cuotas seleccionando `y' en:

     Quota support (CONFIG_QUOTA) [n] y

Compilado e instalación del software de quota

El software de quota está disponible en

ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

Modificar el inicio del sistema

modificar los ficheros de comandos de inicio del sistema para activar las cuotas en el arranque del sistema. Aquí hay un ejemplo:

        # Check quota and then turn quota on.
        if [ -x /usr/sbin/quotacheck ]
        then
                echo "Checking quotas. This may take some time."
                /usr/sbin/quotacheck -avug
                echo " Done."
        fi

        if [ -x /usr/sbin/quotaon ]
        then
                echo "Turning on quota."
                /usr/sbin/quotaon -avug
        fi

La regla de oro es que siempre se active quota DESPUÉS de montar los sistemas de ficheros de /etc/fstab, de cualquier otro modo quota no funcionaría. Recomiendo activar las cuotas al final de su fichero de comandos de inicio, o si lo prefiere, justo después de la parte encargada del montado de los sistemas de ficheros.

Actualizar la información del sistema

Esto implica modificar el fichero /etc/fstab. Las particiones que no tienen activada la cuota aparecen más o menos así:

        /dev/hda1       /       ext2    defaults        1       1
        /dev/hda2       /usr    ext2    defaults        1       1

Para activar el soporte para las cuotas de usuario en un sistema de ficheros, añada ``usrquota'' al cuarto campo, el que contiene la palabra ``defaults'' (vea la página de manual de fstab para más detalles).

        /dev/hda1       /       ext2    defaults        1       1
        /dev/hda2       /usr    ext2    defaults,usrquota       1       1

Cambie ``usrquota'' por ``grpquota'' si necesita soporte para cuotas de grupos en un sistema de ficheros.

        /dev/hda1       /       ext2    defaults        1       1
        /dev/hda2       /usr    ext2    defaults,grpquota       1       1

Si necesita ambos tipos de cuotas,

        /dev/hda1       /       ext2    defaults        1       1
        /dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1       1

Crear los registros ``quota.user'' y ``quota.group''

Estos dos ficheros de registro de cuotas, quota.user y quota.group, deben pertenecer a root, y deben tener permisos de lectura-escritura para root y para nadie más.

Ingrese como root. Vaya a la raíz de la partición en la cual desea activar las cuotas, entonces cree quota.user y quota.group haciendo:

        touch /partition/quota.user
        touch /partition/quota.group
        chmod 600 /partition/quota.user
        chmod 600 /partition/quota.group

Rearrancar

Rearranque el sistema para que los cambios que ha realizado tengan efecto.

Tenga en cuenta que para las siguientes particiones en las que quiera habilitar la cuota solo necesitará los pasos cuarto, quinto y sexto.

5.2 Asignación de cuotas a los Usuarios y Grupos

Esta operación se realiza mediante el comando edquota (vea la página de manual de edquota para más detalles).

En este punto yo normalmente ejecutaría ``quotacheck'' con los argumentos ``-avug'' para obtener el uso actual de los sistemas de ficheros antes de editar las cuotas. Esto es solo un hábito personal, y no es un paso indispensable.

Asignando las cuotas de un usuario en particular

Aquí tiene un ejemplo. Tengo un usuario con el nombre bob en mi sistema. El comando ``edquota -u bob'' hace que entre dentro de vi (o el editor especificado en mi variable de entorno EDITOR) para editar la cuota del usuario bob en cada una de las particiones en las que la cuota esté habilitada:

        Quotas for user bob:
        /dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500)
                inodes in use: 356, limits (soft = 1000, hard = 1500)

``blocks in use" es el número total de bloques (en KBytes) que el usuario ha consumido en la partición.

``inodes in use" es el número total de ficheros que el usuario tiene en la partición.

Asignando cuotas para un grupo en particular

Tengo en mi sistema un grupo llamado games. ``edquota -g games'' entra en el editor vi de nuevo y me permite editar la cuota del grupo games.

        Quotas for group games:
        /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
                inodes in use: 1454, limits (soft = 3000, hard = 4000)

Asignando cuotas a un montón de usuarios con los mismosvalores

Para asignar cuotas rápidamente, por ejemplo a 100 usuarios, en mi sistema con los mismos valores que para bob, primero debo editar las cuotas de bob manualmente, y entonces ejecutar:

        edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`

asumiendo que está usando csh, y que asigna los UIDs de los usuarios a partir del 500.

Límites avanzados

En adición a edquota, hay 3 valores con los que debe familiarizarse: el ``Límite Blando'' (Soft Limit), el ``Límite Duro'' (Hard Limit) y el ``Periodo de Gracia'' (Grace Period).

``Límite Blando''

indica la máxima cantidad de uso de disco que un usuario con cuota tiene en una partición. Cuando se combina con el ``Periodo de Gracia'', actúa como una línea de división a partir de la cual un usuario obtendrá mensajes de advertencia por su violación.

``Límite Duro''

actúa solo cuando el ``Periodo de Gracia'' está activado. Especifica el límite absoluto de uso de disco, a partir del cual un usuario no podrá pasar.

``Periodo de Gracia''

ejecutado con el comando ``edquota -t'', el ``Periodo de Gracia'' es un límite temporal antes de que el ``límite blando'' se tenga en cuenta para un sistema de ficheros con la cuota activada. Las unidades de tiempo pueden ser sec (segundos), min (minutos), hour (horas), day (días), week (semanas), y month (meses). Esto es lo que verá con el comando ``edquota -t'':

        Time units may be: days, hours, minutes, or seconds
        Grace period before enforcing soft limits for users:
        /dev/hda2: block grace period: 0 days, file grace period: 0 days

Cambie la parte de ``0 days'' por el tiempo que estime razonable. Yo personalmente escogería 7 días (o 1 semana).

6. Otros comandos relacionados

Quotacheck

se usa para obtener el uso de disco para un sistema de ficheros, y modifica el registro de cuotas en el fichero ``quota.user'' al estado actual. Recomiendo ejecutar quotacheck en el arranque del sistema, o a través de cron periódicamente (¿por ejemplo cada semana?).

Repquota

produce información de resumen de las cuotas en un sistema de ficheros. Este es un ejemplo del resultado:

        # repquota -a
                                Block limits               File limits
        User            used    soft    hard  grace    used  soft  hard  grace
        root      --  175419       0       0          14679     0     0
        bin       --   18000       0       0            735     0     0
        uucp      --     729       0       0             23     0     0
        man       --      57       0       0             10     0     0
        user1     --   13046   15360   19200            806  1500  2250
        user2     --    2838    5120    6400            377  1000  1500

Quotaon y Quotaoff

quotaon se usa para activar la contabilización de la cuota; y quotaoff para desactivarla. Actualmente los dos ficheros son similares. Son ejecutados en el arranque y apagado del sistema.