LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


opensuse:opensuse-kvm

La virtualisation via KVM

Toutes ces manipulations ont été faites sous opensuse 11.3, à partir des paquets officiels.

Mais cela devrait fonctionner sur des versions antérieures d'opensuse.

Compatibilitée matériel:

Sous linux, les instructions de virtualisation s'appellent vmx pour Intel, svm pour AMD. Il arrive de temps en temps que cette fonction soit désactivée dans le bios par défaut . Ou beaucoup plus rarement, non géré par la carte mère.

Dans un terminal

  
  # egrep --color '(vmx|svm)' /proc/cpuinfo

Si vmx ou svm apparait dans la liste, votre processeur est compatible.

Vous pouvez aussi vérifier la présence des instructions de virtualisation sur le site d'Intel ou d'amd avec la référence de votre processeur. Quelques info

Dans un terminal

  
  # egrep 'model name' /proc/cpuinfo
  model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz
  model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz

Se retrouver parmi toutes les instructions de virtualisation

vt-x intel vmx instruction processeur base pour la virtualisation
vt-d intel iommu instruction processeur ET chipset ET bios permettant d'attacher un périphérique physique à une machine virtuelle
vt-c intel iommu?? instruction carte réseau intel dépendant de vt-d
amd-v amd svm instruction processeur base pour la virtualisation
amd-vi amd iommu instruction chipset (série 890FX actuellement) permettant d'attacher un périphérique physique à une machine virtuelle
via vt via ??? instruction processeur base pour la virtualisation

Installation KVM et libvirt:

Tout ce dont vous avez besoin est trouvable dans les dépots officiels d'opensuse 11.3.

<note tip> Le dépot Virtualization/openSUSE_11.3 est un peu plus à jour.</note>

Dans un terminal en root

  # zypper install kvm libvirt
  

A l'aide de yast:

Verifiez que libvirt est lancé:

  
  # service libvirtd status
  Checking status of libvirtd              running

Préparez le reseau (facultatif):

La mise en réseau d'une machine virtuelle passe soit par du nat entre votre réseau ethernet et un réseau local virtuel, soit par un pont réseau (bridge). Un réseau isolé peut aussi être crée entre plusieurs machines virtuelles. Par défaut s'il n'y a pas de pont réseau en place, c'est nat qui vous sera proposé.


Pont reseau (bridge):

<note importante> Si vous avez un pc muni de deux ports Ethernet, je vous conseille de dédier cette seconde à votre machine virtuelle, à l'aide d'un pont réseau. </note>

Pont réseau en console:

Premier cas: vous avez deux cartes réseau, créer un pont réseau nommé br0 relié par la carte réseau eth0 dédié à la machine virtuelle.

Il n'y a pas de fichier ifcfg-eth0 à éditer, si vous en avez un supprimez le.

Dans un terminal en root

  
  vi /etc/sysconfig/network/ifcfg-br0   
    BOOTPROTO='static'
    BRIDGE='yes'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_PORTS='eth0'
    BRIDGE_STP='off'
    BROADCAST=''
    ETHTOOL_OPTIONS=''
    IPADDR='0.0.0.0/24'
    MTU=''
    NAME=''
    NETWORK=''
    REMOTE_IPADDR=''
    STARTMODE='auto'
    USERCONTROL='no'

Relancez le reseau:

Dans un terminal en root

  service network restart

Second cas: créer un pont réseau nommé br0 relié par la carte réseau eth0, utilisé pour la machine physique en dhcp ET pour la machine virtuelle

Dans un terminal en root

  
  vi /etc/sysconfig/network/ifcfg-br0   
    BOOTPROTO='dhcp'
    BRIDGE='yes'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_PORTS='eth0'
    BRIDGE_STP='off'
    BROADCAST=''
    ETHTOOL_OPTIONS=''
    IPADDR=''
    MTU=''
    NAME=''
    NETMASK=''
    NETWORK=''
    REMOTE_IPADDR=''
    STARTMODE='auto'
    USERCONTROL='no'
  vi /etc/sysconfig/network/ifcfg-eth0
    BOOTPROTO='static'
    BROADCAST=''
    ETHTOOL_OPTIONS=''
    IPADDR='0.0.0.0/32'
    MTU=''
    NAME='88E8001 Gigabit Ethernet Controller'
    NETMASK=''
    NETWORK=''
    REMOTE_IPADDR=''
    STARTMODE='auto'
    USERCONTROL='no'

Relancez le reseau:

Dans un terminal en root

  service network restart

Pont réseau avec Yast:

Cliquez sur Ajouter

Sélectionnez pont, ou bridge si yast est en anglais, ainsi que le numéro que vous souhaitez attribuer a votre pont réseau:

Si vous n'avez qu'une carte réseau utilisée jusqu'a maintenant en dhcp:

Si la carte réseau est dédiée au pont réseau de votre future machine virtuelle:

Sélectionnez la carte réseau à mettre en bridge:

Voilà votre bridge est en place:


Open Vswitch:

