Lvm
恢復嵌套 PV
在我的 Proxmox 6.4 主機上,我有一個 250GB 大的 LVM 精簡池。我在上面創建了一個 Ubuntu VM(它也使用 LVM 作為根分區),但不小心超額訂閱了它,因此 VM 內的 PV 設置為 500GB。
一切都執行了一段時間,直到我超過了隱藏的 250GB 限制,VM 因 I/O 錯誤而崩潰並拒絕啟動。所以現在我正在嘗試恢復磁碟。磁碟的分區表似乎完好無損:
$ 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
我跑了
$ kpartx -a /dev/vm-disks/vm-101-disk-0
/dev/mapper
為裡面的 3 個分區創建條目vm-101-disk-0
,這很有效。如果我執行:$ 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
然後我可以在磁碟的第三個分區內看到那個 PV。但是我怎樣才能將它安裝在主機的某個地方以開始恢復數據呢?顯然
pvscan
從主機系統看不到它,因為它在另一個 LV 內。我在這裡是否有任何恢復選項,或者虛擬機認為它有 500GB 的事實實際上並不意味著我已經將其損壞到無法修復?
當精簡池中的空間耗盡時,VM 剛剛出現寫入 I/O 錯誤。對於 VM,這看起來像硬碟意外拒絕所有寫入。因此,如果虛擬機是裸硬體,首先要做的就是找到新的硬碟並將這個壞的硬碟複製到其中。硬體修復後,您可以修復邏輯結構。
在虛擬機的情況下,您沒有任何損壞的硬體,您可以通過恢復精簡卷操作來“修復”“硬碟”。只需擴大精簡池,
lvextend
在精簡池LV上使用以增加一些空間。並且,完成後,從一些恢復(虛擬)媒體啟動 VM 並執行標准文件系統恢復。記住,不會有太大的困難;現代文件系統通常旨在承受這種故障。
監控瘦 LVM。雖然數據空間耗盡不是一個大問題,但元數據耗盡可能會產生更大的影響。不要讓這種情況發生。