Cuotas de Disco en Linux
Servidor
Para comenzar, debemos tener una partición a la que queremos asignar cuotas, es este mini how-to usare de ejemplo la partición de mi sistema /mnt/Server (/dev/hde1).
Primero añadimos al "fstab" (/etc/fstab) los valores "usrquota" y "grpquota" de modo que:
/dev/hde1 /mnt/Server ext3 acl,user_xattr 0 0
Quedaría así:
/dev/hde1 /mnt/Server ext3 acl,user_xattr,usrquota,grpquota 0 0
Como deberíamos de saber, si no lo sabéis, os lo recuerdo, para que los cambios en el fstab tengan efecto, se ha de remontar la partición, como en nuestro caso es /mnt/Server no hara falta, pero si fuese /home nos dira que esta usada. Uso SuSE 9.1 Profesional y en caso de que estuviésemos con /home deberíamos hacer lo siguiente:
Primero cerramos sesión de KDE u otro entorno grafico y quede en la pantalla de login, escribimos "root" y debajo ponemos la contraseña, en el menú desplegable de "tipo de sesión" escogemos "A prueba de fallos".
Bien, estamos logeados como root y no estamos usando /home, pos procedamos a remontar la unidad. Yo use:
# mount -o remount /mnt/Server –> Cambiad /mnt/Server aplicado a vuestro caso.
Una vez remontado, podemos volver a iniciar sesión por ejemplo.
Para que el sistemas de quota funcione, hay que crear 4 archivos en el directorio raíz de la partición. En mi caso hde1 est montado en /mnt/Server, por lo tanto el directorio raiz es /mnt/Server. Los archivos a crear son los siguientes:
–> aquota.user aquota.group quota.user quota.group
Para crearlos, iremos al directorio raiz de nuestra partición:
# cd /mnt/Server
# touch aquota.user aquota.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
Weno, arrancamos el servicio "quota"
# rcquota start –> Cambiando "start" por "stop" y "restart" podemos parra o reiniciar el servicio.
Ahora hay que comprobar que sistemas tienen la quota activada y el uso que se le esta dando con el comando:
# quotacheck -avug
En el comando anterior, si da error de que no se ha encontrado el archivo para configurar la cuota, si estamos configurando la cuota en "/" lo ignoramos porque ahí solo escribe root y daria igual. En caso de que sea "/home" y de el error mencionado antes, cerramos todas las aplicaciones que estén corriendo y dejamos abierta una consola y tipeamos:
# telinit 1
Esto nos llevara a el modo monousuario, solo como root, nos pedirá la contraseña de este, la introducimos. Ahora ejecutamos:
# quotacheck -avug –> Si el error persigue:
# quotacheck -avugf –> Y ahora una comprobación forzada, pero tranquilos que a mis datos no les paso nada. A mi entender puede estropear los archivos "aquota.user" y "aquota.group" (Lo dejo bajo la responsabilidad de cada uno)
Esto debiera dar una salida como esta:
quotacheck: Scanning /dev/hde1 [/mnt/Server] done
quotacheck: Checked 69 directories and 381 files
Ahora debemos activar las cuotas para /mnt/Server
# quotaon /mnt/Server –> Esto activara las cuotas
# quotaoff /mnt/Server –> Esto desactivara las cuotas
Ahora llega la parte mas difícil del tema, configurar cuotas. El usuario que voy a limitar va a ser "guest". Al tipear el comando de abajo, nos abrirá el editor de texto "vi", para evitar eso, podemos hacer:
# export EDITOR=/usr/bin/mcedit –> Si no usais ni "Vi" ni "mcedit" cambiáis la ruta.
1. CUOTA DE USUARIOS:
A continuación:
# edquota -u guest
Acto seguido se nos abrera mcedit. Lo mas apropiado creo que será poner un ejemplo:
Disk quotas for user guest (uid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/hde1 0 5120 6144 0 0 0
Suponiendo que se quiere asignar una cuota de disco de 5 MB con una tolerancia de hasta 6 MB. 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 numero de archivos. 0 significa ilimitado.
Cuando superemos el limite 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 «SSH10242345678.bmp»: Se ha excedido la cuota de disco
En este caso se crara un archivo con ese nombre, pero de 0 Bytes.
PD: Si no se te aplican los cambios, revisa que has guardado el archivo de configuracion que se abrio con mcedit y prueba a hacer:
# quotaoff /mnt/Server
# quotaon /mnt/Server
Con esto, ya tenemos las cuotas activadas para un usuario, para un grupo:
CUOTA DE GRUPOS:
Seguiremos el procedimiento anterior, si ya lo tenemos hecho no hará falta repetirlo.
Para los grupos usaremos:
# edquota -g shell –> Cambiando "shell" por el grupo correspondiente en tu sistema.
Un ejemplo:
Disk quotas for group shell (gid 1001):
Filesystem blocks soft hard inodes soft
/dev/hda1 0 1 1 0 0
/dev/hde2 0 1 1 0 0
/dev/hde1 0 1 1 0 0
/dev/hdg1 188 102400 204800 37 0
Bien, el grupo "shell" no tiene permiso de escritura nada mas que en su home, que "hdg1" esta montado en (/home). Por defecto, las otras particiones tendrán un "0", osea, ilimitado. Por precaución yo establecí un KiloByte. No tiene mayor misterio, se configura al igual que en los usuarios.
Con esto doy por terminado el How-To.
Elaborado por GuraDXPU del canal #SuSE del IRC-Hispano bajo SuSE 9.1 Professional Kernel 2.6.8. Siempre que se modifique pediría por favor que se me comunicase por el bien de todos.








