Preparación para el examen LPI 101

Tema 104.4
Administrando cuotas de disco

Créditos y licencia de uso

Coordinación:

Manuel Guillán (xLekOx) lpi@xlekox.org

Traducción:

Juan Maria Gil (Smooth) yo@juanmaria.com

Maquetación:

Manuel Guillán (xLekOx) lpi@xlekox.org

Kiefer Von Jammo (Kiefer) kiefer@khrooon.net

Versión 1.0 (02-09-2004 2:00)

Distribuido por FreeUOC (www.freeuoc.org) bajo licencia: Attribution-NonCommercial-ShareAlike2.0 de commons creative

http://creativecommons.org/licenses/by-nc-sa/2.0/

ÍNDICE

Índice de contenido

Tema 104.4
Administrando cuotas de disco	1

Créditos y licencia de uso	2

ÍNDICE	3

Introducción	4

Establecer y Consultar Cuotas de Disco	5

Cuotas de Limitación	5

Comandos de cuotas	6

quota	6

quotaon	7

quotaoff	8

quotacheck	8

edquota	9

repquota	11

Habilitando las cuotas	11

Bibliografia y enlaces recomendados	14

Introducción

En este capítulo se verá como administrar las cuotas en el disco para los usuarios. Entre los objetivos está el establecimiento, editado, comprobación y generación de informes

Los comandos que se verán en este tema son:

quota

edquota

repquota

quotaon

quotaoff

quotacheck

Este tema tiene un peso (importancia) de 3 de cara al examen final de la certificación LPI 101. El total de la suma de pesos de todos los temas es de 106.

Establecer y Consultar Cuotas de Disco

La administración del espacio en disco puede ser una tarea problemática. El espacio disponible es un recurso limitado que muy a menudo se consume a un ritmo alarmante provocando que un filesystem bien proporcionado se vuelva insuficiente al cabo del tiempo. En los sistemas multiusuario – no importa lo grande que sea el filesystem – los usuarios siempre terminarán llenándolo. Y a nadie le interesa que un filesystem se llene demasiado pronto. Una forma de prevenir que ésto ocurra es el establecimiento de cuotas de disco, de esta forma podrán establecerse límites a la cantidad de espacio en disco consumido por usuarios independientes o por grupos de éstos.

Típicamente un tamaño de cuota es mucho menor que el espacio libre del filesystem donde se configura, de esta forma se puede evitar que un usuario o un grupo consuma demasiado espacio. Pueden configurarse cuotas para cada filesystem incluido en /etc/fstab, aunque normalmente solo se aplican en aquellos filesystems donde los usuarios finales guardan sus archivos (p.e., /home/nombreusuario). No es necesario establecer una cuota en /usr, por ejemplo, ya que los usuarios finales no pueden guardar ficheros allí. Pueden configurarse cuotas para los usuarios individuales incluidos en /etc/passwd y para los grupos en /etc/group.

Cuotas de Limitación

Pueden establecerse hasta cinco tipos de cuotas de limitación por cada filesystem. Estas limitaciones se especifican en bloques de disco, normalmente de 1024 bytes cada uno:

Límite “hard” por usuario:

El límite hard es la máxima cantidad de espacio en disco que un usuario puede disponer en el sistema. Una vez que el usuario alcanza este límite ya no se le permitirá realizar nuevas escrituras en el disco.

Límite “soft” por usuario:

Cada usuario puede almacenar datos libremente en el filesystem hasta que alcance el límite soft. Éste límite actúa como una especie de zona de aviso, advirtiendo al usuario que debe ir limpiando sus directorios pero, a diferencia del límite hard se le permite seguir trabajando. Cuando el espacio consumido por un usuario supera el límite soft pero no el límite hard se envían mensajes de aviso al terminal del usuario advirtiéndole que está excediendo su cuota pero las operaciones de escritura terminarán correctamente.

Límite “hard” por grupo:

Se trata del límite final asignado a un grupo por el sistema de cuotas. Una vez que se alcanza este límite, ninguno de los miembros de dicho grupo podrán realizar escrituras en el disco, incluso aunque no hayan excedido sus límites individuales.

