云硬盘 EVS-扩展数据盘的分区和文件系统(Linux内核低于3.6.0):扩大已有GPT分区

时间:2023-11-01 16:20:00

扩大已有GPT分区

扩大已有分区不会删除数据盘上的数据,但是需要通过umount命令先卸载已有分区,因此会影响线上业务运行。

数据盘“/dev/vdb”原有容量150GB,有两个分区“/dev/vdb1 ”和“/dev/vdb2”。将数据盘容量扩大至230GB,本示例将新增的80GB划分至已有的GPT分区内“/dev/vdb2”内。

扩容后的新增存储空间是添加在磁盘末尾的,对具有多个分区的的磁盘扩容时,只支持将新增容量划分至排在末尾的分区。

  1. 执行以下命令,查看磁盘的分区信息。

    lsblk

    回显类似如下信息:
    [root@ecs-test-0001 ~]# lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTvda    253:0    0   40G  0 disk└─vda1 253:1    0   40G  0 part /vdb    253:16   0  230G  0 disk├─vdb1 253:17   0  100G  0 part /mnt/sdc└─vdb2 253:18   0   50G  0 part /mnt/test
    查看回显中磁盘“/dev/vdb”的容量,扩容的容量是否已经包含在容量总和中。
    • 若扩容的容量未在磁盘容量总和中,请参考扩展SCSI数据盘的分区和文件系统(Linux内核低于3.6.0)章节刷新系统内容量。
    • 若扩容的容量已在磁盘容量总和中,请执行2

  2. 执行以下命令,卸载磁盘分区。

    umount 磁盘分区

    命令示例:

    umount /dev/vdb2

  3. 执行以下命令,确认磁盘分区的卸载结果。

    lsblk

    回显类似如下信息:
    [root@ecs-test-0001 ~]# lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTvda    253:0    0   40G  0 disk└─vda1 253:1    0   40G  0 part /vdb    253:16   0  230G  0 disk├─vdb1 253:17   0  100G  0 part /mnt/sdc└─vdb2 253:18   0   50G  0 part

  4. 执行以下命令,进入parted分区工具。

    parted 磁盘

    命令示例:

    parted /dev/vdb

    回显类似如下信息:
    [root@ecs-test-0001 ~]# parted /dev/vdbGNU Parted 3.1Using /dev/vdbWelcome to GNU Parted! Type 'help' to view a list of commands.(parted)

  5. 输入“unit s”,按“Enter”,设置磁盘的计量单位为磁柱。
  6. 输入“p”,按“Enter”,查看当前磁盘分区情况。

    回显类似如下信息:
    (parted) unit s(parted) pError: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes thedisk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?Fix/Ignore/Cancel? FixWarning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 167772160blocks) or continue with the current setting?Fix/Ignore? FixModel: Virtio Block Device (virtblk)Disk /dev/vdb: 482344960sSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number  Start       End         Size        File system  Name  Flags 1      2048s       209713151s  209711104s  ext4         test 2      209713152s  314570751s  104857600s  ext4         data(parted)
    记录待扩大分区“/dev/vdb2”的初始磁柱值(start)和截止磁柱值(End),在后续重新划分分区需要使用。本示例中待扩大分区的的初始磁柱值为209713152s,截止磁柱值为314570751s。
    • 若系统出现以下Error,请输入“Fix”。
      Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes thedisk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?

      GPT分区表信息存储在磁盘开头,为了减少分区表损坏的风险,同时在磁盘末尾会备份一份。当磁盘容量扩大后,末尾位置也会随之变化,因此需要根据系统提示输入“Fix”,将分区表信息的备份文件挪到新的磁盘末尾位置。

    • 若系统出现以下Waring,请输入“Fix”。
      Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 104857600blocks) or continue with the current setting?Fix/Ignore? Fix

      根据系统提示输入“Fix”,系统会自动将磁盘扩容部分的容量设置为GPT。

  7. 输入“rm”和分区编号,此处以“2”为例,按“Enter”。

    回显类似如下信息:
    (parted) rmPartition number? 2(parted)

  8. 重新划分分区,执行以下命令,按“Enter”。

    mkpart 磁盘分区名称 起始磁柱值 截止磁柱

    命令示例:

    mkpart data 209713152s 100%

    • 起始起始磁柱值需要和原分区的取值保持一致,输入6中记录的起始磁柱值“209713152s”。
    • 截止磁柱值必须大于原分区的取值,即大于6中记录的截止磁柱值“314570751s”,此处以将所有新增容量划分至分区“dev/vdb2”为例,输入100%。
    回显类似如下信息:
    (parted) mkpart data 209713152s 100%(parted)
    以下操作会导致数据丢失:
    • 选择的起始磁柱值与原分区的不一致。
    • 选择的截止磁柱值小于原分区的值。

  9. 输入“p”,按“Enter”,查看分区信息。

    回显类似如下信息:
    (parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdb: 482344960sSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:Number  Start       End         Size        File system  Name  Flags 1      2048s       209713151s  209711104s  ext4         test 2      209713152s  482342911s  272629760s  ext4         data(parted) 

  10. 输入“q”,按“Enter”,退出parted分区工具。

    回显类似如下信息:
    (parted) qInformation: You may need to update /etc/fstab.

    “/etc/fstab”文件控制磁盘开机自动挂载,请先参考以下步骤为磁盘分区设置文件系统和挂载目录后,再根据文档指导更新“/etc/fstab”文件。

  11. 根据磁盘的文件系统,分别执行以下操作。

    • 若磁盘文件系统为ext*,请执行以下步骤。
      1. 执行以下命令,检查磁盘分区文件系统的正确性。

        e2fsck -f 磁盘分区

        命令示例:

        e2fsck -f /dev/vdb2

        回显类似如下信息:
        [root@ecs-test-0001 ~]# e2fsck -f /dev/vdb2e2fsck 1.42.9 (28-Dec-2013)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/vdb2: 11/3276800 files (0.0% non-contiguous), 251790/13107200 blocks
      2. 执行以下命令,扩展磁盘分区文件系统的大小。

        resize2fs 磁盘分区

        命令示例:

        resize2fs /dev/vdb2

        回显类似如下信息:
        [root@ecs-test-0001 ~]# resize2fs /dev/vdb2resize2fs 1.42.9 (28-Dec-2013)Resizing the filesystem on /dev/vdb2 to 34078720 (4k) blocks.The filesystem on /dev/vdb2 is now 34078720 blocks long.
      3. (可选)执行以下命令,新建挂载目录。

        若需要挂载至新建目录下,执行该操作。

        mkdir 挂载目录

        以新建挂载目录“/mnt/test”为例:

        mkdir /mnt/test

      4. 执行以下命令,挂载磁盘分区。

        mount 磁盘分区 挂载目录

        以挂载分区“/dev/vdb2”至“/mnt/test”为例:

        mount /dev/vdb2 /mnt/test

        新增加的分区挂载到不为空的目录时,该目录下原本的子目录和文件会被隐藏,所以,新增的分区最好挂载到空目录或者新建目录。如确实要挂载到不为空的目录,可将该目录下的子目录和文件临时移动到其他目录下,新分区挂载成功后,再将子目录和文件移动回来。

    • 若磁盘文件系统为xfs,请执行以下步骤。
      1. (可选)执行以下命令,新建挂载目录。

        若需要挂载至新建目录下,执行该操作。

        mkdir 挂载目录

        以新建挂载目录“/mnt/test”为例:

        mkdir /mnt/test

      2. 执行以下命令,挂载磁盘分区。

        mount 磁盘分区 挂载目录

        以挂载分区“/dev/vdb2”至“/mnt/test”为例:

        mount /dev/vdb2 /mnt/test

        新增加的分区挂载到不为空的目录时,该目录下原本的子目录和文件会被隐藏,所以,新增的分区最好挂载到空目录或者新建目录。如确实要挂载到不为空的目录,可将该目录下的子目录和文件临时移动到其他目录下,新分区挂载成功后,再将子目录和文件移动回来。

      3. 执行以下命令,扩展磁盘分区文件系统的大小。

        sudo xfs_growfs 磁盘分区

        命令示例:

        sudo xfs_growfs /dev/vdb2

        回显类似如下信息:

        [root@ecs-test-0001 ~]# sudo xfs_growfs /dev/vdb2 meta-data=/dev/vdb2              isize=512     agcount=4, agsize=3276800 blks         =                       sectsz=512    attr=2, projid32bit=1         =                       crc=1         finobt=0, spinodes=0data     =                       bsize=4096    blocks=13107200, imaxpct=25         =                       sunit=0       swidth=0 blksnaming   =version2               bsize=4096    ascii-ci=0 ftype=1log      =internal               bsize=4096    blocks=6400, version=2         =                       sectsz=512    sunit=0 blks, lazy-count=1realtime =none                   extsz=4096    blocks=0, rtextents=0data blocks changed from 13107200 to 34078720.

  12. 执行以下命令,查看挂载结果。

    df -TH

    回显类似如下信息:
    [root@ecs-test-0001 ~]# df -THFilesystem     Type      Size  Used Avail Use% Mounted on/dev/vda1      ext4       43G  1.9G   39G   5% /devtmpfs       devtmpfs  2.0G     0  2.0G   0% /devtmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shmtmpfs          tmpfs     2.0G  9.1M  2.0G   1% /runtmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgrouptmpfs          tmpfs     398M     0  398M   0% /run/user/0/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc/dev/vdb2      ext4      138G   63M  131G   1% /mnt/test

    云服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载,请参见设置开机自动挂载磁盘分区

support.huaweicloud.com/bestpractice-evs/evs_02_0027.html