EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

guestfs-faq – Online in der Cloud

Führen Sie „guestfs-faq“ im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl „guestfs-faq“, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


guestfs-faq - Häufig gestellte Fragen (FAQ) zu libguestfs

ABOUT LIBGUESTFS


Was is libguestfs?
libguestfs ist eine Möglichkeit, Disk-Images zu erstellen, darauf zuzugreifen und sie zu ändern. Sie können in die Festplatte schauen
Bilder bearbeiten, die darin enthaltenen Dateien ändern, sie von Grund auf erstellen, ihre Größe ändern und vieles mehr
mehr. Dies ist besonders nützlich für Skripte und Programme sowie über die Befehlszeile.

libguestfs ist eine C-Bibliothek (daher „lib-“) und eine Reihe von Tools, die auf dieser Bibliothek basieren
Bindungen für viele gängige Programmiersprachen.

Weitere Informationen zu den Möglichkeiten von libguestfs finden Sie in der Einführung auf der Homepage
(http://libguestfs.org).

Was sind virt Werkzeuge?
Virt-Tools (Website: http://virt-tools.org) sind eine ganze Reihe von Virtualisierungsverwaltungen
Tools für Systemadministratoren. Einige davon stammen von libguestfs, andere von
libvirt und viele andere aus anderen Open-Source-Projekten. Virt Tools ist also eine Obermenge von
libguestfs. Allerdings enthält libguestfs viele wichtige Tools. Sehen
http://libguestfs.org Für eine vollständige Liste.

Beeinflusst die libguestfs technische { libvirt / KVM / Rot Hut / Fedora }?
Nein!

libvirt ist keine Voraussetzung für libguestfs.

libguestfs funktioniert mit jedem Festplatten-Image, einschließlich solchen, die in VMware, KVM, qemu erstellt wurden.
VirtualBox, Xen und viele andere Hypervisoren sowie solche, die Sie von Grund auf erstellt haben.

Red Hat sponsert (d. h. bezahlt) die Entwicklung von libguestfs und einer großen Anzahl anderer Open
Quellprojekte. Aber Sie können libguestfs und die virt-Tools auf vielen verschiedenen Linux-Geräten ausführen
Distributionen und Mac OS X. Wir geben unser Bestes, um alle Linux-Distributionen erstklassig zu unterstützen
Bürger. Einige Virt-Tools wurden auf Windows portiert.

Ultraschall die libguestfs vergleichen zu Sonstiges Werkzeuge?
vs kpartx
Libguestfs verfolgt einen anderen Ansatz als kpartx. kpartx benötigt Root und Mounts
Dateisysteme auf dem Host-Kernel (die unsicher sein können – siehe GuestFS-Sicherheit(1)).
Libguestfs isoliert Ihren Host-Kernel von Gästen, ist flexibler, skriptfähiger,
unterstützt LVM, erfordert kein Root, ist von anderen Prozessen isoliert und bereinigt
nach sich selbst. Libguestfs bietet mehr als nur Dateizugriff, denn Sie können es dazu nutzen
Erstellen Sie Bilder von Grund auf.

vs vdfuse
vdfuse ist wie kpartx, jedoch für VirtualBox-Images. Siehe den kpartx-Vergleich oben.
Sie können libguestfs für die von vdfuse bereitgestellten Partitionsdateien verwenden, dies ist jedoch nicht der Fall
notwendig, da libguestfs direkt auf VirtualBox-Images zugreifen kann.

vs qemu-nbd
NBD (Network Block Device) ist ein Protokoll zum Exportieren von Blockgeräten über das Netzwerk.
qemu-nbd ist ein NBD-Server, der jedes von qemu unterstützte Festplattenformat verarbeiten kann (z. B. Raw,
qcow2). Sie können libguestfs und qemu-nbd oder nbdkit zusammen verwenden, um auf den Block zuzugreifen
Geräte über das Netzwerk, zum Beispiel: „guestfish -a nbd://remote“

vs Montage Dateisysteme in Gastgeber
Das Mounten von Gastdateisystemen auf dem Host ist unsicher und sollte vollständig vermieden werden
für unvertraute Gäste. Verwenden Sie libguestfs, um eine Schutzebene davor bereitzustellen
Dateisystem-Exploits. Siehe auch Gastberg(1).

vs geteilt
Libguestfs unterstützt LVM. Libguestfs verwendet Parted und stellt die meisten Parted-Funktionen bereit
über die libguestfs-API.

BEKOMMEN HILFE UND REPORTING Fehler


Ultraschall do I kennt was Version Ich bin die mit?
Die einfachste Methode ist:

Guestfish --version

Die Entwicklung von Libguestfs erfolgt entlang eines instabilen Zweigs und wir erstellen regelmäßig einen
Stable-Zweig, in den wir Stable-Patches zurückportieren. Um mehr zu erfahren, lesen Sie „LIBGUESTFS
VERSIONSNUMMERN" in Gastfs(3).

Ultraschall kann I bekommen HILFE?
Was Postversand Listen or Chat Zimmer sind verfügbar?
Wenn Sie Red Hat-Kunde sind und Red Hat Enterprise Linux verwenden, wenden Sie sich bitte an
Red Hat-Support: http://redhat.com/support

Es gibt eine Mailingliste, hauptsächlich für die Entwicklung, aber auch Benutzer können gerne nachfragen
Fragen zu libguestfs und den Virt-Tools:
https://www.redhat.com/mailman/listinfo/libguestfs

Sie können auch über den IRC-Kanal „#libguestfs“ auf FreeNode mit uns sprechen. Das sind wir nicht immer
Bleiben Sie also bitte im Kanal, nachdem Sie Ihre Frage gestellt haben, dann wird sich jemand bei Ihnen melden
für dich.

Für andere virtuelle Tools (die nicht mit libguestfs geliefert werden) gibt es allgemeine virtuelle Tools
Mailingliste: https://www.redhat.com/mailman/listinfo/virt-tools-list

Ultraschall do I berichten Käfer?
Bitte verwenden Sie den folgenden Link, um einen Fehler in Bugzilla einzutragen:

https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

Geben Sie so viele Details wie möglich an und geben Sie eine Möglichkeit an, das Problem zu reproduzieren.

Fügen Sie die vollständige Ausgabe von hinzu libguestfs-test-tool(1).

COMMON PROBLEME


Siehe auch „LIBGUESTFS GOTCHAS“ in Gastfs(3) für einige „Fallstricke“ bei der Verwendung von libguestfs
API.

"Könnte nicht zuordnen dynamisch Übersetzer Puffer"
Bei diesem obskuren Fehler handelt es sich tatsächlich um einen SELinux-Fehler. Sie müssen Folgendes aktivieren
SELinux boolescher Wert:

setsebool -P virt_use_execmem=on

Weitere Informationen finden Sie unter https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"Kind Prozessdefinierung gestorben unerwartet"
[Diese Fehlermeldung wurde in libguestfs 1.21.18 in etwas Erklärenderes geändert.]

Dieser Fehler weist darauf hin, dass qemu fehlgeschlagen ist oder der Host-Kernel nicht gestartet werden konnte. Um weiter zu kommen
Um Informationen zum Fehler zu erhalten, müssen Sie Folgendes ausführen:

libguestfs-test-tool

Wenn Sie den Fehler nach der Verwendung immer noch nicht verstehen, kontaktieren Sie uns (siehe oben).
Sektion).

libguestfs: Fehler: kann keine gefunden jedem geeignet libguestfs supermin, fixiert or im alten Stil Gerät
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: Elternteil Verzeichnis nicht gefunden
Supermin-Helfer: ext2: Elternteil Verzeichnis nicht gefunden
[Dieses Problem ist in libguestfs ≥ 1.26 dauerhaft behoben.]

Wenn einer dieser Fehler unter Debian/Ubuntu auftritt, müssen Sie den folgenden Befehl ausführen:

sudo update-guestfs-appliance

"Erlaubnis bestritten" wann Laufen libguestfs as Wurzel
Beim Öffnen eines Disk-Images wird die Fehlermeldung „Berechtigung verweigert“ angezeigt, obwohl Sie es ausführen
libguestfs als Root.

Dies wird durch libvirt verursacht und tritt daher nur bei Verwendung des libvirt-Backends auf. Beim Laufen
Als Root beschließt libvirt, die qemu-Appliance als Benutzer „qemu.qemu“ auszuführen. Bedauerlicherweise
Dies bedeutet normalerweise, dass qemu keine Disk-Images öffnen kann, insbesondere wenn dies der Fall ist
Eigentum von Root oder in Verzeichnissen vorhanden sind, die Root-Zugriff erfordern.

Es gibt einen offenen Fehler in libvirt, um dieses Problem zu beheben:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Sie können dies mit einer der folgenden Methoden umgehen:

· Wechseln Sie zum direkten Backend:

export LIBGUESTFS_BACKEND=direkt

· Führen Sie libguestfs nicht als Root aus.

· Chmod das Disk-Image und alle übergeordneten Verzeichnisse, damit der qemu-Benutzer darauf zugreifen kann.

· (Böse) Bearbeitung /etc/libvirt/qemu.conf und ändern Sie die Einstellung „Benutzer“.

Ausführung: /drin: Genehmigung verweigert
Hinweis: Wenn dieser Fehler auftritt, wenn Sie ein Distributionspaket von libguestfs verwenden (z. B. from
Fedora, Debian usw.) melden Sie dann einen Fehler gegen die Distribution. Dies ist kein Fehler
Normale Benutzer sollten immer prüfen, ob das Distributionspaket korrekt vorbereitet wurde.

Dieser Fehler tritt während der Supermin-Boot-Phase beim Starten der Appliance auf:

Supermin: Neues Root einbinden / Root
supermin: chroot
execl: /init: Berechtigung verweigert
supermin: debug: Verzeichnis auflisten /
[...gefolgt von einer Menge Debug-Ausgabe...]

Dies ist ein komplizierter Fehler im Zusammenhang mit Supermin(1) Geräte. Das Gerät ist aufgebaut
durch Kopieren von Dateien wie / bin / bash und viele Bibliotheken vom Host. Die Datei „hostfiles“
listet die Dateien auf, die vom Host in die Appliance kopiert werden sollen. Wenn einige Dateien
nicht auf dem Host vorhanden sind, werden sie übersehen, wenn diese Dateien jedoch in der richtigen Reihenfolge benötigt werden
(z. B.) laufen / bin / bash Dann wird der obige Fehler angezeigt.

Um das Problem zu diagnostizieren, müssen die benötigten Bibliotheken untersucht werden / bin / bash, dh:

ldd / bin / bash

Vergleichen Sie dies mit „Hostdateien“, mit den Dateien, die tatsächlich im Host-Dateisystem verfügbar sind.
und mit der in der Fehlermeldung gedruckten Debug-Ausgabe. Sobald Sie herausgefunden haben, welche Datei
fehlt, installieren Sie die Datei mit Ihrem Paketmanager und versuchen Sie es erneut.

Sie sollten auch überprüfen, ob Dateien wie /drin und / bin / bash (im Gerät) sind
ausführbar. Die Debug-Ausgabe zeigt Dateimodi.

WIRD HERUNTERGELADEN, INSTALLIEREN, KOMPILIEREN LIBGUESTFS


Wo kann I bekommen neueste Binärdateien für ...?
Fedora ≥ 11
Anwendung:

Lecker installiere '*guestf*'

Die neuesten Builds finden Sie unter:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise Linux
RHEL 5
Die im offiziellen RHEL 5 ausgelieferte Version ist sehr alt und sollte nur verwendet werden
in Verbindung mit virt-v2v. Verwenden Sie das aktuelle Paket libguestfs 1.20 in EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Es ist Teil der Standardinstallation. Auf RHEL 6 und 7 (nur) müssen Sie installieren
„libguestfs-winsupport“, um Windows-Gastunterstützung zu erhalten.

Debian und Ubuntu
Für libguestfs < 1.26 müssen Sie nach der Installation von libguestfs Folgendes tun:

sudo update-guestfs-appliance

(Dieses Skript wurde auf Debian/Ubuntu mit libguestfs ≥ 1.26 entfernt und stattdessen das
Das Gerät wird nach Bedarf gebaut.)

Nur auf Ubuntu:

sudo chmod 0644 /boot/vmlinuz*

Möglicherweise müssen Sie sich selbst der Gruppe „kvm“ hinzufügen:

sudo usermod -a -G kvm yourlogin

Debian-Squeeze (6)
Hilko Bengen hat libguestfs in Squeeze-Backports gebaut:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy und höher (7+)
Hilko Bengen unterstützt libguestfs unter Debian. Offizielle Debian-Pakete sind
verfügbar: http://packages.debian.org/search?keywords=libguestfs

Ubuntu
Wir haben keinen Vollzeit-Ubuntu-Betreuer und die von uns bereitgestellten Pakete
Canonical (die außerhalb unserer Kontrolle liegen) ist manchmal kaputt.

Canonical hat beschlossen, die Berechtigungen für den Kernel so zu ändern, dass dies nicht der Fall ist
lesbar, außer für Root. Das ist völlig dumm, aber sie werden es nicht ändern
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Also jeder Benutzer
sollte dies tun:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs funktioniert in dieser Ubuntu-Version, Sie müssen jedoch febootstrap aktualisieren
und Seabios auf die neuesten Versionen.

Sie benötigen febootstrap ≥ 3.14-2 von:
http://packages.ubuntu.com/precise/febootstrap

Erstellen Sie nach der Installation oder Aktualisierung von febootstrap die Appliance neu:

sudo update-guestfs-appliance

Sie benötigen Seabios ≥ 0.6.2-0ubuntu2.1 oder ≥ 0.6.2-0ubuntu3 von:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Außerdem müssen Sie Folgendes tun (siehe oben):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs wurde 2012-07 von Andreis Vinogradovs (libguestfs) zu Gentoo hinzugefügt
Maxim Koltsov (hauptsächlich Hivex). Tun:

emerge libguestfs

SCHWEIZ
Libguestfs wurde 2012 von Olaf Hering zu SuSE hinzugefügt.

ArchLinux
Libguestfs wurde 2010 zum AUR hinzugefügt.

Andere Linux-Distribution
Aus dem Quellcode kompilieren (nächster Abschnitt).

Andere Nicht-Linux-Distribution
Sie müssen aus dem Quellcode kompilieren und ihn portieren.

Ultraschall kann I kompilieren und installieren libguestfs für Quelle?
Sie können libguestfs aus Git oder einem Quell-Tarball kompilieren. Lesen Sie vorher die README-Datei
beginnend.

Git: https://github.com/libguestfs/libguestfs Quell-Tarballs:
http://libguestfs.org/download

Führen Sie nicht „make install“ aus! Verwenden Sie das „./Lauf"-Skript stattdessen (siehe README).

Ultraschall kann I kompilieren und installieren libguestfs if my Distro nicht haben neu genug
qemu/supermin/kernel?
Libguestfs benötigt Supermin 5. Wenn Supermin 5 nicht auf Ihre Distribution portiert wurde, dann sehen Sie
die Frage unten.

Kompilieren Sie zunächst qemu, supermin und/oder den Kernel aus dem Quellcode. Du tust nicht muss machen
installieren".

Erstellen Sie im Quellverzeichnis libguestfs zwei Dateien. „localconfigure“ sollte Folgendes enthalten:

Quell-Localenv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / usr "$@"

Machen Sie „localconfigure“ ausführbar.

„localenv“ sollte Folgendes enthalten:

#export SUPERMIN=/tmp/supermin/src/supermin
#export LIBGUESTFS_HV=/tmp/qemu/x86_64-softmmu/qemu-system-x86_64
#export SUPERMIN_KERNEL=/tmp/linux/arch/x86/boot/bzImage
#export SUPERMIN_KERNEL_VERSION=4.XX.0
#export SUPERMIN_MODULES=/tmp/lib/modules/4.XX.0

Kommentieren Sie diese Zeilen aus und passen Sie sie nach Bedarf an, um die alternativen Programme zu verwenden, die Sie haben
zusammengestellt.

Verwenden Sie „./localconfigure“ anstelle von „./configure“, ansonsten kompilieren Sie libguestfs als
üblich.

Führen Sie nicht „make install“ aus! Verwenden Sie das „./Lauf"-Skript stattdessen (siehe README).

Ultraschall kann I kompilieren und installieren libguestfs ohne supermin?
Wenn Supermin 5 Ihre Distribution unterstützt, Sie aber nicht zufällig über ein ausreichend neues Supermin verfügen
installiert ist, dann sehen Sie sich die vorherige Frage an.

Wenn Supermin 5 Ihre Distribution überhaupt nicht unterstützt, müssen Sie die Option „fixed“ verwenden
Appliance-Methode“, bei der Sie eine vorkompilierte Binär-Appliance verwenden. Zum Erstellen von libguestfs
Ohne Supermin müssen Sie entweder „--disable-appliance --disable-daemon“ übergeben
./autogen.sh or . / Configure (Je nachdem, ob Sie jeweils aus Git oder bauen
aus Tarballs). Dann, wenn Sie libguestfs verwenden, Sie sollen Legen Sie den „LIBGUESTFS_PATH“ fest.
Umgebungsvariable in das Verzeichnis einer vorkompilierten Appliance kopieren, wie auch in beschrieben
„FESTES GERÄT“ in Gastfs(3).

Informationen zu vorkompilierten Appliances finden Sie auch unter: http://libguestfs.org/download/binaries/appliance/.

Patches zur Portierung von Supermin auf weitere Linux-Distributionen sind willkommen.

Ultraschall kann I hinzufügen Support für sVirt?
Note für Fedora/RHEL Benutzer: Diese Konfiguration ist die Standardkonfiguration ab Fedora 18 und
RHEL 7. Wenn Sie Probleme finden, teilen Sie uns dies bitte mit oder melden Sie einen Fehler.

SVirt stellt eine gehärtete Appliance mit SELinux bereit, was es für eine nicht autorisierte Festplatte sehr schwierig macht
Image, um der Beschränkung von libguestfs zu „entkommen“ und dem Host Schaden zuzufügen (das kann man mit Fug und Recht sagen).
dass dies selbst in Standard-libguestfs schwierig wäre, aber sVirt bietet eine zusätzliche Ebene von
Schutz für den Host und, was noch wichtiger ist, schützt virtuelle Maschinen auf demselben Host
von einander).

