Durchgereichte USB Geräte in Windows auswerfen

Softwald

New Member
Apr 24, 2024
14
2
3
Hallo, ich beschäftige mich seit kurzem mit Proxmox und bin sehr zufrieden damit.

Heute stellte sich mir die Frage ob es eine möglichkeit gibt eine externe HDD, die an eine Windows VM durchgereicht (Port) wurde, in der VM auszuwerfen und diese dann am Host abgehängt werden kann.
Grund meiner Überlegung ist, ich möchte eine Sicherung der Windows-VM auf externe Festplatten einrichten, bei der die Festplatte wöchentlich gewechselt werden soll, von jemandem der mit Proxmox/Linux nicht vertraut ist.

Gibt es eine Möglichkeit ein USB-Gerät auszuwerfen ohne die CLI oder Proxmox GUI zu verwenden?
 
Möchtest du die Sicherung aus Windows heraus machen oder vom Proxmox Server aus?

Wenn vom Proxmox VE Server aus, dann könntest du ein Hook Script verwenden, das die USB Festplatte erst zu Beginn des Backups mounted und nach vollendetem Backup wieder entmounted. Damit könnte die USB Platte jederzeit ausserhalb der Backup Zeiten entfernt werden.

Wie ein solches Hook-Script funktioniert findest du unter https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_hook_scripts.
 
Die Idee mit dem Hook-Script gefällt mir, muss mich da aber erstmal ordentlich reinlesen.

Geplant wäre eine Sicherung aus Windows heraus und das Auswerfen der Festplatte erfolgt durch einen EjectDrive-Befehl der Sicherungssoftware. Fällt dir eine Möglichkeit ein, dass von Windows ausgeworfene Geräte auch am Host ausgeworfen/getrennt werden? Oder komm ich da nicht weiter und sollte ich mich gleich mit dem Hook-Scipt beschäftigen.
 
Ich würde den Ansatz mit dem Hook-Script verfolgen.

Unmöglich ist nichts, aber VMs und Hypervisoren sollten sicherheitstechnisch voneinander getrennt sein und ein Zugriff aus der VM auf den Hypervisor ist normalerweise nicht wünschenswert.

Umgekehrt, von Hypervisor zu VM lässt sich sowas mit dem QEMU Guest Agent umsetzen. Du könntest also theoretisch aus dem Hook-Script heraus mit qm guest agent exec auch Befehle in der Windows VM auslösen, damit diese ein Backup erzeugt, mir wäre das aber zu kompliziert, dafür dass es zuverlässig laufen soll.
 
Ich hab mir nun aus dem Internet ein bisschen informationen zusammen gekratzt, da die "Dokumentation" von Hook-Script ja etwas dürftig ist und das Beispiel-Script nicht so einfach zu finden war.

Also um die Festplatte zu mounten, schreibe ich im Script:
if ($phase eq 'job-start') {
# Mount USB-Device
system ("mount /dev/scd /mnt/pve/usb") == 0 ||
die "USB-Device mount failed";
}

Und zum unmounten:
# Externe Festplatte bei Job-End unmounten
if ($phase eq 'job-end') {
#unmount USB-Device
system ("unmount /mnt/pve/usb") == 0 ||
die "unmount failed";
}

Wäre das so korrekt oder müssen da die Backup-Phasen statt den Job-Phasen nehmen?
Oder bin ich am falschen Weg?
 
Sieht doch schon mal gut aus.

Ich würde vermutlich eher job-init und job-end verwenden. job-abort sollte ebenfalls nicht ignoriert werden, falls der backup job mal nicht aufgrund eines fehlers zu ende läuft.
 
Okay danke für den Tipp!
job-init wird in dem vzdump-hook-script.pl das ich gefunden habe nicht aufgeführt und hab mir ein neueres gesucht: proxmox-vzdump-hook-script.pl
Gibt es da auch ein Offizielles von Proxmox? Zu dem im pve-admin-guide erwähntem "documentation directory" habe ich nämlich nichts gefunden.
 
Ja, liegt auf jedem Proxmox Server unter /usr/share/doc/pve-manager/examples/vzdump-hook-script.pl in der zum Proxmox Server passenden version vor. Da kannst du schauen welche Events es gibt.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!