Ce guide explique ce que sont les pools de stockage et les volumes dans Libvirt et comment modifier l'emplacement du pool de stockage par défaut de KVM libvirt à l'aide de Virsh programme, Virt-manager et Cabinet sous Linux.
Pools et volumes de stockage dans Libvirt
Libvirt fournit la gestion du stockage sur un système hôte KVM via des pools et des volumes de stockage.
Un pool de stockage est une quantité de stockage allouée sur l'hôte KVM pour être utilisée par les machines virtuelles. Un pool de stockage est divisé en volumes de stockage et attribué aux machines virtuelles en tant que périphériques de bloc.
En d'autres termes, un pool de stockage est une ressource de stockage sur le système hôte KVM qui peut être utilisée pour stocker des volumes. Et le volume de stockage est un périphérique de stockage qui peut être attribué à une machine virtuelle.
Un volume de stockage peut être un périphérique bloc, par exemple une partition, un volume logique ou un fichier. Les disques durs virtuels, les périphériques cd/dvd/disquette et les images ISO attachés aux machines invitées sont des exemples de volumes de stockage.
Vous ne pouvez pas avoir un volume de stockage sans pool de stockage. Tout d'abord, vous devez créer un pool de stockage, puis créer les volumes de stockage à l'intérieur du pool.
Par défaut, toutes les machines virtuelles créées avec libvirt sont stockées sous /var/lib/libvirt/images/
emplacement. Il s'agit du pool de stockage par défaut pour les images de VM Libvirt.
Types de pools de stockage
Un pool de stockage peut être de l'un des types suivants :
- Pool de répertoires :utilisez un répertoire comme pool pour héberger des fichiers image. Les fichiers peuvent être l'un des types de format de volume valides tels que raw, qcow, qcow2, dmg, vmdk, vpc ou images ISO.
- Pool de système de fichiers :utilisez un périphérique bloc (par exemple, une partition ou un groupe LVM) comme pool au lieu d'un répertoire using sur un système de fichiers monté existant.
- Pool de système de fichiers réseau :utilisez un système de fichiers réseau (par exemple,
cifs
,glusterfs
,nfs
etc.) en tant que pool pour stocker des volumes de stockage. Au lieu d'un répertoire ou d'un périphérique bloc, il nécessite un hôte réseau et le chemin d'un répertoire partagé. - Pool de volumes logiques :utilisez un groupe de volumes LVM comme pool pour stocker les volumes.
- Pool de disques :utilisez un disque physique comme pool. Les volumes peuvent être créés en ajoutant des partitions au disque.
- Pool iSCSI :utilisez une cible iSCSI pour stocker les volumes. Tous les volumes doivent être pré-alloués sur le serveur iSCSI.
- Pool direct iSCSI :il s'agit d'une variante du pool iSCSI. Au lieu d'utiliser iscsiadm, il utilise
libiscsi
. Il nécessite un hôte, un chemin qui est l'IQN cible et un IQN initiateur. - Pool SCSI :utilisez un adaptateur de bus hôte SCSI presque de la même manière qu'une cible iSCSI.
- Pool multivoie – À l'heure actuelle, multivoie n'est pas pris en charge.
- Pool RBD - Ce pilote de stockage fournit un pool qui contient toutes les images RBD dans un pool RADOS. RBD (RADOS Block Device) fait partie du projet de stockage distribué Ceph.
- Pool Sheepdog :utilisez le cluster Sheepdog comme pool pour stocker des volumes.
- Pool Gluster :utilisez le système de fichiers distribué Gluster en tant que pool.
- Pool ZFS :utilise le système de fichiers ZFS en tant que pool.
- Pool Vstorage :utilisez le stockage défini par logiciel distribué de Virtuozzo en tant que pool.
Pour les besoins de ce guide, nous utiliserons Directory pool
.
1. Modifier l'emplacement du pool de stockage par défaut KVM Libvirt
Comme indiqué précédemment, toutes les images KVM/Libvirt sont stockées dans /var/lib/libvirt/images/
emplacement par défaut. Étant donné que cet emplacement réside dans le rootfs
partition, vous voudrez peut-être la déplacer vers un autre emplacement, par exemple $HOME
répertoire.
Nous pouvons changer l'emplacement par défaut des images de machine virtuelle KVM Libvirt en utilisant virsh
programme en ligne de commande et son interface graphique appelée Virt-manager , et aussi Cockpit console Web.
Tout d'abord, nous verrons comment changer le chemin du pool de stockage par défaut de Libvirt en utilisant virsh
programme.
1.1. Modifier l'emplacement du pool de stockage par défaut KVM Libvirt à l'aide du programme virsh
1.1.1. Connectez-vous à votre système hôte KVM et éteignez tous les invités en cours d'exécution.
Pour trouver la liste des VM en cours d'exécution, faites simplement :
$ virsh list --all
Arrêt si une ou plusieurs VM sont en cours d'exécution.
$ virsh shutdown
1.1.2. Répertoriez tous les pools de stockage configurés sur votre machine hôte KVM :
$ virsh pool-list
Exemple de résultat :
Nom État Démarrage automatique par défaut actif non
Comme vous pouvez le voir, je n'ai qu'un seul pool de stockage, qui est le default
. Il est créé automatiquement lorsque nous installons kvm/libvirt
.
1.1.3. Voyons les détails du pool de stockage par défaut à l'aide de la commande :
$ virsh pool-info par défaut
Exemple de résultat :
Nom :UUID par défaut :76f47a3c-7656-4c34-9ab5-c87e5136d532 État :en cours d'exécution Persistant :oui Démarrage automatique :non Capacité :369,22 Gio Allocation :65,60 Gio Disponible :303,62 Gio
La sortie ci-dessus répertorie les détails tels que le nom du pool de stockage, l'UUID, l'état, la persistance, le démarrage automatique, la capacité, l'espace alloué du pool de stockage et l'espace disponible restant.
Puisque nous allons changer le chemin du pool de stockage, nous devons également le trouver.
1.1.4. Pour afficher le chemin du pool de stockage par défaut, nous utilisons grep commande avec virsh
comme ci-dessous :
$ virsh pool-dumpxml par défaut | grep -i chemin
Exemple de résultat :
/var/lib/libvirt/images
Comme vous le voyez dans la sortie ci-dessus, le pool de stockage par défaut est /var/lib/libvirt/images/
. Nous allons le modifier dans les étapes suivantes.
1.1.5. Répertorier toutes les images de VM existantes stockées dans le pool de stockage par défaut à l'aide de virsh
comme ci-dessous :
$ virsh vol-list default | grep "/var/lib/libvirt/images/"
Exemple de résultat :
archlinux.img /var/lib/libvirt/images/archlinux.img
J'ai une image de machine virtuelle Arch Linux dans le pool de stockage par défaut.
1.1.6. Arrêtez et annulez la définition du pool de stockage par défaut avec la commande :
$ virsh pool-destroy par défaut
$ virsh pool-undefine par défaut
1.1.7. Modifiez le pool de stockage par défaut à l'aide de la commande :
$ virsh pool-edit par défaut
Cela ouvrira le fichier XML de la VM dans votre éditeur par défaut.
Trouvez la ligne qui lit "<path>/var/lib/libvirt/images</path>"
sous la target
directive et remplacez-la par un nouveau chemin de votre choix.
Dans mon cas, j'ai changé le <path>
élément de /var/lib/libvirt/images
vers /home/sk/.local/share/libvirt/images
.
default 76f47a3c-7656-4c34-9ab5-c87e5136d532 396452147200 71178977280 325273169920 /home/sk/.local/share/ libvirt/images 0755 1000 1000
Assurez-vous simplement que le nouveau chemin existe. S'il existe, créez-le simplement et attribuez une autorisation suffisante au nouveau répertoire de chemin. Enregistrez le fichier et fermez-le.
CONSEIL :
S'il n'existe aucun pool de stockage par défaut pour une raison quelconque, vous pouvez en créer un comme ci-dessous :
$ virsh pool-define-as --name default --type dir --target /home/sk/.local/share/libvirt/images/
Remplacez le chemin de stockage par le vôtre.
1.1.8. Enfin, démarrez le pool de stockage par défaut :
$ virsh pool-start par défaut
1.1.9. Configurez le pool de stockage pour qu'il démarre automatiquement au démarrage du système :
$ virsh pool-démarrage automatique par défaut
1.1.10. Vérifiez si le chemin du pool de stockage libvirt a été modifié ou non avec la commande :
$ virsh pool-dumpxml par défaut | grep -i chemin
Vous devriez maintenant voir le nouveau chemin.
/home/sk/.local/share/libvirt/images
Désormais, les images virtuelles seront enregistrées dans le nouveau pool de stockage.
1.1.11. Vérifiez l'état du pool de stockage :
$ virsh pool-list Nom État Démarrage automatique------------------------------- par défaut actif oui
1.1.12. Redémarrez le service libvirtd :
$ sudo systemctl restart libvirtd
1.1.13. Nous devons faire une dernière chose. Copiez toutes les images de VM de l'ancien chemin de stockage vers le nouveau :
$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
Tout est fait !
Voici comment nous changeons l'emplacement du pool de stockage par défaut de KVM Libivrt en un nouveau à partir de la ligne de commande en utilisant Virsh
programme. Comme vous pouvez le voir, changer le chemin de stockage par défaut pour les invités KVM/Libvirt est assez simple !
Voyons maintenant comment changer le chemin du pool de stockage par défaut de Libvirt à l'aide d'une application graphique nommée Virt-manager
.
1.2. Modifier l'emplacement du pool de stockage par défaut de KVM Libvirt à l'aide de Virt-manager
Virt-manager , abréviation de Virtual Machine Manager, est une application d'interface utilisateur graphique utilisée pour gérer les machines virtuelles via libvirt
. En d'autres termes, Virt-manager est juste une interface graphique pour libvirt
.
1.2.1. Ouvrez l'application Virt-manager. Faites un clic droit sur QEMU/KVM et cliquez sur Détails option.
Vous pouvez également cliquer sur Modifier-> Détails de connexion depuis l'interface Virt-manager.
1.2.2. Sous le Stockage , vous verrez l'emplacement du pool de stockage par défaut.
1.2.3. Cliquez sur Arrêter le pool puis Supprimer le pool options dans le volet inférieur gauche.
Cela désactivera et supprimera le pool par défaut.
1.2.4. Cliquez sur le plus (+) connectez-vous dans le volet inférieur gauche pour créer un nouveau pool de stockage à utiliser par les machines virtuelles.
Saisissez le nom du pool de stockage (par exemple, default
dans mon cas). Choisissez le type de piscine. Dans notre cas, j'ai sélectionné Répertoire du système de fichiers . Spécifiez l'emplacement cible et cliquez sur Terminer.
1.2.5. Maintenant, le nouveau stockage est actif. Vérifiez le démarrage automatique pour démarrer automatiquement le nouveau pool de stockage au démarrage du système.
1.2.6. Déplacez toutes les images VM de l'ancien répertoire de stockage vers le nouveau.
$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
1.2.7. Enfin, redémarrez le service libvirtd :
$ sudo systemctl restart libvirtd
1.3. Modifier l'emplacement du pool de stockage par défaut de KVM Libvirt à l'aide de Cockpit
Poste de pilotage est un outil d'administration de serveur Web gratuit pour surveiller et administrer les serveurs Linux via un navigateur Web.
1.3.1 Ouvrez votre navigateur Web et connectez-vous à la console Cockpit en accédant à http://localhost:9090 ou http://adresse-IP:9090 depuis la barre d'adresse.
1.3.2. Cliquez sur les machines virtuelles onglet dans le volet de gauche. Sur le côté droit, cliquez sur Groupe de stockage option.
1.3.3. Sous la section Pools de stockage, vous verrez le pool de stockage par défaut. Cliquez sur la petite flèche pour développer l'onglet des pools de stockage et cliquez sur Désactiver et Supprimer boutons.
Remarque : Comme j'ai déjà changé l'emplacement de stockage par défaut, il affiche le nouveau chemin. Dans votre système, il affichera l'ancien chemin par défaut, c'est-à-dire /var/lib/libvirt/images
.
1.3.4. Saisissez le nom, le type et le chemin cible du pool de stockage, puis cliquez sur Créer . Assurez-vous que la case Démarrage est cochée.
1.3.5. Cliquez sur Activer bouton pour démarrer la piscine.
1.3.6. Déplacez toutes les images VM de l'ancien répertoire de stockage vers le nouveau.
$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
1.3.7. Redémarrez le service libvirtd :
$ sudo systemctl restart libvirtd
Dépannage
Après avoir modifié le chemin du pool de stockage, vous rencontrerez probablement l'erreur suivante lors du démarrage d'une VM :
Échec du démarrage du domaine 'Archlinux_default' erreur :Impossible d'accéder au fichier de stockage '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107) :autorisation refusée.C'est parce que le
qemu
l'utilisateur n'a peut-être pas l'autorisation de lecture sur le répertoire de stockage. Pour résoudre ce problème, consultez le lien suivant :
- [Résolu] Impossible d'accéder au fichier de stockage, erreur d'autorisation refusée dans KVM Libvirt
Conclusion
Dans ce guide, nous avons abordé un sujet important sur KVM/Libvirt :Pools de stockage . Nous avons appris ce que sont les pools de stockage et les volumes, puis comment modifier l'emplacement du pool de stockage par défaut de kvm libvirt à l'aide de trois programmes, à savoir VIrsh, Virt-manager et Cockpit. J'espère que vous trouverez cela utile.