# KVM

# Installation et utilisation

## <span class="mw-headline" id="bkmrk-installation-sur-deb-0">Installation sur Debian SQUEEZE</span>

Note sur l'install de test : le système est installé sur un volume logique LVM de 10G (/boot 150M en primaire-ext3 + swap en logique + le reste en LVM, 1 Volum Group, 1 premier Volum Logic pour /).

Ainsi, si on manque de place sur /, on pourra toujours l'étendre par l'agrandissement du volume logique (ça obligera à booter sur un CD live, mais au moins on ne sera pas bloqué).

Les VM seront gérées dans des LV aussi.

Vérifier les possibilités de virtualisation du processeur :

```
egrep '(vmx|svm)' --color=always /proc/cpuinfo
```

Note : sur un DELL R310, il a fallu activer la virtaulisation dans le BIOS (CPU parameters/Virtualization technology) sinon kvm ne se chargeait pas, même si "vmx" apparaissait dans la commande ci-dessus.

Installer KVM. On installe aussi libvirt, librairie + outils permettant de gérer KVM en ligne de commande et à distance (il en existe d'autres, Proxmox utilise son propre outils "qm" par exemple).

```
apt-get install qemu-kvm libvirt-bin bridge-utils screen console-data console-tools debconf
```

Par sécurité il est conseillé de stopper la fonctionnalité de swapper la mémoire "sous-utilisée" (sinon risque de surcharge avec kvm)

```
sysctl vm.swappiness=0
echo "vm.swappiness=0" >> /etc/sysctl.conf
```

Modifier les interfaces réseau pour le bridge (les VMs passeront par ce bridge pour accéder au réseau). Dans /etc/network/interfaces :

```
...
#allow-hotplug eth0
#iface eth0 inet dhcp
# The primary network interface
auto eth0
iface eth0 inet manual

# Network bridge
auto br0
iface br0 inet static
address 192.168.1.110
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.254
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
```

Editer /etc/hosts pour mettre l'adresse 192.168.1.110 en face du hostname, puis

```
reboot
```

## <span class="mw-headline" id="bkmrk-virt-manager-0">virt-manager</span>

Sur un poste de travail (Ubuntu par ex.) installer virt-manager (partie client de la librairie libvirt). Echanger les clés avec le serveur pour avoir une connexion sans mot de passe, lancer virt-manager et créer une connexion "QEMU/KVM" sur "Tunnel SSH".

## <span class="mw-headline" id="bkmrk-cr%C3%A9ation-des-vms-0">Création des VMs</span>

Chargement d'un iso pour l'installation du guest

```
cd /var/lib/libvirt/images/
wget <a class="external free" href="http://cdimage.debian.org/debian-cd/6.0.0/multi-arch/iso-cd/debian-6.0.0-amd64-i386-netinst.iso" rel="nofollow">http://cdimage.debian.org/debian-cd/6.0.0/multi-arch/iso-cd/debian-6.0.0-amd64-i386-netinst.iso</a>
```

Test d'une VM en fichier (on verra LVM plus tard):

- A la main : PROCEDURE NON TESTEE - A VALIDER

1\. création du fichier

```
kvm-img create -f qcow2 /var/lib/libvirt/images/vdisk.img 4G 
```

2\. Boot et install OS :

```
kvm -hda /var/lib/libvirt/images/vdisk.img -cdrom /var/lib/libvirt/images/debian-6.0.0-amd64-i386-netinst.iso -boot d -m 512
```

- Par virt-manager : clic-droit sur le nom du host, nouveau, et se laisser guider (attention à DECOCHER "allouer la totalité du disque maintenant" pour créer un disque qcow2, et pour le réseau indiquer "br0" comme périphérique partagé)

## <span class="mw-headline" id="bkmrk-gestion-des-vms-0">Gestion des VMs</span>

Sur l'hôte, on peut utiliser virsh pour interagir avec les VM

```
virsh list
virsh start my-guest-vm
virsh shutdown my-guest-vm
```

Note : pour lancer/arrêter un système invité avec virsh il faut que acpid et acpi-support soient installés sur l'invité (pour qu'il détecte la demande d'arrêt comme si on appuyait sur le bouton OFF)

Pour forcer l'arrêt d'une VM (arrêt brutal au bouton) utiliser

```
virsh destroy my-guest-vm
```

# Convertir une image VirtualBox vers KVM

Pour convertir une image VDI vers KVM, convertir d'abord le disque Virtualbox VDI au format raw par VboxManage

```
VBoxManage clonehd --format RAW <chemin complet>/system.vdi system.img
```

Puis convertir l'image raw au format qcow par qemu-img

```
qemu-img convert -f raw system.img -O qcow2 system.qcow
```

C'est tout, normalement le fichier qcow peut être utilisé dans KVM.

Pour tester la nouvelle image :

```
kvm -m 512 -hda system.qcow
```

En cas d'erreur :

```
ERROR: Cannot register the hard disk '/home/user/.VirtualBox/VDI/Disque.vdi' with UUID {d587e3d6-b0e3-4a87-9777-6caa94242f54} because a hard disk '/home/user/.VirtualBox/VDI/Disque.vdi' with UUID {d587e3d6-b0e3-4a87-9777-6caa94242f54} already exists in the media registry ('/home/user/.VirtualBox/VirtualBox.xml')
Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenHardDisk(Bstr(szFilenameAbs), AccessMode_ReadWrite, false, Bstr(""), false, Bstr(""), srcDisk.asOutParam())" at line 633 of file VBoxManageDisk.cpp

```

<div class="mw-body-content" id="bkmrk-"><div class="mw-body-content"><div class="mw-content-ltr" dir="ltr" lang="fr"><div class="mw-parser-output">  
</div></div></div></div>au moment de la conversion, pas de panique! Il faut simplement donner le **chemin absolu** de l'image source (VDI).