Table des matières
HVM chez Gandi
1 - HVM : qu'est-ce ?
Gandi migre sa plateforme de virtualisation vers une nouvelle technologie, passant de XenPV (une techno puissante et libre à la base de notre plateforme depuis 2008) à PVHVM avec KVM (un mélange de virtualisation hardware et software qui simplifie l'usage et améliore la performance des machines virtuelles).
Sur la plateforme HVM, maintenant disponible en tests, vous avez accès aux fonctionnalités classiques de Gandi Server, comme l'ajout et le retrait à chaud de CPU*, RAM et stockage, avec des gros plus :
- des gains de performance,
- la possibilité de booter à partir de noyaux hébergés par la plateforme (comme actuellement avec Xen) ou vos propres noyaux avec GRUB,
- la compatibilité avec tout système incluant
virtio
et supportantACPI
.
* Le retrait de coeurs CPU à chaud n'est pas encore supporté sur la plateforme HVM. Vous devez arrêter la VM pour réduire le nombre de coeurs.
Vous pouvez d'ores et déjà créer des nouveaux serveurs sur la plateforme HVM, ou migrer vos serveurs existants, en choisissant parmi les noyaux et distributions mises à votre disposition, ou en configurant votre propre système.
2 - Créer un nouveau serveur avec HVM
Vous pouvez déjà choisir parmi 3 images contenant un noyau Linux 3.18, compatibles avec HVM.
Exécutez la commande suivante pour créer un serveur avec HVM (ou sélectionnez une image sur l'interface web)
Debian 7
$ gandi vm create --image="Debian 7 64 bits (HVM)" --hostname <hostname de votre choix>
Debian 8
$ gandi vm create --image="Debian 8 64 bits (HVM)" --hostname <hostname de votre choix>
Ubuntu 14.04 LTS
$ gandi vm create --image="Ubuntu 14.04 64 bits LTS (HVM)" --hostname <hostname de votre choix>
Pour utiliser une autre image que celles déjà proposées, consultez les instructions ci-dessous pour préparer et utiliser une image de votre choix.
3 - Migrer un serveur existant sur HVM
Vous pouvez suivre ces instructions pour migrer un serveur existant sur la plateforme HVM.
Vous serez amenés à installer le paquet gandi-hosting-vm2
(qui installera également les paquets pour le support ACPI), à modifier des configurations en fonction de votre distribution, et à mettre à jour votre disque système pour utiliser le noyau 3.18-x86_64 (hvm)
.
sudo
). Il est recommandé de suivre les étapes dans l'ordre présenté.
3.1 - Migrer un serveur Debian 7 ou Ubuntu 14.04
3.1.1 - Installation des dépendances
Accédez à votre serveur existant (nous l'appellerons xenpv-server
) avec Gandi CLI :
local $> gandi vm ssh xenpv-server
Puis installez le paquet gandi-hosting-vm2
:
xenpv-server #> apt-get install gandi-hosting-vm2
3.1.2 - Mise à jour des fichiers système
Copiez-collez la commande suivante pour modifier le fichier /etc/fstab
:
xenpv-server #> sed -i 's/xvda1/sda/' /etc/fstab
Note pour Ubuntu
Sur Ubuntu, il vous faut aussi modifir le fichier /etc/mtab
. Copiez-collez la commande suivante pour utiliser la bonne configuration :
xenpv-server #> sed -i 's/xvda1/sda/' /etc/mtab
Note pour Debian 7
Copiez-collez la commande suivante pour supprimer les options gandi-config
du fichier /etc/inittab
. Les nouvelles options seront automatiquement ajoutées par le paquet gandi-hosting-vm2
lors du premier démarrage de la machine en HVM.
xenpv-server #> sed -i '/^# console configuration by gandi-config$/,$d' /etc/inittab
3.1.3 - Mise à jour du noyau du disque système
Après ces opérations, vous pouvez mettre à jour le noyau de votre disque système. Présumant que votre disque s'appelle “xenpv-server-disk”, exécutez la commande suivante pour utiliser le noyau 3.18, compatible avec HVM :
local $> gandi disk update xenpv-server-disk --kernel "3.18-x86_64 (hvm)" --cmdline 'root=/dev/sda'
3.1.4 - Arrêt et démarrage
Vous pouvez maintenant arrêter puis démarrer le serveur, et il bootera sur la plateforme HVM.
local $> gandi vm stop xenpv-server # un simple restart/reboot ne suffit pas local $> gandi vm start xenpv-server
3.1.5 - Mise à jour du système et redémarrage
Accédez à nouveau au serveur et installez les mises à jour pertinentes :
local $> gandi vm ssh xenpv-server xenpv-server #> apt-get update xenpv-server #> apt-get upgrade xenpv-server #> reboot
Et voilà, votre serveur est maintenant sur la nouvelle plateforme HVM.
3.2 - Migrer un serveur CentOS, Fedora, Mageia ou Mandriva
3.2.1 - Installation des dépendances
Accédez à votre serveur existant (nous l'appellerons xenpv-server
) avec Gandi CLI :
local $> gandi vm ssh xenpv-server
Puis installez le paquet gandi-hosting-vm2
:
xenpv-server #> yum install gandi-hosting-vm2
Ou urpmi gandi-hosting-vm2
sur Mageia / Mandriva.
3.2.2 - Mise à jour des fichiers système
Copiez-collez la commande suivante pour modifier le fichier /etc/fstab
:
xenpv-server #> sed -i 's/xvda1/sda/' /etc/fstab
3.2.3 - Mise à jour du noyau du disque système
Après ces opérations, vous pouvez mettre à jour le noyau de votre disque système. Présumant que votre disque s'appelle “xenpv-server-disk”, exécutez la commande suivante pour utiliser le noyau 3.18, compatible avec HVM :
local $> gandi disk update xenpv-server-disk --kernel "3.18-x86_64 (hvm)"
3.2.4 - Arrêt et démarrage
Vous pouvez maintenant arrêter puis démarrer le serveur, et il bootera sur la plateforme HVM :
local $> gandi vm stop xenpv-server # soft rebooting won't hit the spot local $> gandi vm start xenpv-server
3.2.5 - Mise à jour du système et redémarrage
Accédez à nouveau au serveur et installez les mises à jour pertinentes :
local $> gandi vm ssh xenpv-server xenpv-server #> yum update xenpv-server #> reboot
Sur Mageia / Mandriva, utilisez la commandeurpmi –auto-select
.
Et voilà, votre serveur est maintenant sur la nouvelle plateforme HVM.
3.3 - Migrer une autre distribution
Vous aurez besoin de bidouiller pour migrer une distribution autre que les documentées, pendant que nous préparons d'autres images et paquets compatibles avec HVM.
Nous vous recommandons de lire la procédure pour les distributions supportées pour comprendre comment adapter chaque étape à votre distribution.
D'une manière générale, vous devrez :
- Adapter le contenu du paquet
gandi-hosting-vm2
- Installer les paquets qui fournissent le support ACPI de votre distribution (
acpid
ouacpi-support-base
par exemple, que le paquetgandi-hosting-vm2
inclue dans ses dépendances) - Modifier les fichiers
/etc/fstab
,/etc/mtab
et/ou/etc/inittab
, ou leur équivalent, pour y inclure les options détaillées plus haut ou dans le paquetgandi-hosting-vm2
- Changer le noyau de votre disque système, en optant pour
3.18-x86_64 (hvm)
, via le CLI ou l'interface web d'administration - Arrêter puis demarrer le serveur (un simple restart ne suffit pas)
- Mettre à jour votre système, puis redémarrer
Vous trouverez des astuces et des moyens de demander de l'aide vers la fin de cet article.
4 - Utilisation d'un noyau personnalisé
En plus de nos images, vous pouvez booter des noyaux personnalisés sur la plateforme HVM de Gandi via GRUB ou directement à partir du disque, avec un Master Boot Record.
4.1 - Utiliser un noyau personnalisé avec le GRUB hébergé
En choisissant d'utiliser un noyau GRUB sur votre disque système, l'hôte de Gandi se servira de son GRUB pour lire votre configuration et booter votre serveur. Pour cela, vous devez mettre la configuration GRUB à un endroit spécifique.
/boot/grub/grub.cfg
Notre plateforme bootera votre serveur en utilisant le noyau personnalisé contenu dans votre disque système, et lui allouera les ressources (CPU, RAM, interfaces réseau, etc.) comme d'habitude.
4.1.1 - Migrer un serveur de Xen à HVM avec GRUB
Pour migrer un serveur de la plateforme Xen sur HVM, vous devez suivre les mêmes instructions que pour un boot direct sur le noyau détaillées plus haut (à l'exception du choix du noyau et modulo des configurations additionnelles.
Une fois les paquets installés et les fichiers système modifiés, optez pour le noyau GRUB au lieu du noyau 3.18 (hvm). Par exemple :
local $> gandi disk update xenpv-server-disk --kernel grub local $> gandi vm stop xenpv-server local $> gandi vm start xenpv-server
4.1.2 - Exemple avec un serveur Debian et GRUB
En plus des étapes détaillées plus haut pour la migration d'un serveur Debian, et avant le changement de noyau, suivez ces instructions pour vous servir de GRUB pour booter votre serveur sur la plateforme HVM.
hvm-server #> install -m 0755 -d -o root -g root /boot/grub hvm-server #> apt-get install grub2-common hvm-server #> apt-get install linux-image-amd64 hvm-server #> grub-mkconfig -o /boot/grub/grub.cfg # ou update-grub local $> gandi disk update hvm-server-disk --kernel grub local $> gandi vm stop hvm-server local $> gandi vm start hvm-server
4.1.3 - Migrer d'autres distributions sur HVM avec GRUB
Les paquets, chemins et configurations de GRUB varient plus ou moins en fonction de la distribution utilisée.
D'une manière générale, il est important que vous ajoutiez l'option suivante à la configuration de votre GRUB pour que la console d'urgence fonctionne, en plus de vous assurer que votre configuration est placée sur le chemin indiquée plus haut.
GRUB_CMDLINE_LINUX='console=ttyS0'
4.2 Utiliser FreeBSD avec GRUB (exemple de noyau personnalisé)
Pour utiliser FreeBSD sur HVM avec GRUB, vous devrez placer l'image sur un disque de données (et non un disque de système), que vous attacherez à un serveur temporaire où vous incluerez la configuration de GRUB. Ensuite, vous créerez un nouveau serveur et attacherez le disque de données contenant FreeBSD en tant que disque de système.
Pour commencer, vous pouvez préparer l'image FreeBSD localement, sur votre ordinateur. Sur un système GNU/Linux, par exemple, vous pouvez faire comme ceci :
local $> qemu-img create -f raw freebsd.raw 3G local $> kvm -hda freebsd.raw -cdrom freebsd.iso -boot d -curses
L'option -curses
vous permettra de copier-coller les configurations qui suivent.
Sur l'écran “Partitions”, choisissez l'option “Shell” et exécutez les commandes suivantes :
#> newfs /dev/ada0 #> cat << EOF > /tmp/bsdinstall_etc/fstab /dev/ada0 / ufs rw 1 1 EOF #> exit
Sur l'écran “Network Configuration” (configuration réseau), ne configurez pas d'interface réseau.
Sur l'écran “Manual Configuration” (configuration manuelle), ouvrez un Shell et faites comme ceci :
#> mkdir /boot/grub #> cat << EOF > /boot/grub/grub.cfg menuentry "FreeBSD" { insmod ufs2 set root=(hd0) kfreebsd /boot/loader } EOF #> sed -i -e s/ada/da/ /etc/fstab #> echo ifconfig_vtnet0=dhcp >> /etc/rc.conf #> exit
Ensuite, créez le serveur temporaire et copiez l'image obtenue sur un disque de données :
local $> gandi vm create --hostname freebsd-temp-config
local $> gandi disk create --name freebsd-system --vm freebsd-temp-config
local $> gandi vm ssh freebsd-temp-config
freebsd-temp-config #> # copiez votre image FreeBSD sur le serveur, par exemple avec ''scp'', puis : freebsd-temp-config #> dd if=freebsd.raw of=/dev/<la référence de ''freebsd-system''>
local $> gandi vm create --hostname freebsd local $> gandi disk update freebsd-system --kernel grub local $> gandi vm ssh freebsd
freebsd #> uname -a > FreeBSD freebsd X.X-RELEASE FreeBSD X.X-RELEASE [...)
- vous devez ajouter le disque swap manuellement (
swapon /dev/da1
) - vous devez intégrer les configurations du paquet
gandi-hosting-vm2
manuellement (voir plus haut)
4.3 - Boot à partir du disque
Avec HVM, nos hôtes peuvent aussi booter votre système directement à partir du disque pourvu qu'il inclue son propre MBR (Master Boot Record). Cela vous permettra d'utiliser votre propre bootloader par exemple, comme si vous utilisiez une machine physique.
Alors que GRUB vous évite de devoir gérer vos partitions et autres considérations de plus bas niveau, vous devez faire attention à bien configurer votre MBR pour booter directement à partir du disque.
4.4 Exemple avec une image RAW
Commencez par créer un serveur HVM temporaire :
local $> gandi vm create --name temphvm --datacenter=LU --image="Debian 7 64 bits (HVM)"
Ensuite, créez et attachez un nouveau disque à ce serveur.
local $> gandi disk create --vm temphvm --name rawbootdisk
Personalisez votre image localement, placez-la sur votre serveur temporaire et ensuite copiez-la sur le serveur temporaire. Regardez l'exemple de FreeBSD plus haut pour vous en inspirer.
Quand votre image est prête sur le disque, détachez-le du serveur et convertez-le en un disque système en optant pour le noyau raw
. Vous pourrez ensuite détruire votre serveur temporaire :
local $> gandi disk detach rawbootdisk local $> gandi disk update rawbootdisk --kernel raw local $> gandi vm delete temphvm
Pour conclure, créez un nouveau serveur et attachez ce disque en tant que disque système :
local $> gandi vm create --datacenter LU --image rawbootdisk
5 - Problèmes connus et Support
5.1 - Mon serveur ne démarre plus
Si votre serveur ne démarre plus après la migration vers HVM, vous pouvez soit remettre le noyau 3.10 (ou tout autre noyau qui n'est pas identifié comme HVM), soit détacher le disque système de votre serveur et l'attacher à un serveur temporaire comme disque de données pour y faire votre debug :
- Détachez votre disque système du serveur (
$ gandi disk detach nom-du-disque
) - Créez un serveur temporaire (
$ gandi vm create –hostname temphvmfix
) - Attachez votre disque à ce serveur (
$ gandi disk attach nom-du-disque –vm temphvmfix
) - Corrigez les erreurs
- Détachez le disque du serveur temporaire (
$ gandi disk detach nom-du-disque
) - Attachez le disque à votre VM de départ à nouveau (
$ gandi disk attach nom-du-disque –vm vm-de-depart
) - Essayez de démarrer à nouveau
5.2 - Support
Veuillez contacter nos équipes de support si vous rencontrez des soucis, ou rejoignez nos développeurs et d'autres clients sur #gandi, sur le réseau IRC Freenode.