Open vSwitch permet créer un switch virtuel, pour reliez toutes les machines virtuelles entres elles. Ca a l'air compliqué comme ca, et ca l'est surement… j'ai pas encore eu le temps de tester…


virt-manager administrez graphiquement vos machines virtuelles

virt-manager permet de gérer graphiquement des machines virtuelles locales ou distantes. xen, qemu et kvm/qemu sont gérés par virt-manager. C'est aussi l'interface pour la virtualisation proposé par yast.

Il n'est pas obligatoire pour la création de machines virtuelles. Si vous ne voulez pas utiliser virt-manager, sautez a l'étape virsh.


Installation virt-manager:

<note importante> Veillez à ce que libgtk-vnc soit en version 3.1, la version 4.x refusant le lancement de virt-manager. </note>

Dans un terminal en root

  zypper install virt-manager

A l'aide de yast:


Lancement de virt-manager

Dans un terminal

  
  su -
  virt-manager

A l'aide de yast: (virt-manager sera lancé en français)

Une fois virt-manager lancé: ajoutez une connection

Le menu 'Add Connection': sélectionnez l'hyperviseur QUEMU/KVM

cela va créer une connection vers votre hyperviseur kvm sur votre machine locale


Creation d'une machine virtuelle:

Cliquez sur l'icône 'New'

Passez la page d'accueil de création de machine virtuelle

Si vous avez déjà un disque virtuel sélectionnez le second choix. Laissez tel quel pour créer un disque dur virtuel.

Choisissez au plus proche, le type de système d'exploitation que vous souhaitez installer.

Petit récapitulatif de la configuration “matérielle” de la machine virtuelle que vous allez créer. Quelques modifications doivent encore être apportées.

Dans la section: Name of Virtual Machine Editez le nom de la machine (à faire avant de créer le disque dur virtuel…)

Dans la section: Operating System Intallation Vous sélectionnez le média d'installation

Installation à partir du lecteur cd/dvd de votre pc ou d'un iso

Dans la section: Network Adapter Ajoutez ou modifiez, le pilote, la mac, ou le lien de votre carte réseau virtuelle (virtio par défaut pour Linux et plus performant que realtaek ou e1000)

Les bridges (br0) permettent de dédier une carte réseau à une vm.

Dans la section: Disks Ajoutez ou modifiez, la taille, la source et le format de votre disque dur virtuel

L'édition d'un disque dur virtuel