Límite “soft” por grupo:

Este límite se comporta de la misma forma que el de usuario pero se controla en base al espacio consumido por el grupo en lugar de por el usuario individual.

Periodo de gracia:

Una vez que se alcanza el límite soft comienza el periodo de gracia para el usuario o el grupo. Cuando expira éste periodo de gracia, el límite soft se convierte en límite hard hasta que se hayan eliminado los ficheros suficientes para que se resuelva el exceso de cuota. El periodo de gracia puede ajustarse para cualquier número de meses, semanas, días, horas, minutos o segundos. Un valor típico es el de siete días.

Todos estos límites pueden establecerse utilizando el comando edquota, que se detallará a continuación.

Cuando una escritura en disco excede un límite hard o un límite soft con el periodo de gracia expirado, solo se completará una parte de la operación de escritura dejando un fichero truncado y, probablemente, inservible.

Puede que el usuario no haya podido ver los mensajes de fin de cuota porque la aplicación haya ocultado la shell y los mensajes de dicha aplicación lo lleven a confusión al indicarle que el disco está lleno o protegido de escritura.

Comandos de cuotas

Linux proporciona una serie de comandos para gestión y consulta de las cuotas en los filesystems. Parte de la configuración requerida para establecer las cuotas inicialmente ha de hacerse a mano y sin ninguno de los comandos específicos de cuotas. Este proceso se explicará en la siguiente sección: Habilitando las Cuotas.

quota

Muestra las limitaciones de cuota en usuario o en grupo. La opción -u está activada por defecto. Solo el superusuario puede utilizar la opción -u y usuario para ver las limitaciones de otros usuarios. El resto de los usuarios usuarios podrán usar la opción -g y grupo para ver solamente las limitaciones de los grupos de los que sean miembros, siempre y cuando tengan permiso de lectura en los ficheros quota.group.

Sintaxis:

quota [-u] [opciones] usuario

quota -g [opciones] grupo

Tabla 4-1 Opciones de uso frecuente del comando quota

Opción	Función
-q	Establece el modo “silencioso” que solo muestra las situaciones de exceso de cuota.
-v	Establece el modo explícito que muestra las cuotas incluso cuando no se ha consumido ningún espacio en disco o no se hayan definido.

Ejemplo 1

Siendo root, examina todas las cuotas del usuario fulanito :

# quota -uv fulanito

Disk quotas for user fulanito (uid 500):

Filesystem blks quota limit grace files quota limit grace

/dev/sda9 9456 10000 10200 32 0 0

/dev/hda1 23 0 0 17 0 0

Este ejemplo muestra que fulanito está cerca de consumir su límite soft de 10,000 bloques, con un límite hard de 10,200 bloques en /dev/sda9, y que no tiene cuota establecida en /dev/hda1. La línea correspondiente /dev/hda1 se muestra debido a la utilización de la opción -v. No se muestran los valores correspondientes al periodo de gracia porque aun no se ha excedido el límite soft.

Ejemplo 2

Siendo el usuario fulanito, examina las cuotas para el grupo finanzas, del que dicho usuario es miembro:

$ quota -gv finanzas

Disk quotas for group finanzas (gid 501):

Filesystem blks quota limit grace files quota limit grace

/dev/sda9 1000* 990 1000 6days 34 3980 4000

/dev/hda1 0 0 0 0 0 0

En este caso, el grupo finanzas ha excedido el escaso límite soft de 990 bloques y ha alcanzado su límite hard de 1000 bloques. (Probablemente no se pudo completar la operación de escritura que escribió el bloque número 1000.) El periodo de gracia original en este ejemplo se estableció en siete días de los cuales quedan seis días restantes, lo que quiere decir que ha pasado un día desde que se excedió el límite soft.

quotaon

Activa las cuotas configuradas previamente en uno o más filesystems.

Sintaxis:

quotaon [opciones] [filesystems]

quotaon [opciones] -a