Um sVirt zu aktivieren, benötigen Sie derzeit libvirt ≥ 0.10.2 (1.0 oder höher bevorzugt).
libguestfs ≥ 1.20 und die SELinux-Richtlinien von aktuellem Fedora. Wenn Sie nicht laufen
Ab Fedora 18 müssen Sie Änderungen an Ihrer SELinux-Richtlinie vornehmen – kontaktieren Sie uns unter
Mailingliste.

Sobald Sie die Anforderungen haben, gehen Sie wie folgt vor:

./configure --with-default-backend=libvirt # libguestfs >= 1.22
./configure --with-default-attach-method=libvirt # libguestfs <= 1.20
um

Stellen Sie SELinux auf den Erzwingungsmodus ein und sVirt sollte automatisch verwendet werden.

Alle oder fast alle Funktionen von libguestfs sollten unter sVirt funktionieren. Es ist einer bekannt
Mangel: virt-rettung(1) verwendet nicht libvirt (daher sVirt), sondern greift auf direkt zurück
Einführung von Qemu. Daher profitieren Sie bei der Verwendung derzeit nicht von den Vorteilen des sVirt-Schutzes
Virt-Rettung.

Sie können überprüfen, ob sVirt verwendet wird, indem Sie die libvirtd-Protokollierung aktivieren (siehe
/etc/libvirt/libvirtd.log), libvirtd beenden und neu starten und die Protokolldateien überprüfen
für „Setting SELinux context on …“-Meldungen.

