umount: /dev/xvdb1: not mounted 磁盤卸載出現異常
【問題現象】
服務器中執行umount卸載命令時提示磁盤沒有掛載
[root@zxj ~]# umount /dev/xvdb1
umount: /dev/xvdb1: not mounted
【問題描述】
最開始接到用戶反饋問題描述如下
1)新添加了一塊數據盤,把數據盤掛載到了/home 目錄下
2)/home 目錄下原本是有文件的,導致原本的文件查看不到
【處理過程】
剛開始接到這個反饋,以為隻是簡單的同一個目錄掛載了兩個設備導致原本的文件被遮蓋,隻需要簡單的進行umount卸載後掛載的數據盤分區即可。
但是用戶反饋執行umount卸載時提示無法正常進行卸載。
而分區無法正常卸載一般可能的原因是有其他應用在占用分區,導致無法正常卸載,這種情況隻需要通過fuser或lsof命令進行一下檢測即可。但是用戶反饋通過這兩個命令檢測不到結果,df -h 查詢結果中磁盤已經是沒有掛載了。
此時通過電話和用戶進行了一下溝通,了解到用戶是之前在執行mount掛載數據盤導致原本的數據看不到之後,自己在網上已經搜索了資料,看到有篇文章中說明更改了mtab文件。不得不吐槽一下用戶找的是一個極其坑爹的文檔,原本很簡單umount命令就能搞定的事情,結果被弄得更加複雜。
【問題分析】
要解決用戶的這個問題,就需要清楚係統中幾個重要文件和命令之間的關係
1)/etc/fstab
作為一個係統運維,這個文件相對來說是接觸比較多的,是Linux磁盤分區自動掛載的配置文件,係統在開機時會通過讀取這個文件中的配置來對磁盤進行掛載,如果這個文件配置有問題,會在開機時導致係統無法正確讀取分區配置而引發啟動異常,一般異常的現象就是進行了修複模式,隻需要輸入密碼進入係統後手動調整fstab文件配置,然後重啟服務器即可修複
2)/etc/mtab
這個文件是係統的磁盤分區掛載狀態配置文件,當用戶在係統中直接執行mount命令對掛載狀態進行查詢時,其實就是讀取的/etc/mtab 文件中的配置狀態。df -h等查詢係統磁盤狀態的命令,也是要調用這個文件中的配置狀態。所以如果此文件配置出現問題,直接的異常現象就是mount 和 df 等查詢命令的查詢結果不準確
3)/proc/mounts
/proc 目錄是一個偽文件,這個目錄下的配置是存在內存中的,並不占用磁盤空間,也是能夠直觀的查看到係統中當前各個硬件設備的狀態信息。
【處理方案】
由於用戶把 /etc/mtab 文件中的數據盤掛載進行了刪除,所以就導致df -h 查詢時查看不到數據盤的掛載信息,然而其實這個時候數據盤仍然是掛載著的,但是由於係統讀取mtab文件時並沒有這個數據盤的掛載信息,所以就會出現umount: /dev/xvdb1: not mounted的這個報錯。隻需要把/proc/mounts 文件中記錄的掛載狀態重新寫入到 /etc/mtab 中,然後在按正常的卸載步驟對數據盤進行卸載即可。
【排查命令】
1)通過cat /etc/mtab 和 cat /proc/mounts 分別查看用戶修改的文件和內存中記錄的設備狀態信息,從查詢結果中來開,內存中其實還是有數據盤的這個掛載記錄的,也就是說當前這個數據盤還是正常掛載的狀態
2)把/proc/mounts查詢到的這個數據盤的掛載信息手動寫入到/etc/mtab 再次查詢mstab文件狀態如圖
4)再次執行umount已經可以正常卸載數據盤,文件狀態恢複正常
【總結】
問題其實並不是太複雜,關鍵點在於理清 /etc/fstab 、 /etc/mstab 、 /proc/mounts 、 df 、 mount幾個文件和命令之間的關係
最後更新:2017-08-29 17:33:13