Linux实例的/etc/fstab文件配置错误导致系统启动异常问题解决方法

更新时间:
复制为 MD 格式

Linux系统中,/etc/fstab文件用于配置文件系统的自动挂载信息。如果未正确配置要自动挂载的文件系统信息或者存在已不可用的文件系统信息,重启系统后可能导致ECS实例的操作系统无法正常启动。

说明

若您想了解/etc/fstab文件中的配置信息,请单击fstab文件介绍。

fstab文件介绍

#
# /etc/fstab
# Created by anaconda on Fri Jun 28 04:16:23 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#<file system>                                 <dir>   <type>  <options>       <dump> <pass>
UUID=c8b5b2da-55xxx07573e22  /               ext4    defaults        1       1

fstab文件中每个字段的含义如下:

  • file system:指定要挂载分区的文件系统UUID。例如UUID=xxxx-xxxx。

  • dir:挂载点。

  • type:要挂载分区的文件系统的类型,如ext4、xfs等。

  • options:挂载参数,一般情况下使用defaults参数,如果需要使用多个参数,通过英文逗号(,)分隔。一些常用的挂载参数如下:

    挂载项

    挂载项描述

    defaults

    使用文件系统的默认挂载参数,多个选项之间用逗号分隔。例如ext4文件类型的默认参数为:rw,suid,dev,exec,auto,nouser,async

    rw

    以读写模式挂载文件系统。

    ro

    以只读模式挂载文件系统。

    auto

    在启动时或执行mount -a命令时自动挂载。

    noauto

    只能在命令下被挂载。

    suid

    允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。

    nosuid

    禁止 suid 操作和设定 sgid 位。

    dev

    解析文件系统上的块设备。

    nodev

    不解析文件系统上的块设备。

    exec

    允许执行挂载点上的可执行文件。

    noexec

    不允许执行挂载点上的可执行文件。

    nouser

    只能被 root 挂载。

    async

    I/O 异步进行。

    sync

    I/O 同步进行。

    nofail

    在启动实例时,如果设备不存在,将会直接忽略该设备,从而避免发生报错。

  • dump:dump工具通过该值来判断是否对该文件系统进行备份。设置为0表示不进行备份,设置为1表示需要进行备份。

  • pass:fsck根据该值来确定文件系统的检查顺序,数值越小,表示检查越优先进行。通常情况下,根文件系统的设置为1,而其他文件系统则设置为2或更大的数值。对于不需要进行检查的分区,可以将其设置为0。

常见原因

  • 云盘卸载或重新初始化之前,未修改fstab文件配置,导致fstab存在多余的文件系统自动挂载信息。

  • 文件系统的设备名或UUID配置错误。

  • 文件系统对应的文件类型配置错误。

  • 挂载参数填写错误。

解决方案

  1. 使用VNC登录存在问题的ECS实例,具体操作,请参见通过VNC连接实例

    说明

    由于系统已进入紧急模式,您需手动输入root用户的密码登录系统。

  2. 备份/etc/fstab文件。

    cp /etc/fstab /etc/fstab.bak
  3. 执行以下命令,查看所有云盘的挂载情况,包括分区设备名称、文件系统类型、挂载点。

    df -Th 
    [root@iZxxxq8Z ~]# df -Th
    Filesystem      Type      Size  Used Avail Use% Mounted on
    devtmpfs        devtmpfs  868M     0  868M   0% /dev
    tmpfs           tmpfs     879M     0  879M   0% /dev/shm
    tmpfs           tmpfs     879M  496K  878M   1% /run
    tmpfs           tmpfs     879M     0  879M   0% /sys/fs/cgroup
    /dev/vda1       ext4       40G  2.2G   36G   6% /
    tmpfs           tmpfs     176M     0  176M   0% /run/user/0
    /dev/vdb1       ext4       30G   45M   28G   1% /mnt
    /dev/vdb2       ext4      9.8G   37M  9.2G   1% /tmp
  4. 执行以下命令,查看/etc/fstab中文件系统的自动挂载信息。

    cat /etc/fstab
    [root@iZ2xxxgq8Z ~]# cat /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Fri Jun 28 04:16:23 2024
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=c8b5b2da-5xxx8b07573e22 /                       ext4    defaults        1 1
    UUID=f77303eb-4xxx77378b9ce1 /mnt ext4 defaults 0 0
    UUID=c40c6d63-7xxx3ea8df22d7 /tmp ext4 defaults 0 0
  5. 对比/etc/fstab文件和步骤3的挂载点信息,删除/etc/fstab文件中多余的配置行。

  6. (可选)若您希望将步骤3中未显示的云盘分区配置为开机自动挂载,请参见fstab文件中配置UUID方式自动挂载数据盘

  7. 运行以下命令,重启系统。

    reboot