Escenario 2.B: Cotas de disco

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Introdución

As cotas de disco permiten controlar o espazo de disco que consume cada usuario ou grupos de usuarios. As cotas para cada usuario son por sistema de ficheiros (particións) e non por carpetas, co cal se para carpetas distintas un usuario debera ter cotas distintas é necesario que cada unha delas resida nun sistema de ficheiros distinto (nun disco ou partición distinta).

00 Dominios Linux Escenarios parte 02 B.jpg

  • Na imaxe obsérvase que cada sistema de ficheiros ten implantado un sistema de control de cotas de disco.

As cotas son implantadas polo administrador do sistema para cada sistema de ficheiros (disco/partición) para:

  • usuarios: cada usuario terá os seus propios límites.
  • grupos: todos os usuarios dun grupo, en conxunto, teñen os límites do propio grupo. Se un usuario do grupo supera os límites da cota os demais usuarios do grupo tamén se verán afectados.


Hai dous tipos básicos de cota:

  • Cota de disco ou de bloque: determina a cantidade de espazo en disco que pode ser usada por un usuario ou grupo nun sistema de ficheiros (disco/partición).
  • Cota de ficheiros ou de inode: determina o número máximo de carpetas ou ficheiros que un usuario/grupo pode crear nun sistema de arquivos (disco/partición).


Ademais os administradores poden definir dous límites para cada un dos tipos de cota anteriores:

  • Cota suave, flexible / soft quota: é un límite de advertencia, que lle informa ao usuario que se está aproximando á hard quota. Este límite ten un período de graza, que se verá a continuación.
  • Cota forte, ríxida / hard quota: límite que o usuario/grupo non pode superar.


Finalmente para a soft quota existe un período de graza:

  • Grace period: Cando un usuario/grupo supera a soft quota, este ten un período de graza (por defecto 7 días) para que volva a baixar dese límite antes que se lle limite totalmente como se dunha hard quota se tratase.

Pódense aplicar períodos de grazas xenéricas para todos os usuarios/grupos dun sistema de arquivos (disco/partición) ou para un usuario/grupo concreto dese sistema de arquivos.

Nos seguintes puntos instalarase o xestor de cotas para os puntos de montaxe:

  • /home/iescalquera, e xestionaremos as cotas dos cartafois persoais dos usuarios.
  • /comun: pero non asignaremos ningunha cota aos usuarios até máis adiante, para ver que pasa cos usuarios cando non teñen cota.

O modo que ten o sistema para saber cantos recursos ou canto consumen por usuario é moi sinxelo, simplemente se analiza de que obxectos (ficheiros/carpetas) é propietario ese usuario.

Este é o formato que ten unha cota: os tres primeiros números están en KB.

Disk quotas for user xan (uid 10003): 
   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
    /dev/sda6       4      10      17              1       0       0
  • Lenda:
    • blocks: espazo consumido en disco (bytes)
    • quota: soft quota (KB)
    • limit: hard quota (KB)
    • files: número de arquivos/carpetas que o usuario ten nese sistema de arquivos (de cantos é dono).
    • grace: canto tempo lle resta ao usuario para poder estar por enriba da soft quota.

Con df -h podemos comprobar o espazo (total/consumido/libre) que hai en cada punto de montaxe:

  • No servidor:
root@dserver00:~# df -h
Sist. Fich                                             Tamaño Usado  Disp Uso% Montado en
rootfs                                                   5,2G  1,5G  3,5G  31% /
udev                                                      10M     0   10M   0% /dev
tmpfs                                                     50M  324K   50M   1% /run
/dev/disk/by-uuid/3247f690-d4fe-4033-93f3-ac0846d2edd0   5,2G  1,5G  3,5G  31% /
tmpfs                                                    5,0M     0  5,0M   0% /run/lock
tmpfs                                                    236M     0  236M   0% /run/shm
/dev/sda6                                                 14G  164M   14G   2% /home
/dev/sdb1                                                4,6G  141M  4,3G   4% /home/iescalquera
/dev/sdb2                                                5,3G  139M  4,9G   3% /comun
  • Observar ás liñas 10 e 11, onde se ve os espazos dos puntos de montaxe das carpetas persoais e de comun.


  • No cliente:
