J'essaie d'ajouter à chaud un disque basé sur des fichiers à un serveur virtuel KVM en cours d'exécution. J'ai créé un nouveau disque à partir de zéro en utilisant la commande
dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0
et j'espérais le faire ajouter à chaud à l'invité en faisant cela dans le shell virsh:
virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
vdd --driver=file --subdriver=raw
La définition XML du domaine devient alors:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/home/cloud/vps_59/root.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
<driver name='file' type='raw'/>
<source file='/home/cloud/vps_59/test.img'/>
<target dev='vdd' bus='virtio'/>
</disk>
Comme vous pouvez le voir, le nom du pilote devient erroné, il doit s'agir driver name='qemu'
du vda
disque existant . J'ai essayé avec --drive=qemu
mais il indique qu'il n'est pas pris en charge.
Deuxièmement, je ne "vois" le lecteur nouvellement ajouté qu'après avoir redémarré la machine virtuelle exécutant Ubuntu 10.04.4 LTS. Comment puis-je rendre le lecteur "hotplug"? Je veux que la machine virtuelle "voit" le nouveau disque immédiatement sans redémarrage.
la source
qemu-img
place dedd
- ses arguments sont plus naturels et font la même chose:qemu-img create test.img 5G
Réponses:
J'aimerais commencer par une note que vous devriez éviter d'utiliser
virsh attach-disk
avec son nombre limité d'options. Au lieu de cela, je suggère de spécifier le format de disque exact que vous préférez dans un fichier XML temporaire séparé ou en utilisant l'application GUI virt-manager (pour ce dernier, ignorez la première étape).Créez un fichier temporaire avec une définition de disque comme celle-ci ci-dessous.
ajustez les propriétés en fonction de votre situation
Conseil: jetez un œil à votre configuration de domaine XML actuelle et copiez une
<disk>
section à partir de là.Maintenant, avant d'ajouter le disque à un domaine actuel, assurez-vous que les modules de noyau hotplug requis sont chargés dans l'invité.
Certaines distributions Linux comme les récents CentOS / RHEL / Fedora ont ce intégré dans le noyau. Dans ce cas, vérifiez
CONFIG_HOTPLUG_PCI_ACPI
. Si c'est le casy
, vous êtes prêt et vous pouvez ignorer cette étape.Pensez à ajouter ces deux modules à
/etc/modules
si vous souhaitez qu'ils soient chargés au démarrage par défaut.Ajoutez le disque à la machine virtuelle en cours d'exécution à l'aide
Facultativement, ajoutez l'
--persistent
option pour permettre à Libvirt de mettre à jour la définition XML de domaine «persistante».Enfin, vérifiez à l'intérieur de l'invité si le disque a bien été inséré à chaud. Le noyau doit être déclenché, comme cela peut être vérifié avec
dmesg
:Dans l'exemple ci-dessus, j'ai ajouté un disque comme
vdb
avec deux partitions dans la table de partition.Les références
la source
--persistent
pour vous assurer que cette configuration ne se perd pas lorsque vous éteignez la machine virtuelle?