一块全新的数据盘挂载到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%重新划分一个主分区。