uadmin@uclient01:~$ df -h
df: "/run/user/112/gvfs": Permiso denegado
Sist. Fich                  Tamaño Usado  Disp Uso% Montado en
/dev/sda1                      19G  3,9G   14G  22% /
none                          4,0K     0  4,0K   0% /sys/fs/cgroup
udev                          487M  4,0K  487M   1% /dev
tmpfs                         100M  916K   99M   1% /run
none                          5,0M     0  5,0M   0% /run/lock
none                          498M  292K  497M   1% /run/shm
none                          100M   40K  100M   1% /run/user
dserver00:/home/iescalquera   4,6G  141M  4,3G   4% /home/iescalquera
dserver00:/comun              5,3G  139M  4,9G   3% /media/comun
  • Nas liñas 11 e 12, vese que os puntos de montaxe do cliente que apuntan ao servidor coinciden cos espazos do servidor desas carpetas.

Instalación do xestor de cotas en dserver00

Para instalar:

apt-get install quota

Xestión de contas con comandos: /home/iescalquera

Aplicar cotas aos sistemas de arquivos

Unha vez que se instalou o paquete hai que indicar a que sistemas de arquivos se desexa aplicar a cota, neste caso aos sistemas de arquivos montados en

  • /home/iescalquera.
  • /comun
  • Ademais débese indicar se se van aplicar cotas de usuario, de grupo ou ambas.


Editar o ficheiro /etc/fstab e engadir os parámetros que indican que se desexan aplicar cotas de usuario e grupo sobre o sistema de arquivos montados nos puntos anteriores.

nano /etc/fstab

Ollo!!! que cada quen ten UUID distinto, por iso cada quen debe engadir manualmente os parámetros usrquota (cotas de usuario) e grpquota (cotas de grupo) se se van aplicar cotas ós grupos, senón non é preciso indicar ese parámetro. Neste caso só se van aplicar as de usuario aínda que se configurarán tamén as de grupo.

root@dserver00:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=3247f690-d4fe-4033-93f3-ac0846d2edd0 /               ext4    errors=remount-ro 0       1
# /home was on /dev/sda6 during installation
UUID=93111745-c95c-4a3d-aff0-721dacdf5741 /home           ext4    defaults        0       2
# swap was on /dev/sda5 during installation
UUID=730d435e-4862-4ca5-bb72-ff2571ec017c none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0


#/dev/sdb1: LABEL="Usuarios" 
UUID=f7d9a85b-5847-449a-9f98-29dfecf4239e  /home/iescalquera   ext4   defaults,usrquota,grpquota   0 0

#/dev/sdb2: LABEL="Comun" UUID="726f54f6-960b-4ad0-9ec2-35eace42290a" 
/dev/sdb2		                   /comun 	       ext4   defaults,usrquota,grpquota   0 0
  • Observar que aos puntos de montaxe / (sda1) e /home (sda6) decidimos non aplicarlle cotas. Pero isto é neste caso, o lector en función da súa situación real debe valorar que precisa.

Finalmente, só resta remontar os sistemas de arquivos aos que se lles aplicaron as cotas (se o sistema de arquivos está en uso hai que reiniciar):

mount -o remout /home/iescalquera
mount -o remout /comun


Executando o comando mount, podemos ver que se están aplicando as opcións de cota para os puntos de montaxe anteriores.

root@dserver00:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
...
...
/dev/sdb1 on /home/iescalquera type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
/dev/sdb2 on /comun type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)

Os ficheiros de cotas

Na raíz do sistema de arquivos no que se aplican as cotas deben existir dous arquivos nos que se almacena a información sobre as cotas e consumos de cada usuario: aquota.user e aquota.group. Eses ficheiros poden crearse reiniciando o equipo:

root@dserver00:~# ls /home/iescalquera/ -l
total 40
drwxr-x--- 4 root g-usuarios  4096 Mai  7 07:35 alumnos
-rw------- 1 root root        7168 Mai  8 17:56 aquota.group
-rw------- 1 root root        7168 Mai  8 17:56 aquota.user
drwx------ 2 root root       16384 Mai  6 14:49 lost+found
drwxr-x--- 4 root g-profes    4096 Mai  7 11:26 profes
root@dserver00:~# 

