Linux-VServer et Quotas : Différence entre versions
(→Liens) |
|||
Ligne 89: | Ligne 89: | ||
= Liens = | = Liens = | ||
+ | * [http://linux-vserver.org/Standard+non-shared+quota Standard non-shared quota] | ||
+ | * [http://irc.13thfloor.at/LOG/2005-12/LOG_2005-12-02.txt IRC log] | ||
* [http://www.13thfloor.at/old/VServer/HowTo_LVMQS.shtml VS Secure Quota HowTo] | * [http://www.13thfloor.at/old/VServer/HowTo_LVMQS.shtml VS Secure Quota HowTo] | ||
− |
Version du 24 janvier 2006 à 21:21
Sommaire
Problématique
La question des quotas revient fréquemment, et j'ai eu du mal à trouver la marche à suivre pour ma configuration (Noyeau 2.6.14, Linux-VServer 2.01)
Ces notes traitent des quotas à l'intérieur d'un serveur virtuel.
Comme le Linux-VServer n'accède pas directement au disque, il n'est pas possible d'utiliser directement les quotas au sein d'un serveur virtuel.
Pour pouvoir utiliser les quotas, il faudra passer par le pilote Virtual Root de Linux-VServer, associé à un device disque.
Pour ne pas allouer toute une partition au serveur virtuel, on utilisera tout naturellement le Logical Volume Manager.
Pré-requis
Le noyeau doit supporter:
- Le support du LVM (on suppose ici qu'il est déjà configuré)
- Le support des quotas (inclu dans le noyeau ou en module -- quota_v2)
- Le proxy-device Virtual Root de Linux-VServer (inclu dans le noyeau ou en module -- vroot)
Si on a opté pour les modules, s'assurer qu'ils sont bien chargés.
Mise en place
Création d'un Serveur Virtuel
Nous allons partir d'un serveur existant. Le serveur est créé comme décrit dans le Linux-VServer HowTo:
<host>: # PKG_EXCLUDE="dhcp-client,fdutils,iptables,libpcap0.7,makedev,pciutils,ppp,pppconfig,pppoe,pppoeconf" <host>: # vserver <vserver> build --hostname <vserver-fqdn> --interface <vserver-interface> \ --context <vserver-context> -m debootstrap -- -d sarge -- --exclude=${PKG_EXCLUDE} <host>: # vserver start .... <host>: # vserver stop
Création du volume logique
Tout ceci sur la machine hôte!
On utilise le LVM pour crééer une partition logique et on initialise le file system:
<host>: # lvcreate -L 18G -n <vserver> vg0 <host>: # mke2fs -j /dev/vg0/<vserver>
Il faut ajouter une ligne dans le /etc/fstab:
# <file system> <mount point> <type> <options> <dump> <pass> /dev/vg0/<vserver> /home/vservers/<vserver> ext3 defaults,usrquota,grpquota 0 2
Il est impératif de monter le filesystem avec usrquota,grpquota, même si on ne les utilise pas sur le système hôte.
Il reste à copier le serveur virtuel sur la filesystem créé (assurez vous que le serveur est bien arreté)
<host>: # mv /home/vservers/<vserver> /home/vservers/<vserver>.orig <host>: # mkdir /home/vservers/<vserver> <host>: # mount /home/vservers/<vserver> <host>: # cp -a /home/vservers/<vserver>.orig/. /home/vservers/<vserver>
Configuration du serveur virtuel
Il faut associer la partition a un device Virtual Root à l'aide de la commande vrsetup.
Si les devices n'existent pas, on peux aisément les créer à la main:
<host>: # mkdir /dev/vroot <host>: # for i in 0 1 2 3 4 5 6 7 ; do mknod /dev/vroot/$i b 4 $i; done
On va mettre l'association dans les scriptlets du versver. On crée le ficher /etc/vservers/<vserver>/scripts/prepre-start.d/vroot.sh:
#!/bin/sh case $1 in prepre-start) rm -f /home/vservers/<vserver>/dev/hdv1 vrsetup /dev/vroot/0 /dev/vg0/<vserver> cp -fa /dev/vroot/0 /home/vservers/<vserver>/dev/hdv1 ;; postpost-stop) vrsetup -d /dev/vroot/0 ;; *) ;; esac
On établit un lien symbolique pour l'arrêt:
<host>: # ln -s ../prepre-start.d/vroot.sh /etc/vservers/<vserver>/scripts/postpost-stop.d
On édite /etc/vservers/<vserver>/apps/init/mtab pour signaler que les quotas sont d<vserver>onibles:
/dev/hdv1 / ufs rw,usrquota,grpquota 0 0
Et enfin, on ajoute la capability quota_ctl au capabilities du contexte:
<host>: # echo quota_ctl /etc/vservers/<vserver>/ccapabilities
Activation des quotas
On peux maintenant démarrer le serveur virtuel et installer les paquets nécessaires:
<host>: # vserver <vserver> start <host>: # vserver <vserver> enter <vserver>: # apt-get install quota quotatool <vserver>: # quotacheck -maugv <vserver>: # quotaon -auvg
Et voilà!