云硬盘 EVS-扩容云硬盘分区和文件系统(Linux):扩大已有分区

时间:2025-03-06 09:15:50

扩大已有分区

示例说明:数据盘“/dev/vdb”原有容量100GiB,只有一个分区“/dev/vdb1”。将数据盘容量扩大至150GiB,将新增的50GB增加至已有分区“/dev/vdb1”。

  1. 检查当前系统是否已安装growpart扩容工具。

    growpart

    • 如果回显为工具使用介绍,则表示已安装,无需重复安装。
      [root@ecs-centos76 ~]# growpart
      growpart disk partition
        rewrite partition table so that partition takes up all the space it can
        options:
        -h | --help	        print Usage and exit
             --fudge F        if part could be resized, but change would be
                              less than 'F' bytes, do not resize (def ault: 1048576)
        -N | --dry-run        only report what would be done, show new 'sfdisk -d'
        -v | --verbose	increase verbosity / debug
        -u | --update R	update the the kernel partition table info after growing
                              this requires kernel support and 'partx --update'
                              R is one of:
                              - 'auto': [default] update partition if possible
                              - 'force' : try despite- sanity checks (fail on failure)
                              - 'off' : do not attempt
                              - 'on'	: fail if sanity checks indicate no support
        Example:
        - growpart /dev/sda 1
          Resize partition 1 on /dev/sda
      must supply disk and part it ion-number
      [root@ecs-centos76 ~l#
      
    • 如果没有以上回显信息,请执行以下安装命令。
      yum install cloud-utils-growpart
      Loaded plugins: fastestmirror
      Determining fastest mirrors
      epel/x86_64/metalink                                                                                             
      | 8.0 kB  00:00:00
      ...
      Package cloud-utils-growpart-0.29-2.el7.noarch already installed and latest version
      Nothing to do

      表示安装成功。

  2. 查看数据盘“/dev/vdb”的分区信息。

    lsblk
    [root@ecs-centos76 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  40G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0  150G 0 disk
    ├vdb1 253:17   0  100G 0 part /mnt/sdc

    表示数据盘“/dev/vdb”有150GiB的容量,分区“/dev/vdb1”已有100GiB,扩容的50GiB容量还未划分磁盘分区。

    如果磁盘未分区,需要直接扩容文件系统,请执行4

  3. 将扩容新增的容量增加至分区“/dev/vdb1”。

    growpart /dev/vdb 1
    [root@ecs-test-0001 ~]# growpart /dev/vdb 1
    CHANGED: partition=1 start=2048 old: size=209713152 end=209715200 new: size=314570719,end=314572767
    • 如果回显为
      no tools available to resize disk with 'gpt'
      FAILED: failed to get a resizer for id ''

      因为磁盘原分区格式为GPT,使用growpart工具将扩容新增容量增加至已有GPT分区时,需要使用gdisk工具,因此请先输入“yum install gdisk”命令,根据提示再输入“y”,安装gdisk软件包,然后再执行上述growpart命令。

    • 如果回显为
      growpart /dev/vda 1 unexpected output in sfdisk --version [sfdisk,来自util-linux 2.23.2]

      请检查系统字符集(系统语言环境)是否为“en_US.UTF-8”,执行命令export LC_ALL=en_US.UTF-8

    • 如果出现报错“NOCHANGE:partition 1 is size xxxxxxx. it cannot be grown” 、"No space left on the block device ",导致无法正常扩容的原因可能是服务器磁盘已满(占用率100%),请您做好数据备份后清理不必要的文件或程序来释放一部分磁盘空间。

  4. 扩容分区“/dev/vdb1”文件系统大小。

    1. 查看数据盘“/dev/vdb”对应分区“/dev/vdb1”的文件系统类型。

      parted /dev/vdb

      P

      [root@ecs-centos74 ~]# parted /dev/vdb
      GNU Parted 3.1
      Using /dev/vdb
      Welcome to GNU Parted! Type 'help' to view a list of commands.
      (parted) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 107GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
       
      Number  Start   End    Size     File system    Name       Flags
       1      1049KB  107GB  107GB    ext4           /dev/vdb1
      
      (parted)

      查看完成后,输入“q”,按“Enter”,退出parted模式。

    1. 根据回显可知分区“/dev/vdb1”的文件系统类型为ext4,执行以下命令进行扩容。
      resize2fs /dev/vdb1
      [root@ecs-test-0001 ~]# resize2fs /dev/vdb1
      resize2fs 1.42.9 (28-Dec-2013)
      Filesystem at /dev/vdb1 is mounted on /mnt/sdc; on-line resizing required
      old_desc_blocks = 13, new_desc_blocks = 19
      The filesystem on /dev/vdb1 is now 39321339 blocks long.
      • 如果出现报错“open: No such file or directory while opening /dev/vdb1”,则表示您指定的磁盘分区不正确,请使用 parted命令查看磁盘分区。
      • 如果文件系统为xfs,请执行以下命令(/mnt/sdc为/dev/vdb1的挂载点,您需要根据实际情况修改)。

        sudo xfs_growfs /mnt/sdc

        [root@ecs-test-0001 ~]# sudo xfs_growfs /mnt/sdc
        meta-data=/dev/vdb1              isize=512    agcount=4, agsize=6553536 blks
                 =                       sectsz=512   attr=2, projid32bit=1
                 =                       crc=1        finobt=0 spinodes=0
        data     =                       bsize=4096   blocks=26214144, imaxpct=25
                 =                       sunit=0      swidth=0 blks
        naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
        log      =internal               bsize=4096   blocks=12799, version=2
                 =                       sectsz=512   sunit=0 blks, lazy-count=1
        realtime =none                   extsz=4096   blocks=0, rtextents=0
        data blocks changed from 26214144 to 39321339

  5. 查看扩容后分区的容量。

    lsblk
    [root@ecs-centos76 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  40G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0  150G 0 disk
    ├vdb1 253:17   0  150G 0 part /mnt/sdc

    表示数据盘“/dev/vdb”的容量大小为150GiB,该数据盘下的分区“/dev/vdb1”大小也为150GiB,说明扩容的50GB容量已生效。

    如果是对数据盘进行扩容,且操作系统内核版本低于3.6.0,需要reboot重启操作系统后扩容容量才会生效。重启会中断业务,为了防止重启后数据丢失,请确保已完成数据备份。使用CBR服务备份请参见备份云硬盘。使用快照功能备份请参见管理云硬盘快照

support.huaweicloud.com/usermanual-evs/evs_01_0109.html