root@dserver00:~# ls /comun -l
total 32
-rw------- 1 root root          7168 Mai  8 17:56 aquota.group
-rw------- 1 root root          6144 Mai  8 17:56 aquota.user
drwxrwxr-x 2 root g-dam1-profes 4096 Mai  7 08:04 dam1
drwxrwxr-x 2 root g-dam2-profes 4096 Mai  7 14:43 dam2
drwxrwx--- 2 root g-profes      4096 Mai  7 14:40 departamentos
drwx------ 2 root root          4096 Mai  7 08:09 lost+found


Pero farase facendo uso do comando quotacheck, que chequea, repara e crea, se non existen os arquivos anteriores.

quotacheck -avug
 
  # a: indica que se aplique o comando para tódolos sistemas de arquivos que teñen cotas.
  # v: amosa información de saída do comando.
  # u: chequea os ficheiros de cotas de usuarios
  # g: chequea os ficheiros de cotas dos grupos

 # para ver máis parámetros como sempre: quotachek --help. 
  

Este comando debese executar coas cotas desactivadas, que é como están a primeira vez, para desactivalas usar o comando quotaoff.

quotaoff -avug
  /dev/sdb1 [/home/iescalquera]: group quotas turned off
  /dev/sdb1 [/home/iescalquera]: user quotas turned off
  /dev/sdb2 [/comun]: group quotas turned off
  /dev/sdb2 [/comun]: user quotas turned off

   # este comando tamén podería executarse co mesmo resultado como:
   # quotaoff -vug /home/iescalquera /comun
  • Comprobamos o estado dos ficheiros de cotas.
quotacheck -avug
  quotacheck: Scanning /dev/sdb1 [/home/iescalquera] done
  quotacheck: Checked 94 directories and 162 files
  quotacheck: Scanning /dev/sdb2 [/comun] done
  quotacheck: Checked 5 directories and 2 files


Finalmente activar as cotas:

quotaon -av
  /dev/sdb1 [/home/iescalquera]: group quotas turned on
  /dev/sdb1 [/home/iescalquera]: user quotas turned on
  /dev/sdb2 [/comun]: group quotas turned on
  /dev/sdb2 [/comun]: user quotas turned on

   # este comando tamén podería executarse co mesmo resultado como:
   # quotaon -avug
   # quotaon -v /home/iescalquera /comunq

Establecer cotas para os usuarios

  • Imos establecer cotas de consumo de espazo distintas en /home/iescalquera se o usuario é un profesor/a ou un alumno/a.
  • As cotas a modo de exemplo e en números redondos son:
    • Profesorado:
      • Límite brando: 250 MB (250000 KB en números redondos)
      • Límite duro: 300 MB (300000 KB en números redondos)
    • Alumnado:
      • Límite brando: 150 MB (150000 KB en números redondos)
      • Límite duro: 200 MB (200000 KB en números redondos)
  • Para establecer cotas hai que facelo por usuario ou por grupo individualmente, para tratar varios usuarios débese realizar cun script ou combinación de comandos. E isto último é o que imos facer.
  • Primeiro imos crear un par de usuarios locais (profe, alumnno) de dserver00, que nos van ser vir de plantilla para aplicar as cotas ao resto dos usuarios.
    • Eses 2 usuarios imos deixalos bloqueados, e así ninguén vai poder entrar con eles.
    • Pero imos asignarlle cotas para logo copiarllas aos usuarios que nos interesen.
useradd profe -M -N -u 1001
useradd alumno  -M -N -u 1002
 #-M non crea o home do usuario
 #-N non crear un grupo primario para o usuario co mesmo nome
 #-u indicamos o uid do usuario 


#Comprobamos que están creado no ficheiro de usuarios locais (/etc/passwd)
dserver00:~# tail -n 2 /etc/passwd
  profe:x:1001:100::/home/profe:/bin/sh
  alumno:x:1002:100::/home/alumno:/bin/sh


  • Estes usuarios xa están bloqueados, pois non teñen contrasinal. Pero imos asegurarnos:
root@dserver00:~# passwd -l profe
  passwd: password expiry information changed.
 
root@dserver00:~# passwd -l alumno
  passwd: password expiry information changed.


  • Asignar cotas de usuario a profe e alumno. Neste caso imos aplicar so cotas ao sistema de ficheiros de /home/iescalquera:
