martes, 10 de noviembre de 2015

IMPLEMENTACION DE CUOTAS DE DISCO EN FREEBSD

Las cuotas de disco permiten limitar la cantidad de espacio de disco o el número de archivos que un usuario o grupo de usuarios pueden almacenar en una unidad de almacenamiento específica.

    Para usar la asignación de cuotas de disco primeramente se debe revisar si nuestro kernel tiene habilitada esta opción mediante el siguiente comando.

sysctl kern.features.ufs_quota

Si este comando devuelve un valor de 1 indica que esta característica de cuota de disco se encuentra habilitada en nuestro kernel.

           
    En caso que el valor devuelto por el comando anterior sea 0 indica que no esta habilitado el soporte de cuotas de disco en nuestro kernel y tendríamos que reconstruir un nuevo kernel con esta opción habilitada agregando al archivo de configuración del kernel la siguiente línea.

options QUOTA

    He revisado varias instalaciones de FreeBSD en sus versiones 10.0 y 10.1, y contrario a lo que indica la mayoría de la documentación, en estas versiones del sistema, el kernel GENERIC viene con la característica de cuota de disco habilitada.

    Una vez que hemos verificado que la cuota de disco esta habilitada en nuestro sistema, procedemos a realizar su inicio al momento del arranque del sistema, mediante la edición del archivo /etc/rc.conf.

vi /etc/rc.conf


    Dentro de este archivo debemos agregar la siguiente línea.

quota_enable=”YES”


               
    Para habilitar la cuota de disco en una partición específica, se debe editar el archivo /etc/fstab y añadir a la línea correspondiente a dicha partición el parámetro correspondiente para habilitar las cuotas de disco.

vi  /etc/fstab


    El archivo /etc/fstab contiene el registro de las diferentes particiones que contiene nuestro sistema, además de algunas características que describen el comportamiento de cada partición.


               
    Las cuotas de disco pueden ser habilitadas para usuarios, grupos o ambos.

    Para habilitar la cuota de disco por usuario, se debe agregar el parámetro userquota a la línea de la partición correspondiente en el archivo /etc/fstab bajo la columna Options.


               
    Para habilitar la cuota de disco por grupo de usuarios, se debe agregar el parámetro groupquota a la línea de la partición correspondiente en el archivo /etc/fstab bajo la columna Options.


               
    Para habilitar las cuotas de disco por usuarios y por grupos de usuarios, se colocan los dos parámetros userquota y groupquota separados por coma, en la línea de la partición correspondiente bajo la columna Options.


    La información de las cuotas de disco de cada partición se almacena en los archivos quota.user y quota.group, en el directorio raíz, estos archivos son creados automáticamente por la utilidad quotacheck durante el primer reinicio del sistema luego de habilitar las cuotas en el archivo /etc/rc.conf.

    Durante los arranques subsiguientes del sistema, el programa quotacheck verifica que los datos almacenados en la base de datos quota refleje apropiadamente la data en el sistema de archivos, lo cual consume un tiempo de proceso durante el inicio del sistema, para saltar este chequeo se agrega la siguiente línea en el archivo /etc/rc.conf.

check_quota=”NO”

    Se debe tener la precaución de no agregar esta linea al archivo /etc/rc.conf hasta no realizar un reinicio luego de habilitar las cuotas de disco, para que se creen automáticamente los archivos quota.user y quota.group anteriormente nombrados.

    Una vez finalizada la configuración de las cuotas de discos, se procede a reiniciar el sistema, para cargar el nuevo kernel, si fue necesario personalizarlo, además de inicializar la cuota y crear automáticamente los archivos quota.user y quota.group.


               
    Durante el arranque del sistema podemos ver como se chequea y habilita las cuotas de disco.


    Una vez reiniciado el sistema por primera vez luego de haber habilitado el uso de cuotas de disco en el sistema, se revisa que efectivamente hayan sido creados los archivos quota.user y quota.group en el directorio raíz.


    Verificamos que efectivamente fueron creados los archivos de las cuotas.


    En caso de que los archivos quota.user y quota.group no hayan sido creados automáticamente durante el primer arranque del sistema luego de habilitar las cuotas de disco, se pueden crear mediante la ejecución del siguiente comando.

