# Libvirt

## Installation des paquets

`dnf install virt-install libvirt-python libvrt-client libvrt-daemon libvirt-daemon-ddriver-qemu qemu-kvm qemu-img`

Démarrer les services `libvrtd` et `virtlogd`

## Création de la machine virtuelle

Exemple pour l'installation de debian 8 depuis les dépots d'images 
```sh
virt-install \
        --name=mail \
        --file=/var/lib/libvirt/images/mail.dsk \
        --file-size=8 \
        --vcpus=2 --ram=2048 \
        --location http://cdn-fastly.deb.debian.org/debian/dists/jessie/main/installer-amd64/ \
        --extra-args "console=ttyS0,115200n8 serial" \
        --os-type linux \
        --os-variant generic \
        --network bridge=virbr0 \
        --graphics none \
        --console pty,target_type=serial
```

## Repertoires partagés

### Configuration de l'host
1. Dans `/etc/libvirt/qemu.conf` trouver et décommenter les lignes
```
#user = "root"
#group = "root"
#dynamic_ownership = 1
```
Modier ensuite les valeurs pour
```
user = "qemu" #Ou l'utilisateur avec lequel qemu est censé être lancé
group = "qemu" #Idem
dynamic_ownership = 0 #Requis pour les configurations qui vont suivre
```
2. Redémarrer libvirt `systemctl restart libvirtd`.

3. Modifier ensuite les paramètre de la VM (`virsh edit [domain]`) et rajouter dans le noeud `<devices>`

```xml
<filesystem type='mount' accessmode='mapped'>
      <source dir='/data/mails'/> <!-- Répertoire a partager (sur l'host) -->
      <target dir='sharedDirMails'/> <!-- label avec lequel le périphérique virtuel va être accessible -->
</filesystem>
```
4. Créer le répertoire `/data/mails` avec qemu:qemu comme propriétaire.
5. Redémarrer la machine virtuelle `virsh reboot [domain]`.

### Configuration du guest
1. Editer le fichier `/etc/modules` pour être sur que les bons modules soient chargés :
```bash
# cat >>/etc/modules <<EOF
loop
virtio
9p
9pnet
9pnet_virtio
EOF
```

2. Charger les modules `systemctl restart kmod`

3. Créer le répertoire `/opt/share/mails`

4. Le répertoire peut maintenant être monté `mount sharedDirMails /opt/share/mail -t 9p -o trans=virtio,version=9p2000.L`

5. Pour monter le répertoire au démarrage de la VM, editer `/etc/fstab` en ajoutant

```fstab
sharedDirMails  /opt/share/mails        9p      trans=virtio,version=9p2000.L 0 2
```

## Commandes utiles

 - `virsh list --all` : liste toutes les vm peut importe l'état
 - `virsh shutdown [domain]` `virsh reboot [domain]` `virsh start [domain]` : arrete / redémarre ou démarre la vm `[domain]`
 - `virsh destroy [domain]` : force l'arret de la machine
 - `virsh undefine [domain]` : oublie la vm `[domain]`
 - `virsh net-dhcp-leases --network default` : récupère la liste des leases dhcp pour le réseau par défaut

## Liens utils

* [https://raymii.org/s/articles/virt-install_introduction_and_copy_paste_distro_install_commands.html](https://raymii.org/s/articles/virt-install_introduction_and_copy_paste_distro_install_commands.html)
* [http://rabexc.org/posts/p9-setup-in-libvirt](http://rabexc.org/posts/p9-setup-in-libvirt)
* [http://www.linux-kvm.org/page/9p_virtio](http://www.linux-kvm.org/page/9p_virtio)