Setup de KVM/Libvirt sur une dedibox
Cet article explique le setup de KVM/Libvirt sur une dedibox de chez online.net, sur un serveur hôte en Debian Wheezy. Évidement, une bonne partie des infos sont valides pour n’importe quel hébergeur.
On commence par installer la base :
apt-get install libvirt-bin bridge-utils qemu-kvm virtinst
On setup un LVM que l’on appelle “system”, sur lequel on créé des LV pour les VM (je vous laisse vous debrouiller).
Il faut commander une IP Failover et sa mac associée, de type KVM, sur console.online.net et l’assigner à votre serveur. On prendra les paramètres suivants :
IP hote : 4.3.2.10
IP VM : 1.2.3.4
Mac VM : 54:52:00:00:00:00
Nom de la VM : vm1
On édite la configuration réseau afin de créer un bridge sur lequel les VM seront attachée, et ajouter une route pour que la VM ai une connexion.
vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 4.3.2.10
netmask 255.255.255.0
gateway 4.3.2.1
up brctl addbr dmz0
up brctl setfd dmz0 0
up brctl stp dmz0 on
up ifconfig dmz0 up
up /sbin/route add 1.2.3.4 dev dmz0
Un petit /etc/init.d/networking restart et ça devrait passer.
Faites un “brctl show”, vous devriez voir le bridge.
Ne pas oublier d’activer l’ip_forward sur l’hôte.
Note : Bien qu’il ne devrait plus être indispensable d’activer le proxy arp si on a fait générer une adresse mac sur l’interface d’online, j’ai tout de même eu des soucis, donc activons le !
vim /etc/sysctl.conf
net.ipv4.conf.eth0.proxy_arp=1
net.ipv4.ip_forward=1
Tout d’abord, il faut créer le LV associé avant de lancer l’installation, puis on utilise virt-install pour la suite :
lvcreate -v -L 20G -n vm1 system
virt-install -v --os-type=linux -n vm1 -r 2048 --disk=/dev/system/vm1 --vnc --vnclisten=4.3.2.10 --network bridge=dmz0,mac=54:52:00:00:00:00 --cdrom=debian-7.1.0-amd64-i386-netinst.iso
Connectez vous avec vncview sur l’IP de votre hôte et faire une installation tout ce qu’il y a de plus basique (sans réseau). Rebootez la VM, reconnectez vous en VNC, ensuite place à quelques modifications dans la VM afin d’avoir une console et du réseau.
Pour pouvoir acceder à votre VM avec un virsh console vm1 depuis l’hôte (utile en cas de dépanage…), éditez dans la vm
vim /etc/default/grub
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200"
vim Editer /etc/inittab
# Decommenter la ligne suivante
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
Puis update-grub pour mettre à jour le grub.cfg
Pour le réseau
vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 1.2.3.4 # Ip de votre VM
netmask 255.255.255.255 # oui, un /32
post-up /sbin/ip route add 4.3.2.10/32 dev eth0
post-up /sbin/ip route add default via 4.3.2.10 # Oui, c'est l'IP de l'hote !
Faire un halt de la VM, puis éditez la configuration
virsh shutdown vm1
virsh edit vm1
Supprimez les lignes dans le XML à propos de vnc pour desactiver VNC
<graphics type='vnc' listen type='address' address='4.3.2.10'/> >
On start la VM
virsh start vm1
La console devrait être disponible
virsh console vm1
Et la machine devrait pinguer sur le réseau, et avoir accès au net :)
Prochaine étape, activer les drivers virtio pour de meilleurs perfs, dans un autre article
Trucs et astuces :
Il est possible de monter les partitions de la VM sur l’hôte (VM éteinte) afin de pouvoir éditer directement les fichiers sans passer par la console/vnc qui peut parfois être récalcitrant. Pour cela, utiliser kpartx pour activer ou désactiver les partitions du LV !
# Lister les partitions du LV
kpartx -l /dev/system/vm1
# Activer les partitions
kpartx -av /dev/system/vm1
add map system-vm11 (254:9): 0 19529728 linear /dev/system/vm1 2048
add map system-vm12 (254:10): 0 399894530 linear /dev/system/vm1 19533822
add map system-vm15 : 0 1951744 linear 254:10 2
add map system-vm16 : 0 397940736 linear 254:10 1953794
# On peut ensuite mounter une partition !
mount /dev/mapper/system-vm1 /mnt
# Ne pas oublier de umount et desactiver les partitions après opération
umount /mnt
kpartx -dv /dev/system/vm1