更新时间:2024-04-18 GMT+08:00

重启后盘符发生变化怎么办?

问题现象

Linux弹性云服务器在线卸载云硬盘后重新挂载云硬盘,或在线卸载云硬盘后重启弹性云服务器,可能会存在挂载前后盘符发生变化的情况。

问题原因

当Linux系统的弹性云服务器管理多块磁盘时,会按照磁盘加载顺序分配盘符,依次为磁盘命名,例如:/dev/vda1,/dev/vdb1,/dev/vdc1等。

由于Linux系统的盘符分配机制,当弹性云服务器卸载云硬盘后重新挂载,或者卸载云硬盘后重启云服务器时,可能会存在出现盘符发生变化的情况。

例如,某个云服务器有/dev/vda1,/dev/vdb1,/dev/vdc1三块磁盘,在/etc/fstab中的挂载参数如下所示:

cat /etc/fstab

UUID=b9a07b7b-9322-4e05-ab9b-14b8050bdc8a  /  ext4  defaults  0  1 
/dev/vdb1                       /data1   ext4  defaults  0  0 
/dev/vdc1                       /data2   ext4  defaults  0  0

当卸载原有磁盘/dev/vdb1,并重启云服务器后,原有的/dev/vdc1会变为/dev/vdb1并挂载到挂载点/data,而挂载点/data2则无磁盘可以挂载。

磁盘盘符的变化会影响依赖盘符工作的应用程序的正常使用,为解决这个问题,建议采用UUID(universally unique identifier)来替代/dev/vdx,UUID是Linux系统为磁盘分区提供的唯一的标识字符串。

处理方法

  1. 登录弹性云服务器
  2. 执行以下命令,查询磁盘分区的UUID。

    blkid 磁盘分区

    以查询磁盘分区“/dev/vdb1”的UUID为例:

    blkid /dev/vdb1

    回显类似如下信息:

    [root@ecs-test-0001 ~]# blkid /dev/vdb1 
    /dev/vdb1: UUID="b9a07b7b-9322-4e05-ab9b-14b8050cd8cc" TYPE="ext4"

    表示“/dev/vdb1”的UUID。

  3. 执行以下命令,使用VI编辑器打开“fstab”文件。

    vi /etc/fstab

  4. 按“i”,进入编辑模式。
  5. 将光标移至文件末尾,按“Enter”,添加如下内容。
    UUID=b9a07b7b-9322-4e05-ab9b-14b8050cd8cc    /data1   ext4    defaults        0 0

    其中,

    • UUID=b9a07b7b-9322-4e05-ab9b-14b8050cd8cc:磁盘的分区的UUID。
    • /data1:磁盘分区的挂载目录,可以通过df -TH命令查询。
    • ext4:磁盘分区的文件系统格式, 可以通过df -TH命令查询。
    • defaults:磁盘分区的挂载选项,此处通常设置为defaults即可。
    • 0:Linux dump备份选项。
      • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
      • 1表示使用Linux dump备份。
    • 0:fsck选项,即开机时是否使用fsck检查磁盘。
      • 0表示不检验。
      • 挂载点为(/)根目录的分区,此处必须填写1。

        根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

  6. 重复执行步骤2~步骤5,替换“/dev/vdc1”的UUID。
  7. 再次执行以下命令,查看磁盘挂载参数:

    cat /etc/fstab

    回显信息如下所示:

    UUID=b9a07b7b-9322-4e05-ab9b-14b8050bdc8a  /  ext4  defaults  0  1 
    UUID=b9a07b7b-9322-4e05-ab9b-14b8050cd8cc   /data1   ext4  defaults  0  0 
    UUID=b9a07b7b-9322-4e05-ab9b-14b8050ab6bb   /data2   ext4  defaults  0  0