====== 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 [[https://news.gandi.net/fr/2017/07/un-futur-plus-xen/|annonce]] officielle. ===== 1 - HVM : qu'est-ce ? ===== Gandi migre sa plateforme de virtualisation vers une nouvelle technologie, passant de [[http://wiki.xenproject.org/wiki/Paravirtualization_(PV)|XenPV]] (une techno puissante et libre à la base de notre plateforme depuis 2008) à [[http://wiki.xen.org/wiki/Virtualization_Spectrum|PVHVM]] avec [[http://www.linux-kvm.org/|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 [[https://www.gandi.net/hosting/iaas/livescaling|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 [[http://cli.gandi.net|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 **Debian 8** $ gandi vm create --image="Debian 8 64 bits (HVM)" --hostname **Ubuntu 14.04 LTS** $ gandi vm create --image="Ubuntu 14.04 64 bits LTS (HVM)" --hostname 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 [[http://wiki.gandi.net/fr/iaas/references/disk/snapshots|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 commande''urpmi --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'' ou ''acpi-support-base'' par exemple, que le paquet ''gandi-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 paquet ''gandi-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. 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/ 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 : - 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. 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 : - 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 [[http://www.gandi.net/support/contact/|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.