Suite et fin de notre virtualisation P2V, la première partie de l’article est à retrouver ici.

Dans l’article précédent, nous avons utilisé VMware Converter pour obtenir un fichier .vmdk à partir d’un serveur physique, puis nous avons convertit ce fichier au format QCOW2 ou RAW.

Il est temps maintenant de créer la machine virtuelle proprement dite.

1. Création de la machine virtuelle.

Dans l’interface Proxmox, créer une nouvelle VM en configurant le matériel au plus près de celui du serveur physique (ou de celui précédemment paramétré dans VMware Converter) :

Nom de la VM

Nommer la VM

Choisir l'OS approprié

Choisir l’OS approprié, ici Windows Server 2008 R2

Ne pas mettre de disque dans le lecteur

Ne pas mettre de disque dans le lecteur

Configurer le disque

Ne pouvant configurer directement le disque issu de la virtualisation, on va créer un disque qui servira de base à son ajout ultérieur. On sélectionne donc le bus IDE (sinon Windows ne trouvera pas le disque), le stockage de la VM (local/distant), la taille du disque (identique ou légèrement plus grande que le disque du serveur physique), le format du disque (QCOW2/RAW/VMDK) et le cache Write back (plus performant).

Configurer le CPU

Configurer le CPU

Configurer la mémoire vive

Configurer la mémoire vive

vm07

Configurer la carte réseau, ici en pont sur la carte physique et en VirtIO. Pensez à désactiver la carte réseau dans un premier temps afin de ne pas se retrouver avec 2 serveurs identiques sur le réseau si le serveur original est toujours démarré.

Valider la configuration

Valider la configuration

2. Importation du disque QCOW2

À ce stade, nous avons une VM prête à l’emploi, si ce n’est le disque configuré qui est vide. Nous allons donc attacher le disque QCOW2/RAW à la VM et pour ce faire il va falloir mettre les mains dans le cambouis à savoir faire un peu de ligne de commande. En effet, pour l’instant on ne peut pas ajouter un disque existant en passant par l’interface web 🙁 . Si vous n’êtes pas familier avec Proxmox, les opérations suivantes peuvent paraître un peu confuses, je vais donc résumer rapidement la suite :

  • Montage du disque dur USB contenant le disque QCOW2/RAW comme stockage utilisable par Proxmox
  • Modification du fichier de configuration de la VM afin d’utiliser le disque QCOW2/RAW
  • Déplacement du disque QCOW2/RAW du disque dur USB vers le stockage local via l’interface web

Dans la partie précédente, nous avions laisser notre disque QCOW2/RAW sur un disque dur externe monté sur /media/usb_disk. Nous allons devoir configurer ce périphérique comme stockage de Proxmox. Pour ce faire, dans l’interface web, cliquer sur Datacenter, sur l’onglet Stockage puis sur le bouton Ajouter et enfin sur Répertoire. Il ne reste plus qu’à indiquer le répertoire à utiliser et le contenu (Image disque) comme ci-dessous :

Configurer le stockage USB contenant le disque QCOW2

En fonction de ce que vous avez sélectionné dans liste déroulante Contenu, Proxmox va créer plusieurs répertoires sur le disque dur USB. Celui qui nous intéresse est le répertoire images (destiné à stocker les images disques). À l’intérieur, nous allons créer un répertoire nommé d’après le numéro de la VM, ici ce sera donc 105.

Se connecter à Proxmox en SSH ou par l’interface web en cliquant sur le bouton Shell et créer le répertoire :

mkdir /media/usb_disk/images/105

Il ne reste plus qu’à y déplacer l’image QCOW2/RAW, en partant du principe qu’elle se trouve à la racine du disque ça nous donne  :

mv /media/usb_disk/srv2k8r2.enterprise.net.qcow2 /media/usb_disk/images/105/

Si tout s’est bien passé, le disque QCOW2/RAW est maintenant visible dans l’interface web en cliquant sur le stockage usb_disk puis sur l’onglet Contenu.

Le disque apparaît bien dans le stockage USB

Le disque apparaît bien dans le stockage USB

