Linux 实例配置云磁盘重启自动挂载
概述
Linux 实例可通过在/etc/fstab文件中配置数据盘开机自动挂载。否则,每次重启都需手动执行命令挂载文件系统,才能恢复对盘内文件的访问。
注意:
对于一台配有多块云磁盘的 Linux 实例,重启后可能因卷标顺序发生变化,导致各个挂载点下的文件系统不一致。主要原因为Linux 系统对磁盘的扫描机制不保证卷标和块设备之间稳定的映射关系。在 Linux 中,这种映射关系取决于三个因素的综合作用:磁盘驱动程序的加载顺序、主机 PCI 插槽的检测顺序和磁盘本身的插入顺序。举例: Linux 实例开机之前就挂载好的一块云磁盘,假设它的驱动程序最先被加载,同时硬件上最先被 PCI 检测到信号,则它就占有靠前的卷标。
可通过以下配置方式配置 /etc/fstab 文件,实现 Linux 实例重启后对应数据盘的自动挂载:
- 使用云磁盘的软链接Disk ID(推荐)
- 使用云磁盘文件系统 UUID(universally unique identifier)
- 使用云磁盘设备名称(不推荐)
操作步骤
本文档中以 BaiduLinux 4.1 x86_64 (64bit) 操作系统为例。
使用云磁盘的软链接Disk ID(推荐)
软链接方式自动挂载优点:
- 每个云磁盘的软链接固定且唯一,不会随卸载挂载、格式化分区等操作而改变。
- 通过快照新建的云磁盘,其UUID与源云磁盘相同,但Disk ID与源云磁盘不同,使用软连接挂载不会因 UUID 相同产生冲突。
- 登录 Linux 实例,请参见 使用SmartTerm连接云服务器。
-
为防止误操作,建议先备份
/etc/fstab文件。本文以备份到/home目录下为例:Plaintext1cp /etc/fstab /home -
执行以下命令,获取云磁盘的软链接Disk ID并记录,后续编辑挂载信息时需要使用。
Shell1ls -l /dev/disk/by-id返回结果如下:
Shell1[root@instance-zbcxqqh3 ~]# ls -l /dev/disk/by-id 2total 0 3lrwxrwxrwx 1 root root 9 Aug 25 16:40 virtio-v-1ueZ5nIf -> ../../vda 4lrwxrwxrwx 1 root root 10 Aug 25 16:40 virtio-v-1ueZ5nIf-part1 -> ../../vda1 5lrwxrwxrwx 1 root root 9 Aug 25 16:40 virtio-v-4t4fMDO8 -> ../../vdb 6lrwxrwxrwx 1 root root 10 Aug 25 16:40 virtio-v-4t4fMDO8-part1 -> ../../vdb1 -
执行以下命令,获取云磁盘的挂载目录、文件系统类型并记录,后续编辑挂载信息时需要使用。
Shell1lsblk -f返回结果如下:
Shell1[root@instance-zbcxqqh3 ~]# lsblk -f 2NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS 3vda 4└─vda1 ext4 1.0 09f78617-7647-47ce-8f69-47feca292ce5 42.3G 10% / 5vdb 6└─vdb1 ext4 1.0 0deb70b6-ab19-4cbf-b84d-45785b8021d8 4.6G 0% /mnt 7vdc xfs 1.0 5370b544-39b2-43e8-bc8c-989e7c953981 4.6G 0% /demo- 如果设备存在分区,如示例中数据盘vdb相关分区为vdb1,挂载目录为/mnt,文件系统类型为ext4。
- 如果设备不存在分区,如示例中数据盘vdc无分区,挂载目录为/demo,文件系统类型为xfs。
-
使用 VI 编辑器打开
/etc/fstab文件,将挂载信息写入/etc/fstab。Plaintext1vi /etc/fstab -
在文件末尾处新增一行,按照下列格式进行配置,参数详情参见fstab-man手册。
Plaintext1<目标设备信息> <挂载目录> <文件系统格式> <文件系统安装选项> <文件系统转储频率> <启动时文件系统检查顺序>注意:当文件系统安装选项参数设置为 defaults,nofail 时,即使挂载配置错误,实例也可正常启动。但由于系统不会报错,需特别关注自动挂载是否配置成功,防止数据写入错误设备。
本例中以/dev/vdb1的软链接Disk ID为例:
Plaintext1/dev/disk/by-id/virtio-v-4t4fMDO8-part1 /mnt ext4 defaults,nofail 0 0 - 保存
/etc/fstab配置后,可进行验证自动挂载配置验证。 -
执行以下命令,卸载当前挂载点,目标设备名称为之前获取的信息,本例中为/dev/vdb1:
Plaintext1umount /dev/<目标设备名称> -
执行以下命令,重新加载
/etc/fstab文件。Plaintext1mount -a- 返回结果若无报错信息,则表示文件已写入成功。文件系统会在 Linux 实例启动时自动挂载。
- 返回结果有报错信息,请检查
/etc/fstab文件配置信息。
- 执行以下命令,查看挂载是否生效。
1lsblk -f
若返回的目标设备存在挂载目录(MOUNTPOINTS)信息,则表示配置生效。
- 重启 Linux 实例操作系统,验证是否可正常系统,相关文件系统是否可自动挂载。
使用云磁盘文件系统 UUID
使用文件系统 UUID缺点:
- 由快照创建的磁盘,其文件系统 UUID 与源盘保持一致。如果源盘和由快照创建的磁盘都挂载(attach)到同一台 Linux 实例上,UUID 可能指向后挂载的磁盘,后面的挂载动作会覆盖先前的挂载。故通过 UUID 同时挂载(mount)源盘和由源盘快照创建的磁盘文件系统会存在冲突问题。
- UUID 只能用于文件系统,不能用于裸设备。因为 UUID 是文件系统的属性,没有经过格式化的块设备没有 UUID。
- 登录 Linux 实例,请参见 使用SmartTerm连接云服务器。
-
为防止误操作,建议先备份
/etc/fstab文件。本文以备份到/home目录下为例:Plaintext1cp /etc/fstab /home -
执行以下命令,获取云磁盘的UUID、挂载目录、文件系统类型并记录,后续编辑挂载信息时需要使用。
Shell1lsblk -f返回结果如下:
Shell1[root@instance-zbcxqqh3 ~]# lsblk -f 2NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS 3vda 4└─vda1 ext4 1.0 09f78617-7647-47ce-8f69-47feca292ce5 42.3G 10% / 5vdb 6└─vdb1 ext4 1.0 0deb70b6-ab19-4cbf-b84d-45785b8021d8 4.6G 0% /mnt 7vdc xfs 1.0 5370b544-39b2-43e8-bc8c-989e7c953981 4.6G 0% /demo- 如果设备存在分区,如示例中数据盘vdb相关分区为vdb1,挂载目录为/mnt,文件系统类型为ext4。
- 如果设备不存在分区,如示例中数据盘vdc无分区,挂载目录为/demo,文件系统类型为xfs。
-
使用 VI 编辑器打开
/etc/fstab文件,将挂载信息写入/etc/fstab。Plaintext1vi /etc/fstab -
在文件末尾处新增一行,按照下列格式进行配置,参数详情参见fstab-man手册。
Plaintext1<目标设备信息> <挂载目录> <文件系统格式> <文件系统安装选项> <文件系统转储频率> <启动时文件系统检查顺序>注意:当文件系统安装选项参数设置为 defaults,nofail 时,即使挂载配置错误,实例也可正常启动。但由于系统不会报错,需特别关注自动挂载是否配置成功,防止数据写入错误设备。
本例中以/dev/vdb1的UUID为例:
Plaintext1UUID=0deb70b6-ab19-4cbf-b84d-45785b8021d8 /mnt ext4 defaults,nofail 0 0 - 保存
/etc/fstab配置后,可进行验证自动挂载配置验证。 -
执行以下命令,卸载当前挂载点,目标设备名称为之前获取的信息,本例中为/dev/vdb1:
Plaintext1umount /dev/<目标设备名称> -
执行以下命令,重新加载
/etc/fstab文件。Plaintext1mount -a- 返回结果若无报错信息,则表示文件已写入成功。文件系统会在 Linux 实例启动时自动挂载。
- 返回结果有报错信息,请检查
/etc/fstab文件配置信息。
- 执行以下命令,查看挂载是否生效。
1lsblk -f
若返回的目标设备存在挂载目录(MOUNTPOINTS)信息,则表示配置生效。
- 重启 Linux 实例操作系统,验证是否可正常系统,相关文件系统是否可自动挂载。
使用云磁盘设备名称(不推荐)
使用云磁盘设备名称缺点:
- 云磁盘设备名称,可能在云磁盘卸载挂载等操作后发生变化,会因设备名称变化而导致自动挂载设置失效。
- 登录 Linux 实例,请参见 使用SmartTerm连接云服务器。
-
为防止误操作,建议先备份
/etc/fstab文件。本文以备份到/home目录下为例:Plaintext1cp /etc/fstab /home -
执行以下命令,获取云磁盘的设备名称、挂载目录、文件系统类型并记录,后续编辑挂载信息时需要使用。
Shell1lsblk -f返回结果如下:
Shell1[root@instance-zbcxqqh3 ~]# lsblk -f 2NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS 3vda 4└─vda1 ext4 1.0 09f78617-7647-47ce-8f69-47feca292ce5 42.3G 10% / 5vdb 6└─vdb1 ext4 1.0 0deb70b6-ab19-4cbf-b84d-45785b8021d8 4.6G 0% /mnt 7vdc xfs 1.0 5370b544-39b2-43e8-bc8c-989e7c953981 4.6G 0% /demo- 如果设备存在分区,如示例中数据盘vdb相关分区为vdb1,挂载目录为/mnt,文件系统类型为ext4。
- 如果设备不存在分区,如示例中数据盘vdc无分区,挂载目录为/demo,文件系统类型为xfs。
-
使用 VI 编辑器打开
/etc/fstab文件,将挂载信息写入/etc/fstab。Plaintext1vi /etc/fstab -
在文件末尾处新增一行,按照下列格式进行配置,参数详情参见fstab-man手册。
Plaintext1<目标设备信息> <挂载目录> <文件系统格式> <文件系统安装选项> <文件系统转储频率> <启动时文件系统检查顺序>注意:当文件系统安装选项参数设置为 defaults,nofail 时,即使挂载配置错误,实例也可正常启动。但由于系统不会报错,需特别关注自动挂载是否配置成功,防止数据写入错误设备。
本例中以/dev/vdb1的设备名称为例:
Plaintext1/dev/vdb1 /mnt ext4 defaults,nofail 0 0 - 保存
/etc/fstab配置后,可进行验证自动挂载配置验证。 -
执行以下命令,卸载当前挂载点,目标设备名称为之前获取的信息,本例中为/dev/vdb1:
Plaintext1umount /dev/<目标设备名称> -
执行以下命令,重新加载
/etc/fstab文件。Plaintext1mount -a- 返回结果若无报错信息,则表示文件已写入成功。文件系统会在 Linux 实例启动时自动挂载。
- 返回结果有报错信息,请检查
/etc/fstab文件配置信息。
- 执行以下命令,查看挂载是否生效。
1lsblk -f
若返回的目标设备存在挂载目录(MOUNTPOINTS)信息,则表示配置生效。
- 重启 Linux 实例操作系统,验证是否可正常系统,相关文件系统是否可自动挂载。
评价此篇文章