setquota -u profe   250000 300000 0 0 /home/iescalquera
setquota -u alumno  150000 200000 0 0 /home/iescalquera

  # u: cota de usuario (g sería de grupo)
  # X50000: de soft quota de espazo de disco (bloques)
  # X00000: de hard quota de espazo de disco (bloques)
  # 0: non hai soft quota para número de arquivos e subcarpetas (inodes)
  # 0: non hai hard quota para número de arquivos e subcarpetas (inodes)
  # como sempre máis axuda en: setquota –help ou man quota


Outra forma de editar as cotas dun usuario é con edquota:

edquota -u profe
 

Ábrese un editor semellante ó nano que permite editar as cotas de usuario para cada sistema de ficheiros.

 GNU nano 2.2.6               Ficheiro: /tmp//EdP.auJgyPp                                       
 
 Disk quotas for user profe (uid 10005):
   Filesystem                   blocks       soft       hard     inodes     soft     hard
   /dev/sdb1                         0     250000     300000          0        0        0
   /dev/sdb2                         0          0          0          0        0        0


Como o usuario profe, neste caso, non ten ningún arquivo en /home/iescalquera nin en /comun o seu consumo en espazo (blocks) e ficheiros/carpetas (inodes) é cero. Observar como non ten límites para /comun (/deb/sdb2).


Os consumos pódense consultar cos seguintes comandos: quota e repquota

quota profe
  Disk quotas for user profe (uid 1001): none

  # comando executado polo usuario root.
  # no caso de que o propio usuario inicie sesión simplemente debe escribir: quota


O usuario profe aínda non ten nada no sistema de arquivos /home/iescalquera, por iso indica none.


O resultado de executar repquota: informar das cotas dos usuarios en cada sistema de ficheiros.

repquota -a
  *** Report for user quotas on device /dev/sdb2
  Block grace time: 7days; Inode grace time: 7days
                          Block limits                File limits
  User            used    soft    hard  grace    used  soft  hard  grace
  ----------------------------------------------------------------------
  root      --      32       0       0              5     0     0
  noe       --       4       0       0              1     0     0    
  
  *** Report for user quotas on device /dev/sdb1
  Block grace time: 7days; Inode grace time: 7days
                          Block limits                File limits
  User            used    soft    hard  grace    used  soft  hard  grace
  ----------------------------------------------------------------------
  root      --      36       0       0              6     0     0       
  sol       --      32       0       0              6     0     0       
  noe       --    2300       0       0            186     0     0       
  mon       --      28       0       0              5     0     0       
  tom       --      28       0       0              5     0     0       
  pia       --    2152       0       0            182     0     0       
  • Observar:
    • Só se amosan os usuarios que son propietarios de algún ficheiro/carpeta no sistema de arquivos.
      • En /comun (sdb2) só aparece noe, porque foi o único que no usuario creou algo aí.
      • En /home/iescalquera (sdb1) non aparece nin profe nin alumno porque non teñen nada creado aí, pero bloqueados como están e cos permisos que aí hai, nunca van ter nada nese punto de montaxe.
    • Os únicos usuarios que entraron nos clientes foron noe e pia, os demais teñen nos seus cartafois persoais o que se lles copiou de skel no escenario 2.A.
    • O período de graza para cada tipo de cota é, por defecto, de 7 días.
    • Ningún usuario ten cotas (límites), iso é porque aínda non llas aplicamos, que é o imos facer a continuación cun script.


  • Para iso usaramos o comando edquota co parámetro -p (prototipo). Onde copiaremos as cotas de profe ou de alumno segundo proceda.


  • SCRIPT: 10_asignar_cotas_usuarios.sh
#!/bin/bash

#SCRIPT PARA ASIGNAR COTAS AOS USUARIOS.

#Lembrar que  cada usuario ten o seguinte formato
# Un/unha profe  -> sol:x:10000:10000:Profe - Sol Lua:/home/iescalquera/profes/sol:/bin/bash
# Un/unha alumna -> mon:x:10002:10000:DAM1 Mon Mon:/home/iescalquera/alumnos/dam1/mon:/bin/bash

# Observar que posición ocupan os campos e que están separados por :

