relecture

This commit is contained in:
Gregory Colpart 2023-07-28 21:39:35 +02:00
parent d012c855fe
commit 16defe31b5

View file

@ -1,8 +1,12 @@
# Howto KVM
---
categories: virtualisation
title: Howto KVM
...
* Documentation KVM : <http://www.linux-kvm.org/page/Documents>
* Documentation libvirt : <https://libvirt.org/docs.html>
* virsh(1) : <https://manpages.debian.org/jessie/libvirt-clients/virsh.1.en.html>
* virsh(1) : <https://manpages.debian.org/bullseye/libvirt-clients/virsh.1.en.html>
* Statut de cette page : prod / bullseye
[KVM](http://www.linux-kvm.org/) est une technologie de virtualisation intégrée au noyau Linux.
On l'utilise avec [libvirt](https://libvirt.org), une surcouche qui facilite l'utilisation de la virtualisation.
@ -17,18 +21,18 @@ Pour installer un hyperviseur (machine capable de faire tourner des machines vir
~~~
$ kvm --version
QEMU emulator version 2.8.1(Debian 1:2.8+dfsg-6+deb9u4)
Copyright (c) 2003-2016 Fabrice Bellard and the QEMU Project developers
QEMU emulator version 5.2.0 (Debian 1:5.2+dfsg-11+deb11u2)
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
$ virsh -V
Virsh command line tool of libvirt 3.0.0
See web site at http://libvirt.org/
Virsh command line tool of libvirt 7.0.0
See web site at https://libvirt.org/
Compiled with support for:
Hypervisors: QEMU/KVM LXC UML Xen LibXL OpenVZ VMware VirtualBox Test
Networking: Remote Network Bridging Interface netcf Nwfilter VirtualPort
Storage: Dir Disk Filesystem SCSI Multipath iSCSI LVM RBD Sheepdog ZFS
Miscellaneous: Daemon Nodedev AppArmor SELinux Secrets Debug DTrace Readline Modular
Hypervisors: QEMU/KVM LXC LibXL OpenVZ VMware VirtualBox ESX Test
Networking: Remote Network Bridging Interface netcf Nwfilter
Storage: Dir Disk Filesystem SCSI Multipath iSCSI LVM RBD Gluster ZFS
Miscellaneous: Daemon Nodedev AppArmor SELinux Secrets Debug DTrace Readline
~~~
Installation de virt-manager :
@ -86,7 +90,7 @@ Le CPU pinning permet dattacher un processus à un CPU particulier. La machin
Pour choisir les CPU, on peut sappuyer sur les informations sur la topologie du processeur avec la commande `lspcu`.
```
~~~
$ lscpu -e=cpu,core,cache
CPU CORE L1d:L1i:L2:L3
0 0 0:0:0:0
@ -105,11 +109,11 @@ CPU CORE L1d:L1i:L2:L3
13 5 5:5:5:1
14 6 6:6:6:1
15 7 7:7:7:1
```
~~~
On voit ici que les CPU 4 et 12 (1ère colonne) sont dans le même _core_ (2ème colonne). Les CPU 4 à 7 et 12 à 15 partagent le même cache L3 (3ème colonne, dernier caractère). La configuration XML ci-dessous associe à la machine virtuelle les CPU 4 à 7 et 12 à 15.
```xml
~~~{.xml}
<domain>
[…]
<vcpu placement='static'>8</vcpu>
@ -124,7 +128,7 @@ On voit ici que les CPU 4 et 12 (1ère colonne) sont dans le même _core_ (2ème
<vcpupin vcpu='7' cpuset='15'/>
</cputune>
[…]
```
~~~
La machine virtuelle ne pourra utiliser que ces processur, mais ça nempêchera pas des processus de lhôte de les utiliser aussi. Pour empêcher ça, il faudra isoler les CPU.
@ -1181,14 +1185,14 @@ tic $ virsh domrename <old DOM name> <new DOM name>
Pour Debian 7 et inférieur, la commande `virsh domrename` n'existe pas. On peut alors contourner de cette manière :
```
~~~
# cd /etc/libvirt/qemu/
# cp <old DOM name>.xml <new DOM name>.xml
# virsh undefine <old DOM name>
# vim <new DOM name>.xml
# : faire les modifications de l'étape 8 ainsi que le changement de nom dans la balise <name>
# virsh define <new DOM name>.xml
```
~~~
8. On ajuste les chemins des volumes dans la définition de la VM
@ -1549,7 +1553,7 @@ Cela ne résoud pas forcément le problème.
Parfois suite à la commande virt-install on n'a toujours pas de CD dans la définition de la VM. Un bloc fonctionnel ressemble à :
~~~
~~~{.xml}
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/home/iso/install61.iso'/>
@ -1557,18 +1561,17 @@ Parfois suite à la commande virt-install on n'a toujours pas de CD dans la déf
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
~~~
Il faudra possiblement rajouter
~~~
~~~{.xml}
<boot dev='cdrom'/>
~~~
avant `hd` dans le block
~~~
~~~{.xml}
<os>
<type arch='x86_64' machine='pc-0.12'>hvm</type>
<boot dev='hd'/>
@ -1581,7 +1584,7 @@ afin de bien booter sur le CD.
Si on veut que le vnc mis en place utilise une disposition de clavier qwerty
~~~
~~~{.xml}
<graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'>
~~~
@ -1603,7 +1606,7 @@ Sur certains hyperviseurs et certains CPU, il est possible que le mode CPU `host
Il faut donc, dans le fichier xml, mettre le modèle de CPU de l'hyperviseur correspondant, exemple avec un modèle Sandy Bridge :
~~~
~~~{.xml}
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
</cpu>