GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Greifen Sie mit Libguestfs auf Disk-Images virtueller Maschinen zu und ändern Sie sie

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, > gibt den Guestfish-Prompt an.

..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.

  1. 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.


Linux
  1. Wie konvertiere ich VMDK (Virtual Machine Disk) mit VBoxManage in VDI?

  2. Wie verwendet man libguestfs-Tools zum Bearbeiten von Disk-Images virtueller Maschinen (VM) in CentOS/RHEL/Fedora?

  3. [Gelöst]:Wie verhindert man, dass die Uhr der virtuellen Maschine mit der Host-Maschine synchronisiert wird, und stellt eine unabhängige Uhrzeit ein?

  4. Erweitern und verkleinern Sie Volumes mit der Datenträgerverwaltung

  5. Starten Sie ein natives Betriebssystem auf einer Festplatte als virtuelle Maschine

So exportieren und importieren Sie virtuelle KVM-Maschinen unter Linux

So klonen Sie eine virtuelle Maschine in VirtualBox

So erstellen Sie eine virtuelle Maschine mit Vagrant und VirtualBox

Erste Schritte mit Vagrant und VirtualBox – Teil 1

Migrieren Sie die virtuelle Maschine von VMware ESXi zu Proxmox VE

So erhöhen Sie den virtuellen Speicherplatz der VM auf VirtualBox und VMware