首先對虛擬機的鏡像文件進行備份
問題:根分區/dev/mapper/centos-root 無法通過mount掛載
1. 通過xfs_repair 進行修復
首先取消掛載,umount /dev/mapper/centos-root
因爲根分區/dev/mapper/centos-root對應的實際時/dev/dm-0,所以我們可以通過xfs_check/xfs_repair來檢查一下,-n是指僅檢查不修復:
xfs_repair -n /dev/dm-0
可以看到我們的元數據還在,但是日誌和數據不一致,xfs默認會在掛載的時候修復這種不一致,操作系統給出的建議是以讀寫的方式掛載並自動修復,我們先嚐試以只讀不修複方式掛載文件系統,然後再試試以讀寫方式掛載並修復:
mount -o ro,norecovery /dev/dm-0 /data0
文件系統成功以只讀形式掛載,內容還在。
修復前,取消掛載 umount /dev/dm-0
然後通過xfs_repair /dev/dm-0 進行修復,如果修復失敗,
則用xfs_repair -L /dev/dm-0 進行強制修復,此過程有風險,會丟失部分文件;
修復後,通過mount命令掛載
mount /dev/dm-0 /data0
如果沒有報錯,則已修復完畢,通過reboot重啓,即可進入用戶界面
2. 通過xfs_repair -L /dev/dm-0 強制修復丟失的文件,進行恢復
方法:新開啓一臺虛擬機(最好用不同的底層鏡像文件),然後將之前備份的虛擬機文件當做磁盤掛載到新的虛擬機中
過程:
a) 通過virtual box的設置將文件進行掛載,可參考:https://www.youtube.com/watch?v=YtLLkUMlwSw,需翻牆
b) 設置完成後,打開虛擬機,新的磁盤/dev/sdb2沒有掛載,可通過手動mount進行掛載
mount -o ro,norecovery,nouuid /dev/recover/root /mnt
如果提示 mount: unknown filesystem type 'LVM_member',
需要安裝 lvm2: yum install lvm2,
並根據本人另一篇博客:Mounting LVM with same PV, LV, VG names as system(https://blog.csdn.net/bingtianxuedi111/article/details/102392865)進行mount
mount成功後,即可手動將丟失的文件拷貝出來。