On va maintenant éditer le fichier de configuration de la VM afin de lui indiquer le disque QCOW2/RAW (choisir le fichier correspondant à votre VM, ici 105.conf) :

nano /etc/pve/qemu-server/105.conf
bootdisk: ide0
cores: 4
ide0: local:105/vm-105-disk-1.qcow2,cache=writeback,size=147G
ide2: none,media=cdrom
memory: 16384
name: win2k8r2.enterprise.net
net0: virtio=BA:00:A6:B0:C9:F6,bridge=vmbr0,link_down=1
numa: 0
ostype: win7
smbios1: uuid=94d7f501-7d5c-4d2d-a1fa-2f8ba958f1bf
sockets: 1

On retrouve donc notre configuration et on va modifier la ligne :

ide0: local:105/vm-105-disk-1.qcow2,cache=writeback,size=147G

en

ide0: usb_disk:105/srv2k8r2.enterprise.net.qcow2,cache=writeback,size=147G

Sauvegarder et retourner dans l’interface web. Sélectionner la VM et cliquer sur l’onglet Matériel, le disque dur doit pointer sur notre disque QCOW2.

Sélectionner le disque et cliquer sur le bouton Déplacer le disque, il ne reste plus qu’à choisir la destination à savoir le stockage local (ou dans mon cas le stockage distant ZFS).

La VM est maintenant prête à démarrer.

3. Configuration de la machine virtuelle

Démarrer la VM, cliquer sur le bouton Console et vérifier qu’elle est bien fonctionnelle.

Si tel est le cas, il nous reste maintenant à améliorer ses performances en passant le disque dur de IDE à VirtIO. Pourquoi ne pas avoir configurer le disque en VirtIO dès le début ? Tout simplement car Windows ne possède pas les pilotes et que du coup la VM ne pourrait démarrer.

L’astuce consiste à ajouter un disque VirtIO temporaire de 1 Gio puis à démarrer la VM et enfin installer le pilote.

Tout d’abord, télécharger l’ISO contenant les pilotes VirtIO à cette adresse : https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso et le téléverser dans un des stockages de Proxmox :

Monter l’ISO dans le lecteur CD/DVD virtuel de la VM :

Ajouter ensuite un disque VirtIO de 1Gio :

Démarrer la VM, de nouveaux matériels sont alors détectés. Annuler toutes les procédures d’installation de pilote et ouvrir le gestionnaire de périphériques afin d’installer les pilotes un à un.

Sélectionner le contrôleur SCSI et mettez à jour le pilote :

Indiquer la version du pilote correspondant au système d’exploitation (ici Windows server 2008 R2 64 bits) dans le dossier viostor :

Si tout ce passe bien le pilote s’installe :

Faire de même pour le contrôleur ethernet dans le dossier NetKVM (la carte réseau que nous avions préalablement configurée en VirtIO).

Ainsi que pour le périphérique PCI restant, dans le dossier Balloon.

Éteindre la VM afin de modifier le disque IDE en VirtIO. Pour cela on passe de nouveau par la ligne de commande :

nano /etc/pve/qemu-server/105.conf

On modifie la ligne :

ide0: usb_disk:105/srv2k8r2.enterprise.net.qcow2,cache=writeback,size=147G

en

virtio0: usb_disk:105/srv2k8r2.enterprise.net.qcow2,cache=writeback,size=147G

On en profite pour supprimer la ligne correspondant au disque temporaire de 1 Gio. Sauvegarder le fichier et retourner dans l’interface web.

Le disque ide0 ayant disparu, la VM ne peut plus démarrer, il faut indiquer le « nouveau » disque VirtIO en allant dans Options puis Ordre de boot  :

Démarrer la VM et vérifier que tout est OK.

À ce stade notre VM est parfaitement fonctionnelle mais il faut bien avouer que la console noVNC de Proxmox n’est pas très agréable à utiliser. Heureusement la console SPICE offre une meilleure expérience. Mais pour ce faire, il nous faut reconfigurer la carte vidéo puis installer le pilote SPICE. Dans la première partie, je vous avais fait télécharger ce fameux pilotes avant la procédure de virtualisation, histoire de l’avoir directement dans la VM au moment opportun (pour rappel il est disponible à cette adresse : https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.100.exe).

