So führen Sie fsck auf Gast-VMs von KVM aus aus

7

Ich habe einen KVM-Server und einer meiner Gastcomputer ist abgestürzt und fordert zur Überprüfung des Formulars auf. Jetzt habe ich keinen Konsolenzugriff oder keinen Root-Zugriff der Gast-VM.

Gibt es eine Möglichkeit, den fsck vom Hypervisor aus auszuführen?

Ich benutze Centos 6.1 als meinen Hypervisor

kiran
quelle

Antworten:

13

Installieren Sie libguestfs:

# yum install libguestfs-tools

Verwenden Sie guestfish, um das Disk-Image zu öffnen:

# guestfish -a /path/to/diskimage.img

Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell   
<fs> run
<fs> list-filesystems
/dev/vda1: ext4
/dev/system/lv_root: ext4
/dev/system/lv_swap: swap

und fsck das problematische Dateisystem:

<fs> fsck /dev/system/lv_root
fsck should have 2 parameter(s)
type 'help fsck' for help on fsck
<fs> fsck  ext4 /dev/system/lv_root
...

Viel Glück!

mrc
quelle
+1 sieht aus wie eine interessante Reihe von Werkzeugen zum Ausprobieren
Coops
In debian7 für mich gebrochen.
Sjas
Das sah vielversprechend aus, aber leider erhalte ich beim Eingeben von "run" den folgenden Fehler : libguestfs: error: /usr/bin/supermin exited with error status 1.. Dies geschieht mit Ubuntu 16.04.
user30747
Als ich "run" eingab, bekam ich den Fehler "libvirt: XML-RPC-Fehler: Socket konnte nicht mit '/ var / run / libvirt / libvirt-sock' verbunden werden: Keine solche Datei oder kein solches Verzeichnis ...", aber das wurde behoben durch Feststellung, dass libvirtd nicht ausgeführt wurde. Nach "systemctl start libvirtd" hat es funktioniert. Danke @mrc
sdjuan
3

Möglicherweise können Sie die Datei auf der Loopback-Schnittstelle bereitstellen und überprüfen. Verwenden Sie auf der Website www.ingent.net/en/tag/kvm/ :

losetup -f
/dev/loop0

... um zu sehen, dass loop0 hier das nächste freie Gerät ist, weisen Sie das Disk-Image diesem Punkt zu.

losetup /dev/loop0 disk.raw

kpartx wird verwendet, um Geräte für den Zugriff darauf zu erstellen.

kpartx -av /dev/loop0

Dann sollten Sie in der Lage sein, fsck zu verwenden.

fsck.ext3 -f /dev/mapper/loop0p1
fsck.ext3 -f /dev/mapper/loop0p2

...und so weiter. Auf dieser Seite geht es darum, Systeme für die Ausführung unter KVM zu konvertieren. In diesem oben genannten Teil sind Sie jedoch möglicherweise auf dem richtigen Weg, eine fsck-Reparatur durchzuführen. Ich möchte die Warnung hinzufügen, dass Sie dies mit einer Kopie Ihrer Bilddatei anstelle der Basisbilddatei tun sollten , nur für den Fall, dass etwas schief geht.

Bart Silverstrim
quelle
Dies wird nur auf Rohbildern funktionieren, nicht auf qcow2
dyasny
Auf lange Sicht konnte das Bild in roh konvertiert, fsck'd und dann zurück konvertiert werden. Kreisverkehr, könnte aber funktionieren.
Bart Silverstrim
1
kann Tage dauern, wenn das Bild groß ist und / oder sich auf einem langsamen
Mittagessen befindet
3
Achselzucken, wenn es funktioniert, wenn andere Optionen fehlschlagen ... es ist immer noch etwas, das versucht werden könnte.
Bart Silverstrim
2
sync; kpartx -dv /dev/loop0; losetup -d /dev/loop0
Um
1

Abgesehen von dem, was Bart Silverstrim vorgeschlagen hat, kann ich zwei Möglichkeiten sehen:

  1. Verwenden Sie libguestfs, um die Bilder zu mounten und zu bearbeiten
  2. Starten Sie die VM mit einer LiveCD-ISO und setzen Sie entweder das fsck-Flag zurück oder führen Sie es mit der liveCD aus
dyasny
quelle