Theoretisch sollte sVirt AppArmor unterstützen, wir haben es aber nicht ausprobiert. Das wird fast so sein
Es ist auf jeden Fall erforderlich, libvirt zu patchen und eine AppArmor-Richtlinie zu schreiben.

Libguestfs hat a wirklich lange Liste of Abhängigkeiten!
Von der Basisbibliothek ist nicht viel abhängig, aber es gibt drei Ursachen für die lange Liste
anderer Abhängigkeiten:

1. Libguestfs muss in der Lage sein, viele verschiedene Festplattenformate zu lesen und zu bearbeiten. Zum Beispiel,
Für die XFS-Unterstützung sind XFS-Tools erforderlich.

2. Es gibt Sprachbindungen für viele verschiedene Sprachen, die alle ihre eigenen erfordern
Entwicklungswerkzeuge. Alle Sprachbindungen (außer C) sind optional.

3. Es gibt einige optionale Bibliotheksfunktionen, die deaktiviert werden können.

Seit libguestfs ≥ 1.26 ist es möglich, die Appliance-Abhängigkeiten aufzuteilen (Punkt 1 in
die Liste oben) und haben daher (z. B.) „libguestfs-xfs“ als separates Unterpaket für
Verarbeitung von XFS-Disk-Images. Wir ermutigen nachgelagerte Verpacker, mit der Aufteilung der Basis zu beginnen
libguestfs-Paket in kleinere Unterpakete.

Fehler im starten on Fedora 18, RHEL 7
In Fedora ≥ 18 und RHEL ≥ 7 verwendet libguestfs libvirt, um die Appliance zu verwalten. Vorher
(und Upstream) libguestfs führt qemu direkt aus:

┌──────────────────────────────────┐
│ libguestfs │
├────────────────┬─────────────────┤
│ direktes Backend │ libvirt-Backend │
└────────────────┴─────────────────┘
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

┌───────┐
│ qemu │
└───────┘

Upstream-Fedora 18+
Nicht-Fedora RHEL 7+
Nicht-RHEL

Das libvirt-Backend ist ausgefeilter und unterstützt SELinux/sVirt (siehe oben).
Hotplugging und mehr. Es ist jedoch komplexer und daher weniger robust.

Wenn Sie Berechtigungsprobleme bei der Verwendung des libvirt-Backends haben, können Sie zum direkten wechseln
Backend, indem Sie diese Umgebungsvariable festlegen:

export LIBGUESTFS_BACKEND=direkt

bevor Sie ein libguestfs-Programm oder ein virt-Tool ausführen.

Ultraschall kann I wechseln zu a fixiert / vorgefertigt Gerät?
Dies kann die Stabilität und Leistung von libguestfs auf Fedora und RHEL verbessern.

Führen Sie nach der Installation von libguestfs jederzeit die folgenden Befehle als Root aus:

mkdir -p /usr/local/lib/guestfs/appliance
libguestfs-make-fixed-appliance /usr/local/lib/guestfs/appliance
ls -l /usr/local/lib/guestfs/appliance

Legen Sie nun die folgende Umgebungsvariable fest, bevor Sie libguestfs oder ein beliebiges Virt-Tool verwenden:

export LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

Natürlich können Sie den Pfad zu jedem beliebigen Verzeichnis ändern. Sie können das Gerät teilen
auf Maschinen mit derselben Architektur (z. B. alle x86-64), aber beachten Sie, dass libvirt
wird Sie aufgrund von Berechtigungsproblemen daran hindern, die Appliance über NFS zu teilen (so).
entweder zum direkten Backend wechseln oder kein NFS verwenden).

