問題說明
某天重啟虛擬機 Ubuntu,發現虛擬機只有容器IP,橋接的接口在虛擬機顯示狀態為 DOWN:
想重啟進入恢復模式,卻發現恢復模式一直花屏,無法使用:
沒有辦法了,只能想辦法提取原有系統內原有文件。
解決方案
- 定位虛擬機編號:
-
找到虛擬機主硬盤:
SSH 登錄宿主機,執行以下命令ls -al /dev/mapper/
通常使用默認的 BIOS 啟動類型,只會有一個硬盤,此處我使用 UEFI 啟動類型,0號硬盤是 EFI 分區,所以是1號硬盤。 -
先將硬盤轉為 qcow2 格式
qemu-img convert -p -O qcow2 -c /dev/mapper/pve-vm--101-disk--0 ubuntu.qcow2
其中,
-c
選項為壓縮,僅支持 qcow2 格式, 這樣生成的文件大小會比較小。 -
再將 qcow2 格式硬盤轉為 img 格式
qemu-img convert -p -f qcow2 -O raw ubuntu.qcow2 ubuntu.img
-
掛載 img 鏡像文件
使用fdisk -lu ubuntu.img
查看鏡像內情況:
可以看到第一個分區是 EFI 分區,跳過不處理;需要掛載第二個分區;
可以得知第二個分區的起始位置是在整個磁盤的第 2203648 扇區(從0計數),而每一個扇區大小是 512 字節,所以,第二個分區的偏移量是 2203648 * 512 = 1128267776。
為了掛載第二個分區,使用以下命令:mkdir ubuntu mount -o loop,offset=1128267776 ubuntu.img ubuntu
-
掛載結束,進入文件夾查看鏡像文件
cd ubuntu ls
掛載成功,教程結束。