Ich habe ein Verzeichnis mit Daten /var/backups/disk1
, die ich in ein Image einer virtuellen Festplatte konvertieren möchte, das ich dann mit QEMU oder KVM starten kann (das Verzeichnis enthält das Dateisystem für eine virtuelle Maschine, das über rsync kopiert wurde).
Zwar gibt es viele Anweisungen zum Konvertieren einer vollständigen physischen Festplatte in eine virtuelle Festplatte, doch das Packen nur des Inhalts eines einzelnen Verzeichnisses in ein Image einer virtuellen Festplatte ist viel schwieriger als erwartet. Irgendwelche Ideen?
Übrigens weiß ich, dass ich damit qemu-img
ein Blockgerät in eine virtuelle Festplatte konvertieren kann (z. B. qemu-img convert -f /dev/sdc -O qcow2 disk.qcow2
). Wenn ich also nur das Verzeichnis /var/backups/disk1
als Blockgerät erscheinen lassen könnte, sollte ich theoretisch in der Lage sein, mein Ziel mit zu erreichen qemu-img
. Ich habe über kreative Möglichkeiten nachgedacht, das Verzeichnis mit NBD oder einem Loopback-Gerät als Blockgerät verfügbar zu machen, und hatte keinen Erfolg.
qemu-img
undfallocate
sind etwas bequemer alsdd
.Scheint, als ob libguestfs das kann, siehe virt-make-fs (1) und vielleicht virt-copy-in (1) .
quelle
virt-make-fs
aus libguestfsqcow2
Beispiel/server//a/332114/163884 erwähnte es, aber hier ist ein vollständiges Beispiel:
Beachten Sie, wie dies
sudo
nicht erforderlich ist, außer für Installations- und Ubuntu-Fehlerumgehungen.Ich habe dann überprüft, ob QEMU es tatsächlich lesen kann mit:
Ich kann dann das Image in QEMU Linux mounten und die Datei lesen.
virt-make-fs
ext BeispielDieses großartige Tool kann auch rohe ext-Dateisysteme erstellen, z.
die wir direkt auf dem Host überprüfen können mit:
Minimierung der Bildgröße
Ein wirklich gutes Merkmal von
virt-make-fs
ist, dass es automatisch versucht, die Bildgröße zu minimieren, wenn wir dies wünschen:so:
sagt mir, dass das Bild zu 82% gefüllt ist:
Wir können leicht zusätzlichen Platz über dem Minimum hinzufügen mit
--size-=+
:ext4 Journal Overhead
Das Handbuch erwähnt auch, dass:
und es ist interessant, dies zu überprüfen mit:
welches produziert:
so sehen wir, dass die ext4 deutlich größer herauskam.
libguestfs Ubuntu-Fehler
Nun zum Nachteil: Es scheint derzeit keinen Ubuntu-Betreuer zu geben, und die Bibliothek ist unter Ubuntu im Allgemeinen fehlerhaft.
sudo
ist theoretisch nicht erforderlich, aber aufgrund eines Ubuntu-Verpackungsfehlers erforderlich, es sei denn, wir führen eine Problemumgehung durch: /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as- virt-make-fs-without-sudo / 1046829 # 1046829Danach schlägt 18.04 (aber nicht 16.04) ohne unsere Problemumgehungen fehl mit: https://bugzilla.redhat.com/show_bug.cgi?id=1591617
aufgrund eines Fehlers, der bereits stromaufwärts behoben wurde.
Getestet in Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3.
quelle
Verwenden der Michaels-Strategie in Fedora 23:
Dadurch wird ein ext2-Dateisystem erstellt, das Sie in ein Verzeichnis einbinden können:
Jetzt enthält / mnt alle Ihre Dateien
quelle
file.fs
es sich um eine Datei handelt, sollte dermount
Befehl nicht lauten :mount -o loop file.fs /mnt
?Wie wäre es mit dem Zugriff auf das Verzeichnis als Netzwerkfreigabe von einer VM aus, die auch auf Ihrem Image der virtuellen Zielfestplatte bereitgestellt ist? Sie führen dann einfach eine einfache Kopie von der Freigabe auf das bereitgestellte Disk-Image durch.
quelle
Ich bevorzuge (und verwende) die Antwort von Ciro Santilli, aber hier ist etwas, das mit einer
guestfish
Shell funktioniert :quelle