Ultraschall kann I Geschwindigkeit up libguestfs baut?
Das mit Abstand Wichtigste, was Sie tun können, ist die Installation und ordnungsgemäße Konfiguration von Squid.
Beachten Sie, dass die Standardkonfiguration, die mit Squid geliefert wird, Unsinn ist, also ist es auch, sie zu konfigurieren
nicht optional.

Ein sehr guter Ausgangspunkt für die Squid-Konfiguration ist hier:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Stellen Sie sicher, dass Squid ausgeführt wird und dass die Umgebungsvariablen $http_proxy und $ftp_proxy
weisen darauf hin.

Wenn Squid ausgeführt und korrekt konfiguriert ist, sollten Appliance-Builds auf wenige reduziert werden
Minuten.

Ultraschall kann I Geschwindigkeit up libguestfs baut (Debian)?

Hilko Bengen schlägt die Verwendung von „ca.“ vor, einem Debian-Archiv-Proxy
(http://packages.debian.org/approx). Dieses Tool ist unter Debian im dokumentiert ca(8)
Handbuchseite.

GESCHWINDIGKEIT, DISK SPACE BENUTZT BY LIBGUESTFS


Hinweis: Die meisten Informationen in diesem Abschnitt wurden verschoben: guestfs-Performance(1).

Hochladen or schreiben scheinen sehr langsam.
Wenn die zugrunde liegende Festplatte nicht vollständig zugewiesen ist (z. B. Sparse Raw oder qcow2), können Schreibvorgänge ausgeführt werden
langsam, da das Host-Betriebssystem währenddessen kostspielige Festplattenzuweisungen vornehmen muss
Schreiben. Die Lösung besteht darin, stattdessen ein vollständig zugewiesenes Format zu verwenden, d. nicht spärlich roh, oder
qcow2 mit der Option „preallocation=metadata“.

Libguestfs verwendet auch viel Scheibe Platz!
libguestfs speichert eine große Appliance im Cache:

/var/tmp/.guestfs-

Wenn die Umgebungsvariable „TMPDIR“ definiert ist, dann $TMPDIR/.guestfs- verwendet wird
stattdessen.

Es ist sicher, dieses Verzeichnis zu löschen, wenn Sie libguestfs nicht verwenden.

virt-sparsifizieren scheint zu um Image grow zu voller Größe of virtuell Scheibe
Wenn die Eingabe zu virt-sparsifizieren(1) roh ist, ist die Ausgabe roh, spärlich. Stellen Sie sicher
Sie messen die Ausgabe mit einem Tool, das Sparseness versteht, wie zum Beispiel „du -sh“.
Es kann einen großen Unterschied machen:

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8. August 08:08 test1.img
$ du -sh test1.img
3.6 Mio. test1.img

(Vergleichen Sie die scheinbare Größe 100M im Vergleich zur tatsächlichen Größe 3.6M)

Wenn Sie das alles verwirrt, verwenden Sie ein nicht-sparses Ausgabeformat, indem Sie Folgendes angeben --Konvertieren
Option, z. B.:

virt-sparsify --convert qcow2 disk.raw disk.qcow2

Warum nicht virtuelle Größenänderung Arbeit on Scheibe Image an Ort und Stelle?
Die Größenänderung eines Disk-Images ist sehr schwierig – vor allem, um sicherzustellen, dass keine Daten verloren gehen
brechen Sie den Bootloader. Die aktuelle Methode erstellt effektiv ein neues Disk-Image und kopiert
die Daten plus Bootloader vom alten. Wenn etwas schief geht, können Sie jederzeit gehen
zurück zum Original.

Wenn wir dafür sorgen würden, dass virt-resize direkt funktioniert, müsste es Einschränkungen geben: z
Beispielsweise wäre es Ihnen nicht gestattet, vorhandene Partitionen zu verschieben (da Daten dorthin verschoben werden).
(Bei einem Stromausfall oder Absturz ist die Wahrscheinlichkeit größer, dass dieselbe Festplatte Daten beschädigt.)
und LVM wäre sehr schwer zu unterstützen (aufgrund der nahezu willkürlichen Zuordnung).
zwischen LV-Inhalt und zugrunde liegenden Plattenblöcken).

Eine andere Methode, die wir in Betracht gezogen haben, besteht darin, einen Schnappschuss über dem Original-Disk-Image zu platzieren
dass die Originaldaten unberührt bleiben und nur Unterschiede im Snapshot aufgezeichnet werden.
Sie können dies heute mit „qemu-img create“ + „virt-resize“ tun, bei qemu ist dies derzeit jedoch nicht der Fall
intelligent genug, um zu erkennen, wann derselbe Block wie bereits in den Snapshot zurückgeschrieben wird
ist auf der Sicherungsdiskette vorhanden, Sie werden also feststellen, dass Sie dadurch weder Platz noch Zeit sparen.

Zusammenfassend lässt sich sagen, dass dies ein schwieriges Problem ist und das, was wir jetzt haben, größtenteils funktioniert, sodass wir zögern
zu ändern.

Warum nicht virt-sparsifizieren Arbeit on Scheibe Image an Ort und Stelle?
In libguestfs ≥ 1.26 kann virt-sparsify jetzt an vorhandenen Festplatten-Images arbeiten. Verwenden:

virt-sparsify --in-place disk.img

Aber zuerst sollten Sie „IN-PLACE SPARSIFICATION“ in lesen virt-sparsifizieren(1).

PROBLEME ERÖFFNUNG DISK IMAGES


Remote libvirt Gäste kann keine be geöffnet.
Das Öffnen von Remote-Libvirt-Gästen wird derzeit nicht unterstützt. Das wird zum Beispiel nicht funktionieren:

Guestfish -c qemu://remote/system -d Gast

Um Remote-Festplatten zu öffnen, müssen Sie sie irgendwie exportieren und dann eine Verbindung zum Export herstellen. Für
Beispiel, wenn Sie sich für die Verwendung von NBD entschieden haben:

remote$ qemu-nbd -t -p 10809 Guest.img
local$ Guestfish -a nbd://remote:10809 -i

Weitere Möglichkeiten sind SSH (sofern qemu aktuell genug ist), NFS oder iSCSI. Siehe „FERNBEDIENUNG“.
LAGERUNG" in Gastfs(3).

Ultraschall kann I XNUMXh geöffnet fehlen uns die Worte. seltsam Scheibe Quelle?
Sie haben ein Disk-Image in einem anderen System, das den Zugriff über eine Bibliothek/Bibliothek erfordert.
HTTP / REST / proprietäre API oder wird auf irgendeine Weise komprimiert oder archiviert. (Ein Beispiel
wäre ein Fernzugriff auf OpenStack-Blickbilder, ohne sie tatsächlich herunterzuladen.)

