全部產品
Search
文件中心

:Linux執行個體的/etc/fstab檔案配置錯誤導致系統啟動異常

更新時間:Jul 18, 2024

說明

本文檔可能包含第三方產品資訊,該資訊僅供參考。阿里雲對第三方產品的效能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾

問題描述

通過遠端連線軟體無法登入Linux執行個體,通過使用管理終端串連Linux執行個體遠端連線時,發現系統出現進入到急救模式(emergency mode)的資訊,且出現報錯。

  • CentOS執行個體報如下錯誤。

  • Ubuntu執行個體報如下錯誤。

    An error occurred while mounting /alidata.
    Press S to skip mounting or M for manual recovery

    具體資訊以下圖所示。 Ubuntu进入维护模式

問題原因

一般是因為/etc/fstab檔案中寫入了錯誤的檔案系統,或者磁碟的分區資訊不正確。/etc/fstab檔案主要用於儲存伺服器的磁碟掛載資訊,如果該設定檔中寫入不正確的掛載資訊或者該檔案自身存在訪問錯誤,例如:許可權配置、檔案丟失等,系統啟動時就可能出現異常,導致啟動失敗。

解決方案

說明
  • 如果您對執行個體或資料有修改、變更等風險操作,務必注意執行個體的容災、容錯能力,確保資料安全。

  • 如果您對執行個體(包括但不限於ECS、RDS)等進行配置與資料修改,建議提前建立快照或開啟RDS記錄備份等功能。

  • 如果您在阿里雲平台授權或者提交過登入帳號、密碼等安全資訊,建議您及時修改。

本節主要解決CentOS和Ubuntu系統因為/etc/fstab設定檔錯誤導致啟動失敗的解決方案。

說明

本文相關配置及說明適用於CentOS6.5、CentOS7.0、Ubuntu12.04和Ubuntu14.04等作業系統。在其它作業系統版本上的配置可能有所差異,具體情況請參閱相應作業系統官方文檔。

CentOS執行個體

本文主要介紹以下兩種方法解決該問題,推薦您使用方法一

方法一

  1. 通過使用管理終端串連Linux執行個體遠端連線ECS執行個體。系統提示進入急救模式時,輸入執行個體登入密碼。

  2. 執行以下命令,將根分區的掛載模式變更為讀寫。

    mount / -o remount,rw
  3. 執行blkid命令,查看ECS執行個體上磁碟的分區情況以及檔案系統。如下圖所示,ECS執行個體資料盤分區為/dev/xvdb1,檔案系統類型為ext4。

  4. 執行以下命令,檢查磁碟的分區資訊與檔案系統和上一步返回的結果是否一致。

    vim /etc/fstab
  5. 如果不一致,按以下步驟進行修改。

    1. 將游標移到異常的參數行,按i鍵進入編輯模式,寫入正確的分區資訊,如下所示。

      /dev/xvdb1 /mydata ext4 defaults,nofail 0 0
      說明

      建議您在掛載的時候添加nofail參數,在啟動執行個體時,若裝置不存在會直接忽略它,從而不發生報錯。

    2. Esc鍵退出編輯模式,並輸入:wq!,按Enter鍵儲存並退出。

  6. 執行reboot命令,重啟系統,確認能成功登入系統。

方法二

  1. 在ECS控制台重啟執行個體(或者強制重啟樣本),然後使用VNC串連執行個體,當系統啟動至核心選項介面時,按e鍵進入修改grub引導檔案。

  2. 將游標定位至Linux核心參數行,刪除其餘核心參數,添加rw init=/bin/bash參數,如下圖所示,然後按Ctrlx鍵,進入單一使用者模式。

  3. 參見方法一的第3步至第6步,修改/etc/fstab配置後,重啟執行個體即可。

Ubuntu執行個體

方法一

  1. 通過使用管理終端串連Linux執行個體遠端連線ECS執行個體。

  2. S鍵跳過磁碟掛載,進入系統。

  3. 執行如下命令,變更根分區的掛載模式為讀寫。

    mount / -o remount,rw
  4. 執行blkid命令,查看ECS執行個體上磁碟的分區情況以及檔案系統。如下圖所示,ECS執行個體資料盤分區為/dev/xvdb1,檔案系統為ext4。

  5. 執行如下命令,檢查磁碟的分區資訊與檔案系統和上一步返回的結果是否一致。

    vim /etc/fstab
  6. 如果不一致,按以下步驟修改。

    1. 將游標移到異常的參數行,按i鍵進入編輯模式,寫入正確的分區資訊,如下所示。

      /dev/xvdb1 /mydata ext4 defaults,nofail 0 0
      說明

      建議您在掛載的時候添加nofail參數,在啟動執行個體時,若裝置不存在會直接忽略它,從而不發生報錯。

    2. Esc鍵退出編輯模式,並輸入:wq!,按Enter鍵儲存並退出。

  7. 執行reboot命令,重啟系統,確認能成功登入系統。

方法二

具體操作請參見CentOS執行個體的方法二

相關文檔

關於Linux執行個體上掛載雲端硬碟的具體操作,請參見Linux格式化資料盤

適用於

  • Elastic Compute Service