更新时间:2024-01-11 GMT+08:00

为什么C6服务器盘符格式是sd*?

问题描述

对比以往的C6云服务器,盘符是vd*格式,譬如vda、vdb,新购的C6云服务器盘符变成的sd*格式。

本节操作介绍盘符变成sd*格式的原因,以及常见的磁盘操作场景下的sd*格式盘符的处理方法,其他磁盘操作场景可参考本节示例方法。

根因分析

Linux系统的盘符是OS内部根据一定的规则自动生成的,这个规则与磁盘协议、磁盘序号等均有关系,因此存在一定的不确定性。当前C6产品在挂载磁盘时,磁盘协议有一定的随机性,会在virtio-blk和virtio-scsi两种协议中随机分配:

  • 如果分配到virtio-blk协议,则盘符格式为vd*。
  • 如果分配到virtio-scsi协议,则盘符格式为sd*。

磁盘分区、格式化

问题描述:云服务器首次使用前,需要对挂载的数据盘执行分区或格式化的操作。如果云服务器盘符是sd*格式,那么使用/dev/vd*的命令操作则会出现问题。

解决方法:推荐先动态获取盘符,然后再对磁盘进行操作的方案。动态获取盘符有以下两种方案:

  • 方法一:通过fdisk命令查询盘符。

    登录云服务器,执行如下命令,查看数据盘列表:

    fdisk -l

    回显信息如下所示,表示当前的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘。

    [root@ecs-test-0001 ~]# fdisk -l
    
    Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000bcb4e
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83886079    41942016   83  Linux
    
    Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes

    该方法获取盘符的方式比较便捷,但无法得知操作系统内部磁盘与服务器挂载的云硬盘之间的对应关系。如果需要知道该对应关系,则需要参考方法二获取盘符。

  • 方法二:通过serial-id或者wwn方式获取盘符。

    详细操作请参考控制台与弹性云服务器内部之间磁盘挂载点的对应关系

文件系统自动挂载

当前标准的文件系统自动挂载方式是推荐配置文件系统UUID作为挂载点,因为文件系统UUID是文件系统的唯一标识,不随盘符等信息变化而发生变化,因此该方案比较稳定,适用性强。这里讲一下系统盘如何使用文件系统UUID配置自动挂载。

  • 系统盘自动挂载
    • 如果使用的是的公共镜像,或者是根据公共镜像制作的私有镜像,则无需特殊处理,当前已经是文件系统UUID方式自动挂载。
    • 如果是非公共镜像制作的私有镜像,则推荐在制作镜像时,勾选“进行后台自动化配置”按钮,则系统会自动优化为文件系统UUID方式自动挂载。
    • 如果制作私有镜像时,未勾选“进行后台自动化配置”按钮,可参考修改fstab文件磁盘标识方式为UUID章节进行配置。