Dans la section: Graphics and Keyboard Modifiez le pilote graphique et le clavier. (vesa vga ne semble basculer automatiquement vers cirrus logic lors d'une installation)

Dans la section: Hardware Configurez la quantitée de ram dédiée à la machine virtuel ainsi que le nombre de processeurs virtuels.

Dernier récapitulatif avant installation

Quelques instants pour la création de la machine virtuelle…


Installation:

<note tip>Pour détacher le pointeur de la souris de la fenêtre de la machine virtuelle.

Appuiez simultanément sur les touches CTRL et ALT </note>

La machine boot sur le dvd d'installation

La machine virtuelle s'affiche dans le manager de virt-manager

Pour des raisons de performances, une partition d“échange swap n'est pas toujours conseillé pour une machine virutelle

Opensuse 11.3 installé, après son premier boot

Il arrive que la souris ne fonctionne pas après l'installation, ajoutez une souris usb virtuelle


Post installation:

Dans l'onglet Detail, vous pouvez modifier le matériel virtuel de la machine ainsi que quelques réglages.

Quelques statistiques

Ajout d'un périphérique virtuel (une souris usb par example) Necessite que la machine virtuelle soit éteinte


Administration distante:

virt-manager permet d'administrer une machine virtuelle à distance, juste à travers ssh

Une fois connecté…


IOMMU:

Ajout d'un périphérique physique sur une machine virtuelle. (IOMMU)

Cela nécessite:

  • Un processeur compatible vt-d ou amd-v
  • Un chipset compatible vt-d ou amd-vi
  • Surtout que le fabriquant ait activé la fonction vt-d ou amd-vi sur la carte mere.

<note> Dans mon cas, asus ne l'a pas activé donc je n'ai malheureusement pas pu tester. (P5Q-Deluxe P5Q-Premium P5QL)</note>

Identifier le périphérique:

Cette manipulation n'est pas gérée par virt-manager, il faudra utiliser virsh en console

Dans un terminal en root:

# virsh nodedev-list --tree

La liste de votre matériel apparait

computer
 |
  +- net_lo_00_00_00_00_00_00
  +- pci_0000_00_00_0
  +- pci_0000_00_01_0
  |   |
  |   +- pci_0000_01_00_0
  |     
  +- pci_0000_00_1a_0
  |   |
  |   +- usb_usb3
  |       |
  |       +- usb_3_0_1_0
  |         
  +- pci_0000_00_1a_1
  |   |
  |   +- usb_usb4
  |       |
  |       +- usb_4_0_1_0
  |         
  +- pci_0000_00_1a_7
  |   |
  |   +- usb_usb1
  |       |
  |       +- usb_1_0_1_0
  |         
  +- pci_0000_00_1b_0
  +- pci_0000_00_1c_0
  +- pci_0000_00_1c_5
  |   |
  |   +- pci_0000_02_00_0
  |       |
  |       +- net_eth0_00_22_15_15_26_e7

Pour détacher la carte réseau eth0 il faut l'identifiant pci de cette dernière.

Dans ce cas pci_0000_02_00_0

Détacher le périphérique:

Cette manipulation n'est pas gérée par virt-manager, il faudra utiliser virsh en console

Dans un terminal en root:

# virsh nodedev-dettach pci_0000_02_00_0
Device pci_0000_02_00_0 dettached

Attacher le périphérique:

Virsh la virtualisation en console

Virsh est un outil en ligne de commande pour administrer et gérer ses machines virtuelles. Il est tout à fait compatible avec le machine virtuelle créee ou lancée à l'aide de virt-manager. Son avantage est de permettre des réglages plus fins que virt-manager.

<note warning> Si xen est installé sur votre machine, virsh et virt-install peuvent s'embrouiller entre xen et kvm/qem. Il est conseillé dans ce cas de lancer virsh ou virt-install avec l'option

   
   -c qemu:///system
   

Example:

   # virsh -c qemu:///system list --all
   Id Name                 State
   ----------------------------------
   14 opensuse11           running     

</note>


Creez une machine virtuelle

<note> Pour éviter d'embrouiller ceux qui ont suivit la partie virt-manager, le même nom et les mêmes caractéristiques que pour la machine crée précedement vont etre utilisé. Ceux ayant suivit la partie virt-manager peuvent sauter cette étape.</note>

virt-install est l'outil de création de machine virtuelle.

Utilisation du prompt de virt-install:

Dans un terminal en root:

  # virt-install --prompt
  What is the name of your virtual machine? opensuse11
  How much RAM should be allocated (in megabytes)? 1024
  What would you like to use as the disk (file path)? /var/lib/kvm/images/opensuse11/disk0.raw
  How large would you like the disk (/var/lib/kvm/images/opensuse11/disk0.raw) to be (in gigabytes)? 10
  This will overwrite the existing path '/var/lib/kvm/images/opensuse11/disk0.raw'
  Do you really want to use this disk (yes or no) yes
  What is the install CD-ROM/ISO or URL? /home/[...]/openSUSE-11.3-DVD-x86_64.iso
  C'est pas finit...

virt-install en une ligne:

Dans un terminal en root: (un truc du genre)

  # virt-install -n opensuse11 -r 1024 --vcpus=2 -f URL-IMAGE-DISK.raw -s 10 
  -c URL-IMAGE-DVD.iso --vnc --noautoconsole --os-type linux  
  --os-variant opensuse11 --accelerate --network=bridge:br0 --hvm

Administrez une machine virtuelle

Lister les machines virtuelles actives et inactives:

Dans un terminal en root:

  # virsh list --all
   Id Name                 State
   ----------------------------------
   14 opensuse11           running

Démarrer une machine virtuelle:

  # virsh start opensuse11
  Domain opensuse11 started

Eteindre une machine virtuelle:

  # virsh shutdown opensuse11
  Domain opensuse11 is being shutdown

Eteindre sauvagement une machine virtuelle :

  # virsh destroy opensuse11
  Domain opensuse11 destroyed

Mettre en veille une machine virtuelle:

  # virsh suspend opensuse11
  Domain opensuse11 suspended

Réveiller une machine virtuelle:

  # virsh resume opensuse11
  Domain opensuse11 resumed

Modifiez une machine virtuelle

la fonction edit de virsh reprend les commandes de l'éditeur vi

Dans un terminal en root

  virsh edit opensuse11

En modifiant la valeur vram='9216' vous modifiez la quantité de mémoire alouée à la carte vidéo virtuelle

    <video>
    <model type='cirrus' vram='16384' heads='1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    

Spice l'avenir de la virtualisation

Spice est encore en plein développement, mais semble utilisable et stable depuis la version 0.6. Projet Redhat, Spice a été intégré dans Fedora 14 avec le status experimental. La version 0.6.3 est la dernière en date, et la version 0.8, actuellement en dévelloppement, est prévue pour courant février.

<note tip> Le dépot home:kraxel/openSUSE_11.3 propose la version 0.6.1.</note>

Actuellement spice est un driver pour une nouvelle carte vidéo virtuelle, ainsi qu'un protocole (genre vnc en mieux) pour s'y connecter.

Les points négatifs étant qu'actuellement le protocole n'est pas compatible avec virt-manager, il faut se contenter de virsh. Il y a aussi le fait que spice necessite coté serveur, un system 64bits pour fonctionner car il est dépendant de l'atomicité du x64 (it is dependent on 64-bit atomic operations).

Dans l'avenir il est prévu que spice gère la lecture de video, la 3d, le réseau, le son… rien de tel qu'une vidéo flash éditée par redhat pour vous expliquer… http://www.redhat.com/v/swf/rhev/spice.html


opensuse/opensuse-kvm.txt · Dernière modification: 2018/11/17 12:53 (modification externe)