Le concept au cœur de la solution Linux-VServer est de séparer l'environnement de l'espace utilisateur en unités distinctes (parfois appelées Serveurs Privés Virtuels) de telle manière que chaque SPV ressemble à s'y tromper à un vrai serveur contenant ses propres processus.
| Terme | Description |
| Linux-VServer, VServer | Linux-VServer est le nom officiel du projet et est utilisé comme tel dans ce guide. |
| Serveur virtuel, vserver, système invité | Tous ces termes sont interchangeables et font référence à une instance d'un serveur (c'est-à-dire un serveur virtuel en particulier). |
| Système hôte, hôte | La machine physique tournant sous Gentoo Linux qui accueillera tous les serveurs virtuels. |
| Util-vserver, utilitaires vserver | Le paquet util-vserver contient tous les programmes nécessaires pour maintenir vos serveurs virtuels. |
2. Configuration de la machine hôte
Exemple de code 2.1 : Installer les vserver-sources |
# emerge vserver-sources
|
Une fois les vserver-sources installées, il est temps de les configurer en utilisant la commande : make menuconfig.
Exemple de code 2.2 : Configuration de vserver-sources |
# cd /usr/src/linux-<KERNELVERSION>-vserver-<VSERVERVERSION> # make menuconfig Linux VServer ---> [ ] Enable Legacy Kernel API (Ne pas activer !) [ ] Disable Legacy Networking Kernel API (Hautement recommandé.) [*] Enable Proc Security [*] Enable Hard CPU Limits Persistent Inode Context Tagging (UID24/GID24) ---> [ ] Tag NFSD User Auth and Files [ ] Compile Debugging Code |
Note : Si vous utilisez le système de fichiers reiserfs, vous devez sélectionner les « extended attributes » dans la configuration de votre noyau. |
Exemple de code 2.3 : Configuration de reiserfs |
File systems ---> <*> Reiserfs support [*] ReiserFS extended attributes |
De plus, vous devez ajouter l'option attrs dans le fichier /etc/fstab pour votre partition vserver :
Exemple de code 2.4 : Exemple de fstab avec attrs |
/dev/hdb /vserver reiserfs noatime,attrs 0 0 |
Après avoir compilé et installé votre noyau, mettez à jour votre chargeur de démarrage et, pour finir, redémarrez la machine pour voir si le noyau démarre correctement.
Exemple de code 2.5 : Installer le noyau |
(Compiler le noyau :) # make (Installer :) # make modules_install # cp arch/i386/boot/bzImage /boot/kernel-<KERNELVERSION>-vserver-<VSERVERVERSION> (Éditer le fichier de configuration du chargeur de démarrage, puis :) # reboot |
Configurer l'environnement hôte
Pour maintenir vos serveurs virtuels, vous avez besoin du paquet util-vserver qui contient tous les programmes nécessaires et plusieurs dispositifs utiles.
Note : Les outils et fonctionnalités utilisées dans ce guide necessitent >=sys-apps/util-vserver-0.30.208-r3. Vous devrez certainement ajouter ce paquet dans votre fichier /etc/portage/packages.keyword. |
Exemple de code 2.6 : Installer les utilitaires vserver |
# emerge util-vserver
|
Vous devez lancer la commande vprocunhide après chaque redémarrage afin de mettre en place les permissions de /proc correctement pour une utilisation dans un vserver. Un script d'initialisation a été installé par util-vserver. Pour l'utiliser, vous devez l'ajouter à un niveau d'exécution :
Exemple de code 2.7 : Script d'initialisation de vserver |
# rc-update add vservers default # /etc/init.d/vservers start |
Le script vshelper est utilisé pour arrêter et redémarrer correctement les serveurs virtuels. Vous devez indiquer au noyau où se trouve le script vshelper.
Exemple de code 2.8 : Configuration de vshelper |
# echo 'kernel.vshelper = /usr/lib/util-vserver/vshelper' >> /etc/sysctl.conf # sysctl -p |
3. Créer un modèle de système invité
Vous devez télécharger un stage3 préparé pour les serveurs virtuels depuis un de nos miroirs, dans le répertoire experimental/<arch>/vserver/. Ensuite, utilisez vserver-new pour créer votre premier système invité.
Vous devez choisir un identifiant (ID) de contexte pour votre vserver (les ID dynamiques sont à proscrire), de même que les informations nécessaires concernant les périphériques réseaux (dans notre exemple, eth0 est configuré avec 192.168.1.253/24 et l'identifiant de contexte est équivalent aux deux dernières parties de l'adresse IP du serveur virtuel).
Exemple de code 3.1 : Démarrer l'installation du stage3 |
# vserver-new gentoo-template \ --hostname gentoo \ --context 1253 --interface eth0:192.168.1.253/24 \ stage3 /chemin/vers/stage3-archive.tar.bz2 |
Note : Afin de refléter votre configuration réseau, vous devriez changer les fichiers /etc/conf.d/hostname, /etc/conf.d/domainname et /etc/hosts du système invité selon vos besoins. Jetez un coup d'œil au chapitre 8.b.1 et au chapitre 8.b.4. Le reste de vos configurations réseaux de vos serveurs virtuels sera fait sur le système hôte. |
Vous n'avez pas besoin de compiler un stage3 pour chaque invité. Le script vserver-new supporte les modèles. Afin de les utiliser, vous devez créer une archive de votre installation vserver :
Exemple de code 3.2 : Créer une archive modèle |
# cd /vserver/gentootemplate # tar cjvpf ../gentoo-template.tar.bz2 ./ |
Pour créer un nouvel invité en utilisant cette archive, utilisez simplement vserver-new :
Exemple de code 3.3 : Utiliser l'archive modèle |
# cd /vserver # vserver-new moninvite\ --hostname moninvite\ --context 1252 \ --interface eth0:192.168.1.252/24 \ template ./gentoo-template.tar.bz2 |
Note : Vous devriez utiliser un arbre de portage partagé pour vos invités afin qu'il reste de petite taille. Éditez /etc/vservers/myguest/fstab et décommentez les entrées pour /usr/portage et /usr/portage/distfiles. Les invités devront avoir un accès à /usr/portage en lecture-seule et un accès à /usr/portage/distfiles en mode lecture-écriture. |
Vous devriez être capable de démarrer et d'entrer dans le vserver en utilisant les commandes suivantes. Si vous n'avez pas les commandes telles que mount ou dmesg, vous devriez installer l'ebuild util-linux dans votre serveur virtuel, étant donné que, par défaut, le profil vserver ne contient pas ce paquet.
Exemple de code 3.4 : Tester le serveur virtuel |
# vserver myguest start # vserver-stat CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME 0 90 1.4G 153.4K 14m00s11 6m45s17 2h59m59 root server 1252 2 3M 286 0m00s45 0m00s42 0m02s91 myguest # vserver gentoo enter # ps ax PID TTY STAT TIME COMMAND 1 ? S 0:00 init [3] 22887 ? Ss 0:00 /usr/sbin/syslog-ng 20496 pts/0 S 0:00 /bin/bash -login 20508 pts/0 R+ 0:00 ps ax # logout |
N'hésitez pas à contacter l'auteur ou à créer un rapport de bogue sur notre Bugzilla en cas de problème.
Ce document est protégé par la licence Creative Commons : Paternité - Partage des Conditions Initiales à l'Identique 2.5.