Tabla 4-2 Opciones de uso frecuente del comando quotaon

Opción	Función
-a	Activa las cuotas en todos los filesystems incluidos en /etc/fstab y que estén marcados como de lectura-escritura y con cuotas. Normalmente se utiliza en el proceso de arranque para activar las cuotas.
-g	Activa las cuotas de grupo. Esta opción no es necesaria si se utiliza -a ya que ésta otra activa tanto las cuotas de usuario como las de grupo.
-u	Activa las cuotas de usuario; esta es la opción por defecto.
-v	Establece el modo explícito de tal forma que se muestra un mensaje por cada filesystem en el que se han activado las cuotas.

Ejemplo 1

Activar todas las cuotas definidas en /etc/fstab :

# quotaon -av

Ejemplo 2

Activar las cuotas de usuario sólo en el filesystem /home:

# quotaon -uv /home

quotaoff

Desactiva las cuotas de disco en uno o más filesystems.

Sintaxis:

quotaoff [opciones] [filesystems]

quotaoff [opciones] -a

Tabla 4-3 Opciones de uso frecuente del comando quotaoff

Opción	Función
-a	Desactiva las cuotas en todos los filesystems en /etc/fstab.
-g	Desactiva las cuotas de grupo. Esta opción no es necesaria si se utiliza la -a ya que ésta última incluye tanto las cuotas de usuario como las de grupo.
-u	Desactiva las cuotas de usuario; esta es la opción por defecto.
-v	Establece el modo explícito que mostrará un mensaje para cada filesystem en el que se desactiven las cuotas.

Ejemplo

Desactivar todas las cuotas mostrando todos los mensajes:

# quotaoff -av

quotacheck

Examina los filesystems y compila las bases de datos de cuotas. Esta comando no está incluido específicamente en los objetivos del examen LPI 101, pero es un componente importante en el sistema de cuotas de Linux. El comando quotacheck -a debería ser ejecutado de forma regular (posiblemente semanalmente) por medio de cron.

Sintaxis:

quotacheck [opciones] filesystems

quotacheck [opciones] -a

Tabla 4-4 Opciones de uso frecuente del comando quotacheck

Opción	Función
-a	Comprueba todas las cuotas de los filesystems incluidos en /etc/fstab. Se comprobarán tanto las cuotas de usuario como las de grupo según se indique en las opciones usrquota y grpquota.
-g grupo	Compila solamente la información de grupo.
-u usuario	Compila solamente la información de usuario; ésta es la opción por defecto. No obstante, si se especificase la opción -g, entonces habría que incluir esta si se desea que se procesen también las cuotas de usuario.
-v	Establece el modo explícito que mostrará toda la información de lo que el programa está haciendo. Esta opción indica que el programa está activo mediante un símbolo giratorio en el terminal. Ésto queda muy bonito pero podría ser un problema si estamos conectados mediante un módem lento.

Ejemplo 1

Inicializa todos los ficheros de cuotas:

# quotaoff -a

# quotacheck -aguv

# quotaon -a

Para actualizar los ficheros de bases de datos de cuotas debemos desactivar primero las mismas.

Ejemplo 2

Con las cuotas activas, actualizar las cuotas de usuario en memoria para el filesystem /home :

# quotacheck -v /home

edquota

Modifica las cuotas de usuario o grupo. Este es un comando interactivo que utiliza un editor de texto para configurar los parámetros de cuotas para usuarios o grupos. Por defecto se utiliza el editor vi a menos que las variables de entorno EDITOR o VISUAL apunten a otro editor como Emacs. Cuando se envía el comando, se ejecuta un editor con un fichero temporal que contiene las opciones de cuotas. Al guardar el fichero temporal, el editor finaliza y los cambios se guardan en las bases de datos de cuotas.

En la primera forma del comando, se modifica una lista de usuarios o grupos separados por espacios en blanco especificados en el apartado nombres. Si se incluye la opción -p y proto-usuario, las cuotas de ese usuario o grupo se utilizarán para los nombres y no se lanzará ningún editor.

