Ich versuche, einem aktiven virtuellen KVM-Server eine dateibasierte Festplatte im laufenden Betrieb hinzuzufügen. Ich habe mit dem Befehl eine neue Festplatte erstellt
dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0
und ich hatte gehofft, dass es dem Gast hinzugefügt wird, indem ich dies in der Virsh-Shell tue:
virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
vdd --driver=file --subdriver=raw
Die XML-Definition der Domäne lautet dann:
<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>
Wie Sie sehen, wird der Treibername falsch, er sollte driver name='qemu'
der vorhandene vda
Datenträger sein. Ich habe es mit versucht, --drive=qemu
aber es gibt an, dass es nicht unterstützt wird.
Zweitens "sehe" ich das neu hinzugefügte Laufwerk nur, wenn ich die virtuelle Maschine mit Ubuntu 10.04.4 LTS neu starte. Wie kann ich das Laufwerk "Hotplug" machen? Ich möchte, dass die virtuelle Maschine das neue Laufwerk sofort ohne Neustart "sieht".
quelle
qemu-img
stattdd
- seine Argumente kommen natürlicher und macht das gleiche:qemu-img create test.img 5G
Antworten:
Ich möchte mit einem Hinweis beginnen, den Sie
virsh attach-disk
mit seiner begrenzten Anzahl von Optionen vermeiden sollten . Stattdessen würde ich vorschlagen, das genaue von Ihnen bevorzugte Festplattenformat in einer separaten, temporären XML-Datei oder mithilfe der GUI-Anwendung von virt-manager anzugeben (für letztere überspringen Sie den ersten Schritt).Erstellen Sie eine temporäre Datei mit einer Datenträgerdefinition wie der folgenden.
Passen Sie die Eigenschaften an Ihre Situation an
Tipp: Werfen Sie einen Blick auf Ihre aktuelle XML-Domänenkonfiguration und kopieren Sie einen
<disk>
Abschnitt von dort.Stellen Sie jetzt vor dem Hinzufügen der Festplatte zu einer aktuellen Domäne sicher, dass die erforderlichen Hotplug-Kernelmodule im Gast geladen sind.
Einige Linux-Distributionen wie die jüngsten CentOS / RHEL / Fedora haben dies im Kernel eingebaut. Überprüfen Sie in diesem Fall, ob
CONFIG_HOTPLUG_PCI_ACPI
. Wenny
ja, sind Sie fertig und können diesen Schritt überspringen.Fügen Sie diese beiden Module hinzu,
/etc/modules
wenn Sie möchten, dass sie standardmäßig beim Booten geladen werden.Fügen Sie die Festplatte mit der laufenden VM hinzu
Optional können Sie die
--persistent
Option hinzufügen , dass Libvirt die XML-Domänendefinition "persistent" aktualisiert.Überprüfen Sie abschließend im Gast, ob der Datenträger tatsächlich Hotplug-fähig ist. Der Kernel sollte getriggert werden. Dies kann überprüft werden mit
dmesg
:Im obigen Beispiel habe ich einen Datenträger wie
vdb
bei zwei Partitionen in die Partitionstabelle aufgenommen.Verweise
quelle
--persistent
, um sicherzustellen, dass diese Konfiguration nicht verloren geht, wenn Sie die virtuelle Maschine ausschalten?