Die libguestfs ist eine C-Bibliothek und eine Sammlung von Tools in dieser Bibliothek zum Erstellen, Anzeigen, Zugreifen und Ändern von Festplatten-Images virtueller Maschinen in Linux. Sie können in die Disk-Images schauen, die darin enthaltenen Dateien ändern, sie von Grund auf neu erstellen, ihre Größe ändern und vieles mehr. Es erfordert weder libvirt noch KVM und auch keine Root-Rechte. Red Hat sponsert die Entwicklung von libguestfs. Es unterstützt viele Linux-Distributionen und Unix-Varianten wie Mac OS.
Libguestfs funktioniert mit fast allen Linux-Dateisystemen (ext2/3/4, XFS, btrfs usw.), Windows-Dateisystemen (vfat und ntfs), Mac OS- und BSD-Dateisystemen, LVM2-Volumes, MBR- und GPT-Festplattenpartitionen, RAW-Festplatten , QCOW2, VirtualBox VDI, VMWare VMDK und Hyper-V VHD/VHDX. Es kann sogar auf lokale Dateien und lokale Geräte wie CD- und DVD-ISOs, SD-Karten oder remote über FTP, HTTP, SSH, iSCSI, NBD, GlusterFS, Ceph, Sheepdog und vieles mehr zugreifen.
Libguestfs-Funktionen
Mit libguest-Tools können wir eine ganze Reihe von Aufgaben erledigen, die unten aufgeführt sind:
- Virtuelle Gastmaschinen erstellen
- Virtuelle Maschinen klonen
- VMs erstellen,
- VMs anpassen,
- Skripterstellung für Änderungen an VMs,
- Inspizieren Sie VM-Images
- Dateien auf Gastcomputern anzeigen und bearbeiten
- Kopieren Sie Dateien und Verzeichnisse zu und von virtuellen Maschinen,
- Anzeigen von Informationen über Dateisysteme, Geräte, LVM,
- Dateien archivieren, hochladen und herunterladen
- Statistiken zu verwendeter/freier Festplatte überwachen
- Virtuelle Laufwerke formatieren
- Größe virtueller Laufwerke ändern
- Durchführen von Sicherungen
- Gastdateisystem im Hostsystem einhängen und aushängen,
- P2V (konvertieren Sie eine physische Maschine, um sie virtualisiert auf KVM, OpenStack, oVirt, Red Hat Virtualization auszuführen),
- V2V (Konvertieren eines Gastcomputers von einem fremden Hypervisor zur Ausführung auf KVM),
- Protokolldateien anzeigen,
- Änderungen in der Windows-Registrierung in Windows-Gästen zusammenführen
- und vieles mehr.
Sie können all diese Aufgaben entweder über eine skriptfähige Shell namens guestfish erledigen , oder eine interaktive Rettungs-Shell virt-rescue .
Installieren Sie libguestfs unter Linux
Führen Sie den folgenden Befehl aus, um libguestfs unter Debian, Ubuntu zu installieren:
$ sudo apt install libguestfs-tools
Unter CentOS, RHEL:
$ sudo dnf install libguestfs-tools
Überprüfen Sie nach der Installation die Version von guestfish mit dem Befehl:
$ guestfish --version guestfish 1.40.2
Mit Libguestfs auf Disk-Images virtueller Maschinen zugreifen und sie ändern
Stellen Sie sicher, dass die Gastcomputer ausgeschaltet sind. Sie dürfen die Live-Bilder aus keinem Grund verändern. Dies kann zu einer dauerhaften Beschädigung der Festplatte und Datenverlust führen. Sichern Sie immer die Disk-Images, bevor Sie Änderungen daran vornehmen.
1. Gastfischschale
Guestfish, kurz für Guest Filesystem Shell, ist eine interaktive Shell zum Bearbeiten von Dateisystemen und Disk-Images virtueller Maschinen.
1.1. Greifen Sie auf vorhandene Disk-Images zu und mounten Sie Gastdateisysteme manuell
Lassen Sie uns zuerst ein vorhandenes Disk-Image laden, um es zu inspizieren.
Führen Sie den folgenden Befehl aus, um in die interaktive Shell von guestfish zu gelangen:
$ guestfish
Beispielausgabe:
Welcome to guestfish, the guest filesystem shell for editing virtual machine filesystems and disk images. Type: ‘help’ for help on commands ‘man’ to read the manual ‘quit’ to quit the shell ><fs>
Hier, >
..und fügen Sie dann die Disk-Images mit dem Befehl hinzu:
><fs> add ~/CentOS_8_Server.img
Führen Sie als Nächstes den folgenden Befehl aus, um die Bibliothek zu initiieren und das Disk-Image anzuhängen (zu starten):
><fs> run
Beim ersten Mal dauert es ein paar Sekunden. Die nachfolgenden Starts werden viel schneller beendet.
Jetzt müssen Sie Gastdateisysteme manuell auflisten und einhängen.
Um die Liste der Dateisysteme auf der Festplatte anzuzeigen, führen Sie diesen Befehl an der Eingabeaufforderung von guestfish aus:
><fs> list-filesystems
Beispielausgabe:
/dev/sda1: ext4 /dev/cl/root: xfs /dev/cl/swap: swap
Mounten Sie ein Dateisystem:
><fs> mount /dev/cl/root /
Einhängepunkte anzeigen:
><fs> mountpoints /dev/cl/root: /
Mounten Sie auf ähnliche Weise die anderen Dateisysteme.
1.2. Greifen Sie auf vorhandene Disk-Images zu und mounten Sie Gastdateisysteme automatisch
Anstatt die Gastdateisysteme manuell aufzulisten und zu mounten, können Sie Guestfish die Bilder automatisch untersuchen und Dateisysteme mit -i mounten lassen kennzeichnen wie unten.
$ guestfish -a CentOS_8_Server.img -i
Hier,
- -a Der Parameter (--add) erkennt automatisch das Disk-Image-Format. Um dies zu überschreiben und ein bestimmtes Format anzugeben, verwenden Sie das --format Möglichkeit.
- -i (--inspector) - Inspiziert die Festplatten und mountet die Dateisysteme.
- CentOS_8_Server.img - Name des Disk-Images. Ich habe dieses Bild in meinem aktuellen Verzeichnis.
Dieser Befehl lädt das angegebene Image, mountet Gastdateisysteme und landet in der Guestfish-Shell.
Welcome to guestfish, the guest filesystem shell for editing virtual machine filesystems and disk images. Type: ‘help’ for help on commands ‘man’ to read the manual ‘quit’ to quit the shell Operating system: CentOS Linux release 8.2.2004 (Core) /dev/cl/root mounted on / /dev/sda1 mounted on /boot ><fs>
Wenn Sie das "-i" verwendet haben -Parameter müssen Sie Gastdateisysteme nicht manuell auflisten und einhängen. Die Dateisysteme werden automatisch gemountet. Außerdem müssen Sie die Bibliothek nicht selbst initiieren und das Disk-Image anhängen. Guestfish selbst kümmert sich darum.
1.3. Greifen Sie auf virtuelle Maschinen statt nur auf Disk-Images zu
Guestfish hat eine Option, um auf die virtuellen Maschinen (Domains) statt auf die Disk-Images zuzugreifen.
Rufen Sie zuerst den Namen der virtuellen Maschinen mit dem Befehl ab:
$ virsh list --all Id Name State -------------------------------- - centos8-uefi shut off - nginx_centos8 shut off
Um auf die VM mit dem Namen "centos8-uefi" zuzugreifen, verwenden Sie die Option -d oder --domain wie unten.
$ guestfish -d centos8-uefi -i
1.4. Anzeigen und Ändern des Inhalts von Disk-Images
Guestfish unterstützt Hunderte von Befehlen, um Disk-Images nach Belieben anzuzeigen und zu ändern. Sie werden überwältigt sein, wenn Sie sich die gesamte Manpage ansehen. Daher ist es besser, zuerst zu wissen, wie man Hilfe bekommt.
Alle Befehle auflisten
Wenn Sie nicht wissen, wo Sie anfangen sollen, rufen Sie einfach den Hilfebereich mit dem Befehl:
auf><fs> help
Um alle verfügbaren Befehle zusammen mit einer kurzen Beschreibung aufzulisten, führen Sie Folgendes aus:
><fs> help -l
Hilfe zu einem bestimmten Befehl erhalten
Um Hilfe zu einem beliebigen Befehl zu erhalten, zum Beispiel mkdir, führen Sie Folgendes aus:
<fs> help mkdir
Sehen wir uns nun einige Beispiele an.
Blockierte Geräte auflisten
Um alle Blockgeräte im Image aufzulisten, führen Sie Folgendes aus:
><fs> list-devices /dev/sda
Partitionen auflisten
Führen Sie Folgendes aus, um alle Partitionen aufzulisten, die auf allen Blockgeräten erkannt wurden:
><fs> list-partitions /dev/sda1 /dev/sda2
Verzeichnisinhalte auflisten
Um die Dateien in einem bestimmten Verzeichnis aufzulisten, führen Sie Folgendes aus:
><fs> ls /root .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
Dateiinhalt anzeigen
Um den Inhalt einer Datei anzuzeigen, führen Sie Folgendes aus:
><fs> cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Feb 6 06:43:28 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/cl-root / xfs defaults 0 0 UUID=5e675dd6-7f64-46cd-8535-3617f3cf870b /boot ext4 defaults 1 2 /dev/mapper/cl-swap swap swap defaults 0 0
Verzeichnisse erstellen
Der folgende Befehl erstellt ein Verzeichnis namens "ostechnix" im /root-Verzeichnis im Gastsystem.
><fs> mkdir /root/ostechnix
Leere Dateien erstellen
Gehen Sie wie folgt vor, um eine leere Datei auf dem Gastcomputer zu erstellen:
><fs> touch /root/ostechnix/file.txt
Überprüfen Sie, ob die Datei erstellt wurde:
><fs> ls /root/ostechnix/ file.txt
Dateien mit Inhalt erstellen
Um eine Datei mit einigen Inhalten zu erstellen, verwenden Sie write Befehl:
><fs> write /root/ostechnix/file2.txt https://ostechnix.com
Der obige Befehl erstellt file2.txt im Verzeichnis /root/ostechnix/ und schreibt „https://ostechnix.com“ hinein.
Sie können es mit dem "cat"-Befehl überprüfen:
><fs> cat /root/ostechnix/file2.txt https://ostechnix.com
Inhalte an vorhandene Dateien anhängen
Um neuen Inhalt an das Ende einer bereits erstellten Datei anzuhängen, verwenden Sie den Befehl „write-append“:
<fs> write-append /root/ostechnix/file2.txt /about
Der obige Befehl fügt das Wort "/about" am Ende des Inhalts von file1.txt hinzu.
Überprüfen Sie, ob die Zeile hinzugefügt wurde, verwenden Sie den cat-Befehl:
><fs> cat /root/ostechnix/file2.txt https:/ostechnix.com/about
Dateien bearbeiten
Um eine Datei auf dem Gastcomputer zu bearbeiten, verwenden Sie den Befehl „Bearbeiten“:
><fs> edit /root/ostechnix/file.txt
Die angegebene Datei wird im Standardeditor geöffnet.
Dateien und Verzeichnisse entfernen
So entfernen Sie eine Datei vom Gastcomputer:
><fs> rm /root/ostechnix/file2.txt ><fs> rm /root/ostechnix/file.txt
Verwenden Sie zum Entfernen eines Verzeichnisses den Befehl "rmdir":
><fs> rmdir /root/ostechnix/
Lokale Dateien oder Verzeichnisse in Disk-Image kopieren
Der "copy-in"-Befehl kopiert die lokalen Dateien oder Verzeichnisse rekursiv in das Disk-Image.
Der folgende Befehl kopiert die Datei ostechnix.txt vom lokalen System nach /root/ostechnix/ im Disk-Image.
<fs> copy-in ostechnix.txt /root/ostechnix/
Bestätigen Sie es mit ls Befehl:
<fs> ls /root/ostechnix/ file.txt ostechnix.txt
Kopieren Sie Dateien oder Verzeichnisse vom Disk-Image auf das Hostsystem
Ebenso können wir die Dateien oder Verzeichnisse von einem Disk-Image auf das lokale Hostsystem kopieren, indem wir den Befehl "copy-out" wie unten verwenden.
<fs> copy-out /root/ostechnix/ /home/sk/Downloads/
Im obigen Beispiel kopiere ich das Verzeichnis /root/ostechnix/ in das Verzeichnis Downloads im Hostsystem.
Dateien auf das Hostsystem herunterladen
Dies ist dasselbe wie der Befehl zum Herauskopieren.
Mit Guestfish können Sie Inhalte vom Gastcomputer auf den Hostcomputer herunterladen und hochladen und umgekehrt.
Die allgemeine Syntax zum Herunterladen von Dateien:
download <guest_file_location> <host_file_location>herunter
Der folgende Befehl lädt die Datei „/etc/fstab“ vom Gastcomputer in das Verzeichnis /home/sk/Downloads/ im KVM-Hostsystem herunter.
<fs> download /etc/fstab /home/sk/Downloads/fstab
Dateien vom Hostsystem auf das Gastsystem hochladen
Dies ist dasselbe wie der Copy-in-Befehl.
Führen Sie Folgendes aus, um eine Datei von Ihrem Hostsystem auf den Gastcomputer hochzuladen:
><fs> upload /home/sk/Downloads/fstab /etc/fstab
Hier lade ich /home/sk/Downloads/fstab hoch Datei von meinem lokalen System nach /etc/fstab in der Gastmaschine.
Gastfisch-Handbuchseite anzeigen
So zeigen Sie die Manpages von guestfish an:
><fs> man
Gastfisch verlassen
Um die Guestfish-Shell zu verlassen, führen Sie Folgendes aus:
><fs> exit
Was wir bisher gesehen haben, ist, dass wir auf vorhandene Disk-Images zugegriffen, diese gemountet, inspiziert und modifiziert haben. Guestfish kann Ihnen auch dabei helfen, sofort neue Disk-Images zu erstellen.
1.5. Erstellen neuer Disk-Images
Die folgenden Befehle sollten außerhalb der Guestfish-Shell ausgeführt werden. Mit anderen Worten, sie sollten in Ihrem Host-Terminal ausgeführt werden.
Denken Sie daran, dass wir die vorhandenen Bilder mit dem Parameter -a hinzugefügt haben? Ja. Um ein neues Disk-Image zu erstellen, gehen wir zu -N (--new) Parameter.
Um ein neues Disk-Image zu erstellen und es automatisch zu starten, führen Sie den folgenden Befehl von der Host-Terminal-Eingabeaufforderung aus (nicht in der Guestfish-Eingabeaufforderung):
$ guestfish -N fs
Dieser Befehl erstellt eine neue Festplatte mit dem Namen "test1.img" im aktuellen Verzeichnis und landen Sie in der Eingabeaufforderung von guestfish. Diese Festplatte enthält eine einzelne Partition mit einem leeren Dateisystem. Standardmäßig beträgt die Festplattengröße 1 GB . Wenn Sie denselben Befehl das nächste Mal ausführen, wird eine neue Festplatte namens „test2.img“ mit einer Größe von 1 GB usw. erstellt.
Anstatt einen 1G-Datenträger mit fester Größe zu erstellen, ist es auch möglich, ein Datenträger-Image mit benutzerdefinierter Größe zu erstellen.
So erstellen Sie eine leere 500 MB-Festplatte , ausführen:
$ guestfish -N disk:500M
Sie können auch ein Disk-Image erstellen, das mit einem bestimmten Dateisystem formatiert ist. Der folgende Befehl erstellt beispielsweise eine 1-GB-Festplatte mit einem ext4 -formatierte Partition namens test1.img im aktuellen Verzeichnis:
$ guestfish -N fs:ext4
Erstellen Sie eine 500-MB-Festplatte mit einem VFAT -formatierte Partition und mounten Sie sie:
$ guestfish -N fs:vfat:500M -m /dev/sda1
Erstellen Sie eine leere 500-MB-Festplatte mit dem Namen blankdisk.img (anstelle des Standardnamens test1.img):
$ guestfish -N blankdisk.img=disk:500M
1.6. Remote Disk Images hinzufügen
Wir können nicht nur lokale Disk-Images, sondern auch Disks hinzufügen, die sich auf einem entfernten SSH-, FTP-, HTTP- oder TFTP-Server befinden.
Fügen Sie eine Festplatte hinzu, die sich auf einem Remote-SSH-Server befindet:
$ guestfish -a ssh://[email protected]/disk.img
Ersetzen Sie den Benutzernamen und die IP-Adresse im obigen Befehl durch Ihre eigenen.
Fügen Sie eine Festplatte hinzu, die sich auf einem Remote-FTP-Server befindet:
$ guestfish -a ftp://[email protected]:port/disk.img
$ guestfish -a ftps://[email protected]:port/disk.img
Fügen Sie eine Festplatte hinzu, die sich auf einem Remote-HTTP-Server befindet:
$ guestfish -a http://[email protected]:port/disk.img
$ guestfish -a https://[email protected]:port/disk.img
Fügen Sie eine Festplatte hinzu, die sich auf einem entfernten TFTP-Server befindet:
$ guestfish -a tftp://[email protected]:port/disk.img
2. Greifen Sie auf Disk-Images zu, sehen Sie sie an und ändern Sie sie, ohne die Guestfish-Shell aufzurufen
Libguestfs bietet viele andere äquivalente Befehle, um auf Disk-Images zuzugreifen, sie anzuzeigen und zu ändern, ohne tatsächlich in die Guestfish-Shell einzutreten.
2.1. Gastmount
Der Guestmount-Befehl wird verwendet, um ein Gastdateisystem auf dem Host mit FUSE und libguestfs zu mounten.
Der folgende Befehl wird das centos8-uefi mounten Fullesystem des Gastcomputers in ~/guestvm/ im Hostsystem.
$ mkdir ~/guestvm/
$ sudo guestmount -d centos8-uefi -i ~/guestvm/
Überprüfen Sie den Inhalt des Mount-Verzeichnisses:
$ sudo ls -l ~/guestvm
Beispielausgabe:
total 16 lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin dr-xr-xr-x. 6 root root 4096 Jul 18 15:46 boot drwxr-xr-x. 2 root root 6 Jul 18 15:23 dev drwxr-xr-x. 78 root root 8192 Jul 25 17:54 etc drwxr-xr-x. 2 root root 6 May 11 2019 home lrwxrwxrwx. 1 root root 7 May 11 2019 lib -> usr/lib lrwxrwxrwx. 1 root root 9 May 11 2019 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 May 11 2019 media drwxr-xr-x. 2 root root 6 May 11 2019 mnt drwxr-xr-x. 2 root root 6 May 11 2019 opt drwxr-xr-x. 2 root root 6 Jul 18 15:23 proc dr-xr-x---. 2 root root 135 Jul 18 15:46 root drwxr-xr-x. 2 root root 6 Jul 18 15:23 run lrwxrwxrwx. 1 root root 8 May 11 2019 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 May 11 2019 srv drwxr-xr-x. 2 root root 6 Jul 18 15:23 sys drwxrwxrwt. 7 root root 119 Jul 25 18:44 tmp drwxr-xr-x. 12 root root 144 Jul 18 15:24 usr drwxr-xr-x. 20 root root 278 Jul 18 15:45 var
Führen Sie zum Aushängen Folgendes aus:
$ sudo umount ~/guestvm
Weitere Einzelheiten finden Sie in den Manpages.
$ man guestmount
2.2. virtuelle Katze
Virt-cat-Befehl wird ausgegeben, um den Inhalt einer Datei anzuzeigen, die in einem Disk-Image oder einer virtuellen Maschine gespeichert ist.
$ sudo virt-cat -a CentOS_8_Server.img /etc/fstab
Oder,
$ sudo virt-cat -d centos8-uefi /etc/fstab
Beispielausgabe:
# # /etc/fstab # Created by anaconda on Sat Jul 18 05:53:25 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/cl-root / xfs defaults 0 0 UUID=6a7f6481-5eb3-4589-ad19-b2291ddfcda1 /boot ext4 defaults 1 2 UUID=6906-5D0A /boot/efi vfat umask=0077,shortname=winnt 0 2 /dev/mapper/cl-swap swap swap defaults 0 0
2.3. virt-copy-in
Der Befehl Virt-copy-in wird verwendet, um Dateien und Verzeichnisse vom Host auf ein Disk-Image oder eine virtuelle Maschine zu kopieren.
$ sudo virt-copy-in -a CentOS_8_Server.img ostechnix.txt /root/
Oder,
$ sudo virt-copy-in -d centos8-uefi ostechnix.txt /root/
2.4. virt-copy-out
Der Befehl Virt-copy-out wird verwendet, um Dateien und Verzeichnisse aus einem Disk-Image oder einer virtuellen Maschine zu kopieren.
$ sudo virt-copy-out -a CentOS_8_Server.img /root/ostechnix.txt ~/Downloads
Oder,
$ sudo virt-copy-in -d centos8-uefi /root/ostechnix.txt ~/Downloads
Die obigen Befehle kopieren die Datei /root/ostechnix.txt von der Festplatte der virtuellen Maschine in das Verzeichnis ~/Downloads im lokalen Hostsystem.
2.4. virt-df
Der Befehl Virt-df zeigt den freien Speicherplatz auf dem Dateisystem eines Gastcomputers an.
Freien Speicherplatz auf einem Disk-Image anzeigen:
$ sudo virt-df -a CentOS_8_Server.img
Beispielausgabe:
Filesystem Size Used Available Use% CentOS_8_Server.img:/dev/sda1 976M 260M 649M 27% CentOS_8_Server.img:/dev/cl/root 17G 1.4G 16G 9%
Speicherplatz auf einer VM anzeigen:
$ sudo virt-copy-in -d centos8-uefi /root/ostechnix.txt ~/Downloads
Beispielausgabe:
Filesystem Size Used Available Use% centos8-uefi:/dev/sda1 599M 6.6M 592M 2% centos8-uefi:/dev/sda2 976M 121M 788M 13% centos8-uefi:/dev/cl/root 16G 1.2G 15G 8%
2.5. virt-edit
Bearbeiten Sie eine Datei in einem Disk-Image oder einer virtuellen Maschine.
$ sudo virt-edit -a CentOS_8_Server.img /root/ostechnix.txt
Oder,
$ sudo virt-edit -d centos8-uefi /root/ostechnix.txt
Dieser Befehl öffnet die Remote-Datei im Standard-Editor. Nehmen Sie einfach die Änderungen vor und speichern und schließen Sie die Datei.
2.6. virt-Dateisysteme
Dateisysteme, Partitionen, Blockgeräte, LVM in einer virtuellen Maschine oder einem Festplatten-Image auflisten.
$ sudo virt-filesystems -a CentOS_8_Server.img -l
Oder,
$ sudo virt-filesystems -d centos8-uefi -l
Beispielausgabe:
Name Type VFS Label Size Parent /dev/sda1 filesystem vfat - 629145600 - /dev/sda2 filesystem ext4 - 1073741824 - /dev/cl/root filesystem xfs - 17620271104 -
Um Partitionsdetails anzuzeigen, fügen Sie --partitions hinzu im obigen Befehl:
$ sudo virt-filesystems -d centos8-uefi --partitions /dev/sda1 /dev/sda2 /dev/sda3
Ebenso können Sie --logical-volumes verwenden , --volume-groups , --physical-volumes , --block-devices um diese Artikel aufzulisten.
2.7. Virt-Inspektor
Virt-Inspector wird verwendet, um die Betriebssystemversion und andere Informationen über ein Disk-Image oder eine virtuelle Maschine anzuzeigen.
$ sudo virt-inspector -a CentOS_8_Server.img
Oder,
$ sudo virt-inspector -d centos8-uefi
2.8. virt-ls
Virt-ls wird verwendet, um die Dateien und Verzeichnisse und ihre Größen, Attribute und Prüfsummen in einem Disk-Image oder einer virtuellen Maschine anzuzeigen.
$ sudo virt-ls -R -a CentOS_8_Server.img / | less
Oder,
$ sudo virt-ls -R -d centos8-uefi /root
Sie können die meisten der normalen "ls"-Befehlsoptionen/-flags mit dem Befehl virt-ls verwenden.
2.9. virt-log
Virt-log wird verwendet, um die Protokolldateien von einem Disk-Image oder einer virtuellen Maschine anzuzeigen.
$ sudo virt-log -a CentOS_8_Server.img
Oder,
$ sudo virt-log -d centos8-uefi
2.10. virtueller Schwanz
Der Virt-Tail-Befehl wird verwendet, um Protokolldateien in einem Disk-Image oder einer virtuellen Maschine zu folgen.
$ sudo virt-tail -a CentOS_8_Server.img /var/log/messages
Oder,
$ sudo virt-tail -d centos8-uefi /var/log/messages
Es stehen noch viele weitere Befehle zur Verfügung. Ich schlage vor, dass Sie auf die am Ende dieser Anleitung verlinkte libguestfs-Website verweisen.
Weiterlesen:
- Schnelles Erstellen von Images virtueller Maschinen mit Virt-builder
- Statistiken von Virtualisierungssystemen mit Virt-top unter Linux anzeigen
- So retten Sie virtuelle Maschinen mit Virt-Rescue
Fehlerbehebung
Hier sind die Lösungen für einige häufig auftretende Probleme.
1. libguestfs funktioniert nicht ohne Root-Rechte auf Ubuntu
Möglicherweise tritt dieser Fehler auf, wenn Sie versuchen, auf die Disk-Images unter Ubuntu zuzugreifen:
libguestfs: error: /usr/bin/supermin exited with error status 1. To see full error messages you may need to enable debugging. Do: export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 and run the command again. For further information, read: http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
Um dieses Problem zu beheben, führen Sie Folgendes aus:
$ sudo chmod 0644 /boot/vmlinuz*
Möglicherweise müssen Sie sich selbst zum kvm hinzufügen Gruppe:
$ sudo usermod -a -G kvm sk
Ersetzen Sie "sk" im obigen Befehl durch Ihren eigenen Benutzernamen.
- Wenn Sie bereits libvirt oder KVM auf Ihrem System installiert haben und versuchen, die libguesfs-Tools als Root-Benutzer zu verwenden, sollten Sie diesen Berechtigungsfehler sehen:
libguestfs: error: could not create appliance through libvirt. Try running qemu directly without libvirt using this environment variable: export LIBGUESTFS_BACKEND=direct Original error from libvirt: Cannot access backing file '/root/CentOS_8_Server.qcow2' of storage file '/tmp/libguestfsiPjmga/overlay1.qcow2' (as uid:107, gid:107): Permission denied [code=38 int1=13]
Dies wird durch libvirt verursacht und tritt daher nur auf, wenn das libvirt-Backend verwendet wird. Um dies zu beheben, wechseln Sie zum direkten Backend, indem Sie diese Umgebungsvariable setzen:
export LIBGUESTFS_BACKEND=direct
Um es dauerhaft zu machen, fügen Sie diese Zeile zu Ihrer ~/.bashrc hinzu Datei.