wiki:QuotaDebugging

Originalement cree par et pour  Koumbit, YMMV. -- TheAnarcat

Installer les packages necessaires

aptitude install quota

Verifier si les quotas marchent au niveau du kernel

Revoir la configuration du kernel pour activer les quotas.

Verifier si les quotas fonctionnent pour le syteme de fichier

Verifier fstab : on ajoute grpquota sur la partition /backup

Exemple, fichier /etc/fstab:

/dev/hda3       /backup         ext3     defaults,grpquota       0       0       

ou:

/dev/hda3       /backup         xfs     defaults,grpquota       0       0       

Creation du fichier quota.group sur /backup

Etape necessaire seulement pour ext3. XFS stocke l'information de quotas directement dans le metadata du filesystem, donc pas besoin de fichiers.

touch /backup/quota.group
chmod 600 /backup/quota.group

On initialise la base des quotas en executant la commande suivante :

quotacheck -auvg

remonter la partition

On peut remonter directement la partition:

mount -o remount /backup
mount: /backup not mounted already, or bad option

ce qui peut echouer, comme vous voyez ci-haut. Si c'est le cas, essayez de demonter et remonter le volume:

# umount /backup
# mount /backup

Evidemment, demonter / n'est pas suggere, et probablement impossible sans crasher le serveur. :) Il faut donc:

  • reviser tout et s'assurer qu'il ne manque pas de morceaux,
  • ajouter grpquota aux partitions voulues dans /etc/fstab
  • shutdown -r +5 "remoounting /var with grpquota support"

Verifier si les quotas marchent au niveau du "userland"

Verifier si les quota sont actives:

quotaon -av

J'ai cette erreur:

quotaon: using /vservers/mysql/aquota.group on /dev/mapper/vserver--data-mysql [/vservers/mysql]: Device or resource busy

... quand je tente de rouler la commande plus d'une fois, autrement, j'ai:

/dev/mapper/vserver--data-mysql [/vservers/mysql]: group quotas turned on

quota -g 2000 devrait retourner les quotas du groupe 2000. Une autre commande qui permet de voir quels quotas sont actifs sur un filesystem est:

# quot 
quot: Usage: quot [-acfugvV] [filesystem...]

exemple:

# quot /backup
/dev/hda3 (/backup) users:
 4242824    root    
       8    www-data

Parfois quot ne donne rien ici, mais quota -v -g 0 /vserver/mysql fonctionne:

remus:/home/anarcat# quot -v /vservers/mysql/
remus:/home/anarcat# quota -v -g 0
Disk quotas for group root (gid 0): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/vserver--data-mysql
                 571380       0       0           20714       0       0        

Evidemment, les quotas ne sont pas accessibles de l'interieur du vserver, mais c'est un debut.

Verifier si les quotas marchent au niveau d'alternc

/usr/lib/alternc/quota_get 2000

devrait donner les memes chiffres que:

quota -g 2000

Note : si vous n'avez defini aucun quota pour l'usager "root" alors il est normal que les deux commandes ne renvoient pas d'information.

Apache doit avoir le droit d'executer quota_get:

  ls -l /usr/lib/alternc/quota_get.sh
  -rwxr-x---    1 root     www-data      184 oct  9  2003 /usr/lib/alternc/quota_get.sh
  ls -l /usr/lib/alternc/quota_get
  -rwsr-x---    1 root     www-data     5685 Oct  8  2003 /usr/lib/alternc/quota_get

Verifier si les quotas marchent sur le bureau d'alternc

  1. se logger dans le bureau
  2. aller editer ses quotas
  3. regler un quota quelconque (?) pour "Disk space" (e.g. 1000000 bytes)
  4. click "edit the quotas"
  5. revenir editer ses quotas

Le quota devrait s'afficher comme il faut. C'est un probleme un peu emmerdant: il faut editer tous les comptes pour voir leurs quotas s'activer. :)

Special vserver

Pour les vservers, les quotas posent problemes parce que:

  1. le vserver n'a pas acces aux devices disque pour gerer les quotas
  2. les partitions peuvent etre partagees

Ce howto decrit comment passer par dessus la limite (1). La limite (2) pourrait etre controlee avec les limites disque par contexte, mais je n'ai pas encore trouve comment faire ceci, et le  howto n'est pas encore ecrit. Alors concentrons nous sur le point (1).

Methode 1: partager le device

Le  howto de reference est un peu complique et montre comment faire le setup complet du vserver, mais en gros, si vous voulez tester, vous n'avez qu'a faire:

cp -fa /dev/mapper/vserver--data-mysql /vservers/mysql/dev/hdv1

... et vous assurer que les quotas disques sont actives dans /etc/mtab avec un truc comme:

/dev/hdv1 / ufs defaults,grpquota 0 0

Cette derniere modification ne survit pas aux reboots du vserver. Je continue de tester pour voir comment contourner ce leger probleme.

Methode 2: plus securitaire?

Une  autre methode existe, mais elle demande des patches qui ne sont pas disponible pour le kernel 2.6.8 et des commandes que je ne retrouve pas (vrsetup).

References

Manpages, evidemment disponibles sur Linux, directement

Autres

Pour debugger les quotas, utiliser avec soin google et surtout dmesg, qui contient les valeureux messages d'erreurs de XFS. Aussi, notez qu'il n'est pas possible d'activer les quotas une fois que le filesystem est "monte", avec un -o remount. Il faut que les quotas soient actives dans /etc/fstab et donc au boot ou que le filesystem soit "demonte" avant d'activer les quotas.