Éteindre la VM si elle est allumée et modifier la carte vidéo de Défaut à SPICE (qxl) :

Démarrer la VM, lancer une console noVNC et exécuter le pilote SPICE (si nécessaire l’exécutable installera aussi les pilotes VirtIO mais mieux vaut les installer comme préalablement en passant par l’ISO, histoire d’avoir des pilotes à jour).

Pour utiliser la console SPICE, il faudra installer sur votre poste client le paquet virt-viewer pour GNU/Linux ou virt-manager pour Windows (prendre la version 3 car la 4 est défectueuse).

Redémarrer la VM en utilisant cette fois la console SPICE. Il ne reste plus alors qu’à configurer la résolution d’écran de la VM.

Pour finir, un peu de ménage en supprimant physiquement les disques temporaires dans leur stockage respectifs.

Au terme de ce long article, nous sommes maintenant en possession d’une VM performante et pratique à utiliser 🙂 . Pour les questions, précisions, coquilles et critiques, les commentaires sont ouverts !

proxmox

Dans cette première partie, nous allons voir comment virtualiser un serveur physique Windows Server 2008 (R2) pour le faire tourner dans Proxmox (je n’ai pas testé avec du 2003(R2) / 2012(R2)). Cet article repose en grande partie sur le wiki Proxmox mais détaillera plus précisément la méthode utilisant VMware Converter.

Il nous faut donc :

  • 1 serveur Windows server 2008 (R2)
  • 1 serveur Proxmox 4.2 (la dernière mouture à ce jour)
  • 1 disque dur USB (formaté en ntfs) ou 1 partage réseau pour stocker le résultat de la conversion

Pour info, j’ai réalisé l’opération avec le lab suivant (composé essentiellement de matériel obsolète/recyclé) :

  • 1 serveur Windows 2008 R2 (2 CPU Intel Xeon E5504 / 16 Gio RAM / 1 partition système RAID1 de 146 Gio + 1 partition données RAID5 de 407 Gio)
  • 1 cluster de 2 serveurs Proxmox 4.2-17/e1400248 (1 CPU Intel Xeon E5420 / 8 Gio RAM / 1 partition système de 10Gio, 1 partition SWAP de 4 Gio et 1 partition données ZFS de 60 Gio)
  • 1 SAN Nexenta 4.0.4 Community Edition (2 CPU Intel Xeon E5504 / 16 Gio RAM / RAIDZ1 3x500Gio + 1 SSD 128 Gio ZIL) pour stocker les VMs, monté dans le cluster en ZFS over iSCSI
  • 1 partage NFS/SMB sur un NAS pour stocker temporairement le résultat de la virtualisation

Je précise tout ça car les captures d’écran viendront de ce lab et que si j’essaye ici de rester dans une situation assez standard, je décrirai à l’occasion les opérations spécifiques au montage ci-dessus.

1. Conversion P2V via VMware Converter

Toutes les opérations suivantes ont lieu sur le serveur Windows server 2008 R2 à virtualiser.

La première chose à faire est de télécharger la dernière version de VMware Converter sauvegarder le serveur physique !

Sauvegarder ensuite la base de registre car nous allons la modifier :

Windows + R -> regedit -> Clic-droit sur la racine -> Exporter (sur le Bureau par exemple)

Maintenant et seulement maintenant nous sommes prêt à oeuvrer.

Télécharger le fichier https://pve.proxmox.com/mediawiki/images/f/f5/Mergeide.zip, le décompresser et l’exécuter. Il s’agit d’un ensemble de clés de registre qui permettront à la VM de démarrer sur des disques (virtuels) connectées à des contrôleurs (virtuels) IDE. Sans cette étape, il y a de grandes chances que la VM affiche un BSOD au bout de quelques secondes.

Télécharger le fichier https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.100.exe, pour l’instant on n’en fera rien mais il nous sera utile dans le 2ème partie. Il s’agit d’un ensemble de pilotes et de fonctionnalités du même style que ceux offerts pas les VMware Tools ou les Guest Additions de Virtualbox.

