Auf meinem Proxmox 6.4-Host hatte ich einen 250 GB großen LVM Thin Pool. Ich habe darauf eine Ubuntu-VM erstellt (die LVM auch für die Root-Partition verwendete), diese aber versehentlich überbucht, sodass der PV innerhalb der VM auf 500 GB eingestellt wurde.
Eine Zeit lang lief alles prima, bis ich das versteckte 250-GB-Limit überschritten habe und die VM mit einem E/A-Fehler abstürzte und sich weigerte zu booten. Also versuche ich jetzt, die Festplatte wiederherzustellen. Die Partitionstabelle der Festplatte scheint intakt zu sein:
$ fdisk -l /dev/vm-disks/vm-101-disk-0
Disk /dev/vm-disks/vm-101-disk-0: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 30874BBC-0B29-4083-B5BF-E973C665D87F
Device Start End Sectors Size Type
/dev/vm-disks/vm-101-disk-0p1 2048 4095 2048 1M BIOS boot
/dev/vm-disks/vm-101-disk-0p2 4096 2101247 2097152 1G Linux filesystem
/dev/vm-disks/vm-101-disk-0p3 2101248 1048573951 1046472704 499G Linux filesystem
Ich bin gelaufen
$ kpartx -a /dev/vm-disks/vm-101-disk-0
/dev/mapper
um Einträge für die 3 Partitionen darin zu erstellen vm-101-disk-0
, und das funktioniert. Wenn ich ausführe:
$ file -sL /dev/mapper/vm--disks-vm--101--disk--0p3
/dev/mapper/vm--disks-vm--101--disk--0p3: LVM2 PV (Linux Logical Volume Manager), UUID: fdOzWR-sPcy-hyYo-Lj2H-YEnZ-wK3c-J6biES, size: 535794024448
Dann kann ich dieses PV in der 3. Partition der Festplatte sehen. Aber wie kann ich es irgendwo im Host mounten, um mit der Datenwiederherstellung zu beginnen? Offensichtlich pvscan
sieht das Hostsystem es nicht, da es sich in einem anderen LV befindet. Habe ich hier überhaupt Optionen zur Wiederherstellung oder bedeutete die Tatsache, dass die VM dachte, sie hätte 500 GB, obwohl das in Wirklichkeit nicht der Fall war, dass ich es irreparabel beschädigt habe?
Antwort1
Die VM hat gerade Schreib-E/A-Fehler bekommen, als der Speicherplatz im Thin Pool erschöpft war. Bei einer VM sieht das so aus, als ob die Festplatte unerwartet alle Schreibvorgänge verweigert hat. Wenn die VM also reine Hardware war, bestand die erste Aktion darin, die neue Festplatte zu finden und diese fehlerhafte Festplatte darauf zu klonen. Nachdem die Hardware repariert ist, können Sie die logischen Strukturen reparieren.
Bei virtuellen Maschinen haben Sie keine defekte Hardware. Sie können die „Festplatte“ „reparieren“, indem Sie den Thin-Volume-Betrieb wiederherstellen. Vergrößern Sie einfach den Thin-Pool und verwenden Sie ihn lvextend
auf dem Thin-Pool-LV, um etwas Speicherplatz hinzuzufügen.
Und wenn es fertig ist, booten Sie die VM von einem (virtuellen) Wiederherstellungsmedium und führen Sie eine Standardwiederherstellung des Dateisystems durch. Denken Sie daran, dass es nicht allzu schwierig sein kann; moderne Dateisysteme sind im Allgemeinen so ausgelegt, dass sie dieser Art von Fehler standhalten.
Überwachen Sie den Thin LVM. Obwohl die Erschöpfung des Datenspeicherplatzes kein so großes Problem darstellt,MetadatenErschöpfung kann einen viel größeren Einfluss haben. Lassen Sie das nicht zu.