升級後重啓造成fsck.ext3: Unable to resolve UUID

今天在做服務器補丁部署,有一臺ESX4.1的服務器在升級後重啓過程中掛了,通過iLO口登陸看到如下信息:

fsck.ext3: Unable to resolve 'UUID=34d192db-17eb-442e-9613-c5c24c6fa9fa'

And

*** An error occurred during the file system check.

*** Dropping you to a shell; the system will reboot

*** when you leave the shell.

Original UUID

意識到這肯定和磁盤文件系統有關係,對於我等Linux菜鳥,當時及癱倒在地,不知所措。
其實這個問題是由於升級過程中發生了某些問題導致的,VMware暫時沒有給出Cause Root,但是有臨時解決辦法。

先收集必要的信息
遇到這種情況後,輸入root密碼進入修復模式(此時即便重啓,也無法正常使用,也無法進入排錯模式)。
輸入命令fsck,列出文件系統信息:

fsck

記錄每個“Unable to resolve”後邊的字符串,這是對應掛載點的UUID。


輸入命令cat /etc/fstab,列出文件系統表信息:

UUID=79815890-f11c-4907-80fe-d1cd6bf061f8 /        ext3    defaults                  1 1 
UUID=45460133-027b-40b6-8b4d-e52aaf4c417f /boot    ext3    defaults                  1 2 
None                    /dev/pts                   devpts  defaults                  0 0 
/dev/cdrom              /mnt/cdrom                 udf,iso9660 noauto,owner,kudzu,ro 0 0 
/dev/fd0                /mnt/floppy                auto    noauto,owner,kudzu        0 0 
None                    /proc                      proc    defaults                  0 0 
None                    /sys                       sysfs   defaults                  0 0 
UUID=34d192db-17eb-442e-9613-c5c24c6fa9fa /var/log ext3    defaults,errors=panic     1 2 
UUID=e32ec5f4-d795-414a-8d73-a2bb3ea86342 swap     swap    defaults                  0 0 

根據你的每個UUID找到對應的掛載點,例如上表中列出的。


輸入命令ls -l /dev/disk/by-uuid,列出磁盤跟UUID關係:

total 0

lrwxrwxrwx 1 root root 10 Nov 9 14:36 45460133-027b-40b6-8b4d-e52aaf4c417f -> ../../sdm1

lrwxrwxrwx 1 root root 10 Nov 9 14:36 e32ec5f4-d795-414a-8d73-a2bb3ea86342 -> ../../sdr1

lrwxrwxrwx 1 root root 10 Nov 9 14:36 34d192db-17eb-442e-9613-c5c24c6fa9fa -> ../../sdr2

lrwxrwxrwx 1 root root 10 Nov 9 14:36 79815890-f11c-4907-80fe-d1cd6bf061f8 -> ../../sdr5

找到對應的磁盤名稱,例如上表"../../sdr2"就代表"/dev/sdr2"
依次記錄每個有問題的UUID和其對應的磁盤名稱、掛載點名稱。

 

下面是修復階段

  • 給有問題的掛載點重新生成新的UUID。
    運行如下命令,再次確認UUID:
    1. # tune2fs -l 磁盤名稱 | grep UUID 

    磁盤名稱 - 即你要修復的磁盤名稱,例如上面表述中的"/dev/sdr2"

     

    運行如下命令,生成新的UUID

    1. tune2fs -U random 磁盤名稱 

    磁盤名稱 - 即你要修復的磁盤名稱,例如上面表述中的"/dev/sdr2"

     

    運行如下命令,驗證是否已生成新UUID:

    1. # tune2fs -l 磁盤名稱 | grep UUID 

    磁盤名稱 - 即你要修復的磁盤名稱,例如上面表述中的"/dev/sdr2"

     

    對每個有問題的掛載點運行如上命令,並記錄新的UUID。
    Repaire images

  • 更新文件系統表。
    運行如下命令,將根掛在爲可讀寫:
  1. mount / -o remount,rw 
  • 運行如下命令,打開fstab進行編輯,我們要把這個表裏舊的有問題UUID換成新的UUID。
    具體修改方法,找到舊的的UUID,直接刪除寫入新的UUID即可。最後別忘了保存!

    1. vi /etc/fstab 

    運行如下命令,將根掛載爲只讀:

    1. mount / -o remount,ro 
     
  • 重啓服務器。
    運行如下命令,重啓服務器:
    1. shutdown -r now  

    另外一種簡單的解決方法,重做系統....
    以上解決方法我已經在生產環境下的ESX4.1使用過。
    注意:如果出錯的文件系統與重要數據有關,最好小心一點兒,先備份數據,把共享的存儲關閉掉。

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章