Télécharger la dernière version de VMware Converter et de l’installer sur le serveur physique. Elle est disponible à cette adresse https://my.vmware.com/en/web/vmware/evalcenter?p=converter (la création d’un compte VMware est obligatoire, il faut bien donner du travail aux commerciaux…).

Connecter le disque dur USB au serveur (ou dans mon cas, préparer un partage SMB) pour y stocker le résultat de la conversion.

Lancer VMware Converter et choisir les options suivantes au fil des étapes :

  • Source type : Powered-on machine
  • Specify the powered-on machine : This local machine
  • Select destination type : VMware Workstation or other VMware virtual machine
  • Select VMware Product : VMware Workstation 11.0.x
  • Name : Entrer le nom de l’image (ici : srv2k8r2.enterprise.net)
  • Select a location for the virtual machine : Indiquer le dossier dans lequel sera créée l’image, disque dur USB ou partage réseau (ici : le lecteur F:)
  • Configurer le matériel (nombre de CPU, taille de la RAM, etc) et les services (désactiver les services obsolètes ou non pertinents du style monitoring du serveur physique, RAID et autres). Dans le doute ne pas modifier les services, on fera le ménage plus tard.
vmware-converter

vmware-converter

La durée de la conversion dépend du volume de données à transférer et de la vitesse de l’interface USB ou réseau. Une fois terminée, on obtient un fichier .vmdk par disque et un fichier .vmx dont on ne fera rien, ce dernier décrivant le matériel de la VM pour une importation dans un hyperviseur VMware. Le wiki Proxmox précise à cet instant qu’il peut être nécessaire de démarrer la VM dans VMware Workstation Player (disponible gratuitement sans compte ce coup-ci) afin d’y installer d’éventuels pilotes manquants pour le contrôleur de disque mais je n’ai jamais eu à le faire, à vous de voir au cas par cas.

2. Conversion VMDK vers QCOW2/RAW

Toutes les opérations suivantes ont lieu sur le serveur Proxmox.

À ce stade, on pourrait conserver le fichier .vmdk mais on va le convertir en un format plus indiqué pour Proxmox (enfin KVM). Pour une VM classique stockée sur l’hyperviseur, on va opter pour le format QCOW2. Dans mon cas (stockage distant ZFS over iSCSI) je n’ai pas le choix seul le format RAW est supporté. En règle générale, il vaut mieux éviter de superposer QCOW2 sur ZFS, les deux formats faisant du copy on write on risque de se retrouver avec des performances déplorables en écriture.

Débrancher le disque dur USB du serveur Windows 2008 R2 et le brancher sur le serveur Proxmox.

Identifier le disque dur USB :

fdisk -l
Disque /dev/sdd : 465,8 GiB, 500107860992 octets, 976773166 secteurs
Unites : sectors of 1 * 512 = 512 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa4b57300

Peripherique Amorcage Start Fin Secteurs Size Id Type
/dev/sdd1 63 976768064 976768002 465,8G 7 HPFS/NTFS/exFAT

Installer le paquet ntfs-3g et monter le disque dur USB :

apt-get install ntfs-3g
mkdir /media/usb_disk
mount /dev/sdd1 /media/usb_disk

Vérifier que le fichier .vmdk est bien présent :

ls /media/usb_disk
srv2k8r2.enterprise.net.vmdk	srv2k8r2.enterprise.net.vmx

Convertir le fichier .vmdk en .qcow2 (on peut améliorer la vitesse de conversion en créant le fichier .qcow2 sur un autre support que le disque USB) :

qemu-img convert -f vmdk /media/usb_disk/srv2k8r2.enterprise.net.vmdk -O qcow2 /media/usb_disk/srv2k8r2.enterprise.net.qcow2

ou en .raw :

qemu-img convert -f vmdk /media/usb_disk/srv2k8r2.enterprise.net.vmdk -O raw /media/usb_disk/srv2k8r2.enterprise.net.raw

Fin de la première partie, nous avons maintenant un disque utilisable par Proxmox et nous verrons la prochaine fois comment créer et optimiser la VM.