Es posible establecer cuotas de espacio en disco tanto por usuario como por grupo para evitar que un determinado usuario o grupo monopolice el espacio en disco.
Esta característica tiene que estar soportada dentro del núcleo.
El espacio en disco es un recurso finito y una mala gestión de su uso puede provocar una denegación de servicio.
Será necesario controlar la actividad de los usuarios para evitar un mal uso del espacio en disco.
Aunque el espacio en disco pueda parecer asequible a los usuarios en realidad es bastante caro. Ya que el tener espacio desaprovechado implica:
Un mayor coste en tiempo y recursos de almacenamiento debido a las políticas de backup.
Un mayor coste en tiempo a la hora de restaurar backups.
Hoy en día el espacio en disco se suele asignar en SAN debido a su verstilidad. El uso de tecnologías SAN es de un alto coste.
Podemos establecer cuotas de espacio en disco en todos los sistemas de ficheros que aparezcan en /etc/fstab
.
Debido a la posibilidad de realizar una instalación en varios sistemas de ficheros podemos optimizar el uso de cuotas para los usuarios y grupos en cada sistema de fichero.
Las cuotas hard establecen la cantidad máxima de espacio que se puede utilizar y no se pueden sobrepasar a menos que el administrador las cambie. Estas cuotas se pueden establecer:
Por usuario. Una vez superado el usuario no podrá escribir en el sistema de ficheros.
Al contrario que en otros sistemas un usuario que haya sobrepasado la cuota sí podrá borrar ficheros.
Por grupo. Una vez superado ningún usuario del grupo podrá escribir en el sistema de ficheros, a pesar de que no haya alcanzado su cuota como usuario.
Las cuotas soft establen el umbral para avisar a los usuarios o grupos de que están llegando al límite máximo o cuota hard. Cuando se llega a esta cuota cada vez que un usuario que la ha sobrepasado escribe en el sistema de ficheros le aparece un mensaje en la terminal recordandoselo. Estas cuotas se pueden establecer:
Por usuario.
Por grupo.
Cuando se sobrepasa la cuota soft se entra en el periodo de gracia. Una vez terminado el periodo no le es permitido al usuario o grupo escribir en el sistema de ficheros hasta que libere el espacio necesario para estar por debajo de la cuota soft.
Este periodo se puede especificar en meses, semanas, dís, horas, minutos o segundos.
Será necesario que el núcleo este activado con soporte para cuotas.
Como se podría esperar sólo es superusuario o root podrá establecer las cuotas.
Para cada sistema de ficheros en el que queramos establecer las cuotas deberemos hacer lo siguiente:
Añadir en el fichero /etc/fstab
las opciones usrquota para habilitar las cuotas para usuarios y grpquota para los grupos.
Crear los ficheros quota.user
y quota.group
en la raíz del sistema de ficheros y establecer los permisos adecuados. Supongamos que queremos establecer las cuotas de usuario y grupo para el sistema de ficheros /dev/sda5 que está montado en /home
:
[root@sal]#
touch /home/quota.user
[root@sal]#
touch /home/quota.group
[root@sal]#
chmod 400 /home/quota.*
Estos ficheros contendran datos binarios y no texto.
Tendremos que inicializar las bases de datos que van a almacenar la información relativa a las cuotas en los ficheros que hemos creado anteriormente:
[root@sal]#
quotacheck -avug
quotacheck: Scanning /dev/sda5 [/home] done quotacheck: Checked 79 directories and 657 files
[root@sal]#
Las opciones que le hemos pasado a quotacheck:
a realiza la comprobación para todos los sistemas de ficheros con cuotas.
v modo verbose.
u realiza la comprobación para las cuotas de usuario.
g realiza la comprobación para las cuotas de grupo.
Activamos el sistema de quotas:
[root@sal]#
quotaon -a
[root@sal]#
Una vez configurado y arrancado el sistema de cuotas tendremos que establecer las cuotas para los diferentes usuarios y grupos.
Las cuotas se establecen por bloques e inodos. A menos que se haya jugueteado con las opciones la crear un sistema de ficheros cada bloque equivaldráa, normalmente, a 1 KB (1.24 bytes).
Utilizaremos el comando edquota para establecer las cuotas. Este comando accede a los ficheros quota.user
y quota.group
creando un fichero temporal en /tmp
editandolo por defecto con vi a menos que se especifique otro editor en las variables de entorno EDITOR o VISUAL. Algunos de los flags que podemos utilizar son:
u que se utiliza para editar las cuotas de disco de los usuarios. Si se especifica la opción g esta opción es ignorada.
g que se utiliza para editar las cuotas de disco de los grupos.
Para cambiar las cuotas del usuario pcm deberemos:
[root@sal]#
edquotacheck -u pcm
A continuación se accederá a los ficheros de cuotas y se creará en /tmp
un fichero con datos que será editado y aparecerá algo como esto:
Disk quotas for user pcm (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda5 1084 15000 25000 732 2000 3500
Modificamos los valores para hard y soft y al grabar y salir se actualiza el sistema de cuotas con los nuevos datos.
Los valores que aparecen en blocks y en inodes son los bloques e inodos que está utilizando el usuario en ese sistema de ficheros en ese momento.
Es posible establecer cuotas de usuario en línea de comando utilizando el comando setquota.
man setquota
El periodo de gracia lo estableceremos con edquota -t. El procedimiento es el mismo que para establecer las cuotas de usuarios y grupos con edquota. Al ejecutar edquota -t:
[root@sal]#
edquota -t
Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sda5 7days 7 days
Podemos establecer el periodo de gracia pro bloques o por inodos. Lo establecemos según nuestras necesidades y al salir grabando se actualizan las BBDD del sistema con los nuevos datos.
Una vez que hemos configurado los sistemas de ficheros sobre los cuales tendremos cuotas y hemos establecido dichas cuotas tendremos que arrancar el sistema de cuotas:
[root@sal]#
quotaon -av
/dev/sda5 [/home]: group quotas turned on /dev/sda5 [/home]: user quotas turned on
[root@sal]#
Los flags más habituales son:
a que inicializa las cuotas en todos los sistemas de ficheros que las tienen activadas.
v modo verbose.
u unicamente inicializa las cuotas de usuario.
g unicamente inicializa las cuotas de grupo.
Es posible inicializar las cuotas sobre un determinado sistema de ficheros:
[root@sal]#
quotaon -v /opt
/dev/sda6 [/opt]: group quotas turned on /dev/sda6 [/opt]: user quotas turned on
[root@sal]#
Podemos parar el sistema de cuotas con el comando quotaoff.
man quotaoff
Utilizaremos para ello el comando quotacheck. Este comando se utiliza para chequear y actualizar el uso de espacio en disco en los sistemas de ficheros y para repar los ficheros de cuotas quota.user
y quota.group
.
Por defecto sólo se comprueban las cuotas de usuario, si se quieren comprobar las de grupo habrá que utilizar g.
Cuando se chequeen las cuotas de disco es recomendable hacerlo con el sistema de cuotas parado.
Es aconsejable que cuando se arranque el sistema se comprueben los sistemas de ficheros con cuotas antes de inicializar el sistema de cuotas.
Los flags más habituales son:
a comprueba todos los sistemas de ficheros montados con cuotas establecidas.
g comprueba las cuotas de grupo. No se comprueban a menos que se use este flag.
i trabaja en modo interactivo.
u comprueba las cuotas de usuario. Acción por defecto.
v modo verbose. Es aconsejable utilizar este flag.
Mediante el uso de repquota es posible obtener informes sobre el estado de las cuotas del sistema. Los flags más significativos son:
a informe sobre todos los sistemas de ficheros con cuotas presentes en /etc/fstab
.
g informe sobre las cuotas de grupo.
u informe sobre las cuotas de usuario.
[root@sal]#
repquota -a
*** Report for user quotas on device /dev/sda5 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace -------------------------------------------------------------------- root -- 20 0 0 4 0 0 pcm -- 10848 15000 25000 732 2000 3500
[root@sal]#
Es posible sacar informes sobre un único sistema de ficheros pasandole el punto de montaje o el dispositivo físico como argumento a repquota.