Catégorie : Virtualisation

23 mai 2019 /

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

Activation de samba
systemctl enable smb nmb
systemctl start smb nmb
Virbr0 est le bridge linux créé par libvirt lors de son installation, il faut l'identifier
ip a show dev virbr0
SI on veut modifier l'adresse de virbr0
virsh net-edit default
On crée le partage et le compte utilisateur pour s'y connecter
mkdir /partage_vm
useradd -m -d /partage_vm partage
chown -R partage /partage_vm
chmod g+w /partage_vm
smbpasswd -a partage
On declare le partage dans le ficher /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
On redemarre samba et on ouvre les ports samba
systemctl restart nmb.service smb.service 
firewall-cmd --add-service=samba --permanent --add-source=192.168.122.1/24
Test du serveur depuis l'hyperviseur
smbclient //192.168.122.1/partage_vm -U partage
Si SELinux est actif dans un dossier specifique
semanage fcontext -a -t samba_share_t '/partage_vm(/.*)?'
restorecon -R /partage_vm
Si SELinux est dans /home
setsebool -P samba_enable_home_dirs on
Pour vérifier le contexte de 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 /
Pour afficher le nombre total de vCPU de l'hyperviseur
virsh nodeinfo
Pour afficher le nombre de vCPU que KVM a attribué à ses VMs
virsh list | awk '{print $1}' | grep -oIE "[0-9]*" | while read word; do virsh dominfo ${word} | grep "CPU.s"; done | awk 'BEGIN {a=0;} {a=a+$2;} END {print a;}'

 

 

27 avril 2018 /

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

virsh shutdown 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 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

 

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