我们已经准备好了,你呢?

2023我们与您携手共赢,为您的企业形象保驾护航!


喜讯:国内、香港、海外云服务器租用特惠活动,2核/4G/10M仅需31元每月,点击抢购>>>

点击这里点击这里进入阿里云ECS官方页面,立即免费体验云服务器ECS>>>

点击这里阿里云老客户点击这里申请VIP账号,享终身8折优惠(续费也打折)>>>

由于部分Linux操作系统版本较旧,云盘无法在操作系统内使用growpart等工具在线(云盘是mount状态)扩容,这种情况需要采用离线(云盘是umount状态)扩容的方式才能使云盘扩容生效。本文主要针对Linux数据盘的离线扩容方式进行介绍。


前提条件

  1. 已创建快照备份数据。

    为防止操作失误导致数据丢失,建议您操作前使用快照备份数据。具体操作,请参见创建一个云盘快照。

  2. 已在控制台上扩容云盘容量。

    具体操作,请参见步骤一:扩容云盘容量。

  3. 远程连接ECS实例。

    关于连接方式的介绍,请参见连接方式概述。

背景信息

本文示例中使用的配置如下:
  • ECS实例的操作系统:公共镜像Alibaba Cloud Linux 2.1903 LTS 64位

  • 数据盘:高效云盘

  • 数据盘设备名:/dev/vdb

若您使用的操作系统和数据盘设备名与本文示例不同,请根据实际情况调整命令或参数配置。

确认分区表格式和文件系统

  1. 运行以下命令确认数据盘的分区表格式。

    sudo fdisk -lu /dev/vdb

    本示例中,原有的数据盘空间已做分区/dev/vdb1

    [testuser@ecshost ~]# sudo fdisk -lu /dev/vdbDisk /dev/vdb: 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: 0x9277b47b
    
    Device Boot Start End Blocks Id System
    /dev/vdb1 2048 41943039 20970496 83 Linux
    • 如果SystemLinux,说明数据盘使用的是MBR分区表格式。

    • 如果SystemGPT,说明数据盘使用的是GPT分区表格式。

  2. 运行以下命令确认已有分区的文件系统类型。

    blkid /dev/vdb1

    本示例中,/dev/vdb1的文件系统类型为ext4。

    [testuser@ecshost ~]# blkid /dev/vdb1/dev/vdb1: UUID="e97bf1e2-fc84-4c11-9652-73********24" TYPE="ext4"

    说明

    未分区并且未创建文件系统的数据盘,以及已分区但未创建文件系统的数据盘,不会返回结果。

  3. 运行以下命令确认文件系统的状态。

    不同文件系统的查询示例如下:

    • ext*和xfs文件系统的示例结果如下所示,当文件系统状态为clean,表示文件系统状态正常。如果状态不是clean,请排查并修复。

      [testuser@ecshost ~]# sudo e2fsck -n /dev/vdb1
      Warning! /dev/vdb1 is mounted.
      Warning: skipping journal recovery because doing a read-only filesystem check./dev/vdb1: clean, 11/1310720 files, 126322/5242624 blocks
    • btrfs文件系统的示例结果如下所示,例如found 114688 bytes used err is 0表示文件系统状态正常。如果查询结果中存在报错提示,请排查并修复。

      [testuser@ecshost ~]# sudo btrfsck /dev/vdb1Checking filesystem on /dev/vdb1
      UUID: 1234b7a7-68ff-4f48-a88c-8943f27f1234
      checking extents
      checking free space cache
      checking fs roots
      checking csums
      checking root refs
      found 114688 bytes used err is 0total csum bytes: 0total tree bytes: 114688total fs tree bytes: 32768total extent tree bytes: 16384btree space waste bytes: 109471file data blocks allocated: 0referenced 0
    • ext*文件系统:

      sudo e2fsck -n /dev/vdb1
    • xfs文件系统:

      sudo xfs_repair -n /dev/vdb1
    • btrfs文件系统:

      sudo btrfsck /dev/vdb1

选择扩容分区或文件系统的方式

根据您查询到的分区格式和文件系统情况确定操作选项。


