wiki:QuotaDebugging

Version 7 (modified by anonyme, 8 years ago) (diff)

--

Originalement créé par et pour Koumbit, YMMV. -- TheAnarcat

Installer les packages necessaires

aptitude install quota

Vérifier si les quotas marchent au niveau du kernel

Revoir la configuration du kernel pour activer les quotas.

Vérifier si les quotas fonctionnent pour le syteme de fichier

Vérifier 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       

Création du fichier quota.group sur /backup

Étape nécessaire 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 exécutant 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 échouer, comme vous voyez ci-haut. Si c'est le cas, essayez de démonter et remonter le volume:

# umount /backup
# mount /backup

Évidemment, démonter / n'est pas suggéré, et probablement impossible sans crasher le serveur. :) Il faut donc:

  • réviser 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"

Vérifier si les quotas marchent au niveau du "userland"

Vérifier si les quota sont activés:

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        

Évidemment, les quotas ne sont pas accessibles de l'intérieur du vserver, mais c'est un début.

Vérifier si les quotas marchent au niveau d'alternc

/usr/lib/alternc/quota_get 2000

devrait donner les mêmes chiffres que:

quota -g 2000

Note : si vous n'avez défini 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

Vérifier si les quotas marchent sur le bureau d'alternc

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

Le quota devrait s'afficher comme il faut. C'est un problème un peu emmerdant: il faut éditer tous les comptes pour voir leurs quotas s'activer. :)

Spécial vserver

Pour les vservers, les quotas posent problèmes parce que:

  1. le vserver n'a pas accès aux devices disque pour gérer les quotas
  2. les partitions peuvent être partagées

Ce howto décrit comment passer par dessus la limite (1). La limite (2) pourrait être contrôlée avec les limites disque par contexte, mais je n'ai pas encore trouvé comment faire ceci, et le howto n'est pas encore écrit. Alors concentrons nous sur le point (1).

Méthode 1: partager le device

Le howto de référence est un peu compliqué et montre comment faire le setup complet du vserver, mais en gros, si vous voulez tester, vous n'avez qu'à faire:

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

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

/dev/hdv1 / ufs defaults,grpquota 0 0

Cette dernière modification ne survit pas aux reboots du vserver. Je continue de tester pour voir comment contourner ce léger problème.

Méthode 2: plus sécuritaire?

Une autre méthode 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).

Références

Manpages, évidemment disponibles sur Linux, directement

Autres

Pour débugger 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 "monté", avec un -o remount. Il faut que les quotas soient activés dans /etc/fstab et donc au boot ou que le filesystem soit "démonté" avant d'activer les quotas.