需求

因为最初磁盘规划没想好,导致磁盘给的太小,很快磁盘被用满了,所以需要把该磁盘扩容。

我们这里尝试将/home分区由原来的45GB增加50GB,所以首先我们需要将整个虚拟机扩容50GB,然后再把这50GB全部分给/home分区,这样我们的/home分区就将增加到95GB。

扩容方法

扩容前

  1. 通过df -hT查看磁盘大小(这里我们计划扩容/home分区)

    image-20230601194519951

  2. 通过lsblk命令查看当前系统的分区情况

    [root@localhost ~]# lsblk
    NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                8:0    0  150G  0 disk
    ├─sda1             8:1    0    1G  0 part /boot
    └─sda2             8:2    0   99G  0 part
      ├─euleros-root 253:0    0   50G  0 lvm  /
      ├─euleros-swap 253:1    0  3.9G  0 lvm  [SWAP]
      └─euleros-home 253:2    0 45.1G  0 lvm  /home           # 扩容前,我们/home的大小为45GB,我们扩容后应该为95GB
    sr0               11:0    1  4.6G  0 rom
    [root@localhost ~]#
    

扩容步骤

  1. 先在Esxi上给虚拟机扩容,扩容好后启动该虚拟机(扩容的时候需要关掉虚拟机电源

    image-20230601200707782

    说明:

    1. 需要先关掉虚拟机电源;
    2. 不能有快照,否则会导致无法修改磁盘大小;
  2. 登录该虚拟机,通过fdisk -l查看我们刚才新增的磁盘容量是否已经增加

    [root@localhost ~]# fdisk -l
    
    磁盘 /dev/sda:161.1 GB, 161061273600 字节,314572800 个扇区        # 原来这里是100GB,现在有150GB了(多余的10GB也不知道哪来的)
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000bb65d
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048     2099199     1048576   83  Linux
    /dev/sda2         2099200   209715199   103808000   8e  Linux LVM     # 目前看只有sda1和sda2两个分区
    
    磁盘 /dev/mapper/euleros-root:53.7 GB, 53687091200 字节,104857600 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    磁盘 /dev/mapper/euleros-swap:4160 MB, 4160749568 字节,8126464 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    磁盘 /dev/mapper/euleros-home:48.4 GB, 48444211200 字节,94617600 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
  3. 新增分区

    [root@localhost ~]# fdisk /dev/sda                  # 通过该命令新增分区
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    
    命令(输入 m 获取帮助):n                                 # n 新增分区
    Partition type:
       p   primary (2 primary, 0 extended, 2 free)
       e   extended
    Select (default p):                                   # 不输入直接回车代表默认p,主分区
    Using default response p
    分区号 (3,4,默认 3)# 直接回车默认即可
    起始 扇区 (209715200-314572799,默认为 209715200)# 回车默认即可
    将使用默认值 209715200
    Last 扇区, +扇区 or +size{K,M,G} (209715200-314572799,默认为 314572799)# 回车默认即可
    将使用默认值 314572799
    分区 3 已设置为 Linux 类型,大小设为 50 GiB
    
    命令(输入 m 获取帮助):t                              # 输入命令t
    分区号 (1-3,默认 3)# 回车默认即可
    Hex 代码(输入 L 列出所有代码):8e                      # 输入8e(8e代表Linux LVM分区类型)
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):w                              # 保存以上更改信息
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    正在同步磁盘。
    [root@localhost ~]#
    
  4. 再次查看分区,发现多了/dev/sda3这个分区

    [root@localhost ~]# fdisk -l
    
    磁盘 /dev/sda:161.1 GB, 161061273600 字节,314572800 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000bb65d
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048     2099199     1048576   83  Linux
    /dev/sda2         2099200   209715199   103808000   8e  Linux LVM
    /dev/sda3       209715200   314572799    52428800   8e  Linux LVM        # 多了这个分区,而且类型是Linux LVM
    
    磁盘 /dev/mapper/euleros-root:53.7 GB, 53687091200 字节,104857600 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    
    磁盘 /dev/mapper/euleros-swap:4160 MB, 4160749568 字节,8126464 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    
    磁盘 /dev/mapper/euleros-home:48.4 GB, 48444211200 字节,94617600 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    [root@localhost ~]#
    

    通过lsblk查看分区情况

    [root@localhost ~]# lsblk
    NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                8:0    0  150G  0 disk
    ├─sda1             8:1    0    1G  0 part /boot
    ├─sda2             8:2    0   99G  0 part
    │ ├─euleros-root 253:0    0   50G  0 lvm  /
    │ ├─euleros-swap 253:1    0  3.9G  0 lvm  [SWAP]
    │ └─euleros-home 253:2    0 45.1G  0 lvm  /home
    └─sda3             8:3    0   50G  0 part                # 如果这时候还看不到sda3,那需要重启一下虚拟机
    sr0               11:0    1  4.6G  0 rom
    [root@localhost ~]#
    

    说明:

    如果这时候通过lsblk还看不到新增的分区sda3,需要重启一下该虚拟机,否则下一步无法进行,会报错。

  5. 格式化新建的分区

    [root@localhost ~]# mke2fs -t ext4 /dev/sda3
    mke2fs 1.45.0 (6-Mar-2019)
    创建含有 13107200 个块(每块 4k)和 3276800 个inode的文件系统
    文件系统UUID:a3d078f0-6563-44da-a3a4-f5170d10fcdd
    超级块的备份存储于下列块:
    	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    	4096000, 7962624, 11239424
    
    正在分配组表: 完成
    正在写入inode表: 完成
    创建日志(65536 个块)完成
    写入超级块和文件系统账户统计信息: 已完成
    
    [root@localhost ~]#
    

    说明:

    根据实际情况,如果系统类型是xfs,那么需要改成mke2fs -t xfs /dev/sda3

  6. 合并分区

    [root@localhost ~]# lvm                       # 进入逻辑卷操作命令行
    lvm> pvcreate /dev/sda3                       # 创建物理卷/dev/sda3
    WARNING: ext4 signature detected on /dev/sda3 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sda3.
      Physical volume "/dev/sda3" successfully created.
    lvm> vgdisplay                                 # 查看逻辑卷分组
      --- Volume group ---
      VG Name               euleros                # 这个是卷组名称,接下来的命令要用到
      System ID
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  5
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                3
      Open LV               3
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               148.99 GiB
      PE Size               4.00 MiB
      Total PE              38142
      Alloc PE / Size       25342 / 98.99 GiB
      Free  PE / Size       12800 / 50.00 GiB
      VG UUID               FhkADC-CfQ8-OKwB-MK4z-V4Aw-U6xe-M4oQ8U
    lvm> vgextend euleros /dev/sda3                          # 将/dev/sda3这个逻辑卷加入到euleros卷组中
      Volume group "euleros" successfully extended
    lvm> vgdisplay -v                                        # 查看卷组详细信息
      --- Volume group ---
      VG Name               euleros
      System ID
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  5
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                3
      Open LV               3
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               148.99 GiB
      PE Size               4.00 MiB
      Total PE              38142
      Alloc PE / Size       25342 / 98.99 GiB
      Free  PE / Size       12800 / 50.00 GiB
      VG UUID               FhkADC-CfQ8-OKwB-MK4z-V4Aw-U6xe-M4oQ8U
    
      --- Logical volume ---
      LV Path                /dev/euleros/swap
      LV Name                swap
      VG Name                euleros
      LV UUID                LHH1Ye-9wAv-TC7p-fZPM-rEcO-sVl9-IZij2F
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-06-01 18:58:51 +0800
      LV Status              available
      # open                 2
      LV Size                <3.88 GiB
      Current LE             992
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:1
    
      --- Logical volume ---
      LV Path                /dev/euleros/home                # 逻辑卷的名称,也是我们需要扩容的卷
      LV Name                home
      VG Name                euleros
      LV UUID                0wYhhL-V0t7-EwvK-hJWZ-2RdL-foUz-URQnw7
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-06-01 18:58:51 +0800
      LV Status              available
      # open                 1
      LV Size                <45.12 GiB
      Current LE             11550
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2
    
      --- Logical volume ---
      LV Path                /dev/euleros/root
      LV Name                root
      VG Name                euleros
      LV UUID                ppqcnE-qWsb-qhsX-QY2a-TvXj-ePVv-xotD3h
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-06-01 18:58:54 +0800
      LV Status              available
      # open                 1
      LV Size                50.00 GiB
      Current LE             12800
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
    
      --- Physical volumes ---
      PV Name               /dev/sda2
      PV UUID               hA5CGs-b8LD-04SG-1nAq-nIU4-kMlj-wx3z2r
      PV Status             allocatable
      Total PE / Free PE    25343 / 1                               # 这里是已经分配的,后面空闲大小为1可以看出来
    
      PV Name               /dev/sda3                               # 这会我们就能看到/dev/sda3这个物理卷了
      PV UUID               2U4wD1-vRFM-7Umi-v5ka-006u-9Qlh-AOxOkZ
      PV Status             allocatable                             # 说明是可以分配的
      Total PE / Free PE    12799 / 12799                           # 这是这个卷的总大小/空闲大小
    
    lvm> lvextend -l+12799 /dev/mapper/euleros-home                 # 增加逻辑卷容量,12799为上面看到的空闲容量
      Size of logical volume euleros/home changed from <45.12 GiB (11550 extents) to 95.11 GiB (24349 extents).
      Logical volume euleros/home successfully resized.
    lvm>
    

    说明:

    主要操作命令:

    1. pvcreate /dev/sda3 ## 创建物理卷/dev/sda3
    2. vgextend euleros /dev/sda3 ## 将/dev/sda3这个逻辑卷加入到euleros卷组中
    3. lvextend -l+12799 /dev/mapper/euleros-home # 增加逻辑卷容量,-l或-L后面根可扩展的磁盘大小,为12799为可分配的空闲容量大小,/dev/mapper/euleros-home 可以根据df -hT看到,也就是我们要扩容的磁盘分区
  7. 最后扩容文件系统,让系统识别

    [root@localhost ~]# resize2fs /dev/mapper/euleros-home
    resize2fs 1.45.0 (6-Mar-2019)
    /dev/mapper/euleros-home 上的文件系统已被挂载于 /home;需要进行在线调整大小
    
    old_desc_blocks = 6, new_desc_blocks = 12
    /dev/mapper/euleros-home 上的文件系统现在为 24933376 个块(每块 4k)。
    
    [root@localhost ~]#
    

    说明:

    如果是xfs类型的文件系统,需要用xfs_growfs命令,如:xfs_growfs /dev/mapper/euleros-home

