Stories

Detail Return Return

Linux卡在emergency mode怎麼辦?xfs_repair 命令輕鬆解決 - Stories Detail

前言

用Linux虛擬機時,有時會出現突然卡在“emergency mode(緊急模式)”,重啓幾次都沒用的情況。多半是因為“磁盤掛載出問題”,今天講講怎麼輕鬆解決這個問題。

一、什麼是Linux緊急模式?——系統的“安全避難所”

Linux的緊急模式,相當於系統的“安全避難所”:當系統啓動時,發現“核心功能沒法正常運行”(比如磁盤讀不出、掛載失敗),為了避免進一步損壞數據,會自動進入這個模式。

緊急模式下,系統只加載最基礎的功能(比如命令行),讓你能通過指令找到故障原因,而不是直接“罷工”導致數據丟失。

注意:緊急模式不是“故障”,而是系統的“自我保護機制”,它在告訴你“有問題需要處理”,只要找到根源,很快就能恢復正常。

二、為什麼會進入緊急模式?多數是“磁盤掛載惹的禍”

虛擬機進入緊急模式的原因有很多,但最常見的,一般是的“掛載/dev/xxx出錯”——我們先搞懂“掛載”是什麼,再看為什麼會出錯。

1. “掛載”:給磁盤找個“入口”

Linux裏的磁盤(比如/dev/sda1、/dev/vda2)就像“沒貼門牌號的倉庫”,系統沒法直接訪問裏面的文件;而“掛載”就是給這個倉庫貼“門牌號”(比如掛載到/mnt目錄),讓系統能通過“門牌號”找到倉庫,讀取裏面的內容。

比如你要訪問U盤裏的文件,需要先把U盤掛載到某個目錄(如/media/usb),系統才能通過這個目錄找到U盤裏的數據——掛載就是“給存儲設備找訪問入口”的過程。

2. 掛載出錯的3個常見原因,對症才好修

虛擬機啓動時,會按配置文件(比如/etc/fstab)裏的設置,自動掛載指定的磁盤。如果掛載失敗,就會觸發緊急模式,常見原因有3個:

  • 磁盤文件系統損壞:就像倉庫裏的貨架塌了,裏面的東西亂了,系統沒法正常讀取——比如突然斷電、虛擬機異常關機,都可能導致XFS、EXT4等文件系統損壞(文檔裏用xfs_repair修復,説明是XFS文件系統);
  • 磁盤路徑變了:比如之前掛載的是/dev/vda1,後來虛擬機配置變了,磁盤路徑變成/dev/vdb1,系統按舊路徑找,自然找不到;
  • 配置文件寫錯了:/etc/fstab裏的掛載配置(比如磁盤路徑、掛載點、文件系統類型)填錯了,系統按錯誤配置掛載,肯定會失敗。

我們一般可以通過journalctl這個命令查詢報錯原因,就是通過日誌來排查緊急模式的問題。

三、分步修復:從進入緊急模式到重啓恢復,3步搞定

遇到緊急模式不用慌,按“查原因→修故障→重啓驗證”的步驟來,多數情況10分鐘內就能解決:

第一步:進入緊急模式,獲取操作權限

虛擬機啓動後,會自動進入緊急模式界面,通常會提示

Give root password for maintenance (or press Control+D to continue): 

輸入root用户的密碼,按回車,就能進入命令行操作界面。

如果按Ctrl+D,系統會嘗試繼續啓動,但多數情況會再次回到緊急模式,所以建議直接輸入root密碼,進入命令行排查。

第二步:查日誌找故障磁盤,用xfs_repair修復

這一步是核心!先通過日誌確認“哪個磁盤掛載失敗”,再修復損壞的文件系統:

(1)查日誌:定位“出問題的磁盤”

在命令行輸入journalctl -xb,按回車——這個命令會顯示系統啓動的詳細日誌,就像“查看事故現場記錄”。
翻日誌時,重點找包含 “mount” “error” “/dev/xxx” 的內容(比如“mount: /mnt: can't find in /etc/fstab.”或“XFS error”),找到類似“掛載/dev/vda1失敗”的報錯,記下這個磁盤路徑(比如/dev/vda1)。
在這裏插入圖片描述

(2)修復磁盤:用xfs_repair修復XFS文件系統

如果日誌顯示是XFS文件系統損壞(比如報錯裏有“XFS”),就用xfs_repair命令修復,步驟如下:

  1. 輸入命令xfs_repair -v -L /dev/xxx(把/dev/xxx換成你找到的故障磁盤路徑,比如/dev/vda1),按回車;

    • -v:顯示修復過程的詳細信息,讓你知道修復到哪一步了;
    • -L:強制清除日誌(如果日誌損壞導致修復卡住,這個參數很有用,但注意:只在XFS文件系統下用,其他文件系統別用);
  2. 等待修復完成——如果磁盤損壞不嚴重,幾分鐘就能結束,修復成功會顯示“Phase 6 - check inode connectivity... done”等提示;
  3. 如果是EXT4文件系統(不是XFS),可以用e2fsck -f /dev/xxx修復(注意:不同文件系統用不同工具,別混用)。

第三步:重啓虛擬機,驗證是否恢復

修復完成後,輸入reboot命令,按回車重啓虛擬機——系統會重新嘗試掛載磁盤,如果修復成功,就能正常進入桌面或命令行界面,不會再觸發緊急模式。

如果重啓後還是進入緊急模式,説明還有其他問題(比如配置文件寫錯了),可以再次進入緊急模式,檢查/etc/fstab文件(輸入cat /etc/fstab查看配置),確認磁盤路徑、掛載點、文件系統類型是否正確,修改後再重啓。

四、預防建議:3個小習慣,減少緊急模式概率

修復完成後,養成這3個習慣,能減少以後進入緊急模式的概率:

  • 避免異常關機:虛擬機不用時,按正常流程關機(比如shutdown -h now命令),別直接關掉虛擬機電源,防止磁盤文件系統損壞;
  • 定期備份配置文件:把/etc/fstab(掛載配置文件)備份一份(比如cp /etc/fstab /etc/fstab.bak),萬一配置寫錯,能恢復到舊版本;
  • 啓動前檢查磁盤:如果虛擬機很久沒開,可以先進入單用户模式(啓動時按e編輯啓動參數,加“single”),用xfs_repair -n /dev/xxx(-n表示只檢查不修復)檢查磁盤,提前發現問題。

五、總結

Linux虛擬機進入緊急模式是系統在“提醒你修問題”。只要記住“先查日誌找故障磁盤,再用對應工具修復,最後重啓驗證”的邏輯,就能輕鬆解決。

user avatar dingtongya Avatar u_17037082 Avatar anchen_5c17815319fb5 Avatar yulong1992 Avatar junxiudetuoba Avatar lyhabc Avatar ruanjiankaifa_xiaofanya Avatar laughingzhu Avatar kalii Avatar tuantuantuanzi Avatar rentian Avatar huopodeyaokongqi_c3jobz Avatar
Favorites 13 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.