Asignando cuotas de disco

By 7 de agosto de 2006 BSD, Debian, FreeBSD, Gentoo, Linux, OpenBSD, SuSE, Ubuntu 4 Comments

dragonflybsd.JPGMediante este tutorial se pretenden asignar las las valiosisimas quotas de disco a un sistema *UNIX Like.

Precondiciones:

  1. Necesitaremos instalar el paquete quota.
    1. apt-get install quota (sistemas basados en Debian)
    2. cd /usr/ports/sysutils/p5-Quota && make install clean (DragonFlyBsd / FreeBSD)
  2. Es _imprescindible_ tener habilitado en el kernel las quotas de disco (en Debian si no quieres complicarte la vida bájate un kernel image que lo tenga, un 2.6 es más que probale que lo tenga habilitado).

Procedimientos.

  1. Debe iniciarse el sistema en nivel de corrida 1 (mono usuario), ya que se requiere no existan procesos activos utilizando contenido de la partición a la cual se le aplicará la cuota de disco.
  2. Obviamente, durante la instalación, debió asignarse una partición dedicada para, por mencionar un ejemplo, los directorios /var y /home.
  3. Con la finalidad de añadir el soporte para cuotas en las particiones anteriormente mencionadas, se debe añadir en el fichero /etc/fstab los parámetros usrquota y grpquota a las líneas que definen la configuración de las particiones /var y /home:
    LABEL=/var		/var	ext3	defaults,usrquota,grpquota	1 2 LABEL=/home		/home	ext3	defaults,usrquota,grpquota	1 2
  4. Debe remontar las particiones para que surtan efecto los cambios:
    # mount -o remount /var # mount -o remount /home
  5. Se deben crear los ficheros aquota.user, aquota.group, quota.user y quota.group, los cuales se utilizarán en adelante para almacenar la información y estado de las cuotas en cada partición.
    # cd /var # touch aquota.user aquota.group quota.user quota.group # cd /home # touch aquota.user aquota.group quota.user quota.group

    Para añadir seguridad a esto, cambiaremos los permisos de dichos archivos, de modo que root pueda leer y escribir, y denegado a los demás usuarios.

    # chmod 600 aquota.user aquota.group quota.user quota.group
  6. Ejecutar:
    # quotacheck -avug

    La primera vez que se ejecuta el mandato anterior es normal marque advertencias refiriéndose a posibles ficheros truncados que en realidad no eran otra cosa sino ficheros de texto simple vacíos a los cuales se les acaba de convertir en formato binario. Si se ejecuta de nuevo quotacheck -avug, no deberá mostrar advertencia alguna.

  7. Para activar las cuotas de disco recién configuradas, solo bastará ejecutar:
    # quotaon /var # quotaon /home

    Si deseamos desactivarlas:

    # quotaoff /var # quotaoff /home
  8. Vaya al nivel de corrida 3 a fin de aplicar cuota de disco a algunos usuarios.# init 3
  9. Asignar cuotas de disco a cualquier usuario o grupo solo hará falta utilizar edquota citando el nombre del usuario al cual se le quiere aplicar:
    # edquota -u pepito

    Lo anterior deberá devolver algo como lo siguiente a través de vi u otro editor de texto simple:

    Disk quotas for user pepito (uid 500): Filesystem blocks  soft  hard  inodes  soft  hard /dev/hda7       0     0     0       0     0     0 /dev/hda5      24     0     0      10     0     0

    (si se quiere que sea vim y no vi el editor se debe hacer: # export EDITOR=/usr/bin/vim)

  10. Suponiendo que se quiere asignar una cuota de disco de 5 MB con una tolerancia de hasta 6 MB por hasta 6 días:
    Disk quotas for user pepito (uid 500): Filesystem blocks  soft  hard  inodes  soft   hard /dev/hda7       0  6144  5120       0     0      0  /dev/hda5      24  6144  5120      10     0      0

    Las unidades se escriben en KiloBytes. "soft" es el limite de advertencia, "hard" el limite máximo, "blocks" es el espacio usado en KiloBytes e "inodes" es el número de archivos. 0 significa ilimitado.
    Cuando superemos el límite de advertencia (soft) de 5 MB nos dará este error:hde1: warning, user block quota exceeded

    Cuando estemos sobrepasando el limite (hard) de 6 MB, obtendremos esta salida:

    cp: escribiendo «archivo_gordo.bin»: Se ha excedido la cuota de disco.

    Más claro:

    Existen dos tipos de quotas: soft y hard. Una cuota soft puede ser rebasada si por ejemplo copiamos un fichero que ocupa 22 megas en una cuenta de 20 megas. Si por ejemplo tenemos la cuenta que ocupa ya los 20 megas, no podríamos copiar nada más. En cambio la quota hard significa que no se puede pasar ese límite, aunque sea un único fichero. Ejemplo de quota para mi usuario d4emon:

  11. Si se quiere que todo aplique para los usuarios existentes, a partir de UID 510, por ejemplo, suponiendo que tiene al usuario "pepito" como molde (note por favor el acento grave en el mandato justo antes de awk, no es una comilla ni apostrofe):
    # edquota -p pepito `awk -F: '$3 > 510 {print $1}' /etc/passwd`


Apéndice: Asignando cuotas de disco.
Autor: Joel Barrios Dueñas / Solusan
Correo electrónico: jbarrios arroba linuxparatodos punto net
Sitio de Red: http://www.linuxparatodos.net/
Jabber ID: [email protected]

4 Comments

  • kloppix dice:

    Hola Solusan. Esta bueno el tutorial, pero creo que los limites estan al reves. Es decir, en vez de ser:

    Disk quotas for user pepito (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda7 0 6144 5120 0 0 0 /dev/hda5 24 6144 5120 10 0 0

    Deberia ser:

    Disk quotas for user pepito (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda7 0 5120 6144 0 0 0 /dev/hda5 24 5120 6144 10 0 0

  • Solusan dice:

    ok!

    Gracias por tu comentario 😉

  • Andros dice:

    A mi lo de "iniciarse el sistema en nivel de corrida 1 (mono usuario)" me suena muy muy mal. Casi pornografico.
    En que estarias pensando!

  • Solusan dice:

    @Andros

    Si es que tienes la mente mu sucia.....

    😀

Leave a Reply

Your email address will not be published.