在Linux系统中,/etc/fstab
文件用于保存系统的磁盘挂载信息,如果该文件内容配置错误,将会导致系统启动失败。本文将介绍由于该文件配置错误导致系统启动异常的解决方案。
问题描述
在手动修改/etc/fstab
文件后,重启系统时发现系统无法正常启动,并且无法通过远程连接软件登录Linux实例。当使用VNC进行远程连接时,系统提示进入紧急模式(emergency mode),并显示相关错误信息,相关报错如下所示。
Alibaba Cloud Linux
CentOS
Ubuntu
问题原因
一般情况下,这种情况是由于/etc/fstab
文件中记录了错误的文件系统或磁盘分区信息所致。如果该配置文件中包含不正确的挂载信息,或者该文件本身存在访问错误,例如权限配置不当、文件丢失等,系统在启动时可能会出现异常,最终导致启动失败。
解决方案
本文所述配置及说明适用于Alibaba Cloud Linux 3/2、CentOS 6/7/8、Ubuntu 22.04/24.04 操作系统。其他操作系统版本的配置可能会有所不同,具体情况请参阅相应操作系统的官方文档。
以下操作为高危操作,如操作不当可能会引发数据丢失,为确保实例上的数据安全,建议您在操作前为实例创建快照或开启RDS日志备份等功能。相关操作,请参见创建快照。
如您对实例或数据进行修改、变更等风险操作,务必关注实例的容灾与容错能力,以确保数据的安全性。
如果您在阿里云平台上授权或提交过登录账号、密码等安全信息,建议您及时进行修改。
远程连接实例
使用VNC远程连接实例。具体操作,请参见使用VNC登录实例。
进入紧急模式
说明为修复因
/etc/fstab
文件配置错误导致的Linux实例无法启动,您需在紧急模式(emergency mode)下进行修复操作。如果当前实例已进入紧急模式,则可以跳过此步骤,直接执行后续操作以完成修复。按照以下操作步骤,修改GRUB配置以使系统进入紧急模式。
Alibaba Cloud Linux
重启实例,在实例启动过程中,当出现grub界面时,按e键进入编辑模式。
在GRUB配置中,将光标移动至以“linux”开头的配置行,然后按下
Ctrl+e
组合键,将光标移至该行配置文件的末尾,并在末尾添加如下内容。systemd.unit=emergency.target
添加完成后的内容如下所示。
添加完成之后按
Ctrl + x
组合键或按下F10
引导系统启动到紧急模式。进入紧急模式后按照提示输入root用户密码登录系统。
CentOS
重启实例,在实例启动过程中,当出现grub界面时,按e键进入编辑模式。
在GRUB配置中,将光标移动至以“linux”开头的配置行,然后按下
Ctrl+e
组合键,将光标移至该行配置文件的末尾,并在末尾添加如下内容。systemd.unit=emergency.target
添加完成后的内容如下所示。
添加完成之后按
Ctrl + x
组合键或按下F10
引导系统启动到紧急模式。进入紧急模式后按照提示输入root用户密码登录系统。
Ubuntu
重启实例,在实例启动过程中,当出现grub界面时,按e键进入编辑模式。
在GRUB配置中,将光标移动至以“linux”开头的配置行,然后按下
Ctrl+e
组合键,将光标移至该行配置文件的末尾,并在末尾添加如下内容。systemd.unit=emergency.target
添加完成后的内容如下所示。
添加完成之后按
Ctrl + x
组合键或按下F10
引导系统启动到紧急模式。进入紧急模式后按照提示输入root用户密码登录系统。
修正配置错误
运行以下命令,变更根分区的挂载模式为读写。
mount / -o remount,rw
运行
blkid
命令,查看ECS实例上磁盘的分区情况以及文件系统。如下图所示,ECS实例数据盘分区为/dev/xvdb1
,文件系统为ext4。运行以下命令,打开
/etc/fstab
文件。vim /etc/fstab
检查磁盘的分区信息与文件系统和上一步返回的结果是否一致。
(条件可选)如果信息有误, 将光标移到异常的参数行,按
i
键进入编辑模式,写入正确的分区信息,如下所示。/dev/xvdb1 /mydata ext4 defaults,nofail 0 0
说明您可以在挂载的时候添加
nofail
参数,这样在启动实例时,如果设备不存在,将会直接忽略该设备,从而避免发生报错。按Esc键退出编辑模式,并输入
:wq!
,按Enter键保存并退出。
验证修复结果
运行以下命令,以验证
/etc/fstab
中的配置信息是否已正确配置。mount -a
运行该命令后无任何报错信息,则说明配置正确。
重启操作系统
运行以下命令,重启系统,重启完成后即可成功登录系统。
reboot
相关文档
关于Linux实例上挂载云盘的具体操作,请参见Linux格式化数据盘。