Wir haben ein Schwesterprojekt namens nbdkit (https://github.com/libguestfs/nbdkit). Das
Mit dem Projekt können Sie jede Festplattenquelle in einen NBD-Server verwandeln. Libguestfs kann auf NBD zugreifen
Server direkt, z.B.:

Guestfish -a nbd://remote

nbdkit ist großzügig lizenziert, sodass Sie es mit proprietären Bibliotheken verknüpfen oder in diese einbinden können
und Code. Es verfügt außerdem über eine einfache, stabile Plugin-API, sodass Sie ganz einfach Plugins schreiben können
die API, die auch in Zukunft weiterhin funktionieren wird.

Fehler Eröffnung VMDK Festplatten: "Verwendet a vmdk -Funktion welche is nicht unterstützt by fehlen uns die Worte. qemu Version:
VMDK Version 3"
Qemu (und damit libguestfs) unterstützt nur bestimmte VMDK-Disk-Images. Andere werden nicht funktionieren,
Geben Sie diesen oder ähnliche Fehler an.

Im Idealfall würde jemand qemu reparieren, um die neuesten VMDK-Funktionen zu unterstützen, aber in der Zwischenzeit
Sie haben drei Möglichkeiten:

1. Wenn der Gast auf einem aktiven, erreichbaren ESX-Server gehostet wird, suchen Sie ihn und laden Sie ihn herunter
Disk-Image genannt somename-flat.vmdk. Trotz des Namens handelt es sich hierbei um ein Raw-Disk-Image
kann von allem geöffnet werden.

Wenn Sie über eine ausreichend aktuelle Version von qemu und libguestfs verfügen, ist dies möglicherweise möglich
Greifen Sie remote über HTTPS oder SSH auf dieses Disk-Image zu. Siehe „FERNSPEICHERUNG“ in
Gastfs(3).

2. Verwenden Sie das proprietäre vdiskmanager-Tool von VMware, um das Image in das Rohformat zu konvertieren.

3. Verwenden Sie nbdkit mit dem proprietären VDDK-Plugin, um das Disk-Image live als NBD zu exportieren
Quelle. Dies sollte Ihnen das Lesen und Schreiben der VMDK-Datei ermöglichen.

UFS Festplatten (Als benutzt by BSD) kann keine be geöffnet.
Das UFS-Dateisystemformat hat viele Varianten, die jedoch nicht selbstidentifizierend sind. Der
Dem Linux-Kernel muss mitgeteilt werden, welche Variante von UFS er verwenden muss, was libguestfs nicht kann
kennen.

Beim Mounten dieser Dateisysteme müssen Sie die richtige Mount-Option „ufstype“ übergeben.

Siehe https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

Windows Refs
Windows ReFS ist die ZFS/Btrfs-Kopie von Microsoft. Dieses Dateisystem wurde noch nicht umgekehrt
wurde im Linux-Kernel entwickelt und implementiert und wird daher von libguestfs nicht unterstützt
Es. Im Moment scheint es „in freier Wildbahn“ sehr selten zu sein.

Nicht-ASCII Zeichen nicht erscheinen on VFAT Dateisysteme.
Typische Symptome dieses Problems:

· Sie erhalten eine Fehlermeldung, wenn Sie eine Datei erstellen, deren Dateiname Nicht-ASCII enthält
Zeichen, insbesondere Nicht-8-Bit-Zeichen aus asiatischen Sprachen (Chinesisch, Japanisch,
usw). Das Dateisystem ist VFAT.

· Wenn Sie ein Verzeichnis aus einem VFAT-Dateisystem auflisten, werden Dateinamen als Fragezeichen angezeigt.

Dies ist ein Designfehler des GNU/Linux-Systems.

VFAT speichert lange Dateinamen als UTF-16-Zeichen. Beim Öffnen oder Zurückgeben von Dateinamen wird die
Der Linux-Kernel muss diese in eine Form von 8-Bit-String übersetzen. UTF-8 wäre das
offensichtliche Wahl, außer für Linux-Benutzer, die weiterhin Nicht-UTF-8-Gebietsschemas verwenden (die des Benutzers).
Das Gebietsschema ist dem Kernel nicht bekannt, da es eine Funktion von libc ist.

Daher müssen Sie dem Kernel beim Mounten mitteilen, welche Übersetzung durchgeführt werden soll
Dateisystem. Die beiden Methoden sind der Parameter „iocharset“ (der für nicht relevant ist).
libguestfs) und das Flag „utf8“.

Um also ein VFAT-Dateisystem zu verwenden, müssen Sie beim Mounten das Flag „utf8“ hinzufügen. Von Gastfisch,
benutzen:

> Mount-Optionen utf8 /dev/sda1 /

oder in der Guestfish-Befehlszeile:

Guestfish [...] -m /dev/sda1:/:utf8

oder über die API:

Guestfs_mount_options (g, „utf8“, „/dev/sda1“, „/“);

Der Kernel übersetzt dann Dateinamen in und aus UTF-8-Strings.

Wir haben darüber nachgedacht, diese Mount-Option transparent hinzuzufügen, aber leider gibt es mehrere
Probleme damit:

· Auf einigen Linux-Systemen funktioniert die Mount-Option „utf8“ nicht. Wir wissen es nicht genau
verstehen, welche Systeme oder warum, aber dies wurde zuverlässig von einem Benutzer gemeldet.

· Es würde Sie daran hindern, den Parameter „iocharset“ zu verwenden, da er inkompatibel ist
mit „utf8“. Es ist wahrscheinlich keine gute Idee, diesen Parameter zu verwenden, wir wollen ihn aber auch nicht
um es zu verhindern.

Nicht-ASCII Zeichen erscheinen as unterstreichen (_) on ISO9660 Dateisysteme.
Das Dateisystem wurde mit mkisofs oder genisoimage nicht korrekt vorbereitet. Stellen Sie sicher, dass
Das Dateisystem wurde mit Joliet- und/oder Rock Ridge-Erweiterungen erstellt. libguestfs nicht
erfordern spezielle Mount-Optionen, um das Dateisystem zu verwalten.

Kann nicht XNUMXh geöffnet Windows Gäste welche - NTFS
Sie sehen Fehler wie:

mount: unbekannter Dateisystemtyp „ntfs“

Unter Red Hat Enterprise Linux oder CentOS müssen Sie libguestfs-winsupport installieren
Paket.

Kann nicht XNUMXh geöffnet or prüfen RHEL 7 Gästen.
Kann nicht XNUMXh geöffnet Linux Gäste welche - XFS.
RHEL 7-Gäste und alle anderen Gäste, die XFS verwenden, können von libguestfs geöffnet werden, außer Ihnen
Sie müssen das Paket „libguestfs-xfs“ installieren.

VERWENDUNG LIBGUESTFS IN DEINE BESITZEN PROGRAMME


Das API hat hunderte of Methoden, woher do I Start?
Wir empfehlen Ihnen, zunächst die API-Übersicht zu lesen: „API-ÜBERSICHT“ in Gastfs(3).

Obwohl die API-Übersicht die C-API abdeckt, lohnt es sich dennoch, sie zu lesen, selbst wenn Sie es sind
Ich werde eine andere Programmiersprache verwenden, da die API dieselbe ist, nur einfach
logische Änderungen an den Namen der Anrufe:

C guestfs_ln_sf (g, Ziel, Linkname);
Python g.ln_sf (Ziel, Linkname);
OCaml g#ln_sf Ziel-Linkname;
Perl $g->ln_sf (Ziel, Linkname);
Shell (guestfish) ln-sf-Ziel-Linkname
PHP guestfs_ln_sf ($g, $target, $linkname);

Sobald Sie mit der API-Übersicht vertraut sind, sollten Sie sich diese Startliste ansehen
Punkte für andere Sprachbindungen: „VERWENDEN VON LIBGUESTFS MIT ANDEREN PROGRAMMIERSPRACHEN“ in
Gastfs(3).

Können I - libguestfs in my Eigentums- / geschlossen Quelle / kommerziell Programm?
Im Allgemeinen ja. Dies ist jedoch keine Rechtsberatung – lesen Sie die mitgelieferte Lizenz
libguestfs, und wenn Sie spezielle Fragen haben, wenden Sie sich an einen Anwalt.

Im Quellbaum befindet sich die Lizenz in der Datei „COPYING.LIB“ ​​(LGPLv2+ für die Bibliothek und
Bindungen) und „KOPIEREN“ (GPLv2+ für die Standalone-Programme).

FEHLERBEHEBUNG LIBGUESTFS


Hilfe, es ist nicht Arbeiten!
Wenn überhaupt kein libguestfs-Programm zu funktionieren scheint, führen Sie das folgende Programm aus und fügen Sie es ein
Komplett, unbearbeitet Ausgabe in eine E-Mail an „libguestfs“ @ „redhat.com“:

