需求
因为最初磁盘规划没想好,导致磁盘给的太小,很快磁盘被用满了,所以需要把该磁盘扩容。
我们这里尝试将/home分区由原来的45GB增加50GB,所以首先我们需要将整个虚拟机扩容50GB,然后再把这50GB全部分给/home分区,这样我们的/home分区就将增加到95GB。
扩容方法
扩容前
-
通过df -hT查看磁盘大小(这里我们计划扩容
/home
分区) -
通过
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 ~]#
扩容步骤
-
先在Esxi上给虚拟机扩容,扩容好后启动该虚拟机(扩容的时候需要关掉虚拟机电源)
说明:
- 需要先关掉虚拟机电源;
- 不能有快照,否则会导致无法修改磁盘大小;
-
登录该虚拟机,通过
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 字节
-
新增分区
[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 ~]#
-
再次查看分区,发现多了
/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
,需要重启一下该虚拟机,否则下一步无法进行,会报错。 -
格式化新建的分区
[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
-
合并分区
[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>
说明:
主要操作命令:
- pvcreate /dev/sda3 ## 创建物理卷/dev/sda3
- vgextend euleros /dev/sda3 ## 将/dev/sda3这个逻辑卷加入到euleros卷组中
- lvextend -l+12799 /dev/mapper/euleros-home # 增加逻辑卷容量,-l或-L后面根可扩展的磁盘大小,为12799为可分配的空闲容量大小,/dev/mapper/euleros-home 可以根据df -hT看到,也就是我们要扩容的磁盘分区
-
最后扩容文件系统,让系统识别
[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
扩容后
所有操作完成了,我们来检验一下我们的成果。
-
通过
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 ~]#
-
通过
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 ~]#