一块全新的数据盘挂载到ECS实例后,往往需要创建并挂载至少一个文件系统。本文介绍如何在Linux系统中分区格式化新的数据盘。

前提条件

随实例一起购买的数据盘,已自动挂载到该实例。单独购买的数据盘必须挂载到实例后才能格式化。如何挂载数据盘,请参见 挂载数据盘
说明 此处挂载操作指在控制台将云盘挂载到ECS实例,并非在ECS实例操作系统内通过mount命令挂载文件系统。

背景信息

数据盘的设备名默认由系统分配,命名规则如下所示:

  • I/O优化实例的数据盘设备名为/dev/vd[b-z],例如/dev/vdb/dev/vdc/dev/vdd等。
  • 非I/O优化实例的数据盘设备名为/dev/xvd[b-z],例如/dev/xvdb/dev/xvdc/dev/xvdd等。
数据盘支持创建GPT分区和MBR分区,二者区别如下:
  • GPT:能够识别大于2 TiB的分区,创建分区数量无限制。
  • MBR:只能识别小于或等于2 TiB的分区,最多创建4个分区。

注意事项

格式化操作可能存在如下风险:
  • 磁盘分区和格式化是高风险行为,请慎重操作。本文操作仅适用处理一块全新的数据盘。

    如果您的数据盘上有数据,请务必为数据盘创建快照,避免数据丢失。具体操作,请参见创建一个云盘快照

  • 云服务器ECS仅支持数据盘分区操作,不支持系统盘分区操作。

    如果您强行使用第三方工具对系统盘做分区操作,可能引发系统崩溃和数据丢失等未知风险。仅允许在扩容系统盘后做扩展分区或新增分区操作,具体操作,请参见在线扩容云盘(Linux系统)

操作指导

本文示例中使用的配置如下所示。
资源 描述
ECS实例的镜像 公共镜像Alibaba Cloud Linux 3.2104 64位
数据盘
  • 数据盘设备名:/dev/vdb
  • 容量:40 GiB

步骤一:登录ECS实例并查看数据盘

登录ECS实例并检查数据盘是否已经挂载到ECS实例。

  1. 远程连接ECS实例。

    如何连接ECS实例,具体操作请参见通过密码或密钥认证登录Linux实例

  2. 运行以下命令,查看实例上的数据盘信息。
    fdisk -l
    运行结果如下所示。 格式化云盘_fdisk

    如果不存在/dev/vd*/dev/vd*指您新购买的那块数据盘,本示例中为/dev/vdb),请确认数据盘是否已经挂载到实例。关于如何在控制台挂载数据盘,请参见挂载数据盘

  3. 为数据盘创建分区。

步骤二:为数据盘创建GPT分区

按以下步骤为数据盘创建GPT分区,支持2 TiB以上容量。

  1. 如果未安装Parted工具和e2fsprogs工具,运行以下命令安装。
    • 安装Parted工具:
      yum install -y parted
    • 安装e2fsprogs工具:
      yum install -y e2fsprogs
    说明 此步骤中yum命令适用于CentOS等Linux发行版本。其他Linux发行版本,请根据实际使用的包管理软件修改安装命令。例如Debian或Ubuntu,请使用 apt-get install <软件包名称>
  2. 使用Parted工具为数据盘进行分区。
    1. 运行以下命令开始分区。
      parted /dev/vdb
    2. 运行以下命令,设置GPT分区格式。
      mklabel gpt
    3. 运行以下命令,划分一个主分区,并设置分区的开始位置和结束位置。
      mkpart primary 1 100%
    4. 运行以下命令,检查分区是否对齐。
      align-check optimal 1
      结果如下所示:
      1 aligned
      说明 如果返回的是 1 not aligned,表示分区未对齐。如何处理请参见 常见问题
    5. 运行以下命令,查看分区表。
      print
    6. 运行以下命令,退出Parted工具。
      quit
    结果如下所示。 parted分区
  3. 运行以下命令,使系统重读分区表。
    partprobe
  4. 运行以下命令,查看新分区信息。
    fdisk -lu /dev/vdb
    运行结果如下所示,如果出现gpt的相关信息,表示新分区已创建完成。 gpt

步骤二:为数据盘创建MBR分区

按以下步骤为数据盘创建MBR分区,MBR分区不支持大于2 TiB容量。

