[ libresys ]

Création d'une machine virtuelle KVM sur le cluster

Pré-requis

  • serveur installé tel que décrit dans cette documentation
  • disposer d'une iso du CDROM d'installation dans /root
  • avoir créé un volume dans la baie de disques pour recevoir la machine virtuelle, tel que décrit dans cette documentation

Partitionnement

Le volume associé la machine virtuelle doit recevoir deux partitions.

  • la première contient les informations de description de la machine KVM pour la machine hôte
  • la seconde contient le disque dur virtuel de la machine KVM

Déterminer le numéro de device - dans cette documentation nous utiliserons /dev/mapper/360123456789abcdef0123456789abcde.

En ayant suivi la documentation citée ci-dessus, une première partition d'une taille de 4Go (ou davantage suivant la taille de la RAM de la machine virtuelle doit avoir été créée et formatée, et le reste laissé disponible pour l'OS invité. On peut le vérifier ainsi :

# fdisk /dev/mapper/360123456789abcdef0123456789abcde

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): c
DOS Compatibility flag is not set

Command (m for help): p

Disk /dev/mapper/360123456789abcdef0123456789abcde: 500.0 GB, 499999981568 bytes
15 heads, 15 sectors/track, 4340277 cylinders, total 976562464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc6b55526

                                         Device Boot      Start         End      Blocks   Id  System
/dev/mapper/360123456789abcdef0123456789abcdep2            2048     8390655     4194304   83  Linux

Il reste ensuite à formater la première partition :

mkfs.ext4 /dev/mapper/360123456789abcdef0123456789abcde-part1

Préparation de la machine virtuelle

  • Ajouter une entrée dans le fichier /etc/vzcluster/vzclusterservice.conf
mavm:kvm:/cluster_fs/mavm:/dev/mapper/360123456789abcdef0123456789abcde
  • Diffuser le fichier
vzdiffuse_conf.sh
  • Créer les prérequis sur les noeuds du cluster
vzcheckservicesall.sh
  • Monter la partition et créer la structure
vzmount.sh mavm
mkdir /cluster_fs/mavm/conf
mkdir /cluster_fs/mavm/dump
  • Créer le fichier de configuration de la machine virtuelle dans /cluster_fs/mavm/conf/mavm.xml, en ajustant notamment les valeurs suivantes :
    • la mémoire allouée (memory et currentMemory)
    • le disque dur virtuel (source file)
    • l'iso pour le cdrom d'installation (source file)

<domain type='kvm'>
  <name>mavm</name>
  <!--<uuid>ici il faut un uuid unique</uuid>-->
  <memory>614400</memory>
  <currentMemory>614400</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.12'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/dev/mapper/3600c0ff000da83a045598c4e01000000'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/root/debian-501-i386-netinst.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <!--<mac address='ici il faut une adresse mac unique'/>-->
      <source bridge='vzbr0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='fr'/>
    <video>
      <model type='vga' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
</domain>

  • Taper ces commandes pour récupérer les valeurs d'uuid et de mac address, qui sont générées aléatoirement par libvirt lorsqu'on définit une machine virtuelle sans les avoir précisées :
# virsh -c qemu:///system define /cluster_fs/mavm/conf/mavm.xml 
  Domain mavm defined from /cluster_fs/mavm/conf/mavm.xml
# virsh -c qemu:///system dumpxml mavm | grep uuid
  <uuid>b0bc458b-c822-197b-d7a7-e48c88518267</uuid>
# virsh -c qemu:///system dumpxml mavm | grep "mac address"
  <mac address='xx:xx:xx:xx:xx:xx'/>
# virsh -c qemu:///system undefine mavm
  • et réintégrer ces valeurs aux bons endroits dans le fichier xml, là ou sont déjà présents des commentaires

Installation de l'OS de la machine virtuelle

  • Lancer la machine virtuelle
# vzstart.sh mavm
  • Lancer virt-manager et récupérer l'affichage. Si l'installation depuis le CDROM ne fonctionne pas, c'est qu'il faut changer l'ordre de recherche des périphériques d'amorçage, de sorte que le CDROM soit avant le disque dur
  • Pendant l'installation de l'OS, il faudra veiller à ne pas toucher à la première partition, qui est réservée à la machine hôte, et à utiliser l'espace disponible après la première partition.
  • Pendant l'installation d'un OS GNU/Linux, ne pas créer de partition pour le swap. Si davantage de mémoire pour la VM s'avérait nécessaire et que du swap sur l'invité s'avérait être la solution, alors il suffira de créer un fichier de swap dans le système de fichiers invité.
  • Une fois l'OS invité installé, si le CDROM n'est plus nécessaire, commenter les lignes correspondantes dans le fichier xml.

Notes spécifiques pour machines KVM windows

L'horloge du système hôte étant en UTC, il faut définir cette clé de la base de registre pour l'indiquer à Windows (pratique…) :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

et désactiver la synchro avec un serveur de temps externe.

 

Avertissement : Les documentations disponibles dans ce wiki sont tirées des documentations que j'ai rédigées dans le cadre de mon activité professionnelle, que j'ai ensuite adaptées afin d'en éliminer toute référence à un contexte spécifique du système d'information que j'administre et de les rendre plus facilement réutilisables. Cela implique que je ne les ai pas appliquées dans l'état où elles sont présentées dans ce wiki et qu'elles peuvent comporter des erreurs. Merci de me les signaler le cas échéant, et en cas de doute, n'hésitez pas à me questionner à travers l'article adéquat du blog.

Vous pouvez utiliser les informations, documentations et conseils diffusés à travers ce site à vos risques et périls. Je ne saurais être tenu pour responsable des conséquences que leur utilisation pourrait vous occasionner.

Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante : CC Attribution-Noncommercial-Share Alike 3.0 Unported