Table des matières
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:
La suite est gérée par virt-manager
Je vous invite à la lecture de ces articles si vous avez les moyens matériel de tester
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