Qu'est-ce qu'OpenVZ ?
OpenVZ est un outil de virtualisation de système d'exploitation basé sur logiciel permettant le déploiement, la gestion et la modification d'environnements Linux virtuels isolés à partir d'une distribution Linux hôte. Une vaste gamme de modèles de système d'exploitation prédéfinis dans une variété de distributions Linux permet aux utilisateurs de télécharger et de déployer rapidement et facilement des environnements virtuels.
Avant de commencer
-
L'exécution de ce didacticiel nécessite un compte d'utilisateur root et est écrite comme si des commandes étaient émises en tant qu'utilisateur root. Les lecteurs qui choisissent d'utiliser un compte d'utilisateur limité devront préfixer les commandes avec
sudo
si nécessaire. Si vous n'avez pas encore créé de compte utilisateur limité, suivez les étapes du guide Configuration et sécurisation d'une instance de calcul. -
Les instructions de ce guide ont été rédigées et testées uniquement sur Debian 9. Il est peu probable qu'ils fonctionnent pour d'autres distributions Debian ou Ubuntu.
-
Certaines modifications essentielles de votre système Debian 9 sont nécessaires pour exécuter OpenVZ, notamment la suppression et le remplacement de Systemd par SystemV, et l'utilisation d'un noyau Linux personnalisé. Avant de continuer, assurez-vous que tous les logiciels actuellement installés sur la machine seront compatibles avec ces modifications.
Remarque Bien que cela ne soit pas obligatoire, il est recommandé de créer une partition de système de fichiers Ext4 distincte pour les modèles OpenVZ. Par défaut, le programme d'installation de Debian 9 et le gestionnaire de linode formatent les partitions nouvellement créées avec Ext4. Pour plus d'informations sur la réalisation de cette configuration, suivez les étapes de création d'un disque dans le guide Gestion des disques et du stockage sur un Linode.
Facultatif :créer une partition distincte pour les modèles OpenVZ
Si vous avez l'intention de dédier un VPS Linode entier à l'exécution d'OpenVZ et d'aucun autre service, il est recommandé de créer des partitions séparées pour le serveur hôte et ses processus, ainsi que tous les modèles de serveur virtuel OpenVZ. Le tableau suivant illustre le schéma de partitionnement recommandé :
Partitionner | Description | Taille typique |
---|---|---|
/ | Partition racine | 4-12 Go |
échanger | Partition de pagination | 2 fois RAM ou RAM + 2 Go (selon l'espace disponible sur le disque dur) |
/vz | Partition pour héberger les modèles OpenVZ | Tout l'espace restant sur le disque dur |
-
Connectez-vous à votre Linode Manager et sélectionnez votre Linode. Éteignez la machine et vérifiez que le travail est terminé en affichant la file d'attente des travaux de l'hôte section. Sous les disques cliquez sur Créer un nouveau disque . Ajoutez une étiquette de votre choix, sélectionnez "ext4" dans le Type menu déroulant et allouez autant d'espace que possible dans le champ Taille domaine. Cliquez sur Enregistrer les modifications; une configuration optimale ressemblera à l'image ci-dessous.
-
Sous le tableau de bord , cliquez sur votre profil de configuration principal. Sous Bloquer l'attribution de l'appareil , attribuez votre nouvelle partition à un périphérique ouvert. Cliquez sur Enregistrer les modifications une fois terminé.
-
Démarrez le Linode et connectez-vous via SSH. Exécutez la commande ci-dessous pour vérifier que le nouveau disque a été créé correctement. La sortie affichera votre disque nouvellement créé.
fdisk -l
-
Créez un point de montage pour le nouvel appareil :
mkdir /vztemp
-
Montez le nouveau disque. Assurez-vous de remplacer /dev/sdc avec le nom de votre appareil :
mount /dev/sdc /vztemp
Supprimer la fonctionnalité Metadata_csum des volumes Ext4
Avant de pouvoir installer OpenVZ, le système doit être configuré pour la compatibilité. Debian 9 prend en charge une nouvelle fonctionnalité de somme de contrôle incompatible avec les noyaux OpenVZ personnalisés. Selon vos préférences, vous pouvez choisir de supprimer metadata_csum d'une partition montée ou de reformater la partition affectée sur un volume Ext4 compatible. Choisissez l'une ou l'autre méthode et suivez les instructions dans la section appropriée ci-dessous.
-
Répertorier les partitions de disque disponibles.
lsblk
-
Vérifiez si "metadata_csum" est installé dans toutes les partitions de disque montées indiquées à l'étape 1 (à l'exception de la partition SWAP). Suivez le format ci-dessous pour chaque partition, en remplaçant
/dev/sda1
avec le nom de volume approprié. Si la commande ci-dessous ne produit aucune sortie pour les volumes de disque montés, vous pouvez ignorer cette section.dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
Supprimer Metadata_csum des partitions montées
-
Exécutez les commandes ci-dessous pour ajouter du code au
fsck
fichier :echo "copy_exec /sbin/e2fsck" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck echo "copy_exec /sbin/tune2fs" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
-
Créez un nouveau fichier dans le répertoire désigné ci-dessous et nommez-le tune . Copiez et collez le texte ci-dessous dans ce nouveau fichier et enregistrez :
- Fichier :/ etc/initramfs-tools/scripts/local-premount/tune
1 2 3 4 5 6 7 8 9
#!/bin/sh if [ "$readonly" != "y" ] ; then exit 0 ; fi e2fsck -f $Volume tune2fs -O -metadata_csum $Volume e2fsck -f $Volume
-
Mettez à jour les propriétés du fichier et l'image initramfs existante pour charger la tune script :
chmod 755 /etc/initramfs-tools/scripts/local-premount/tune update-initramfs -u -k all
-
Redémarrez votre système et exécutez la commande ci-dessous pour vérifier que metadata_csum a été désactivé sur toutes les partitions concernées. Encore une fois, remplacez "/dev/sda1" par les noms de volume corrects.
dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
Formater un volume Ext4 compatible
-
Choisissez le volume Ext4 que vous souhaitez formater et exécutez la commande ci-dessous, en remplaçant
/dev/sda3
avec le volume sélectionné. Une sortie de "0" indique un succès.Attention Formater un volume avec le
mkfs
la commande peut entraîner une perte de données.mkfs -t ext4 -O -metadata_csum /dev/sda3
Remplacer Systemd par SystemV
-
Installez les utilitaires SystemV.
apt install sysvinit-core sysvinit-utils
-
Depuis le Linode Manager, redémarrez votre machine pour libérer Systemd.
-
Supprimez Systemd de votre ordinateur :
apt --auto-remove remove systemd
-
Créer le fichier
avoid-systemd
et collez le contenu ci-dessous :- Fichier :/ etc/apt/preferences.d/avoid-systemd
1 2 3
Package: *systemd* Pin: release * Pin-Priority: -1
Ajouter un référentiel OpenVZ
-
Créez un nouveau fichier source de référentiel et collez-y le contenu ci-dessous :
- Fichier :/ etc/apt/sources.list.d/openvz.list
deb http://download.openvz.org/debian jessie main deb http://download.openvz.org/debian wheezy main
-
Ajoutez la clé du référentiel à votre système :
wget -qO - http://ftp.openvz.org/debian/archive.key | sudo apt-key add -
-
À la date de publication de ce guide, la clé de référentiel OpenVZ n'est pas valide et émet la
apt update
La commande générera un avertissement du système. La commande devrait réussir. Si ce n'est pas le cas, mettez à jour le système avec l'argument suivant :apt --allow-unauthenticated update
Installer les packages OpenVZ
-
Installez OpenVZ avec les packages requis.
KPackage="linux-image-openvz-$(dpkg --print-architecture)" sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr
-
L'installation doit créer un nouveau répertoire,
/vz
. Si ce répertoire n'existe pas après l'installation, créez un lien symbolique à l'aide de la commande ci-dessous :ln -s /var/lib/vz/ /vz
-
Créer le fichier
vznet.conf
et collez la ligne ci-dessous :- Fichier :/ etc/vz/vznet.conf
1
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
-
Cette étape est facultative et entraînera l'arrêt des instances virtuelles OpenVZ lorsque le service OpenVZ est arrêté. Si ce comportement est souhaité, lancez la commande ci-dessous.
echo 'VE_STOP_MODE=stop' | sudo tee -a /etc/vz/vznet.conf
Démarrer dans le noyau OpenVZ
Le système doit être configuré pour démarrer le noyau OpenVZ à chaque redémarrage du serveur.
-
Ouvrez le
grub.cfg
fichier enless
, ou votre éditeur de texte préféré :less /boot/grub/grub.cfg
-
Dans le
grub.cfg
fichier, recherchez une section ressemblant à ce qui suit :- Fichier :/ boot/grub/grub.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
. . . menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-e025e52b-91c4-4f64-962d-79f244caa92a' { gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod ext2 set root='hd0' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 e025e52b-91c4-4f64-962d-79f244caa92a else search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a fi echo 'Loading Linux 4.9.0-3-amd64 ...' linux /boot/vmlinuz-4.9.0-3-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-4.9.0-3-amd64 } submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' . . .
Copy the text entry preceeding `submenu`, in this example the text would be: **Advanced options for Debian GNU/Linux**.
-
Dans le
grub.cfg
fichier sous la ligne "sous-menu", vous verrez plusieurs sections "menuentry" en retrait. Ceux-ci représentent les noyaux disponibles. À partir de ceux-ci, vous devez localiser l'entrée de menu du noyau OpenVZ nouvellement installée. Il devrait ressembler au contenu ci-dessous. Notez que certains seront des noyaux de récupération et doivent être ignorés :- Fichier :/ boot/grub/grub.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
. . . menuentry 'Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-2.6.32-openvz-042stab123.9-amd64-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' { gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod ext2 set root='hd0' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 e025e52b-91c4-4f64-962d-79f244caa92a else search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a fi echo 'Loading Linux 2.6.32-openvz-042stab123.9-amd64 ...' linux /boot/vmlinuz-2.6.32-openvz-042stab123.9-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-2.6.32-openvz-042stab123.9-amd64 } . . .
Again, write down the text directly after "menuentry" in single quotes. Here, the text to copy is **Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64**.
-
Fermez le grub.cfg fichier et ouvrez /etc/default/grub dans votre éditeur de texte préféré. Localisez la ligne qui commence par
GRUB_DEFAULT=
. Supprimez la valeur par défaut de ce paramètre et entrez le texte que vous avez copié aux étapes précédentes, en suivant le format ci-dessous. Avec l'exemple ci-dessus, la valeur serait la suivante :GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64"
Notez que les deux chaînes copiées sont séparées par le caractère carotte ">".
-
Enregistrez et fermez le grub et lancez la commande ci-dessous pour recharger le chargeur de démarrage grub avec la nouvelle valeur du noyau :
update-grub
-
Par défaut, le chargement du noyau n'est pas géré par Grub, mais par le Linode Manager. Connectez-vous à votre Linode Manager et sélectionnez votre Linode. Cliquez sur votre profil de configuration. Dans la section "Paramètres de démarrage", sélectionnez "GRUB 2" dans la liste déroulante du noyau (voir l'image ci-dessous). Enregistrez vos modifications et quittez.
-
Redémarrez votre serveur et lancez la commande ci-dessous pour vérifier que le noyau OpenVZ a été chargé :
uname -r
Si le noyau OpenVZ n'a pas été chargé, il s'agit très probablement du grub fichier mal configuré. Vérifiez et assurez-vous que le bon noyau a été choisi et saisi correctement.
Télécharger et déployer un modèle de système d'exploitation
-
Démarrez le service OpenVZ :
service vz start service vz status
-
Enregistrez-vous auprès du référentiel de modèles OpenVZ officiel :
sudo gpg --recv-keys $(echo $(sudo gpg --batch --search-keys [email protected] 2>&1 | grep -ie ' key.*created' | sed -e 's|key|@|g' | cut -f 2 -d '@') | cut -f 1 -d ' ' | cut -f 1 -d ',')
-
Modifier
/etc/vz/vz.conf
et modifiez la ligne suivante pour utilisersimfs
au lieu deploop
:- Fichier :/ etc/vz/vz.conf
1
VE_LAYOUT=simfs
-
Répertorier les modèles de système d'exploitation disponibles à télécharger :
vztmpl-dl --list-remote
-
Dans la liste des modèles disponibles, sélectionnez-en un à télécharger. En utilisant le format ci-dessous, lancez la commande suivante, en remplaçant centos7-x86_64 avec le modèle que vous avez sélectionné :
vztmpl-dl --gpg-check centos7-x86_64
-
OpenVZ fait référence à chaque modèle de système d'exploitation installé en tant que « conteneur ». Vous devez créer un ID de conteneur (CTID) pour chaque modèle téléchargé. Exécutez la commande ci-dessous, en remplaçant [CTID] par n'importe quel nombre (101 est recommandé) et le nom du modèle CentOS 7 par votre modèle téléchargé.
vzctl create [CTID] --ostemplate centos7-x86_64
-
Si vous configurez une partition de disque distincte pour les modèles OpenVZ, utilisez la commande ci-dessous pour créer le conteneur dans le nouveau disque. Remplacer –ostemplate avec le nom de votre modèle et –name avec un nom descriptif de votre choix :
vzctl create [CTID] --ostemplate debian-8.0-x86_64 --layout simfs --name centos7 --private /vztemp/vz/private/$VEID --root /vztemp/vz/root/$VEID --config basic
-
Un fichier de configuration aura maintenant été créé pour votre modèle de système d'exploitation. L'emplacement de ce fichier est spécifié dans le cadre de la sortie de la commande précédente. Ouvrez ce fichier maintenant pour apporter les modifications suivantes ci-dessous. Le fichier de configuration sera nommé au format [CTID].conf.
- Donnez une adresse IP à votre environnement virtuel. Le format recommandé est 192.168.0.[CTID]. Dans ce cas, ce serait 192.168.0.101.
- Fournissez un serveur de noms. Le serveur de noms de Google (8.8.8.8) devrait suffire.
- Si vous rencontrez des difficultés pour démarrer dans votre environnement virtuel, vous pouvez essayer de modifier VE_LAYOUT retour à
ploop
depuissimfs
.
Vous pouvez également configurer d'autres options à votre discrétion, telles que SWAP et l'allocation de RAM. Enregistrez et fermez lorsque vous avez terminé.
- Fichier :/ etc/vz/conf/101.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
. . . # RAM PHYSPAGES="0:256M" # Swap SWAPPAGES="0:512M" # Disk quota parameters (in form of softlimit:hardlimit) DISKSPACE="2G:2.2G" DISKINODES="131072:144179" QUOTATIME="0" # CPU fair scheduler parameter CPUUNITS="1000" NETFILTER="stateless" VE_ROOT="/var/lib/vz/root/$VEID" VE_PRIVATE="/var/lib/vz/private/$VEID" VE_LAYOUT="simfs" OSTEMPLATE="centos7-x86_64" ORIGIN_SAMPLE="vswap-256m" NAMESERVER="8.8.8.8" IP_ADDRESS="192.168.0.101/24" HOSTNAME="centos-7"
-
Démarrez dans votre conteneur nouvellement créé à l'aide des commandes ci-dessous. Remplacez [CTID] par le numéro CTID de votre conteneur. Pour quitter une session de conteneur tout en laissant l'environnement virtuel en cours d'exécution, tapez
exit
dans la ligne de commande.vzctl start [CTID] vzctl enter [CTID]
Configurer l'accès Internet aux conteneurs
Les conteneurs n'ont aucun moyen d'accéder à Internet ou d'être accessibles depuis Internet. Le serveur hôte doit être configuré pour transmettre les demandes vers et depuis chaque environnement virtuel installé.
Configurer l'accès du conteneur à Internet
Remarque Vous devrez peut-être vous connecter en tant que root avec su -
afin d'exécuter les commandes iptables-save dans cette section.
-
Sur le serveur hôte, exécutez la commande suivante à l'aide d'Iptables. Remplacez les crochets et le contenu par les informations appropriées. Pour l'adresse IP du conteneur, assurez-vous de l'indiquer en notation CIDR. Inclure l'adresse IP et le sous-réseau, ou
xxx.xxx.xxx.xxx/xx
, afin d'englober une plage d'adresses IP qui permettront d'accéder à tous les conteneurs ajoutés à l'avenir. Par exemple, saisir 192.168.0.0/24 configurera le routage pour les adresses IP 192.168.0.0 à 192.168.0.255 :iptables -t nat -A POSTROUTING -s [container IP] -o eth0 -j SNAT --to [host server IP]
-
Si vous avez
iptables-persistent
installé, ignorez cette étape. Enregistrez les nouvelles règles Iptables :iptables-save > /etc/iptables.conf
-
Configurez votre pare-feu pour autoriser les demandes transférées. Si vous n'utilisez pas
iptables-persistent
enregistrez la règle :iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT iptables-save > /etc/iptables.conf
-
Vous devriez maintenant avoir accès à Internet depuis votre environnement de conteneur. Essayez de mettre à jour les packages à partir de votre conteneur pour vérifier la connexion.
Configurer l'accès d'Internet au conteneur
-
Si vous avez besoin d'accéder à un service spécifique sur votre conteneur à partir d'Internet, vous devrez réserver un port sur la machine hôte et y acheminer l'accès. Exécutez la commande suivante, en remplaçant toutes les valeurs entre crochets par les informations appropriées :
iptables -t nat -A PREROUTING -p tcp -d [host_ip] --dport [host_port_number] -i eth0 -j DNAT --to-destination [container_ip:container_port_number]
-
Enregistrez votre nouvelle règle. Ignorez cette étape si vous avez
iptables-persistent
installé :iptables-save > /etc/iptables.conf
Où aller à partir d'ici
Après avoir installé OpenVZ, téléchargé un modèle, créé un conteneur et configuré l'accès à Internet, votre environnement virtuel fonctionnera exactement comme n'importe quel environnement Linux normal :nécessitant des mises à jour régulières, une configuration de sécurité, etc. La plupart des configurations peuvent être effectuées à partir du serveur hôte via les commandes OpenVZ. .
Voir le lien "OpenVZ Basic Operations" dans les Ressources externes section pour vous familiariser avec les commandes d'administration de base. Des modèles supplémentaires créés par l'utilisateur peuvent également être téléchargés, qui ne sont pas inclus dans la liste principale des modèles. Vous pouvez les trouver en suivant le lien "OpenVZ User Contributed Templates".
Plus d'informations
Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.
- Opérations OpenVZ de base
- Modèles OpenVZ fournis par les utilisateurs