From 0e03ef52b5f6c9e7c1a8c947e8eabda6c89db248 Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 28 Dec 2016 16:50:24 +0100 Subject: [PATCH] KVM: ajustements de syntaxe --- HowtoKVM.md | 58 +++++++++++++++++++++++++++------------------------ HowtoMunin.md | 2 +- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/HowtoKVM.md b/HowtoKVM.md index 88c2d7c2..aaec98d8 100644 --- a/HowtoKVM.md +++ b/HowtoKVM.md @@ -67,7 +67,7 @@ Un hyperviseur KVM doit avoir des CPUs supportant la virtualisation, une bonne q Un hyperviseur KVM doit avoir des CPUs supportant la virtualisation. Cela s'active souvent via le BIOS de la machine. -Si ce n'est pas activé, vous aurez une erreur *KVM: disabled by BIOS* +Si ce n'est pas activé, vous aurez une erreur `KVM: disabled by BIOS` ### Configuration mémoire @@ -75,7 +75,7 @@ On conseille d'avoir une certaine marge de RAM par rapport à la somme de la mé On conseille également de configurer **au moins 10 Go de swap sur l'hyperviseur** afin d'éviter que le mécanisme *Out-Of-Memory Killer* ne se déclenche au moindre pic de mémoire. -Enfin, on conseille d'ajuster le paramètre *oom_score_adj* entre les machines critiques et non critiques : +Enfin, on conseille d'ajuster le paramètre `oom_score_adj` entre les machines critiques et non critiques : ~~~ @hourly test -s /var/run/libvirt/qemu/VM-non-critique.pid && echo '800' > /proc/$(cat /var/run/libvirt/qemu/VM-non-critique.pid)/oom_score_adj @@ -85,7 +85,7 @@ Enfin, on conseille d'ajuster le paramètre *oom_score_adj* entre les machines c ### Configuration réseau On conseille l'utilisation du mode **bridge** pour le réseau. -On crée un bridge _br0_ liée à l'interface _eth0_ : +On crée un bridge `br0` liée à l'interface `eth0` : ~~~ # brctl addbr br0 @@ -107,9 +107,9 @@ iface br0 inet static *Note 1* : il est nécessaire de désactiver le multicast_snooping pour assurer un bon fonctionnement de l'IPv6 -*Note 2* : il est nécessaire de commenter *source-directory /etc/network/interfaces.d* car [cela fait boguer libvirt](http://bugs.debian.org/740114) +*Note 2* : il est nécessaire de commenter `source-directory /etc/network/interfaces.d` car [cela fait boguer libvirt](http://bugs.debian.org/740114) -/!\\ : s'assurer d'avoir bien installé _bridge-utils_ et configuré le firewall avant de redémarrer +/!\\ : s'assurer d'avoir bien installé **bridge-utils** et configuré le firewall avant de redémarrer ### Configuration stockage @@ -139,9 +139,9 @@ $ virt-install --connect=qemu:///system \ --cdrom=/srv/isos/debian-8.6.0-amd64-netinst.iso ~~~ -*Note* : si besoin de performance, on pourra mettre *cache=writeback* +*Note* : si besoin de performance, on pourra mettre `cache=writeback` -*TODO* : à voir la valeur de --cpu=??? +*TODO* : à voir la valeur de `--cpu` On peut ensuite se connecter en VNC via l'hyperviseur et réaliser l'installation : @@ -157,7 +157,7 @@ Certes, l'installation est plus conviviale (car graphique) mais : * les options disponibles sont limitées (impossible de sélectionner un volume DRBD par exemple) * les choix réalisés par défaut sont incorrects (ajout de périphériques Tablette, Video QXL, USB etc.) -Si vous utilisez tout de même _virt-manager_, la démarche est similaire à _virt-install_, on choisira bien les options suivantes : +Si vous utilisez tout de même `virt-manager`, la démarche est similaire à v`irt-install`, on choisira bien les options suivantes : * Choix processor : Configuration > ne PAS cocher *Copier la configuration CPU de l'hôte* et choisir *Modèle : ???* * NIC : choisir *Device model : virtio* @@ -172,7 +172,7 @@ Si vous utilisez tout de même _virt-manager_, la démarche est similaire à _vi Vous pouvez écrire votre propre fichier de définition XML puis l'injecter : ~~~ -# virsh define template.xml +# virsh define template.xml # virsh start template ~~~ @@ -244,7 +244,7 @@ Création d'une image QCOW2 : Information sur une image QCOW2 : ~~~ -# qemu-img info debian1.qcow2 +# qemu-img info debian1.qcow2 image: debian1.qcow2 file format: qcow2 virtual size: 12G (12884901888 bytes) @@ -264,7 +264,7 @@ Convertir une image RAW en QCOW2 : #### Monter une image QCOW2 via qemu-NBD -*qemu-nbd* permet de créer un point de montage NBD (Network Block Device) : +`qemu-nbd` permet de créer un point de montage NBD (Network Block Device) : ~~~ # modprobe nbd max_part=16; @@ -272,7 +272,7 @@ Convertir une image RAW en QCOW2 : # partprobe /dev/nbd0; ~~~ -/dev/nbd0 est ensuite utilisable pour fdisk : +`/dev/nbd0` est ensuite utilisable pour fdisk : ~~~ # fdisk /dev/nbd0 @@ -329,7 +329,7 @@ Convertir ume image RAW en QCOW2 : # qemu-img resize host.img +50G Image resized. ~~~ -ou on peut utiliser _dd_, exemple pour une taille finale de 80G : +ou on peut utiliser `dd`, exemple pour une taille finale de 80G : ~~~ # dd if=/dev/zero of=host.img seek=80G count=0 bs=1 @@ -337,12 +337,13 @@ ou on peut utiliser _dd_, exemple pour une taille finale de 80G : 0+0 records out 0 bytes (0 B) copied, 1.302e-05 s, 0.0 kB/s ~~~ + * Monter l'image et vérifier qu'elle a la bonne taille : ~~~ # kpartx -v -a host.img add map loop0p1 (254:4): 0 314572737 linear /dev/loop0 63 -# fdisk -l /dev/loop0 +# fdisk -l /dev/loop0 Disk /dev/loop0: 161.1 GB, 161061273600 bytes […] @@ -360,13 +361,13 @@ Disk /dev/loop0: 161.1 GB, 161061273600 bytes * Démonter et remonter l'image (un partprobe ne suffit visiblement pas pour détecter la nouvelle taille de la partition) : ~~~ -# kpartx -d host.img +# kpartx -d host.img loop deleted : /dev/loop0 -# kpartx -v -a host.img +# kpartx -v -a host.img add map loop0p1 (254:4): 0 314572737 linear /dev/loop0 63 ~~~ -* Lancer un fsck puis un resize2fs pour redimensionner le système de fichiers : +* Lancer un `fsck` puis un `resize2fs` pour redimensionner le système de fichiers : ~~~ # e2fsck -f /dev/mapper/loop0p1 @@ -395,7 +396,7 @@ The filesystem on /dev/mapper/loop0p1 is now 39321592 blocks long. * Puis démonter l'image : ~~~ -# kpartx -d host.img +# kpartx -d host.img loop deleted : /dev/loop0 ~~~ @@ -518,7 +519,7 @@ Avec libvirt, il suffit d'installer : # apt install dnsmaq ebtables ~~~ -Et l'on peut configurer avec un réseau NAT avec _virt-manager_ ou `virsh net-create` et un fichier XML du type : +Et l'on peut configurer avec un réseau NAT avec `virt-manager` ou `virsh net-create` et un fichier XML du type : ~~~{.xml} @@ -585,8 +586,8 @@ etc. L'utilisation du format de stockage QCOW2 permet d'avoir des snapshots à chaud ! On peut créer plusieurs snapshots de l'état disque/mémoire, et restaurer en quelques secondes. -Avec libvirt, création/restauration/suppression de snapshot se gère de façon conviviale avec *virt-manager* -ou on peut aussi utiliser _virsh_ (TODO: exemple de XML pour créer un snapshot) : +Avec libvirt, création/restauration/suppression de snapshot se gère de façon conviviale avec `virt-manager` +ou on peut aussi utiliser `virsh` (TODO: exemple de XML pour créer un snapshot) : ~~~ # virsh snapshot-list template @@ -619,9 +620,9 @@ Metadata: yes snapshot-revert Revert a domain to a snapshot ~~~ -On peut gérer les snapshots via le [Mode Monitor](#mode-monitor) et les commandes *savevm*/*loadvm*/*info snapshots*. +On peut gérer les snapshots via le [Mode Monitor](#mode-monitor) et les commandes `savevm`, `loadvm`, `info snapshots`. -### Options -loadvm / -snapshot (non gérées avec libvirt) +### Options -loadvm / -snapshot (non gérées avec libvirt) On peut démarrer directement sur un snapshot *s0* avec l'option `-loadvm` : @@ -683,7 +684,7 @@ _libvirt_ crée automatiquement un _mode monitor_ qu'il utilise (donc non access # virsh qemu-monitor-command --hmp "info block" ~~~ -On peut aussi créer un _mode monitor_ manuellement, qui sera accessible via _telnet_ : +On peut aussi créer un _mode monitor_ manuellement, qui sera accessible via `telnet` : ~~~ $ kvm […] -monitor tcp:127.0.0.1:,server,nowait @@ -703,7 +704,7 @@ $ echo system_powerdown | nc 127.0.0.1 ~~~ (qemu) info block (qemu) info blockstats -(qemu) info network +(qemu) info network (qemu) info uuid ~~~ @@ -834,7 +835,7 @@ La commande **virsh** peut également être utilisée à distance : ## Cloner une VM -Via clic-droit sur _virt-manager_ ou en CLI : +Via clic-droit sur _virt-manager_ ou en CLI : ~~~ # virt-clone --original --name --file .img @@ -979,8 +980,10 @@ Deux solutions, utiliser eth1 au lieu de eth0, ou corriger /etc/udev/rules.d/z25 ~~~ # qemu-img create -f qcow2 debian1.qcow2 20G + # kvm -hda debian1.qcow2 -cdrom debian-amd64-netinst.iso -boot d -m 512 -net nic,macaddr= -net tap,script=/etc/qemu-ifup -vnc :1 -k fr + # /usr/bin/screen -S debian1 -d -m kvm -hda debian1.qcow2 -m 512 -net nic,macaddr= -net tap,script=/etc/qemu-ifup \ -curses -k fr -monitor tcp:127.0.0.1:,server,nowait ~~~ @@ -1024,11 +1027,12 @@ Il suffit ensuite de la retirer du bridge : Utiliser autant que possible les drivers virtio (disque et réseau) sur les invités le supportant. -Dans le cas d'un hyperviseur avec une carte RAID hardware disposant d'un cache avec batterie, créer les machines avec l'option "cache=none" : +Dans le cas d'un hyperviseur avec une carte RAID hardware disposant d'un cache avec batterie, créer les machines avec l'option `cache=none` : ~~~ ~~~ + Et désactiver les barrières si Ext4 est utilisé. Le scheduler deadline semble également donner les meilleures performances tant sur l'hôte que sur les invités. diff --git a/HowtoMunin.md b/HowtoMunin.md index 57b6b820..49ad0ed1 100644 --- a/HowtoMunin.md +++ b/HowtoMunin.md @@ -234,7 +234,7 @@ ln -s /usr/share/munin/plugins/postgres_users /etc/munin/plugins/ ln -s /usr/share/munin/plugins/postgres_xlog /etc/munin/plugins/ ~~~ -Pour les plugins wildcard finissant par `_` ajoutez `ALL` pour monitorer toutes les BDD : +Pour les plugins wildcard finissant par _ ajoutez `ALL` pour monitorer toutes les BDD : ~~~ ln -s /usr/share/munin/plugins/postgres_cache_ /etc/munin/plugins/postgres_cache_ALL