云硬盘 EVS-扩容云硬盘分区和文件系统(Linux):新增GPT分区

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

新增GPT分区

示例说明:数据盘“/dev/vdb”原有容量2TiB,只有一个分区“/dev/vdb1”。将数据盘容量扩大至3TiB,本示例使用parted工具为新增的1T分配新的GPT分区“/dev/vdb2”。

  1. 查看“/dev/vdb”磁盘信息

    1. 查看磁盘分区容量。
      lsblk
      [root@ecs-test-0001 ~]# 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  3T  0 disk
      └vdb1 253:17   0  2T  0 part /mnt/sdc

      磁盘“/dev/vdb”扩容前已有分区“/dev/vdb1”,将磁盘扩容1TiB后,新增的容量还未划分磁盘分区,因此“/dev/vdb”显示3TiB,“/dev/vdb1”显示2TiB。

    1. 查看磁盘分区形式。

      parted /dev/vdb

      p

      [root@ecs-test-0001 ~]# 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: 3299GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End    Size   File system  Name        Flags
       1      1049kB  2199GB 2199GB ext4         /dev/vdb1
      
      (parted) 

      当前磁盘分区形式为gpt。

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

      • “Partition Table:msdos”表示磁盘分区形式为MBR
      • “Partition Table:gpt”表示磁盘分区形式为GPT
      • “Partition Table:loop”表示磁盘未分区(整盘分区),只在设备上创建了文件系统

  2. 针对磁盘“/dev/vdb”新增1个分区/dev/vdb2

    1. 开始新建分区/dev/vdb2

      parted /dev/vdb

      unit s

      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) unit s
      (parted) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 6442450944s
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start     End           Size          File system    Name       Flags
       1      2048s     4294965247s   4294963200s   ext4           /dev/vdb1  
      (parted)

      记录已有分区/dev/vdb1的截止磁柱值(End)为4294965247s。

      • 如果出现报错“-bash: parted: command not found”,则说明系统不识别该命令,需要执行“yum install -y parted”命令来安装该命令。安装成功后再执行上述命令。
      • 如果显示如下报错,请输入“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 the disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
        Fix/Ignore/Cancel?

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

      • 如果系统出现以下Warning,请输入“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 104857600 blocks) or continue with the current setting?
        Fix/Ignore? 

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

    1. 设置分区名称及大小。

      mkpart /dev/vdb2 4294965248s 100%

      p

      “4294965248s”表示磁盘起始磁柱值,为已有分区/dev/vdb1的截止磁柱值(End)+1;“100%”为磁盘截止磁柱值,表示将磁盘100%容量给到/dev/vdb2分区。

    输入“q”,按“Enter”,退出parted模式。

    1. 再次查看新建分区“/dev/vdb2”

      lsblk

      [root@ecs-centos74 ~]# 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    3T  0 disk
      ├─vdb1 253:17   0    2T  0 part /mnt/sdc
      ├─vdb2 253:18   0    1T  0 part

  3. 为分区/dev/vdb2创建ext4文件系统。

    mkfs -t ext4 /dev/vdb2

    创建文件系统格式需要等待一段时间,请观察系统运行状态,不要退出。

    [root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb2
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    67108864 inodes, 268435456 blocks
    13421772 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2415919104
    8192 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
            4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
            102400000, 214990848
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    [root@ecs-test-0001 ~]#

    执行“parted /dev/vdb”命令,再输入“p”,查看分区文件系统类型。

    [root@ecs-test-0001 ~]# 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: 3299GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start   End      Size     File system  Name        Flags
     1      1049kB  2199GB   2199GB   ext4         /dev/vdb1           
     2      2199GB  3299GB   1100GB   ext4         /dev/vdb2
    
    (parted) q
    [root@ecs-test-0001 ~]#

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

  4. 新建目录,并将新建分区挂载至新建目录。

    mkdir -p /mnt/sdc

    mount /dev/vdb1 /mnt/sdc

    lsblk

    [root@ecs-test-0001 ~]# 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   3T  0 disk
    ├vdb1 253:17   0   2T  0 part /mnt/sdc
    ├vdb2 253:18   0   1T  0 part /mnt/sdd

    表示新建分区“/dev/vdb2”已挂载至“/mnt/sdd”

  5. 使用磁盘分区的UUID来设置开机自动挂载磁盘分区。

    • 如果采用在“/etc/fstab”文件中直接指定设备名(比如/dev/vdb1)的方法,会因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变(例如:/dev/vdb1可能会变成/dev/vdb2),可能会导致云服务器重启后不能正常运行。
    • UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
    1. 查询磁盘分区“/dev/vdb2”的UUID

      blkid /dev/vdb2

      [root@ecs-test-0001 ~]# blkid /dev/vdb2
      /dev/vdb2: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"

      “/dev/vdb2”的UUID为0b3040e2-1367-4abb-841d-ddb0b92693df。

    2. 设置开机自动挂载磁盘分区

      vi /etc/fstab

      按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,将两个分区的如下信息添加进来。
      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df    /mnt/sdd     ext4    defaults     0    2

      按“ESC”后,输入“:wq”,按“Enter”,保存设置并退出编辑器。

      表3 参数说明

      参数示例

      说明

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df

      磁盘分区的UUID

      /mnt/sdc

      磁盘分区的挂载目录

      ext4

      磁盘分区的文件系统格式

      defaults

      磁盘分区的挂载选项,此处通常设置为defaults即可

      0

      • Linux dump备份选项。
        • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
        • 1表示使用Linux dump备份。

      2

      • fsck选项,即开机时是否使用fsck检查磁盘。
        • 2表示从挂载点为非根目录(/)的分区开始检验。
        • 1表示从挂载点为根目录(/)的分区开始检验。
        • 0表示不检验。

  1. 验证自动挂载功能已生效。

    umount /dev/vdb2

    mount -a

    则系统会将“/etc/fstab”文件所有内容重新加载。

    查询文件系统挂载信息。

    mount | grep /mnt/sdd

    回显类似如下信息,说明自动挂载功能生效:

    root@ecs-test-0001 ~]# mount | grep /mnt/sdd
    /dev/vdb2 on /mnt/sdd type ext4 (rw,relatime,data=ordered)

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