<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Machine Virtuelle on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/machine-virtuelle/</link><description>Recent content in Machine Virtuelle on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Tue, 18 Oct 2016 12:00:57 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/machine-virtuelle/index.xml" rel="self" type="application/rss+xml"/><item><title>[Tutoriel] Installation d’Oracle VM for x86 – partie 2</title><link>https://blog.zwindler.fr/2016/10/18/tutoriel-installation-doracle-vm-for-x86-part-2/</link><pubDate>Tue, 18 Oct 2016 12:00:57 +0000</pubDate><guid>https://blog.zwindler.fr/2016/10/18/tutoriel-installation-doracle-vm-for-x86-part-2/</guid><description>&lt;img src="https://blog.zwindler.fr/2016/10/oracle-vm.webp" alt="Featured image of post [Tutoriel] Installation d’Oracle VM for x86 – partie 2" /&gt;&lt;p&gt;Cet article fait suite à l’article &lt;a class="link" href="https://blog.zwindler.fr/2016/10/11/tutoriel-installation-doracle-vm-for-x86-part-1/" &gt;&lt;strong&gt;Installation d’Oracle VM for x86 - partie 1&lt;/strong&gt;&lt;/a&gt; dans lequel j’ai introduis Oracle VM et installé la console de management Oracle VM Manager. Je vous conseille de commencer par là ;-).&lt;/p&gt;
&lt;h2 id="connexion-du-serveur-oracle-vm-avec-la-console-ovmm"&gt;Connexion du serveur Oracle VM avec la console OVMM
&lt;/h2&gt;&lt;p&gt;Maintenant que la console OVMM est opérationnelle et qu’on a pu s’y connecter, on remarque que les menus sont assez intuitifs bien qu’un peu austères !&lt;/p&gt;
&lt;p&gt;Un onglet Health donne l’état général de la plateforme, puis les autres onglets permettent de configurer les différents aspects attendus d’une console d’administration de virtualisation x86.&lt;/p&gt;
&lt;p&gt;La première étape pour nous est donc bien entendu d’ajouter dans OVMM le serveur Oracle VM préalablement installé, au même titre qu’on pourrait le faire avec un ESXi dans un vCenter.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Hormis les icônes pas forcément très parlantes, le menu de « découverte » de nouveaux serveurs est très simple. On a juste besoin de l’IP et du compte OVM Agent créé lors du déploiement de l’ISO d’installation.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm2-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;En bas de l’écran, un bandeau vous donne l’état des dernières opérations déclenchées sur le cluster.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm3-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm4-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Un bref coup d’œil permet de voir que le serveur est bien ajouté. Des informations sur sa configuration s’affichent.&lt;/p&gt;
&lt;h2 id="créer-un-groupe-de-serveurs-server-pool"&gt;Créer un groupe de serveurs « server pool »
&lt;/h2&gt;&lt;p&gt;Vous aurez peut être remarqué que votre serveur de virtualisation a été ajouté dans le groupe de serveurs « Unassigned ». Intellectuellement ça me gène, et j’ai donc voulu créer un groupe de serveurs, pour « faire propre ».&lt;/p&gt;
&lt;p&gt;Au delà de ça, c’est notamment via la création de ces groupes (clusters dans VMware) que l’on peut gérer la haute disponibilité et les clusters de machines. C’est donc plutôt important ;-).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm4-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Ce groupe peut se créer via l’icône située juste à droite de celle sur laquelle nous avons cliqué pour « découvrir » le serveur Oracle VM.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm20.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm21.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm22.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm23.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Cependant, lorsque j’ai tenté de créer mon groupe de serveurs, j’ai reçu l’erreur suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;OVMAPI_4010E Attempt to send command: create_server_pool to server: lab01 failed.
OVMAPI_4004E Sync command failed on server: x.x.x.32.
Command: create_server_pool, Server error: org.apache.xmlrpc.XmlRpcException: &amp;lt;type &amp;#39;exceptions.Exception&amp;#39;&amp;gt;:
Invalid hostname resolution: lab01 -&amp;gt; 127.0.0.1 [Wed Jul 20 16:30:40 CEST 2016]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Lors de l’installation automatique de l’ISO Oracle VM, le hostname lab01 a été ajouté par défaut dans le fichier &lt;strong&gt;/etc/hosts&lt;/strong&gt;. Or, ceci pose problème.&lt;/p&gt;
&lt;p&gt;Connectez vous en SSH sur le serveur et retirez le hostname (ici lab01) du fichier &lt;strong&gt;/etc/hosts&lt;/strong&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/hosts
127.0.0.1 lab01 localhost localhost.localdomain localhost4 localhost4.localdomain4
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="création-de-pools-de-stockage"&gt;Création de pools de stockage
&lt;/h2&gt;&lt;p&gt;La seconde opération consiste à ajouter du stockage au cluster.&lt;/p&gt;
&lt;p&gt;Avec Oracle VM, on peut utiliser du stockage local via des disques inutilisés. La procédure est détaillée à &lt;a class="link" href="https://docs.oracle.com/cd/E26996_01/E18549/html/CHDIGACB.html" target="_blank" rel="noopener"
&gt;l’adresse suivante&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On peut également découvrir des cibles iSCSI ou éventuellement utiliser l’espace disponible sur le filesystem local. Pour ce dernier choix, l’espace ne sera cependant bien entendu uniquement visible depuis le serveur local uniquement.&lt;/p&gt;
&lt;p&gt;Pour l’exemple, j’ai créé un disque de test de 200 Go sur un NAS Windows.&lt;/p&gt;
&lt;p&gt;La procédure est la suivante. On commence par ouvrir l’onglet « Storage ». Dans SAN Servers, il n’y a encore aucun serveur déclaré. Au même titre que pour le serveur de virtualisation, il y a un bouton « Discover SAN Server ».&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm5.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm6.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm7.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On peut déclarer un ou plusieurs hôtes, avec ou non de l’authentification. J’ai rarement vu des contextes où l’authentification CHAP (côté client ou serveur) était activée, mais je trouve ça bien en production. Pour autant, dans le cas du PoC je n’en ai pas mis.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm8.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Editer les access groups&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm12.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm11.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Et enfin, on ajoute les serveurs qui peuvent avoir accès aux périphériques de stockage. Ici lab01.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm9.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Cliquer sur Finish pour valider.&lt;/p&gt;
&lt;p&gt;Dans mon cas, juste avec la configuration de cet article, je suis tombé sur l’erreur suivante. A l’écran d’avant j’avais loupé la modification des access groups et en particulier l’onglet storage initiators. Si vous avez une erreur, c’est surement le même problème.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm10.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Le stockage nouvellement intégré apparait maintenant avec les volumes disponibles&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm13.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm15.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm14.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="créer-des-repositories-pour-stocker-des-images"&gt;Créer des repositories pour stocker des images
&lt;/h2&gt;&lt;p&gt;Une fois les périphériques de stockage déclarés auprès de vos serveurs de virtualisation, on peut maintenant créer des pools appelés repositories.&lt;/p&gt;
&lt;p&gt;L’ensemble des opérations qui suivent sont a effectuer dans l’onglet Repositories. Ces pools logiques de stockage vous permettent de stocker vos fichiers ISO, mais aussi vos templates et vos disques durs virtuels pour vos machines virtuelles. Sur VMware on parlerait de &lt;strong&gt;Datastores&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="avec-le-disque-local"&gt;Avec le disque local
&lt;/h3&gt;&lt;p&gt;Comme indiqué précédemment, ce type de stockage aura l’inconvénient de n’être accessible que d’une seule machine. Cependant c’est le plus simple à utiliser.&lt;/p&gt;
&lt;p&gt;Cliquer sur le logo « + » pour créer un nouveau repository.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm24.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On doit d’abord renseigner quelques informations descriptives et d’appartenance.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm26.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Enfin, on sélectionne le disque (Physical Disk) sur lequel placer le repository.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm25.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;La dernière étape consiste à ajouter les serveurs qui verront ce stockage. Dans ce cas précis, seul lab01 pourra le voir.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm27.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Après validation, le nouveau repository apparait dans la liste des repositories.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm28.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h3 id="avec-le-disque-san"&gt;Avec le disque SAN
&lt;/h3&gt;&lt;p&gt;Le principe est le même pour les disques SAN, à ceci près que celui ci pourra bien être partagé entre plusieurs serveurs d’un même cluster (pour peu que les serveurs concernés aient bien été autorisés à voir ce stockage lors de l’étape précédente).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm29.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm30.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="gestion-du-réseau"&gt;Gestion du réseau
&lt;/h2&gt;&lt;p&gt;Vous l’aurez deviné, pour la gestion du réseau, tout se passe dans l’onglet « Network » de la console OVMM.&lt;/p&gt;
&lt;p&gt;Petite subtilité, par défaut, le réseau de management ne peut pas être utilisé par les VMs. Vous ne pourrez donc pas affecter de réseaux virtuels aux machines virtuelles en l’état actuel des choses.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm16.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Dans mon cas (PoC), je ne souhaite pas créer un nouveau réseau pour me simplifier la vie, et j’ai donc ajouté « Virtual Machine » au réseau de &lt;em&gt;management&lt;/em&gt; créé par défaut lors de l’installation du serveur OracleVM.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm17.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm18.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Dans un contexte de production, on préfèrera en ajouter un nouveau et lui affecter des interfaces réseaux et des VLANs (comme on le ferait sur VMware ou RHEV).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm19.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="créer-une-nouvelle-vm"&gt;Créer une nouvelle VM
&lt;/h2&gt;&lt;p&gt;Maintenant que les aspects stockage et réseau ont été réglés, on peut enfin créer une machine virtuelle. La documentation officielle donne &lt;a class="link" href="https://docs.oracle.com/cd/E27300_01/E27309/html/vmusg-vm-create.html" target="_blank" rel="noopener"
&gt;quelques informations utiles sur le sujet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Le début de la création de machine virtuelle est similaire à n’importe quel outil de virtualisation.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm31.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm32.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm33.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h3 id="hvm-hvm--pv-pvm"&gt;HVM, HVM + PV, PVM
&lt;/h3&gt;&lt;p&gt;Cependant, par rapport aux autres hyperviseurs (full virtualisation vs paravirtualisation, &lt;a class="link" href="https://blog.zwindler.fr/2016/08/25/when-should-we-have-containers/" &gt;différences que j’aborde dans cet article&lt;/a&gt;), Xen et donc OracleVM apporte une subtilité dans la méthode de virtualiser : la paravirtualisation (PVM). On a le choix entre HVM, HVM + PV et PVM.&lt;/p&gt;
&lt;p&gt;En réalité il s’agit de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Xen HVM:&lt;/strong&gt; Hardware virtualization, or fully virtualized&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xen HVM, PV Drivers:&lt;/strong&gt; Identical to Xen HVM, but with additional paravirtualized drivers for improved performance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xen PVM:&lt;/strong&gt; Paravirtualized&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En théorie, vous aurez donc de meilleures performances lorsque vous disposerez d’un OS capable d’être paravirtualisé (mode Xen PVM) que lorsque vous aurez une HVM.&lt;/p&gt;
&lt;p&gt;Ça c’est la théorie. En fait en pratique, certains OS, même Linux, seront plus performants en HVM + PV selon Oracle. Pour plus d’informations, voir la page de &lt;a class="link" href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=757719.1#aref18" target="_blank" rel="noopener"
&gt;documentation officielle qui traite du sujet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La liste des OS supporté pour chaque mode est disponible dans &lt;a class="link" href="http://www.oracle.com/technetwork/documentation/vm-096300.html" target="_blank" rel="noopener"
&gt;les release notes&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="créer-des-interfaces-virtuelles"&gt;Créer des interfaces virtuelles
&lt;/h3&gt;&lt;p&gt;La seconde étape du wizard permet de configurer les interfaces virtuelles et les réseaux qui y sont associés.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm34.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h3 id="ajouter-des-disques-virtuels"&gt;Ajouter des disques virtuels
&lt;/h3&gt;&lt;p&gt;L’étape d’après permet de configurer les différents périphériques qui sont associés à la VM. Dans le cas du disque dur virtuel, il faut le créer ou en réutiliser un existant.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm35.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Lorsqu’on clique sur le « + », on peut créer un nouveau disque virtuel qui sera stocké sur le repository choisi.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm36.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Enfin, on peut affecter ou non les différents périphériques éligibles à la séquence de boot et les ordonner.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm37.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Une fois la VM créée, on peut la démarrer et ouvrir sa console.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm38.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="boot"&gt;Boot
&lt;/h2&gt;&lt;p&gt;Dans l’état actuel des choses, la VM démarre mais n’a aucun disque bootable (CD ou HDD). En effet, il faut monter un ISO sur la VM, mais pour ça on doit l’uploader dans un premier temps sur un des repositories précédemment créés.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm39.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm40.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;A priori, dans le menu d’import du repository, on ne peut uploader &lt;strong&gt;que&lt;/strong&gt; des ISO &lt;strong&gt;depuis un partage web HTTP&lt;/strong&gt;. Une solution alternative probable est que l’on peut simplement aller déposer le fichier en SSH mais je trouve que clairement il manque une fonctionnalité à la console d’upload en directe depuis un navigateur !&lt;/p&gt;
&lt;p&gt;Une fois qu’on dispose d’un ISO pour booter notre VM, on peut éditer la machine virtuelle et y ajouter l’ISO.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm41.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm42.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm43.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On redémarre la machine virtuelle qui boote sur l’ISO comme souhaité.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm44-2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="sources"&gt;Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://docs.oracle.com/cd/E64076_01/" target="_blank" rel="noopener"
&gt;docs.oracle.com/cd/E64076_01/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://www.oracle.com/technetwork/server-storage/vm/downloads/index.html" target="_blank" rel="noopener"
&gt;www.oracle.com/technetwork/server-storage/vm/downloads/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://docs.oracle.com/cd/E64076_01/E64078/html/index.html" target="_blank" rel="noopener"
&gt;docs.oracle.com/cd/E64076_01/E64078/html/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://docs.oracle.com/cd/E64076_01/E64078/html/vmiug-server-installation.html" target="_blank" rel="noopener"
&gt;docs.oracle.com/cd/E64076_01/E64078/html/vmiug-server-installation.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Partage de VMDK entre plusieurs VMs</title><link>https://blog.zwindler.fr/2015/01/07/partage-de-vmdk-entre-plusieurs-vms/</link><pubDate>Wed, 07 Jan 2015 16:05:17 +0000</pubDate><guid>https://blog.zwindler.fr/2015/01/07/partage-de-vmdk-entre-plusieurs-vms/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/07/vmware2.webp" alt="Featured image of post Partage de VMDK entre plusieurs VMs" /&gt;&lt;p&gt;Si vous déjà voulu faire un POC de cluster Linux sur des machines virtuelles VMware, vous vous êtes déjà demandé comment vous alliez faire pour partager entre deux serveurs un espace de stockage commun à ces deux machines.&lt;/p&gt;
&lt;p&gt;Une façon de faire consiste à rajouter une couche d’abstraction du stockage au dessus de l’OS (via GlusterFS ou DRBD par exemple), mais dans le cas d’un POC pour valider un cluster connecté au SAN, ce n’est pas forcément la première solution qui vient à l’esprit. Personnellement, la plupart des clusters que je construis sont encore dans un schéma plus simple à base de LUNs  iSCSI ou FC partagés sur un SAN en actif/actif ou actif/passif.&lt;/p&gt;
&lt;p&gt;Cependant, pour simuler ce fonctionnement sur vos VMs, il va falloir bidouiller un peu.&lt;/p&gt;
&lt;p&gt;En effet, pour éviter toute erreur malencontreuse (et même désastreuse), VMware interdit par défaut le démarrage de toute machine virtuelle qui aurait un disque en cours d’utilisation par une autre machine virtuelle. Aïe&amp;hellip;&lt;/p&gt;
&lt;p&gt;Voici un petit mode opératoire pour s’en sortir ;-)&lt;/p&gt;
&lt;p&gt;Dans ce mode opératoire, les disques qu’on souhaite partager entre les deux serveurs sont des disques LVM en miroir, hébergés sur les baies de disques qui sont accessibles depuis les deux serveurs ESXi.&lt;/p&gt;
&lt;p&gt;Cet exemple permet de valider la fiabilité de la méthode dans le cadre d’un cluster Linux virtuel de type RedHat Cluster Suite. Le principe reste tout de même valide pour une utilisation en dehors de RedHat Cluster Suite, certaines opérations ne seront juste pas nécessaires (qui peut le plus peut le moins).&lt;/p&gt;
&lt;h2 id="prérequis"&gt;Prérequis
&lt;/h2&gt;&lt;p&gt;Pour les besoins de la documentation, deux machines virtuelles &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt; et &lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt; ont été créés. Elles disposent des caractéristiques techniques suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;hébergée sur ESXi1&lt;/li&gt;
&lt;li&gt;RedHat Entreprise Linux 5.8&lt;/li&gt;
&lt;li&gt;2 vCPU, 1 Go de RAM&lt;/li&gt;
&lt;li&gt;50 Go de disque interne sur un espace partagé&lt;/li&gt;
&lt;li&gt;IP 192.168.111.1/24 sur un réseau virtuel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;hébergée sur ESXi2&lt;/li&gt;
&lt;li&gt;RedHat Entreprise Linux 5.8&lt;/li&gt;
&lt;li&gt;2 vCPU, 1 Go de RAM&lt;/li&gt;
&lt;li&gt;50 Go de disque interne sur un espace partagé&lt;/li&gt;
&lt;li&gt;IP 192.168.111.2/24 sur un réseau virtuel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="création-des-disques-virtuels"&gt;Création des disques virtuels
&lt;/h2&gt;&lt;p&gt;Les machines &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt; et &lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt; doivent être éteintes avant de réaliser les modifications.&lt;/p&gt;
&lt;p&gt;Ouvrir les paramètres de la machine virtuelle &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt;, et ajouter un nouveau périphérique (Disque dur).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Le provisionnement du disque doit impérativement être « statique immédiatement mis à zéro ». De plus, il doit aussi être hébergé sur un datastore commun aux deux machines physiques ESXi.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage31.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Créer le disque et l’affecter à un &lt;em&gt;Nœud périphérique virtuel&lt;/em&gt; qui n’est pas encore utilisé.&lt;/p&gt;
&lt;p&gt;Ici, le disque interne est stocké sur l’adresse SCSI (0:0). &lt;strong&gt;Par défaut&lt;/strong&gt; VMware propose de créer le disque à la suite en SCSI (**0:**1).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Il faut impérativement&lt;/strong&gt; dérouler la liste pour affecter le disque à l’adresse SCSI (**1:**0) qui représente un nouveau contrôleur SCSI.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage4.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;De plus, pour permettre l’usage des snapshots sur la partie disque dur interne, les disques doivent être créés en Mode Indépendant/Persistant. &lt;em&gt;Dans le cas contraire, les snapshots seront impossibles sur la machine virtuelle&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Une fois le disque créé, un nouveau contrôleur SCSI est également créé. Avant de valider la création du disque et du contrôleur SCSI, il faut modifier le paramètre de Partage de bus de SCSI en mode « Physique ».&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage5.avif"
loading="lazy"
&gt;[4]Le second disque dur devra être créé de la même manière, et affecté au même contrôleur SCSI (on prendra l’adresse &lt;strong&gt;1:1&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Remettre &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt; sous tension.&lt;/p&gt;
&lt;h2 id="ajout-des-disques-virtuels-sur-la-deuxième-machine-virtuelle"&gt;Ajout des disques virtuels sur la deuxième machine virtuelle
&lt;/h2&gt;&lt;p&gt;Ouvrir les paramètres de la machine virtuelle &lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt;, ajouter un nouveau périphérique (Disque dur) puis sélectionner « Utiliser un disque virtuel déjà configuré ».&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage6.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Sélectionner le premier disque créé précédemment.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage7.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;De la même manière que précédemment, on doit créer un disque dur virtuel sur un nouveau contrôleur SCSI et en mode &lt;strong&gt;Indépendant-Persistant&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage8.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Modifier le nouveau contrôleur SCSI comme précédemment :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage9.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Ajouter enfin le second disque de la même manière à l’adresse SCSI (1:1).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/01/vmdk_partage101.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Valider et mettre la machine virtuelle sous tension. Si elle boot correctement c’est que le partage fonctionne.&lt;/p&gt;
&lt;h2 id="créer-le-miroir-lvm-partagé"&gt;Créer le miroir LVM partagé
&lt;/h2&gt;&lt;p&gt;Sur &lt;strong&gt;les deux&lt;/strong&gt; serveurs, exécuter les commandes suivantes :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;chkconfig acpid off #seulement pour RHCS
service acpid stop #seulement pour RHCS
vi /etc/lvm/lvm.conf
     filter = [ &amp;#34;a/.*/&amp;#34; ]
   #filter = [ &amp;#34;a|/dev/cciss/.*|&amp;#34;, &amp;#34;a|/dev/mpath.*|&amp;#34;, &amp;#34;r|.*|&amp;#34; ] #utiliser cette ligne en cas d’utilisation de multipath et de disques locaux présentés en tant que /dev/cciss. A adapter au contexte
[…]
volume_list = [ &amp;#34;vg01&amp;#34; , &amp;#34;@[TAG]&amp;#34; ]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans le cas de RedHat Cluster Suite, remplacer &lt;em&gt;[TAG]&lt;/em&gt; par le nom de la machine tel qu’il est définit dans le fichier /etc/cluster/cluster.conf.&lt;/p&gt;
&lt;p&gt;En dehors du cas d’un traitement automatisé par cluster, n’importe quel tag convient du moment qu’il est unique à la machine. Dans le cas présent, les tags choisis sont respectivement tag_vm1 et tag_vm2.&lt;/p&gt;
&lt;p&gt;Quelques précisions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;filter&lt;/strong&gt; permet de traiter les cas où on doit ignorer certains disques. C’est typiquement nécessaire lorsque l’on utilise LVM avec multipath ou powerpath, car l’OS voit plusieurs « disques » sda ,sdb, &amp;hellip; pour un même disque mpath (1 sdX pour chaque chemin vers mpathY).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;volume_list&lt;/strong&gt; indique à LVM que seul le vg01 (interne) et les VG explicitement taggués avec le nom de la machine qui peuvent être utilisés. Cela permet de s’assurer qu’il n’y a qu’une seule machine qui peut activer le VG du moment qu’on n’ajoute jamais plus d’un tag au VG.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Même si les modifications du fichier lvm.conf sont prises en compte immédiatement, RedHat Cluster Suite impose une recompilation de l’initrd. Dans le cas d’un cluster RHCS, il faut donc lancer la commande suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mkinitrd -f /boot/initrd-$(uname -r).img $(uname -r)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sur un seul nœud (le premier) :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate -c n vg_mirror /dev/sdb /dev/sdc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Tagger le VG pour pouvoir travailler dessus sur ce nœud.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vgchange --addtag tag_vm1 -ay vg_mirror
lvcreate -n lv_mirror -m1 -l 5116 /dev/vg_mirror
Logical volume &amp;#34;lv_mirror&amp;#34; created
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le journal des écritures doit lui aussi être en miroir&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;lvconvert --mirrorlog mirrored /dev/vg_mirror/lv_mirror
Logical volume lv_mirror converted.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Il est enfin possible de formater le disque, et de le monter sur le &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mkfs.ext3 /dev/vg_mirror/lv_mirror
mount /dev/vg_mirror/lv_mirror /mnt
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="tester-la-bascule"&gt;Tester la bascule
&lt;/h2&gt;&lt;p&gt;Scanner les VGs pour vérifier que le nouveau VG est bien disponible sur le &lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vgscan
vgs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Même s’il le VG est visible, il n’est pas possible de le monter car il n’a pas le bon tag (tel que spécifié dans le lvm.conf). Cela permet de vérifier que l’on ne pourra pas écrire sur les disques sur les deux nœuds en même temps.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Not activating vg_mirror/lv_mirror since it does not pass activation filter.
0 logical volume(s) in volume group “vg_mirror” now active
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut démonter le FS, désactiver le vg et enlever le tag sur le serveur &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt; et vérifier qu’on peut bien le monter et écrire dessus sur le &lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ce comportement est automatique sous RedHat Cluster Suite, qui gère lui même les tags lors de la bascule d’un VG/LV.&lt;/p&gt;
&lt;p&gt;Sur &lt;strong&gt;test_partage_vmdk_1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;umount /mnt
vgchange --deltag tag_vm1 -an vg_mirror
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sur &lt;strong&gt;test_partage_vmdk_2&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vgchange --addtag tag_vm1 -ay vg_mirror
mount /dev/vg_mirror/lv_mirror /mnt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Have fun&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>