# Imos etraer con awk dos usuarios con ID (campo 3) entre 10000 e 60000 o campo
# Usuario (campo 1) 


#Volcamos tódolos usuarios (locais e ldap) do sistema a un ficheiro
getent passwd>usuarios.txt


#Extraemos o campo usuario
for USUARIO in $( awk -F: '$3>=10000 && $3<60000  {print $1}' usuarios.txt )
do
	#USUARIO vai ter o seguinte formato
	# sol

	#Comprobamos se o usuario/a é un profe
	if ( groups $USUARIO | grep profes )
	then
		#Copiamos cota do prototipo profe ao usuario profe
		edquota -p profe $USUARIO
	else
		#Copiamos cota do prototipo alumno ao usuario alumno/a
		edquota -p alumno $USUARIO
	fi
done

rm usuarios.txt


  • Executamos o script:
sh 10_asignar_cotas_usuarios.sh 
 sol : g-usuarios g-profes g-dam1-profes g-dam2-profes
 noe : g-usuarios g-profes g-dam2-profes
 
  #As dúas saídas que amosa a execución do script é polo grep, cando coincide que o usuario é un profe.


  • Comprobacións:
repquota -a
  *** Report for user quotas on device /dev/sdb2
  Block grace time: 7days; Inode grace time: 7days
                          Block limits                File limits
  User            used    soft    hard  grace    used  soft  hard  grace
  ----------------------------------------------------------------------
  root      --      32       0       0              5     0     0       
  noe       --       4       0       0              1     0     0       
  
  *** Report for user quotas on device /dev/sdb1
  Block grace time: 7days; Inode grace time: 7days
                          Block limits                File limits
  User            used    soft    hard  grace    used  soft  hard  grace
  ----------------------------------------------------------------------
  root      --      36       0       0              6     0     0       
  sol       --      32  250000  300000              6     0     0       
  noe       --    2572  250000  300000            210     0     0       
  mon       --      28  150000  200000              5     0     0       
  tom       --      28  150000  200000              5     0     0       
  pia       --    2152  150000  200000            182     0     0       
  • Vemos que agora os usuarios do dominio teñen as cotas correctas en función do tipo de usuario no sistema de ficheiros /home/iescalquera (sdb1).
  • Por agora en /comun non aplicamos cotas.

As cotas de usuario nos equipos cliente

Os usuarios que inicien sesión nos equipos cliente, tanto GNU/Linux como MS Windows, xa teñen as cotas aplicadas de xeito transparente, ben por nfs ou ben por samba. As cotas en realidade son controladas polo servidor onde residen os sistemas de arquivos aos que os usuarios acceden remotamente.

As cotas nos clientes: Ubuntu Desktop

En Ubuntu Desktop, nautilus (o xestor de arquivos) non informa de canto é o espazo real que o usuario ten nun sistema de arquivos montado por nfs, senón que amosa a capacidade total de todo o sistema de arquivos sen ter en conta a cota do usuario.

Por outra banda, en modo consola non se poden consultar as cotas, por defecto.

En calquera dos dous casos, as cotas están funcionando, pois son controladas polo servidor de arquivos.


Nos postos de traballo para que os usuarios poidan consultar a súa cota en modo consola, precísase instalar o paquete quota. Instalámolo en uclient01 co usuario uadmin.

sudo apt-get install quota

No caso do navegador de arquivos nautilus, como xa se dixo, non informa de cal é o límite máximo de cota de disco para os usuarios, só informa cando o usuario non pode escribir no disco por superar a súa cota.

  • IMPORTANTE: Cando se borran arquivos e carpetas estas van para á papeleira, e seguen consumindo espazo no disco e por tanto na cota do usuario. Haberá que baleirar o lixo se se desexa liberar espazo.


Realización de probas

  • Entramos co usuario noe e abrimos un terminal.

2017 cotas 01.png

  • Executamos o comando quota:
noe@uclient01:~$ quota
  Disk quotas for user noe (uid 10001): 
       Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  dserver00:/home/iescalquera
                     3324  250000  300000             263       0       0   
  • Comezamos creando un ficheiro de 50 MB
noe@uclient01:~$ dd if=/dev/zero of=ficheiro50M bs=50M count=1
  1+0 records in
  1+0 records out
  52428800 bytes (52 MB) copiados, 0,630515 s, 83,2 MB/s