扩容后

所有操作完成了,我们来检验一下我们的成果。

  1. 通过df -hT检查磁盘容量是否真的增加了

    [root@localhost ~]# df -hT
    文件系统                 类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/euleros-root ext4       49G  1.2G   46G    3% /
    devtmpfs                 devtmpfs  1.9G     0  1.9G    0% /dev
    tmpfs                    tmpfs     1.9G     0  1.9G    0% /dev/shm
    tmpfs                    tmpfs     1.9G  8.9M  1.9G    1% /run
    tmpfs                    tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda1                ext4      976M  115M  795M   13% /boot
    /dev/mapper/euleros-home ext4       94G   60M   90G    1% /home         # 原来总容量是45GB,现在变成了94GB,说明确实如我们所想那样扩容了50GB
    tmpfs                    tmpfs     378M     0  378M    0% /run/user/0
    [root@localhost ~]#
    
  2. 通过lsblk命令再次查看确认

    [root@localhost ~]# lsblk
    NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                8:0    0  150G  0 disk
    ├─sda1             8:1    0    1G  0 part /boot
    ├─sda2             8:2    0   99G  0 part
    │ ├─euleros-root 253:0    0   50G  0 lvm  /
    │ ├─euleros-swap 253:1    0  3.9G  0 lvm  [SWAP]
    │ └─euleros-home 253:2    0 95.1G  0 lvm  /home               # 这里总大小也确实增涨为95GB了
    └─sda3             8:3    0   50G  0 part
      └─euleros-home 253:2    0 95.1G  0 lvm  /home
    sr0               11:0    1  4.6G  0 rom
    [root@localhost ~]#
    
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