扩容场景相关操作
数据盘已分区并创建文件系统
  • 如果您需要扩展数据盘已有的MBR分区,请参见选项一:扩展已有MBR分区。

  • 如果新增空间用于增加新的MBR分区,请参见选项二:新增并格式化MBR分区。

  • 如果您需要扩展数据盘已有的GPT分区,请参见选项三:扩展已有GPT分区。

  • 如果新增空间用于增加新的GPT分区,请参见选项四:新增并格式化GPT分区。

全新数据盘,未分区,未创建文件系统在控制台扩容数据盘空间后,请参见初始化小于等于2 TiB数据盘(Linux)或者初始化大于2 TiB数据盘。
数据盘是裸设备,已创建文件系统,未分区在控制台扩容数据盘空间后,请参见选项五:扩容裸设备文件系统。
数据盘未挂载到实例上挂载数据盘到实例后,参见本文档的操作步骤完成扩容。

说明

  • 如果一个已有分区采用了MBR分区格式,则不支持扩容到2 TiB及以上。为避免造成数据丢失,建议您创建一块大于2TiB的云盘,格式化一个GPT分区,再将MBR分区中的数据拷贝到GPT分区中。具体操作,请参见初始化大于2 TiB数据盘。

  • 当出现因扩容格式化工具问题导致的扩容失败时,您可以提前升级工具版本,或者卸载工具后重新安装。

选项一:扩展已有MBR分区

说明

为了防止数据丢失,不建议扩容已挂载的分区和文件系统。请先取消挂载(umount)分区,完成扩容并正常使用后,重新挂载(mount)。针对不同的Linux内核版本,推荐以下操作方式:

  • 实例内核版本小于3.6:先取消挂载该分区,再修改分区表,最后扩容文件系统。

  • 实例内核版本大于等于3.6:先修改对应分区表,再通知内核更新分区表,最后扩容文件系统。

如果新增空间用于扩容已有的MBR分区,按照以下步骤在实例中完成扩容:

  1. 修改分区表。

    1. 运行sudo fdisk -u /dev/vdb:分区数据盘。

    2. 输入p:打印分区表。

    3. 输入n:新建分区。

    4. 输入p:选择分区类型为主分区。

    5. 输入<分区号>:选择分区号。本示例选取了1。

    6. 设置新分区的起始位置和结束位置。

      警告

      新分区的起始位置必须和旧分区的起始位置相同,结束位置必须大于旧分区的结束位置,否则会导致扩容失败。具体问题与解决方案请参见使用fdisk扩容新分区起始位置无法与扩容前保持一致。

    7. 输入w:保存修改并退出。

    8. 运行sudo fdisk -u /dev/vdb:分区数据盘。

    9. 输入p:打印分区表。

    10. 输入d:删除分区。

    11. 输入p:确认分区已删除。

    12. 输入w:保存修改并退出。

    13. 运行以下命令查看分区信息,并记录旧分区的起始和结束的扇区位置。

      sudo fdisk -lu /dev/vdb

      本示例中,分区/dev/vdb1的起始扇区是2048,结束扇区是41943039。

      [testuser@ecshost ~]# sudo fdisk -lu /dev/vdbDisk /dev/vdb: 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: 0x9277b47b
      
      Device Boot Start End Blocks Id System
      /dev/vdb1 2048 41943039 20970496 83 Linux
    14. 查看数据盘的挂载路径,根据返回的文件路径卸载分区,直至完全卸载已挂载的分区。

      查看挂载(mount)信息。

      mount | grep "/dev/vdb"

      取消挂载(umount)数据盘。

      sudo umount /dev/vdb1

      查看操作结果。

      mount | grep "/dev/vdb"

      示例结果如下所示。

      [testuser@ecshost ~]# mount | grep "/dev/vdb"/dev/vdb1 on /mnt type ext4 (rw,relatime,data=ordered)
      [testuser@ecshost ~]# sudo umount /dev/vdb1[testuser@ecshost ~]# mount | grep "/dev/vdb"
    15. 推荐:TOP云智能建站优惠活动,仅880元即可搭建一个后台管理五端合一的智能网站(PC网站、手机网站、百度智能小程序、微信小程序、支付宝小程序),独享百度搜索SEO优势资源,让你的网站不仅有颜值有排面,更有排名,可以实实在在为您带来效益,请点击进入TOP云智能建站>>>,或咨询在线客服了解详情。



我们已经准备好了,你呢?

2023我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

131-3501-0006

上班时间

周一到周五

公司电话

130-0743-9476

二维码
线