说明 如果您需要配置大于2 TiB容量数据盘,或者后续可能需要扩容到2 TiB以上,建议您使用GPT分区,具体操作,请参见 步骤二:为数据盘创建GPT分区
  1. 创建一个MBR分区。
    1. 运行以下命令对数据盘进行分区。
      fdisk -u /dev/vdb
    2. 输入p查看数据盘的分区情况。
      本示例中,数据盘没有分区。
    3. 输入n创建一个新分区。
    4. 输入p选择分区类型为主分区。
      说明 创建一个单分区数据盘可以只创建主分区。如果要创建四个以上分区,您应该至少选择一次 e(extended),创建至少一个扩展分区。
    5. 输入分区编号,按回车键。
      本示例中,仅创建一个分区,直接按回车键,采用默认值 1
    6. 输入第一个可用的扇区编号,按回车键。
      本示例中,直接按回车键,采用默认值 2048
    7. 输入最后一个扇区编号,按回车键。
      本示例中,仅创建一个分区,直接按回车键,采用默认值。
    8. 输入p查看该数据盘的规划分区情况。
    9. 输入w开始分区,并在完成分区后退出。
    结果如下所示。 创建分区执行结果
  2. 运行以下命令,查看新分区信息。
    fdisk -lu /dev/vdb
    运行结果如下所示,如果出现/dev/vdb1的相关信息,表示新分区已创建完成。 分区结果

步骤三:为分区创建文件系统

在新分区上创建一个文件系统。以下命令介绍如何创建ext4和xfs文件系统,您可以根据实际需求,创建对应的文件系统。
说明 如果数据盘的容量大于16 TiB,您需要使用指定版本的e2fsprogs工具包格式化数据盘。具体操作,请参见 附录一:Linux实例升级e2fsprogs工具包
  • 运行以下命令,创建一个ext4文件系统。
    mkfs -t ext4 /dev/vdb1
  • 运行以下命令,创建一个xfs文件系统。
    mkfs -t xfs /dev/vdb1
本示例中,创建一个ext4文件系统。 创建文件系统

步骤四:配置/etc/fstab文件并挂载分区

/etc/fstab中写入新分区信息,启动开机自动挂载分区。

注意 建议您在 /etc/fstab中使用全局唯一标识符UUID来引用新分区。由于释放云盘等操作可能会导致其他云盘的设备名变动,如果在 /etc/fstab中直接使用设备名,当设备名变动时可能影响您的存储数据。
  1. 运行以下命令,备份/etc/fstab文件。
    cp /etc/fstab /etc/fstab.bak
  2. /etc/fstab里写入新分区信息。
    • 如果您使用root用户,可以运行以下命令直接修改/etc/fstab文件。
      echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab
      其中:
      • /dev/vdb1:已创建好文件系统的数据盘分区,您需要根据实际情况修改对应的分区名称。
      • /mnt:挂载(mount)的目录节点,您需要根据实际情况修改。
      • ext4:分区的文件系统类型,您需要根据创建的文件系统类型修改。
      说明 Ubuntu 12.04系统不支持barrier,您需要运行 echo '`blkid /dev/vdb1 | awk '{print $3}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0' >> /etc/fstab命令。
    • 如果您是普通用户,可以手动修改/etc/fstab文件。具体操作,请参见在fstab文件中配置UUID方式自动挂载数据盘
  3. 运行以下命令,查看/etc/fstab中的新分区信息。
    cat /etc/fstab
    结果如下所示。 查询fstab
  4. 运行以下命令,挂载/etc/fstab配置的文件系统。
    mount -a
  5. 运行以下命令,检查挂载结果。
    df -h
    结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功。 查询挂载结果

常见问题

问题:创建GPT分区时,分区未对齐如何解决?

解决方案:
  1. 建议您运行以下命令。
    cat /sys/block/vdb/queue/optimal_io_size
    cat /sys/block/vdb/queue/minimum_io_size
    cat /sys/block/vdb/alignment_offset
    cat /sys/block/vdb/queue/physical_block_size
  2. 根据(<optimal_io_size>+<alignment_offset>)/<physical_block_size>的公式计算出最佳分区模式的起始扇区值。

    假设1024为计算得出的推荐扇区值,则您可以运行mkpart primary 1024s 100%重新划分一个主分区。