En la segunda forma del comando, con la opción -t, se editarán interactivamente los límites soft para cada filesystem.

Sintaxis:

edquota [-p proto-usuario] [opciones] nombres

edquota [opciones] -t

Tabla 4-5 Opciones de uso frecuente del comando edquota

Opción	Función
-g	Modifica las cuotas de grupo. Si se especifica -g, se asumirá que todos los nombres son grupos y no usuarios, incluso si se especificase también -u.
-p proto-usuario	Duplica las cuotas del usuario prototipo para cada grupo o usuario especificado. Este es el mecanismo mas habitualmente utilizado para inicializar al mismo tiempo las cuotas de varios usuarios o grupos.
-t	Modifica los límites soft. Este comando interpreta unidades de sec(segundos), min(minutos), hour (horas), day (días), week (semanas), y month (meses).
-u	Modifica las cuotas de usuario. Es la opción por defecto, pero se ignorará si se especificase la opción -g

Los siguientes ejemplos muestran la salida de los comandos utilizando el editor vi.

Ejemplo 1

Modifica las cuotas de usuario para fulanito :

# edquota -u fulanito

Quotas for user fulanito:

/dev/sda9: blocks in use: 87, limits (soft = 99900,

hard = 100000)

inodes in use: 84, limits (soft = 0, hard = 0)

/dev/hda1: blocks in use: 0, limits (soft = 0, hard = 0)

inodes in use: 0, limits (soft = 0, hard = 0)

"/tmp/EdP.auHTZJ0" 5 lines, 241 characters

En este ejemplo, a fulanito se le ha definido en /dev/sda9 un límite soft de 99.900 bloques, un límite hard de 100.000 bloques, y ningún límite de ficheros. No tiene ninguna limitación en /dev/hda1.

Ejemplo 2

Modificar los límites soft para usuarios en todos los filesystems:

# edquota -tu

Time units may be: days, hours, minutes, or seconds

Grace period before enforcing soft limits for users:

/dev/sda9: block grace period: 7 days,

file grace period: 3 days

/dev/hda1: block grace period: 7 days,

file grace period: 3 days

"/tmp/EdP.aiTShJB" 5 lines, 249 characters

En este caso se han establecido unos periodos de gracia de siete días para bloques (espacio en disco) y de tres días para ficheros (inodos).

repquota

Se utiliza para obtener un informe de la situación de las cuotas.

En la primera forma del comando, repquota mostrará un informe por usuario o por grupo de las cuotas de los filesystems indicados.

En la segunda forma, la opción -a hará que se muestre un sumario de todos los filesystems con cuotas. Este comando solo podrá ejecutarlo el usuario root, a menos que los ficheros de bases de datos de las cuotas tengan permisos de lectura universales. Para cada usuario se imprime el número de ficheros y el espacio en disco utilizados en ese momento junto con las cuotas creadas con edquota.

Sintaxis:

repquota [opciones] filesystems

repquota -a [opciones]

Tabla 4-6 Opciones de uso frecuente del comando repquota

Opción	Función
-a	Hace informes de todas las cuotas de todos los filesystems de lectura-escritura incluidos en /etc/fstab. Se mostrarán tanto las cuotas de usuario como las de grupo según se indique en las opciones usrquota y grpquota.
-g	Muestra las cuotas de grupos.
-u	Muestra las cuotas de usuarios; es la opción por defecto.
-v	Activa el modo explícito, el cual añade una cabecera descriptiva a la salida del comando.

Ejemplo

Informe de las cuotas de usuario para el filesystem /home:

# repquota -v /home

Habilitando las cuotas

Para poder utilizar las cuotas, en primer lugar hay que habilitarlas (El kernel debe estar compilado con soporte para cuotas. En el caso improbable de que no fuese así, habría que recompilarlo con esta opción.). No es un proceso dificultoso pero, desgraciadamente, tampoco es simple. Para aclarar un poco este proceso, en esta sección se incluirá un breve tutorial explicando como habilitar las cuotas de usuario y de grupo en el filesystem /dev/sda9 montado bajo /home. Hay que tener en cuenta que pueden habilitarse cuotas solo de usuario, de grupo o ambas según sea necesario.

