天天看點

虛拟機xfs檔案系統因根分區爆滿損壞修複​

問題描述

虛拟機崩潰, 背景進去截圖這樣的:

虛拟機xfs檔案系統因根分區爆滿損壞修複​

且無法ssh遠端登入。裝置重新開機可以進入單使用者,但單使用者狀态也不正常。​

問題排查步驟​

1、根據問題描述,可以進單使用者,便進單使用者看看,通過進單使用者:​

在grub選擇核心界面選中目前核心,按E進入grub添加上rw init=/bin/bash cnotallow=tty0​

2、journal | less 檢視日志,發現在是檔案系統有問題​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

3、使用xfs_repaire -L /dev/mapper/klas-root (使用大L有風險,以後還是少用,因為可能會造成資料丢失,在萬不得已的情況下使用,建議先不加大L修複,如果修複失敗再使用大L嘗試修複)。​

4、修複之後 ,還是無法進去。會卡在log界面。​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

5、然後再用單使用者進去,這個時候檔案系統已經正常,可以挂載上分區。​

但通過df -hT 發現根目錄已經滿了,Use%=100,這也是導緻系統無法正常啟用的一個原因。​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

6、通過du –smh /* 排查到使用最大的目錄是var/log目錄。​

繼續進入裡面排查,排查造成根目錄滿的原因。使用du -smh /var/log/*發現在/var/log/ 中有一個檔案cron檔案有32G 異常的大。​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

7、檢視corn日志檔案裡面的資訊,全部是crontab服務的警告資訊。​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

問題解決步驟​

根據問題分析,找到造成此次虛拟機系統檔案系統損壞,無法正常進入作業系統的原因。為cron日志異常增大,且後續還在持續寫入,造成檔案系統損壞。​

先是通過進單使用者xfs_repair修複檔案系統,再是找到造成根分區爆滿的原因為corn日志異常的大。​

隻需要将corn日志清空即可:​

# cat /dev/null > /var/log/cron 可以清空日志。​

清空日志後,再測試重新開機作業系統,系統正常。​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

問題根因分析​

1、檢視cron相關的定時任務:​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

2、分析兩條定時任務:​

第一條:每天的01點運作rsync同步指令,同步到遠端主機中的指定目錄。​

-a:-a --archive :歸檔模式,表示遞歸傳輸并保持檔案屬性。等同于"-rtopgDl"。​

-v:-v:顯示rsync過程中詳細資訊。可以使用"-vvvv"擷取更詳細資訊。​

-z:-z :傳輸時進行壓縮提高效率。​

-P:-P 選項等效于 --partial --progress。 其目的是更容易為可能被中斷的長傳輸指定這兩個選項。(The -P option is equivalent to --partial --progress. Its purpose is to make it much easier to specify these two options for a long transfer that may be interrupted.)​

第二條:每天的23點運作指定腳本。​

腳本内容如下:​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

3、檢視系統message日志:​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

rsyslogd的日志不斷提示對檔案/var/log/corn寫入錯誤,裝置沒有足夠的空間。這是造成檔案系統損壞的根本原因。​

虛拟機xfs檔案系統因根分區爆滿損壞修複​

也能看到crond服務的警告報錯日志,此資訊在/var/log/cron檔案中全部都是。​

結論:故,造成此次檔案系統損壞的根本原因為:​

事件順序:定時任務存在文法或同步問題à不斷在/var/log/cron日志中寫入報錯日志à撐爆根目錄,造成檔案系統損壞。​

解決順序:單使用者xfs_repair修複檔案系統à單使用者清除/var/log/cron中的報錯資訊à排查問題根因。​

問題相關連結​

1、進單使用者:​

​​https://blog.csdn.net/qq_41526779/article/details/122378079​​​

2、xfs_repaire修複檔案系統:​

#https://www.cnblogs.com/linkenpark/p/7873202.html​