libguestfs-test-tool

Wenn ein bestimmter Vorgang fehlschlägt, geben Sie alle Informationen in dieser Checkliste in einer E-Mail an
an „libguestfs“ @ „redhat.com“:

1. Was versuchen Sie zu tun?

2. Welche genauen Befehle haben Sie ausgeführt?

3. Was war der genaue Fehler oder die genaue Ausgabe dieser Befehle?

4. Aktivieren Sie das Debuggen, führen Sie die Befehle erneut aus und erfassen Sie die abschließen Ausgabe. Do nicht
bearbeiten Ausgabe.

export LIBGUESTFS_DEBUG=1
export LIBGUESTFS_TRACE=1

5. Geben Sie die Version von libguestfs, die Betriebssystemversion und die Art der Installation an
libguestfs (z. B. aus der Quelle, „yum install“ usw.)

Ultraschall do I debuggen wann Verwendung von jedem libguestfs Programm or Werkzeug (z.B. virt-v2v or virt-df)?
Es gibt zwei Umgebungsvariablen „LIBGUESTFS_*“, die Sie festlegen können, um mehr zu erhalten
Informationen von libguestfs.

„LIBGUESTFS_TRACE“
Setzen Sie dies auf 1 und libguestfs druckt jeden Befehl/API-Aufruf in einem Format aus, das
ähnelt den Guestfish-Befehlen.

„LIBGUESTFS_DEBUG“
Setzen Sie dies auf 1, um große Mengen an Debug-Meldungen zu ermöglichen. Wenn du denkst
Es gibt ein Problem in der libguestfs-Appliance, dann sollten Sie dieses verwenden
.

Um diese über die Shell festzulegen, gehen Sie wie folgt vor, bevor Sie das Programm ausführen:

export LIBGUESTFS_TRACE=1
export LIBGUESTFS_DEBUG=1

Für csh/tcsh wären die entsprechenden Befehle:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Weitere Informationen finden Sie unter: „UMGEBUNGSVARIABLEN“ in Gastfs(3).

Ultraschall do I debuggen wann Verwendung von Gastfisch?
Sie können die gleichen Umgebungsvariablen wie oben verwenden. Alternativ nutzen Sie die Guestfish-Optionen
-x (um Befehle zu verfolgen) oder -v (um die vollständige Debug-Ausgabe zu erhalten) oder beides.

Weitere Informationen finden Sie unter: Gastfisch(1).

Ultraschall do I debuggen wann Verwendung von API?
Rufen Sie „guestfs_set_trace“ auf Gastfs(3) um Befehlsverfolgungen zu ermöglichen und/oder
„guestfs_set_verbose“ in Gastfs(3) um Debug-Meldungen zu aktivieren.

Um optimale Ergebnisse zu erzielen, rufen Sie diese Funktionen so früh wie möglich direkt nach der Erstellung auf
Guestfs behandeln, wenn Sie können, und auf jeden Fall vor dem Aufruf von launch.

Ultraschall do I Erfassung debuggen Signalausgangsmöglichkeiten: und setzen it in my Protokollierung System?
Verwenden Sie die Event-API. Beispiele finden Sie unter: „RÜCKRUFE ZUR BEHANDLUNG VON EREIGNISSEN EINSTELLEN“ in Gastfs(3)
und für Beispiele/debug-logging.c Programm in den libguestfs-Quellen.

Digging tiefer in Gerät Stiefel verarbeiten.
Aktivieren Sie das Debuggen und lesen Sie dann diese Dokumentation zum Appliance-Startvorgang:
gastfs-internals(1).

libguestfs hängt or scheitert im ausführen/starten.
Aktivieren Sie das Debuggen und sehen Sie sich die vollständige Ausgabe an. Wenn Sie nicht herausfinden können, was los ist,
Reichen Sie einen Fehlerbericht ein, einschließlich der abschließen Ausgabe von libguestfs-test-tool(1).

Fehlerbeseitigung libvirt
Wenn Sie das libvirt-Backend verwenden und libvirt ausfällt, können Sie es aktivieren
Debuggen durch Bearbeiten /etc/libvirt/libvirtd.conf.

Wenn Sie als Nicht-Root-Benutzer ausgeführt werden, müssen Sie eine andere Datei bearbeiten. Erstellen
~/.config/libvirt/libvirtd.conf enthält:

log_level=1
log_outputs="1:file:/tmp/libvirtd.log"

Beenden Sie alle laufenden libvirtd-Sitzungen (ohne Rootberechtigung) und führen Sie das nächste Mal libguestfs aus
Wenn Sie den Befehl ausführen, sollten Sie eine große Menge nützlicher Debugging-Informationen von libvirtd sehen
/tmp/libvirtd.log

DESIGN/INNENAUSSTATTUNG OF LIBGUESTFS


[VORLÄUFIGE VOLLAUTOMATISCHE TEXTÜBERSETZUNG - muss noch überarbeitet werden. Wir bitten um Ihr Verständnis.] gastfs-internals(1).

Warum nicht U do alles bis FUSE / Dateisystem Schnittstelle?
Wir bieten einen Befehl namens Gastberg(1), mit dem Sie Gastdateisysteme auf dem mounten können
Gastgeber. Dies ist als FUSE-Modul implementiert. Warum setzen wir nicht einfach alles um?
libguestfs diesen Mechanismus verwenden, anstatt über die große und ziemlich komplizierte API zu verfügen?

Es gibt zwei Gründe. Erstens bietet libguestfs API-Aufrufe für Dinge wie
Erstellen und Löschen von Partitionen und logischen Volumes, die nicht in ein Dateisystem passen
Modell sehr einfach. Oder besser gesagt, Sie könnten sie einbauen: zum Beispiel durch die Erstellung einer Partition
könnte „mkdir /fs/hda1“ zugeordnet werden, aber dann müssten Sie eine Methode zur Auswahl angeben
die Größe der Partition (vielleicht „echo 100M > /fs/hda1/.size“) und der Partitionstyp,
Start- und Endsektoren usw., aber sobald Sie das getan haben, beginnt die dateisystembasierte API
sehen komplizierter aus als die aufrufbasierte API, die wir derzeit haben.

Der zweite Grund ist die Effizienz. FUSE selbst ist einigermaßen effizient, aber es tut es
Machen Sie viele kleine, unabhängige Aufrufe in das FUSE-Modul. Im Gastmount müssen diese vorhanden sein
in Nachrichten an die libguestfs-Appliance übersetzt werden, was einen großen Overhead (zeitlich) verursacht
und Rundfahrten). Beispielsweise ist das Lesen einer Datei in 64-KB-Blöcken ineffizient, da jeder
Aus einem Stück würde eine einzige Hin- und Rückfahrt werden. In der libguestfs-API ist es noch viel mehr
effizient, um eine ganze Datei oder ein Verzeichnis über einen der Streaming-Aufrufe herunterzuladen
„guestfs_download“ oder „guestfs_tar_out“.

Warum nicht U do alles bis GVFS?
Die Probleme ähneln denen mit FUSE.

GVFS ist eine bessere Abstraktion als POSIX/FUSE. Es gibt ein FTP-Backend für GVFS
ermutigend, da FTP konzeptionell der libguestfs-API ähnelt. Allerdings ist die GVFS
Das FTP-Backend stellt mehrere gleichzeitige Verbindungen her, um die Interaktivität aufrechtzuerhalten
Mit libguestfs geht das nicht so einfach.

Warum kann I schreiben zu Platte, sogar obwohl I hinzugefügt it schreibgeschützt?
Warum die „--ro“ erscheinen zu haben nicht bewirken?
Wenn Sie eine schreibgeschützte Festplatte hinzufügen, platziert libguestfs eine beschreibbare Überlagerung darüber
zugrunde liegende Festplatte. Schreibvorgänge gehen in dieses Overlay und werden verworfen, wenn das Handle geschlossen wird
(oder „guestfish“ usw. Ausgänge).