1. Definir las opciones en /etc/fstab. En la línea que contiene el filesystem /home, añadir las opciones usrquota y grpquota a la opción default, como en este ejemplo:

/dev/sda9 /home ext2 defaults,usrquota,grpquota 1 2

Estas opciones indican a las utilidades de configuración de cuotas que particiones deben ser tratadas por dichas utilidades cuando éstas busquen en /etc/fstab.

2.Crear los ficheros quota.user y quota.group en la raíz del filesystem /home y dar permisos sólo para root:

# touch /home/quota.user /home/quota.group

# chmod 600 /home/quota.user /home/quota.group

Estos dos ficheros son las bases de datos de las cuotas de usuarios y grupos. Cada filesystem con cuotas utilizará sus propias bases de datos. Al habilitar las cuotas, estos ficheros contendrán datos binarios (no son ficheros de texto). Si se quisiera que los usuarios puedan examinar las cuotas de los grupos a los que pertenecen, el fichero quota.group necesitará un permiso de 644 en lugar de 600.

3.Ejecutar quotacheck para inicializar las bases de datos:

# quotacheck -avug

Scanning /dev/sda9 [/home] done

Checked 236 directories and 695 files

Using quotafile /home/quota.user

Using quotafile /home/quota.group

4.Ahora, verificar que los ficheros de bases de datos se han inicializado realmente, para ello nos aseguramos que su tamaño no sea cero (en este ejemplo cada uno ocupa 16.192):

# ls -al /home/quota.*

-rw------- 1 root root 16192 Dec 27 19:53 /home/quota.group

-rw------- 1 root root 16192 Dec 27 19:53 /home/quota.user

5.Ejecutar quotaon para activar el sistema de cuotas:

# quotaon -a

6.Verificar que el script de inicialización del sistema ( /etc/rc.d/rc.sysinit o similar) activará las cuotas cada vez que el sistema cargue.

Puede ser algo similar al ejemplo siguiente aunque puede variar de sistema a sistema:

if [ -x /sbin/quotacheck ]

then

echo "Checking quotas."

/sbin/quotacheck -avug

echo " Done."

fi

if [ -x /sbin/quotaon ]

then

echo "Turning on quotas."

/sbin/quotaon -avug

fi

7.Añadir un script al directorio crontab del sistema (por ejemplo /etc/crontab.weekly) para que se ejecute quotacheck rutinariamente. El script del ejemplo puede ser válido:

#!/bin/bash

/sbin/quotacheck -avug

Alternativamente, podría ponerse /sbin/quotacheck en el fichero crontab de root (utilizando el comando crontab -e) para su ejecución semanal, como en este ejemplo:

# ejecutar quotacheck semanalmente

0 3 * * 0 /sbin/quotacheck -avug

En este momento, el filesystem /home está listo para aceptar cuotas de usuario o de grupo, controlarlas y emitir informes sobre ellas.

Bibliografia y enlaces recomendados

LPIC 1 Certification Bible (Bible) by Angie Nash, Jason Nash

John Wiley & Sons; Bk&CD-Rom edition (July 1, 2001) ISBN: 0764547720
LPI Linux Certification in a Nutshell by Jeffrey Dean
O'Reilly & Associates; 1st ed edition (May 15, 2001) ISBN: 1565927486
CramSession's LPI General Linux Part 1 : Certification Study Guide
CramSession.com; ISBN: B000079Y0V; (August 17, 2000)

Referencias Unix Reviews

http://www.unixreview.com/documents/s=7459/uni1038932969999/

Página LPI: www.lpi.org

Apuntes IBM: http://www-106.ibm.com/developerworks/edu/l-dw-linux-lpir21-i.html

Manuales GPL: http://www.nongnu.org/lpi-manuals/

Tema 104.4 Administrando cuotas de disco

Página 10 de 14

Tema 104.4 LPI

2004-07-21T14:39:00