noe@uclient01:~$ quota
  Disk quotas for user noe (uid 10001): 
       Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  dserver00:/home/iescalquera
                    54572  250000  300000             264       0       0        
  • Creamos agora un ficheiro de 200 MB
noe@uclient01:~$ dd if=/dev/zero of=ficheiro200M bs=200M count=1
  1+0 records in
  1+0 records out
  209715200 bytes (210 MB) copiados, 2,95366 s, 71,0 MB/s

noe@uclient01:~$ quota
  Disk quotas for user noe (uid 10001): 
       Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  dserver00:/home/iescalquera
                    259368* 250000  300000   7days     264       0       0

noe@uclient01:~$ ls -lh fich*
  -rw-r--r-- 1 noe g-usuarios 200M Mai  8 20:23 ficheiro200M
  -rw-r--r-- 1 noe g-usuarios  50M Mai  8 20:22 ficheiro50M
 
  • Observamos que nos marca cun * que superamos o límite brando e que temos 7 días de gracia para resolver o problema de espazo. Se pasados eses 7 días estamos por encima do límite brando (non fai falla superar o límite duro) non nos vai deixar crear nada. E isto é un problema nun contorno gráfico como logo veremos.
  • Intentamos copiar o ficheiro de 200 MB.
noe@uclient01:~$ cp ficheiro200M ficheiro200Mbis
  cp: erro escribindo "ficheiro200Mbis": Cota de disco superada

noe@uclient01:~$ ls -lh fich*
  -rw-r--r-- 1 noe g-usuarios 200M Mai  8 20:23 ficheiro200M
  -rw-r--r-- 1 noe g-usuarios  40M Mai  8 20:43 ficheiro200Mbis
  -rw-r--r-- 1 noe g-usuarios  50M Mai  8 20:22 ficheiro50M

noe@uclient01:~$ quota
  Disk quotas for user noe (uid 10001): 
       Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  dserver00:/home/iescalquera
                   300000* 250000  300000   6days     269       0       0 
  • Observar como comezou a copiar o ficheiro até alcanzar o límite duro.
  • Nas cotas xa indica que estamos no límite duro
  • Ollo que temos un ficheiro que se comezou a copiar, e aínda que non se copiou todo non se cancelou o proceso, senón que temos unha copia dun anaco dun ficheiro.


  • En modo gráfico teríamos o seguinte:

Dl 2014 cotas 01.jpeg

  • Pero non teríamos ningún aviso de exceso de cota.
  • Se tratamos de realizar a copia dun dos ficheiros, por exemplo o de 50MB, obteríamos este aviso.

Dl 2014 cotas 02.jpeg


  • Aquí pasa o mesmo, créase un novo ficheiro, pero que non é copia completa do orixinal.


  • Informes no servidor:
root@dserver00:~/scripts# repquota  -a
  *** Report for user quotas on device /dev/sdb1
  Block grace time: 7days; Inode grace time: 7days
                          Block limits                File limits
  User            used    soft    hard  grace    used  soft  hard  grace
  ----------------------------------------------------------------------
  root      --      36       0       0              6     0     0       
  sol       --      28  250000  300000              5     0     0       
  noe       +-  300000  250000  300000  6days     270     0     0       
  mon       --      28  150000  200000              5     0     0       
  tom       --      28  150000  200000              5     0     0       
  pia       --    9044  150000  200000            275     0     0       
 

  *** Report for user quotas on device /dev/sdb2
  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              5     0     0       
  noe       --       4       0       0              1     0     0


  • En uclient01 borramos os ficheiros que pretendían ser copias dos orixinas, e quedamos con estes últimos soamente.
  • Baleirar a papeleira se se mandaron a esta.
noe@uclient01:~$ ls fich* -lh
  -rw-r--r-- 1 noe g-usuarios 200M Mai  8 20:23 ficheiro200M
  -rw-r--r-- 1 noe g-usuarios  50M Mai  8 20:22 ficheiro50M

noe@uclient01:~$ quota
  Disk quotas for user noe (uid 10001): 
       Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
  dserver00:/home/iescalquera
                   259484* 250000  300000    6days    268       0       0

