Catégorie : Virtualisation

23 mai 2019 /

Création d’un partage entre un hyperviseur KVM et une de ses machines virtuelles

1. Activation de samba

systemctl enable smb nmb
systemctl start smb nmb
2. Identifier le bridge libvirt
ip a show dev virbr0
3. Modifier l’adresse du réseau default (virbr0)
virsh net-edit default
4. Création du répertoire partagé et du compte utilisateur Samba
mkdir /partage_vm
useradd -m -d /partage_vm partage
chown -R partage /partage_vm
chmod g+w /partage_vm
smbpasswd -a partage
5. Configuration dans /etc/samba/smb.conf
[global]
        workgroup = WorkGroup
        netbios name = Host
        server string = serveur %h (Samba %partagevm)
        # On souhaite n’autoriser l’accès que via certaines interfaces réseau
        bind interfaces only = Yes
        interfaces = 127.0.0.1, 192.168.122.1
        log file = /var/log/samba/log.%m
        max log size = 100

[partage_vm]
        path = /partage_vm/
        public = no
        browsable = yes
        valid users = partage
        guest ok = no
        writable = yes
        printable = no
        hide files = /lost+found/
        hide unreadable = yes
        # on force les permissions
        create mask = 777
        force create mode = 777
        security mask = 777
        force security mode = 777
6. Redémarrage Samba et ouverture firewall
systemctl restart nmb.service smb.service 
firewall-cmd --add-service=samba --permanent --add-source=192.168.122.1/24
firewall-cmd --reload
7. Test du partage depuis l’hyperviseur
smbclient //192.168.122.1/partage_vm -U partage
8. Correction SELinux pour un dossier spécifique
semanage fcontext -a -t samba_share_t '/partage_vm(/.*)?'
restorecon -R /partage_vm
9. Autoriser Samba dans /home avec SELinux
setsebool -P samba_enable_home_dirs on
10. Vérification du contexte SELinux
ls -Z /partage_vm
-rw-rw-r--. partage partage unconfined_u:object_r:samba_share_t:s0 truc.txt

Sur la VM, le dossier est accessible à l’adresse \\ip_de_virbr0\partage_vm

 

29 octobre 2018 /
1. Pour afficher le nombre total de vCPU de l’hyperviseur
virsh nodeinfo
2. Pour afficher le nombre total de vCPU attribués à toutes les VMs actives
virsh list | awk 'NR>2 && $1+0>0 {print $1}' | xargs -I{} virsh dominfo {} | grep "CPU(s):" | awk '{sum += $2} END {print sum+0}'

 

27 avril 2018 /

1) Pour commencer nous allons arrêter le domaine que nous souhaitons migrer

virsh shutdown nom_VM

ou si elle ne repond pas

virsh destroy nom_VM

2) Sur l’hyperviseur source, nous allons exporter la configuration du domaine dans un fichier xml:

virsh dumpxml nom_VM > nom_VM.xml

3 ) Toujours sur l’hyperviseur source, on copie le ou les fichiers disques du domaine que l’on souhaite migrer, depuis son emplacement dans /var/lib/libvirt/images vers le même répertoire sur l’hyperviseur de destination.

scp -p /var/lib/libvirt/images/nom_VM.qcow2 hyperviseur_destination:/var/lib/libvirt/images/
Si plusieurs disques ou stockage partagé différent : Adapte le chemin source et destination.
Utilise -r si tu as un répertoire entier, ou rsync pour plus de fiabilité :
rsync -avz --progress /var/lib/libvirt/images/nom_VM.qcow2 hyperviseur_destination:/var/lib/libvirt/images/

Si le chemin du disque est différent sur l’hyperviseur de destination, il faudra le modifier le fichier xml générer dans l’étape précédente pour que cela pointe au bon endroit.

4 ) On copie également notre fichier XML sur l’hyperviseur de destination

scp -p nom_VM.xml hyperviseur_destination:/tmp/

5) On intègre le domaine dans KVM à l’aide de notre fichier xml:

virsh define /tmp/nom_VM.xml

6) Il ne reste plus qu’a démarrer notre domaine

virsh start nom_VM
Vérification finale :
virsh list          # VM running sur la destination
virsh list --all    # VM absente ou "shut off" sur la source (tu peux l’undefine après)
Une fois la migration validée sur l’hyperviseur source:
virsh undefine nom_VM
rm nom_VM.xml /var/lib/libvirt/images/nom_VM.qcow2

 

 

16 mars 2018 /

On commence par lister tous nos domaines:

virsh list --all

ID      Nom            État
----------------------------------------------------
-      Centreon      fermé
-      generic      fermé
-      Ubuntu      fermé
-      win10      fermé

Ici nous voulons faire un snapshot du domaine « Ubuntu », nous allons donc regarder si il y a des snapshot existant pour ce domaine:

virsh snapshot-list --domain Ubuntu

Nom            Creation            Time            État
------------------------------------------------------------

On vérifie si le fichier disque est bien au format qemu/qcow2:

virsh dumpxml Ubuntu | grep -i qemu

<driver name='qemu' type='qcow2' cache='none'/>
<driver name='qemu' type='qcow2'/>

Pour un domaine éteint:

virsh snapshot-create-as --domain Ubuntu --name "Snapshot_test" --description "Snapshot de test"

Domain snapshot Snapshot_test created

Pour un domaine en fonctionnement:

virsh snapshot-create-as --domain Ubuntu --name "Snapshot_test" --description "Snapshot de test" --live

Domain snapshot Snapshot_test created

On peut maintenant voir notre snapshot:

virsh snapshot-list --domain Ubuntu

Nom Creation Time État
------------------------------------------------------------
Snapshot_test 2018-03-14 20:39:53 +0100 shutoff

Pour restaurer le snapshot:

virsh shutdown --domain Ubuntu
virsh snapshot-revert --domain Ubuntu --snapshotname Snapshot_test --running

Pour supprimer le snapshot:

virsh snapshot-delete --domain Ubuntu --snapshotname Snapshot_test

Domain snapshot Snapshot_test deleted

15 décembre 2017 /

Commandes de base

Lister les vms allumées:

virsh list

Lister toutes les vms:

virsh list --all

Editer le xml d’une vm:

virsh edit nom_vm

Affiche le fichier xml sur la sortie standard:

virsh dumpxml

Manipuler les images disques:

qemu-img

Informations sur une image:

qemu-img info fichier_image

Étendre la taille de l’image:

qemu-img resize fichier_image +tailleG

Éteindre une vm par l’acpi:

virsh shutdown nom_vm

Éteindre une vm en coupant l’alim:

virsh destroy nom_vm

Démarrer une vm:

virsh start vm :

Se connecter à la console d’une vm (pour en sortir « Ctrl+Shift+5"):

 

virsh console vm :

Commandes distante:

Virsh --connect qemu+ssh://nom_hyperviseur/system nom_commande

virt-viewer --connect qemu+ssh://nom_hyperviseur/system nom_vm

Bien sur il faut un accès ssh à l’hyperviseur (et le mieux est de mettre sa clé).

Comment étendre un disque (si il n’y a pas LVM …)?

1) Éteindre la vm :

virsh shutdown vm

2) Sauvegarde de l’image disque :

cp -p fichier_image fichier_image.bak

3) Étendre l’image disque :

qemu-img resize fichier_image +tailleG

3) Démarrer la vm :

virsh start vm

4) Arrêter les services et démonter la partition

5) Avec fdisk (!!!) : détruire la partition, la recréer

6) e2fsck -f /dev/partition

7) resize2fs /dev/partition

8) e2fsck -f /dev/partition

9) remonter et démarrer les services