HVM chez Gandi

Depuis juin 2017, la plate-forme HVM est dépréciée. Nous offrons les mémes fonctionalités sur notre plate-forme basé sur Xen. Plus d'information dans notre annonce officielle.

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 supportant ACPI.

* 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.

Cet article se base sur Gandi CLI, qui vous permet de gérer des serveurs depuis la ligne de commande, mais vous pouvez également faire les procédures sur l'interface d'administration web.

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).

Avant de commencer la migration, nous vous recommandons de faire un snapshot de votre disque système

Les commandes sont à exécuter en tant que root (ou avec sudo). Il est recommandé de suivre les étapes dans l'ordre présenté.

Si vous utilisez un système 32 bits, nous vous recommandons plutôt de migrer votre serveur avec GRUB (voir plus bas) ou, si possible, de passer à une distribution 64 bits.

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 :

  1. Adapter le contenu du paquet gandi-hosting-vm2
  2. Installer les paquets qui fournissent le support ACPI de votre distribution (acpid ou acpi-support-base par exemple, que le paquet gandi-hosting-vm2 inclue dans ses dépendances)
  3. 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 paquet gandi-hosting-vm2
  4. 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
  5. Arrêter puis demarrer le serveur (un simple restart ne suffit pas)
  6. 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.

Votre configuration DOIT être placée sur ce chemin : /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 [...)

Problèmes connus :

  1. vous devez ajouter le disque swap manuellement (swapon /dev/da1)
  2. 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.

En tappant “exit” sur le dialogue de GRUB, vous pourrez aussi booter à partir du système

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 :

  1. Détachez votre disque système du serveur ($ gandi disk detach nom-du-disque)
  2. Créez un serveur temporaire ($ gandi vm create –hostname temphvmfix)
  3. Attachez votre disque à ce serveur ($ gandi disk attach nom-du-disque –vm temphvmfix)
  4. Corrigez les erreurs
  5. Détachez le disque du serveur temporaire ($ gandi disk detach nom-du-disque)
  6. Attachez le disque à votre VM de départ à nouveau ($ gandi disk attach nom-du-disque –vm vm-de-depart)
  7. 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.

Dernière modification: le 10/07/2017 à 16:08 par Nicolas C. (Gandi)