quotacheck -a

    Luego del reinicio del sistema con las cuotas de disco habilitadas, podemos verificar que efectivamente las cuotas han sido activadas mediante la ejecución del siguiente comando.

quota -v


    Con la ejecución de este comando veremos los sistemas de archivos que tienen habilitada la cuota de disco para el usuario actual, en este caso root, los límites de disco , indicando el uso actual de la cuota del usuario.


    Cada usuario puede consultar los límites de cuota y el uso actual del propio usuario o del grupo de usuarios al cual pertenece. Solo el usuario root puede verificar los límites y el uso de cuota de disco de usuarios y grupos diferentes al propio usuario que invoca el comando, mediante el uso de los argumentos -u para indicar el usuario o el argumento -g para indicar el grupo.

    Otros comandos raramente utilizados pero que es conveniente conocer su existencia, son los comandos quotaoff y quotaon. quotaoff se usa para detener el uso de límites de cuotas de discos en nuestro sistema en un momento determinado. quotaoff y quotaon se usan secuencialmente para activar una nueva configuración de las cuotas de disco sin necesidad de reiniciar el sistema operativo. Se debe usar el argumento -a para que los efectos sean aplicados a todas las particiones que tengan habilitada la opción de cuotas de disco.

    Ahora que se tiene habilitada la característica de cuotas de disco en las particiones de nuestro sistema, podemos asignar cuotas límite de uso de disco para cada usuario y grupo registrado en el sistema.

    Los límites de cuota de disco que se pueden asignar a usuarios y grupos pueden ser por la cantidad de espacio de disco que un usuario o grupo pueden utilizar (block quotas) y el número de archivos que un usuario o grupo pueden crear en el disco (inode quotas). Estos límites pueden ser límites duros y límites blandos.

    Un límite duro no puede ser excedido, una vez que un usuario alcanza un límite duro, ningún archivo adicional puede ser almacenado por ese usuario en la partición específica en la cual se alcanza el límite.

    El límite blando puede ser excedido por un limitado periodo de tiempo, conocido como periodo de gracia, el cual es de una semana por defecto. Si un usuario permanece sobre su límite por un periodo de tiempo mayor al periodo de gracia, el límite blando pasa a ser un límite duro y no se permite almacenar ningún archivo adicional. Una vez que el usuario vuelve a tener un espacio de almacenamiento ocupado menor a su límite blando, el periodo de gracia se reinicia.

    Para asignar límites de cuota de disco a cada usuario y grupo de usuario se utiliza el comando edquota, el cual es el editor de las cuotas de disco, se le debe indicar el nombre del usuario al que se va a aplicar la cuota como argumento. Se puede limitar el espacio de disco (block quota) y el número de archivos (inode quota) sobre las particiones con la característica de cuota de disco habilitada con el uso de edquota.

    Al ejecutar el comando edquota, el sistema invoca al editor de texto por defecto definido en la variable de entorno EDITOR (en el caso del sistema operativo FreeBSD es el editor vi) y muestra el estado actual de asignación de cuotas de disco para el usuario especificado como argumento.

    Hay normalmente dos líneas por cada partición que tenga habilitada la cuota de disco, una representa el límite de espacio de disco o bloques y la otra representa el limite de numero de archivos o inodes, en cada una de las cuales se encuentran los límites duro y blando.


    Los límites en cero indican que ningún límite es asignado al usuario, este es el valor por defecto.

    Las modificaciones que se realizan sobre la asignación de cuotas de discos sigue el mismo patrón del editor de texto vi, ya que este es el usado para realizar la edición de este archivo de configuración. Asignamos valores de límites blando y duro al usuario indicado y guardamos los cambios con el editor.


    Una vez finalizada la configuración de los límites de la cuota de disco, se guardan los cambios y se sale del editor, el programa edquota se encarga de aplicar los límites de cuota de disco al sistema de archivos mediante la asignación de las modificaciones realizadas a los archivos de configuración de cuotas de disco del sistema.

    Algunas veces es conveniente configurar los límites de cuota de disco a un rango de usuarios, esto se puede hacer asignando primero los límites de cuota a un usuario específico, luego se usa el comando edquota con el argumento -p para asignar los parámetros de cuota de un usuario especificado a un rango específico de ID de usuario, como se muestra en el siguiente comando.