Dafür gibt es zwei Gründe: Erstens sind schreibgeschützte Datenträger in nicht möglich
In vielen Fällen (z. B. unterstützt die IDE sie einfach nicht, sodass Sie keine IDE-Emulation durchführen können
eine schreibgeschützte Festplatte, obwohl dies bei echten libguestfs-Installationen nicht üblich ist).

Zweitens und noch wichtiger: Selbst wenn schreibgeschützte Datenträger möglich wären, würden Sie dies nicht wollen
ihnen. Das Mounten eines beliebigen Dateisystems, das über ein Journal verfügt, auch „mount -o ro“, führt zu Schreibvorgängen
das Dateisystem, da das Journal wiedergegeben und die Metadaten aktualisiert werden müssen. Wenn die Festplatte
Da die Datei wirklich schreibgeschützt war, konnten Sie kein fehlerhaftes Dateisystem mounten.

Um es nutzbar zu machen, erstellen wir das Overlay als Ort zum vorübergehenden Speichern dieser Schreibvorgänge
dann verwerfen wir es anschließend. Dadurch wird sichergestellt, dass die zugrunde liegende Festplatte immer unberührt bleibt.

Beachten Sie auch, dass es beim Erstellen von libguestfs (in) einen Regressionstest dafür gibt
„tests/qemu“). Dies ist einer der Gründe, warum es für Paketierer wichtig ist, die Testsuite auszuführen.

Beeinflusst die „--ro“ um alle Festplatten schreibgeschützt?
Nein! Die Option „--ro“ betrifft nur Festplatten, die über die Befehlszeile hinzugefügt werden, d. h. mit „-a“ und
„-d“-Optionen.