Xestión de períodos de graza

Os períodos de graza poden xestionarse para un usuario concreto ou para todo o sistema de arquivos. Imos ver como se xestionarían en dserver00.

  • Xestionar o período de graza de todo o sistema de arquivos con: edquota -t ou setquota -t.
#Editamos a cota para todo o sistema
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/sda6                     7days                  7days

  • Aquí poden modificarse os períodos de graza para todo un sistema de arquivos. Non cambiar nada
  • Outra forma sería a seguinte, pero non imos cambiar nada.
setquota -ta X Y

  # X e Y son os segundos que se asignan ó período de graza de cada tipo de cota (bloques ou inodos)
  # 7 días son 604800 segundos
  # t: para indicar que se desexan modificar os tempos de graza para sistemas de arquivos.
  # a: modificar os tempos de graza para tódolos sistemas de arquivos.
  • Para cambiar o período de graza dun usuario usaranse os comandos anteriores co parámetro -T.
edquota -Tu noe
  • Editaríamos as cotas para noe
  GNU nano 2.2.6               Ficheiro: /tmp//EdP.awiVqb2                                       
 Times to enforce softlimit for user noe (uid 10001):
 Time units may be: days, hours, minutes, or seconds
 Filesystem                         block grace               inode grace
 /dev/sdb1                         602602seconds                  unset
 /dev/sdb2                                 unset                  unset


Indica os segundos (ou horas/minutos/días) que quedan de período de graza para o usuario noe. Tamén se poderían modificar eses valores para o usuario noe.


  • Imos agora aplicarlle un tempo de gracia para bloques de 60 segundos ao usuario noe.

Con setquota:

setquota -Tu noe 60 120 /home/iescalquera
  setquota: Not setting inode grace time on /dev/sdb1 because softlimit is not exceeded.

  # T: modificar os tempos de graza dun usuario ou grupo.
  # u: aplicar a usuarios.
  # 60: segundos de graza para o espazo consumido en disco. Ou sexa, pasado un minuto o usuario noe
  #     non vai poder seguir creando obxectos.
  # 120: segundos para o período de graza de inodes, non se aplicará porque non se superou o límite de
  #      soft quota de inodes.
  # Se se desexa que non teña cota, nos segundos hai que indicar un cero (0).
  • Agora, pasado un minuto, en uclient01 con noe tentamos crear un cartafol:
noe@uclient01:~$ mkdir proba
  mkdir: Non é posíbel crear o directorio "proba": Cota de disco superada
  • Non podemos porque superamos o tempo de gracia.
  • So nos queda borrar os ficheiros que fan superar o límite brando.
noe@uclient01:~$ rm ficheiro*
noe@uclient01:~$ mkdir proba



Cotas excedidas e inicio de sesión gráfica

Unha vez que se alcance a hard quota ou se supere o tempo de graza da soft quota o usuario vai ter problemas co inicio de sesión gráfica, podendo non iniciarse a sesión, ao non poder crear as carpetas e ficheiros temporais que se crean/modifican cando se inicia sesión en modo gráfico.

Por exemplo, no caso anterior, no que se esgotou o tempo de graza para o usuario noe, este vai poder iniciar a sesión gráfica, pero non pode facer nada, pois gnome non pode crear todas as carpetas e ficheiros de configuración personalizados do usuario noe.

Se alguén proba a entrar en modo gráfico e ordenador se queda “colgado”, sen poder facer nada: entrar nunha consola (CTRL+ALT+F1 ou se se usa VirtualBox, tecla host (xeralmente CTRL DEREITA) + F1), entrar co usuario en cuestión e borrar ficheiros que fagan baixar do límite duro, ou brando se se superou o tempo de gracia.

Por tanto, para facilitar que noe poida iniciar sesión gráfica ten que borrar información, ou se lle amplía a cota ou se lle quita a cota.

Quitar as cotas a un usuario

As cotas quítanse poñendo ceros nos límites que se desexan desactivar.

setquota -u USUARIO  0 0 0 0 /sistema de arquivos


Instantáneas

  • Instalar as cotas en uclient02
  • Realizamos tamén instantáneas dos tres equipos: Escenario 2.B - Cotas de disco



-- Antonio de Andrés Lema e Carlos Carrión Álvarez