edquota -p usuarioplantilla 10000-15000

    Para configurar límites de cuotas de disco a un grupo de usuarios específico, se usa el comando edquota con el argumento -g y el nombre del grupo al cual se le quiere asignar el límite de cuota, como se muestra en el siguiente comando.

edquota -g nombregrupo

    Se puede configurar también el periodo de gracia por defecto ejecutando el siguiente comando.

edquota -t

    Ejecutando el comando edquota -t sin argumentos adicionales por defecto o con el argumento adicional -u, se aplica el periodo de gracia a las particiones que tengan asignado la cuota de usuario (userquota) en el archivo /etc/fstab.


    Observamos que se configura el periodo de gracia para los usuarios.


    Ejecutando el comando edquota -t con el argumento adicional -g, se aplica el periodo de gracia a las particiones que tengan asignado la cuota de grupo (groupquota) en el archivo /etc/fstab.


    Observamos que se configura el periodo de gracia para los grupos.


    El periodo de gracia indicado en 0 que es el valor por defecto, aplica un periodo de gracia de una semana.

    Para obtener un resumen de cuotas y uso de disco para un sistema de archivo con cuota de disco habilitada, se usa el comando repquota. Con el argumento -a muestra toda la información de cuota de disco, usado y límites para todas las particiones, el argumento -v coloca un encabezado en la información mostrada, el argumento -u muestra el uso y límites de cuota de disco de cuotas de usuarios, el argumento -g muestra el uso y límites de cuota de disco de cuotas de grupos.

    Con el siguiente comando vemos un resumen de todas las particiones y las cuotas por usuario.


    Podemos ver que para cada usuario se muestra el espacio de disco ocupado, el límite blando y duro de espacio de disco, el número de archivos almacenado, el limite de numero de archivos y el periodo de gracia de cada usuario.


    Para ver la cuota de disco usada, el número de archivos almacenado y los límites de un usuario específico se ejecuta el siguiente comando.

quota -v -u nombreusuario


    Se muestra en detalle el uso de disco actual, los límites y el periodo de gracia, tanto para el espacio de disco como para número de archivos almacenados por un usuario específico en la partición con cuota de disco habilitada.


    Para ver el uso y límites de las cuotas de un grupo de usuarios específico, se usa el siguiente comando.

quota -v -g nombregrupo


    Podemos ver el espacio de disco usado, los límites, el número de archivos almacenados y el periodo de gracia configurado para un grupo de usuarios específico.


    Se debe aclarar que un usuario diferente al usuario root, sólo puede ver la cuota de disco propia y la cuota de disco del grupo de usuarios al cual pertenece, solo el usuario root puede ver el estado de la cuota de disco de todos los usuarios y grupos.

    En el resumen de las cuotas de un usuario o grupo de usuarios específico, se representa una cuota de disco que ha rebasado un límite marcada con un signo asterisco (*) además comienza el conteo del tiempo de gracia si el límite excedido es el límite blando.


    Para finalizar se puede considerar el caso de colocar el límite duro a 1, lo cual no permite almacenar ningún archivo adicional al disco, fijando el límite duro a cero y el límite blando a 1 indica que solo se puede guardar información por un periodo de tiempo limitado, indicado por el periodo de gracia.


REFERENCIAS

Documentacion oficial del proyecto FreeBSD
https://www.freebsd.org/doc/es/books/handbook/index.html

Cuota en sistema de archivos FreeBSD
https://www.freebsd.org/doc/es/books/handbook/quotas.html


FreeBSD, un secreto bien guardado, Mundo Linux n° 74

The FreeBSD Handbook

Absolute FreeBSD The Ultimate Guide to FreeBSD, Michael Lucas.

The Complete FreeBSD, Documentation from the Source, Greg Lehey.

Network Administration with FreeBSD 7, building, securing and maintaining networks with the FreeBSD operating system, Babak Farrokhi.

Teach Yourself FreeBSD in 24 Hours, Michael Urban y Brian Tiemann.


Grupo FreeBSD en español en Facebook
https://www.facebook.com/groups/427248890721920/