Wenn Sie in Guestfish den Befehl „add“ verwenden, wird die Festplatte mit Lese-/Schreibzugriff hinzugefügt (es sei denn, Sie
Geben Sie das Flag „readonly:true“ explizit mit dem Befehl an.

Können I - „Gastfisch --ro" as a Weg, zu Sicherungskopie my virtuell Maschinen?
Normalerweise ist das so nicht eine gute Idee. Die Frage wird in diesem Mailing ausführlicher beantwortet
Listeneintrag: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Siehe auch die nächste Frage.

Warum kann nicht I Lauf fsck on a leben Dateisystem Verwendung von „Gastfisch --ro"?
Dieser Befehl wird normalerweise ausgeführt nicht Arbeit:

Guestfish --ro -a /dev/vg/my_root_fs run : fsck /dev/sda

Der Grund dafür ist, dass qemu einen Snapshot über das ursprüngliche Dateisystem erstellt, es aber nicht
erstellt keinen strikten Zeitpunkt-Snapshot. Datenblöcke zum Basiswert
Das Dateisystem wird von qemu zu unterschiedlichen Zeiten gelesen, während der fsck-Vorgang mit dem Host fortschreitet
schreibt dazwischen. Das Ergebnis ist, dass fsck massive Korruption sieht (eingebildet, nicht real!)
und scheitert.

Sie müssen lediglich einen Point-in-Time-Snapshot erstellen. Wenn es sich um ein logisches Volume handelt, verwenden Sie
ein LVM2-Snapshot. Wenn sich das Dateisystem in etwas wie einer Btrfs/ZFS-Datei befindet,
Verwenden Sie einen Btrfs/ZFS-Snapshot und führen Sie dann den fsck für den Snapshot aus. In der Praxis ist das nicht der Fall
Hierfür muss libguestfs verwendet werden – einfach ausführen /sbin/fsck direkt.

Das Erstellen von Point-in-Time-Snapshots von Hostgeräten und -dateien liegt außerhalb des Umfangs von
libguestfs, obwohl libguestfs nach ihrer Erstellung auf sie zugreifen kann.

Was ist Unterschied zwischen Gastfisch und virtuelle Rettung?
Viele Menschen sind verwirrt über die beiden von uns angebotenen, oberflächlich betrachtet ähnlichen Tools:

$ Guestfish --ro -a Guest.img
> laufen
> fsck /dev/sda1

$ virt-rescue --ro guest.img
> /sbin/fsck / Dev / sda1

Und die damit verbundene Frage, die sich dann stellt, ist, warum Sie keine vollständigen Shell-Befehle eingeben können
mit allen --options in Guestfish (aber Sie können in virt-rettung(1)).

Gastfisch(1) ist ein Programm, das strukturierten Zugriff auf die bietet Gastfs(3) API. Es passiert
soll auch eine nette interaktive Shell sein, aber ihr Hauptzweck ist der strukturierte Zugriff von dort aus
Shell-Skripte. Betrachten Sie es eher als eine Sprachbindung, wie Python und andere Bindungen.
aber für Shell. Der wichtigste Unterscheidungsfaktor von Guestfish (und der libguestfs-API in
Allgemein) ist die Fähigkeit, Änderungen zu automatisieren.

virt-rettung(1) ist eine für alle freie Form, um die libguestfs-Appliance zu booten und zu erstellen
willkürliche Änderungen an Ihrer VM. Es ist nicht strukturiert, man kann es nicht automatisieren, sondern zum Erstellen
Schnelle Ad-hoc-Lösungen für Ihre Gäste können sehr nützlich sein.

Aber libguestfs verfügt auch über eine „Hintertür“ in die Appliance, die es Ihnen ermöglicht, beliebige Daten zu senden
Shell-Befehle. Es ist nicht so flexibel wie Virt-Rescue, da Sie nicht mit dem interagieren können
Shell-Befehle, aber hier ist es trotzdem:

> debug sh „cmd arg1 arg2 …“

Beachten Sie, dass Sie sollten nicht Verlassen Sie sich darauf. Es könnte in Zukunft entfernt oder geändert werden. Wenn dein
Das Programm muss ausgeführt werden. Bitte fügen Sie es stattdessen der libguestfs-API hinzu.

Was ist Deal mit „Gastfisch -ich"?
Warum die Virt-Katze einzige Arbeit on a echt VM Bild, aber virt-df Werk on jedem Scheibe Bild?
Was die "Nein Wurzel Gerät gefunden in fehlen uns die Worte. die System Bild" bedeuten?
Diese Fragen hängen alle auf einer grundlegenden Ebene zusammen, die möglicherweise nicht sofort erkennbar ist
offensichtlich.

Bei der Gastfs(3) API-Ebene, ein „Disk-Image“ ist nur ein Stapel von Partitionen und Dateisystemen.

Im Gegensatz dazu werden beim Booten der virtuellen Maschine diese Dateisysteme konsistent bereitgestellt
Hierarchie wie:

/ (/dev/sda2)

├── / boot (/dev/sda1)

├── / Home (/dev/vg_external/Homes)

├── / usr (/dev/vg_os/lv_usr)

└── / var (/dev/vg_os/lv_var)

(oder Laufwerksbuchstaben unter Windows).

Die API sieht das Disk-Image zunächst auf der Ebene „Stapel von Dateisystemen“. Aber es ist auch
bietet eine Möglichkeit, das Disk-Image zu überprüfen, um festzustellen, ob es ein Betriebssystem enthält und wie das funktioniert
Festplatten werden beim Booten des Betriebssystems gemountet: „INSPECTION“ in Gastfs(3).

Benutzer erwarten einige Tools (wie Virt-Katze(1)) um mit VM-Pfaden zu arbeiten:

virt-cat fedora.img /var/log/messages

Woher weiß Virt-Cat das? / var ist eine separate Partition? Der Trick ist diese Virt-Katze
führt eine Überprüfung des Disk-Images durch und verwendet diese, um den Pfad korrekt zu übersetzen.

Einige Tools (einschließlich Virt-Katze(1) virt-edit(1) Virt-ls(1)) Verwenden Sie die Inspektion, um VM abzubilden
Wege. Andere Tools, wie z virt-df(1) und virt-Dateisysteme(1) vollständig am arbeiten
Rohe „Big Pile of Filesystems“-Ebene der libguestfs-API und keine Inspektion verwenden.

Gastfisch(1) liegt in einem interessanten Mittelweg. Wenn Sie die verwenden -a und -m Befehlszeile
Optionen, dann müssen Sie Guestfish genau sagen, wie Disk-Images hinzugefügt und wo gemountet werden sollen
Partitionen. Dies ist die Roh-API-Ebene.

Wenn Sie die -i Option führt libguestfs eine Inspektion durch und mountet die Dateisysteme für
Sie.

Der Fehler „In diesem Betriebssystem-Image wurde kein Root-Gerät gefunden“ hängt damit zusammen. Es
bedeutet, dass die Inspektion in dem von Ihnen angegebenen Disk-Image kein Betriebssystem finden konnte
Es. Dies kann bei Programmen wie virt-cat der Fall sein, wenn Sie versuchen, sie auf etwas auszuführen
Dabei handelt es sich nur um ein Festplatten-Image, nicht um ein Festplatten-Image einer virtuellen Maschine.

Was do folgende "debuggen*" und „intern-*“ Funktionen machen?
Es gibt einige Funktionen, die zum Debuggen und für interne Zwecke verwendet werden nicht
Teil der stabilen API.

Die Funktionen „debug*“ (oder „guestfs_debug*“), hauptsächlich „guestfs_debug“ in Gastfs(3) und
eine Handvoll anderer werden zum Debuggen von libguestfs verwendet. Obwohl sie nicht Teil der sind
Da die API stabil ist und daher jederzeit geändert oder entfernt werden kann, möchten einige Programme sie möglicherweise aufrufen
diese, während Sie darauf warten, dass Funktionen zu libguestfs hinzugefügt werden.

Die Funktionen „internal-*“ (oder „guestfs_internal_*“) sind ausschließlich für die Verwendung durch libguestfs bestimmt
selbst. Es gibt keinen Grund für Programme, sie aufzurufen, und Programme sollten nicht versuchen, sie zu verwenden
ihnen. Ihre Verwendung führt oft dazu, dass schlimme Dinge passieren und dass man nicht Teil davon ist
dokumentierte stabile API.

ENTWICKLER*INNEN


Wo do I senden Patches?
Bitte senden Sie Patches an die libguestfs-Mailingliste
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
Es wird eine Verzögerung geben, bis Ihr Beitrag manuell genehmigt wird.

Bitte kontaktieren Sie uns, wenn Sie Probleme im Zusammenhang mit dieser Website haben oder nicht - github ziehen Zugriffe - vom Nutzer definierten werden wir be ignoriert. Die Gründe sind (a) wir wollen
um Patches auf der Mailingliste zu besprechen und zu analysieren, und (b) Github-Pull-Anfragen zu stellen
Commits zusammenführen, aber wir bevorzugen einen linearen Verlauf.

Ultraschall do I bietet a Feature?
Große neue Funktionen, die Sie beisteuern möchten, sollten auf der Mailingliste besprochen werden
zuerst (https://www.redhat.com/mailman/listinfo/libguestfs). Das vermeidet Enttäuschungen
und verschwendete Arbeit, wenn wir glauben, dass die Funktion nicht in das libguestfs-Projekt passen würde.

Wenn Sie eine nützliche Funktion vorschlagen möchten, aber keinen Code schreiben möchten, können Sie eine einreichen
Fehler (siehe „HILFE ERHALTEN UND FEHLER MELDEN“) mit „RFE:“ am Anfang der Zusammenfassung
Linie.

Wer kann verpflichten zu libguestfs Idiot?
Ungefähr 5 Personen haben Commit-Zugriff auf Github. Patches sollten zuerst auf der Liste veröffentlicht werden
und bestätigt. Die Richtlinie zum ACKing und Pushen von Patches ist hier beschrieben:

https://www.redhat.com/archives/libguestfs/2012-January/msg00023.html

Können I Gabel libguestfs?
Natürlich kannst du. Git macht es einfach, libguestfs zu forken. Github macht es noch einfacher.
Es ist schön, wenn Sie uns auf der Mailingliste von Forks und den Gründen dafür erzählen.

SONSTIGES FRAGEN


Können I Monitor leben Scheibe Aktivität of a virtuell Maschine Verwendung von libguestfs?
Eine häufige Anfrage besteht darin, libguestfs verwenden zu können, um die Live-Festplattenaktivität eines zu überwachen
Gast, um beispielsweise jedes Mal benachrichtigt zu werden, wenn ein Gast eine neue Datei erstellt. Libguestfs
die nicht funktionieren so, wie sich manche Leute vorstellen, wie Sie in diesem Diagramm sehen können:

┌─────────────────────────────────────┐
│ Überwachungsprogramm mit libguestfs │
└─────────────────────────────────────┘

┌───────────┐ ┌──────────────────────┐
│ Live-VM │ │ libguestfs-Appliance │
├───────────┤ ├──────────────────────┤
│ Kernel (1)│ │ Appliance-Kernel (2) │
└───────────┘ └──────────────────────┘
↓ ↓ (R/O-Verbindung)
┌──────────────────────┐
| Disk-Image |
└──────────────────────┘

Dieses Szenario ist sicher (solange Sie beim Hinzufügen des Laufwerks das Flag „schreibgeschützt“ setzen).
Der libguestfs-Appliance-Kernel (2) sieht jedoch nicht alle an der Festplatte vorgenommenen Änderungen
Bild, aus zwei Gründen:

ich. Der VM-Kernel (1) kann Daten im Speicher zwischenspeichern, sodass sie nicht im Disk-Image erscheinen.

ii. Der libguestfs-Appliance-Kernel (2) erwartet nicht, dass sich das Festplatten-Image ändert
darunter, sodass sein eigener Cache nicht auf magische Weise aktualisiert wird, selbst wenn der VM-Kernel (1)
aktualisiert das Disk-Image.

Die einzige unterstützte Lösung besteht darin, die gesamte libguestfs-Appliance jederzeit neu zu starten
Ich möchte mir Änderungen im Disk-Image ansehen. Auf der API-Ebene, die dem Aufruf entspricht
„guestfs_shutdown“ gefolgt von „guestfs_launch“, was eine schwere Operation ist (siehe
ebenfalls guestfs-Performance(3)).

Es gibt einige nicht unterstützte Hacks, die Sie ausprobieren können, wenn ein Neustart der Appliance wirklich zu empfehlen ist
teuer:

· Rufen Sie „guestfs_drop_caches (g, 3)“ auf. Dadurch werden alle zwischengespeicherten Daten durch libguestfs unterstützt
Der Appliance-Kernel (2) wird verworfen, sodass er zum Disk-Image zurückkehrt.

Dies allein reicht jedoch nicht aus, da qemu auch einige Daten zwischenspeichert. Du
Außerdem muss libguestfs gepatcht werden, um den Modus „cache=unsafe“ (wieder) zu aktivieren. Sehen:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Verwenden Sie stattdessen ein Tool wie virt-bmap.

· Führen Sie einen Agenten im Gast aus.

Es hilft nichts, wenn der Gast grundlegendere Änderungen vornimmt (z. B. Dateisysteme löscht).
Für solche Dinge müssen Sie das Gerät neu starten.

(Beachten Sie, dass es ein drittes Problem gibt, das Sie mithilfe konsistenter Snapshots wirklich untersuchen müssen
Live-Disk-Images, aber das ist ein allgemeines Problem bei der Verwendung von libguestfs für jede Live-Disk
Bild.)

Nutzen Sie „guestfs-faq“ online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad