Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Asignación de cuotas en el sistema de archivos.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos. Esta licencia deberá aparecer como primer texto del documento distribuido

Introducción.

La utilización de cuotas en el sistema de archivos permite a los administradores de sistemas realizar la gestión eficiente del espacio compartido en disco por múltiples usuarios. Las cuotas restringen la capacidad de los usuarios para acceder hacia los recursos de sistema, tales como bloques (asignación de unidades), e inodos (entradas del sistema de archivos). Cuando una cuota es excedida se aplica una política determinada por el administrador. Las cuotas se administran individualmente por cada sistema de archivos y son únicas para usuarios y/o grupos.

Acerca de las cuotas.

Una cuota de disco es un límite establecido por un administrador, el cual restringe ciertos aspectos del uso del sistema de archivos. El objetivo de las cuotas es limitar, de forma razonable, el espacio utilizado en el sistema de archivos. Suelen configurarse en servidores de correo electrónico, servidores HTTP con anfitriones virtuales, servidores de archivos, en algunos sistemas de escritorio y en cualquier escenario donde el administrador del sistema necesite controlar el espacio utilizado por lo usuarios en el sistema de archivos.

Acerca de Inodos.

De acuerdo a Wikipedia, un inodo, nodo-i o también nodo índice, es una estructura de datos propia de los sistemas de archivos en sistemas operativos tipo POSIX (Portable Operating System Interface for Unix), como GNU/Linux. Un inodo contiene las características (permisos, fechas y ubicación) de un archivo regular, directorio o cualquier otro elemento que pueda contener el sistema de archivos.

Cada inodo queda identificado en el sistema de archivos por un número entero único y los directorios recogen una lista de parejas formadas por un número de inodo y un nombre identificativo que permite acceder a un archivo en particular. Cada archivo tiene un único inodo, pero puede tener más de un nombre en distintos lugares o incluso en el mismo directorio, para facilitar su localización.

Acerca de Bloques.

De acuerdo a Wikipedia, un bloque es la cantidad más pequeña de datos que pueden transferirse en una operación de entrada/salida entre la memoria principal de una computadora y sus dispositivos periféricos o viceversa.

¿En qué casos puede ameritar configurar cuotas en el sistema de archivos?

Puede aplicar cuotas en el sistema de archivos en aquellos servidores donde se desee limitar el sudo de sistema de archivos a los usuarios locales. Ejemplos:

  • Servidores de archivos son Samba.
  • Servidores con servicio de FTP, FTPES o SFTP.
  • Servidores de correo que utilicen mbox o Maildir sin cuotas IMAP.

Tiene poco o ningún sentido aplicar cuotas de sistema de archivos en servidores con servicios que utilizan su propio sistema de cuotas. Ejemplo:

  • Servidores de correo con Cyrus-IMAP.
  • Servidores de correo con Dovecot utilizando Maildir con cuotas IMAP.
  • Servidores con aplicaciones con su propio sistema de cuotas como ownCloud.
  • Servidores cuyo único propósito son bases de datos y directorios LDAP.

Equipamiento lógico necesario.

En ALDOS, CentOS, Fedora™ y Red Hat™ Enterprise Linux.

El paquete quota viene incluido en la instalación estándar. Si se hizo una instalación mínima, puede instalarse ejecutando lo siguiente:

yum -y install quota

En openSUSE™ y SUSE™ Enterprise Linux.

El paquete quota viene incluido en la instalación estándar de SUSE™ Linux Enterprise Server. Ejecute lo siguiente si se hizo una instalación mínima:

yast -i quota

Procedimientos.

Durante la instalación del sistema operativo debió asignarse una partición dedicada a cada uno los directorios /home y /var. Éstos son los únicos directorios debajo de los cuales los usuarios regulares pueden escribir datos —directorios de inicio y buzones de correo— y por tanto los únicos donde amerita aplicar cuotas al sistema de archivos.

Configuración manual de /etc/fstab.

Edite el archivo /etc/fstab.

vi /etc/fstab

Sistema de archivos Ext3 y Ext4.

Si utiliza Ext4 como sistema de archivos en CentOS 6, Fedora™, Red Hat™ Enterprise Linux 6 o SUSE™ Linux Enterprise 11, puede utilizar cuotas con registro por diario (journaled quotas) sin modificar el núcleo del sistema o instalar otra versión de quota-tools. Las cuotas con registro por diario funcionan de modo similar al registro por diario de los sistemas de archivos Ext3/Ext4, garantizando la integridad de los archivos de cuotas, lo cual evita que el sistema se vea obligado a ejecutar automáticamente quotacheck después de un apagado incorrecto.

Añada a la columna de opciones de las particiones /var y /home, la opción usrjquota con el valor aquota.user, la opción grpjquota con el valor aquota.group y la opción jqfmt con el valor vfsv0:

Si utiliza Ext3 o Ext4 en ALDOS, CentOS o Red Hat™ Enterprise Linux, el siguiente es un ejemplo de cómo pudiera quedar la configuración de las particiones.

/dev/sda7  /var   ext4  defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0  1 2
/dev/sda5  /home  ext4  defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0  1 2

Si utiliza Ext3 o Ext4 openSUSE™ o SUSE™ Linux Enterprise Linux, el siguiente es un ejemplo de cómo pudiera quedar la configuración de las particiones.

/dev/sda7  /var   ext3  acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0  1 2
/dev/sda5  /home  ext3  acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0  1 2


Nota.

Si utiliza CentOS 5, Red Hat™ Enterprise Linux 5 o SUSE™ Linux Enterprise 10, oficialmente éstos carecen de soporte para cuotas con registro por diario. Requieren un parche en el núcleo de Linux para poder hacer uso de éstas. En estos sistemas operativos sólo se pueden utilizar cuotas sin registro por diario, por lo cual sólo se deben añadir las opciones usrquota y grpquota en el archivo /etc/fstab, en la columna de opciones correspondientes a las particiones /var y /home. Ejemplo:

LABEL=/var	/var	ext3	defaults,usrquota,grpquota	1 2
LABEL=/home 	/home	ext3	defaults,usrquota,grpquota	1 2

Sistema de archivos Xfs.

Si utiliza Xfs como sistema de archivos en ALDOS, CentOS o Red Hat™ Enterprise Linux, el soporte de cuotas ya incluye registro por diario. El siguiente es un ejemplo de cómo pudiera quedar la configuración de las particiones.

/dev/mapper/centos-var   /var   xfs  defaults,usrquota,grpquota  0 0
/dev/mapper/centos-home  /home  xfs  defaults,usrquota,grpquota  0 0

Configuración de /etc/fstab a través de YaST en openSUSE™ o SUSE™ Linux Enterprise Linux.

Ejecute yast con disk como argumento:

yast disk

Lea la advertencia, seleccione «Yes» y pulse la tecla ↵ (ENTER).

Seleccione la partición o volumen lógico correspondiente a «/home» y pulse la tecla ↵ (ENTER).

Aparecerá una pantalla con el resumen del dispositivo correspondiente a «/home». Seleccione Edit y pulse la tecla ↵ (ENTER).

Aparecerá la pantalla de edición de «/home». Seleccione «Fstab Options» y pulse la tecla ↵ (ENTER).

Seleccione la casilla «Enable Quota Support», pulse la tecla espaciadora para habilitar la opción y pulse la tecla ↵ (ENTER).

Regresará a la pantalla de edición de /home. Seleccione «Finish» y pulse la tecla ↵ (ENTER).

Regresará al resumen del dispositivo correspondiente a «/home».

Seleccione la partición o volumen lógico correspondiente a «/var», pulse la tecla ↵ (ENTER), seleccione Edit y pulse la tecla ↵ (ENTER).

Aparecerá la pantalla de edición de «/var». Seleccione «Fstab Options» y pulse la tecla ↵ (ENTER).

Seleccione la casilla «Enable Quota Support», pulse la barra espaciadora para habilitar la opción y pulse la tecla ↵ (ENTER).

Regresará a la pantalla de edición de «/var». Seleccione «Finish» y pulse la tecla ↵ (ENTER).

Regresará al resumen del dispositivo correspondiente a «/var». Seleccione «Next» y pulse la tecla ↵ (ENTER).

Aparecerá un resumen con las operaciones que se realizarán. Seleccione «Finish» y pulse la tecla ↵ (ENTER).

Regresará al intérprete de mandatos.

Aplicar cambios, crear archivos de quotas y activar quotas.

Sistema de archivos Ext3 y Ext4.

Deben aplicarse los cambios realizados a /home y /var reiniciando el sistema o bien ejecutando lo siguiente:

mount -o remount /home
mount -o remount /var

Lo anterior vuelve a leer las opciones de montado de cada una de las particiones y aplicá los cambios inmediatamente.

Ejecute quotacheck con las opciones -avugcm, donde a significa que se verifican todos los sistemas de archivos con soporte para cuotas, v significa que se devuelvan mensajes descriptivos, u significa que se verifiquen cuotas de usuario, g significa que se verifiquen cuotas de grupo, c significa omitir verificar archivos de cuota previos y crear nuevos archivos y m significa que se evite re-montar en modo de sólo lectura los sistemas de archivos, que idealmente se utiliza cuando se tiene procesos trabajando en las particiones:

quotacheck -avugcm

El manual de quotacheck puede consultarse ejecutando lo siguiente:

man 8 quotacheck

Para activar las cuotas recién configuradas, asumiendo que se están configurando las particiones correspondientes a /home y /var, ejecute lo siguiente:

quotaon /home
quotaon /var

A partir de este momento podrá aplicar cuotas en el sistema de archivos a todos los usuarios del sistema utilizando edquota.

Sistema de archivos Xfs.

Xfs requiere desmontar y volver a montar las particiones modificadas, pues carece de soporte para utilizar la opción remount para mount. Reinicie el sistema para aplicar los cambios si así es el caso.

Edquota.

Edquota se utiliza para gestionar las cuotas asignadas a usuarios y/o grupos. El manual de éste puede consultarse ejecutando lo siguiente:

man 8 edquota

Es importante conocer que significa cada campo mostrado por edquota.

Blocks: Bloques. Corresponde a la cantidad de bloques de 1 Kb que está utilizando el usuario en cada sistema de archivos con soporte para cuotas. Jamás se debe modificar los datos de este campo.

Inodes: Inodos. Corresponde al número de archivos que está utilizando el usuario. Un inodo (también conocido como Index Node) es un apuntador hacia sectores específicos en la unidad de almacenamiento en los cuales se encuentra la información de un archivo. Contiene además la información acerca de permisos de acceso así como los usuarios y grupos a los cuales pertenece el archivo. Jamás se debe modificar los datos de este campo.

Soft: Limite de gracia. Limite de bloques de 1 KB o inodos que el usuario tiene permitido utilizar y que puede rebasar hasta que sea excedido el periodo de gracia (de modo predeterminado son 7 días).

Hard: Limite absoluto. Limite que no puede ser rebasado por el usuario bajo circunstancia alguna.

Ejecute edquota especificando como argumento el nombre del usuario para asignar cuotas a cualquier usuario regular. Ejemplo:

edquota fulano

Lo anterior deberá devolver algo similar a lo siguiente:

Disk quotas for user fulano (uid 501):
Filesystem    blocks     soft     hard   inodes     soft     hard
/dev/sda7          8        0        0        1        0        0
/dev/sda5         24        0        0       10        0        0

Ejecute edquota con la opción -g y especificando como argumento el nombre del grupo para asignar cuotas a cualquier grupo de usuarios regulares. Ejemplo:

edquota -g desarrollo

Lo anterior deberá devolver algo similar a lo siguiente:

Disk quotas for group desarrollo (gid 510):
Filesystem    blocks     soft     hard   inodes     soft     hard
/dev/sda7       4238        0        0      251        0        0
/dev/sda5       6234        0        0      340        0        0

Cuando se asignan cuotas a grupos, estás definen los límites en conjunto para todo el grupo de usuarios que pertenezcan a un grupo determinado.

Cuota absoluta.

Suponiendo que se quiere asignar una cuota de disco de 50 MiB para el usuario «fulano» en en /dev/sda7 y /dev/sda5, se utilizaría lo siguiente:

Disk quotas for user fulano (uid 501):
Filesystem    blocks     soft     hard   inodes     soft     hard
/dev/sda7          8        0    51200        1        0        0
/dev/sda5         24        0    51200       10        0        0

El usuario siempre podrá rebasar una cuota de gracia pero nunca una cuota absoluta.

Cuota de gracia.

De modo predeterminado el sistema asigna un periodo de gracia de 7 días, que se puede modificar ejecutando edquota con la opción -t:

edquota -t

Donde se puede establecer un nuevo periodo de gracia, ya sea por días, horas, minutos o segundos.

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/hdb7                  7days                  7days
/dev/hdb5                  7days                  7days

La cuota de gracia establece los límites de bloques o inodos que un usuario tiene en un sistema de archivos en particular. Cuando el usuario excede el límite establecido por la cuota de gracia, el sistema advierte al usuario que se ha excedido la cuota del disco sin embargo permite al usuario continuar escribiendo hasta que trascurre el tiempo establecido por el periodo de gracia, tras el cual al usuario se le impide continuar escribiendo sobre el sistema de archivos. Suponiendo que quiere asignar una cuota de gracia de 25 MiB en /dev/sda7 y /dev/sda5, la cual podrá ser excedida hasta por 7 días, se utilizaría la siguiente configuración:

Disk quotas for user fulano (uid 501):
Filesystem    blocks     soft     hard   inodes     soft     hard
/dev/sda7          0    25600        0        0        0        0
/dev/sda5         24    25600        0       10        0        0

Aplicando cuotas de forma masiva.

Si se quiere aplicar un mismo esuqema de cuotas de disco para todos los usuarios regulares del sistema, a partir de UID 501, por mencionar un ejemplo y asumiendo que utilizará como plantilla el esquema de cuotas de disco del usuario «fulano», ejecute lo siguiente —por favor, note los dos acentos graves utilizados a continuación, pues se trata de un carácter diferente a la comilla simple:

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

Comprobaciones.

Acceda al sistema como root.

Ejecute edquota con fulano como argumento para modificar los límites de este usuario:

edquota fulano

Asigne al usuario «fulano» una cuota de gracia de 50 MiB, una cuota absoluta de 100 MiB, un límite de gracia de 1000 archivos y un límite absoluto de 1500 archivos en todas las particiones con cuota de disco habilitada:

Disk quotas for user fulano (uid 501):
Filesystem    blocks     soft     hard   inodes     soft     hard
/dev/sda7          0    51200   102400        0     1000     1500
/dev/sda5         24    51200   102400       10     1000     1500

Cambie el usuario fulano.

su -l fulano

Consulte el manual de quota antes de continuar:

man 1 quota

Ejecute quota para verificar las cuotas asignadas al usuario utilizado:

quota

Observe con detenimiento la salida:

Disk quotas for user fulano (uid 501):
Filesystem  blocks    quota   limit   grace   files   quota   limit   grace
/dev/sda7        8    51200  102400               1    1000    1500        
/dev/sda5       24    51200  102400              10    1000    1500        

Copia el directorio /usr/lib como el sub-directorio ~/prueba-cuotas:

cp -r /usr/lib ~/prueba-cuotas

Notará que llegará un momento en el que el sistema indicará que ya es imposible continuar copiando contenido dentro de ~/prueba-cuotas debido a que se agotó el espacio disponible para el usuario en el sistema de archivos.

Ejecute de nuevo quota y observe con detenimiento la salida. En ésta aparecerá un asterisco junto a la cantidad mostrada en las columnas de bloques o bien inodos en los casos donde se hayan excedido las cuotas:

Disk quotas for user fulano (uid 501):
Filesystem  blocks    quota   limit   grace   files   quota   limit   grace
/dev/sda7        8    51200  102400               1    1000    1500        
/dev/sda5   102400*   51200  102400   6days   1500*    1000    1500   6days

Es necesario liberar espacio para poder volver a escribir nuevamente sobre el sistema de archivos. Debido a que muy probablemente parte del contenido de /usr/lib se copió en modo de sólo lectura, cambie primero los permisos del contenido del directorio ~/prueba-cuotas a fin de disponer de permisos de lectura y escritura requeridos para borrar:

chmod -R u+w ~/prueba-cuotas

Elimine el directorio ~/prueba-cuotas:

rm -fr ~/prueba-cuotas

Ejecute de nuevo quota para verificar que nuevamente se está trabajando dentro de los límites establecidos:

quota

La salida debe ser similar a la siguiente:

Disk quotas for user fulano (uid 501):
Filesystem  blocks    quota   limit   grace   files   quota   limit   grace
/dev/sda7        8    51200  102400               1    1000    1500        
/dev/sda5       24    51200  102400              10    1000    1500        

Salga de la sesión de fulano:

exit

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Última Edición: 30/08/2016, 21:20|Hits: 68,574 Ver la versión para imprimir