在VM虚拟机中,我们经常会选择默认磁盘大小20G,用着用着才发现20G不够用,服务启动不了,就很尴尬,让我们今天一起来学习下,如何在虚拟机给磁盘扩容。
一:关闭虚拟机,添加硬盘
背景:我们使用df -h命令,发现磁盘使用率已经37%,我们给此磁盘扩容,简单演示下扩容的过程。
![](https://i-blog.csdnimg.cn/blog_migrate/ac9e73db3ebcae72290e58267f351bb1.png)
1:虚拟机关机,添加一块20G大小的硬盘,添加硬盘一路选择默认,并单击确定添加完成,就不多赘述,如图所示。然后开启虚拟机
![](https://i-blog.csdnimg.cn/blog_migrate/8620bc6621863f72b096d1be7e02c80a.png)
2:虚拟机开机后,我们用fdisk -l 命令查看新增加的硬盘,如图所示
![](https://i-blog.csdnimg.cn/blog_migrate/12d67089da55a2e657bbff1be5b660da.png)
3:我们通过fdisk命令来对新增加硬盘进行分区,fidsk +硬盘名,不同环境名字可能不一样,我这里的管理命令是: fdisk /dev/sdb
先输入n 新建分区
后输入 p 主分区
连续输入2次回车确认
然后输入 wq 保存并退出
然后我们就创建了一个新分区,大小是20GB。
[root@GMtest ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x4c4d9e95 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n //创建新分区
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p //输入P,设置为主分区
分区号 (1-4, 默认 1): //输入1保持默认
第一个扇区 (2048-41943039, 默认 2048): //输入回车,默认
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): //输入回车,默认
创建了一个新分区 1,类型为“Linux”,大小为 20 GiB。
命令(输入 m 获取帮助):wq
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
二:扩容磁盘
1:使用命令mkfs.ext4 硬盘名对刚才创建的分区进行格式化,我的是:mkfs.ext4 /dev/sdb1
[root@GMtest ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
创建含有 5242624 个块(每块 4k)和 1310720 个inode的文件系统
文件系统UUID:dd061fdb-49af-42d4-9f20-8811cc0ce301
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
正在分配组表: 完成
正在写入inode表: 完成
创建日志(32768 个块)完成
写入超级块和文件系统账户统计信息: 已完成
[root@GMtest ~]#
2:使用命令pvcreate /dev/sdb1 创建物理卷
[root@GMtest ~]# pvcreate /dev/sdb1
WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@GMtest ~]#
3:使用pvdisplay命令用于显示物理卷的属性。pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。
需要扩容的磁盘的VG Name是”r1“[也就是默认40G的那块硬盘]
[root@GMtest ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name rl
PV Size <39.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 9983
Free PE 0
Allocated PE 9983
PV UUID lj7TOE-p6bV-h2fC-9Gpq-do7K-s5PL-nnDJO1
"/dev/sdb1" is a new physical volume of "<20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID RYESlr-62wA-Q0Gk-bBUi-FsOZ-LOSK-SUpnMa
4:使用vgextend 命令用于扩容卷组大小,这里是:
[root@GMtest ~]# vgextend rl /dev/sdb1
Volume group "rl" successfully extended
5:我们使用lvextend -L +19.9G +路径名扩容根分区【+那里新增的硬盘多大就输入多大】,不知道路径的可以用df -h命令查看。我扩容了20G,只能加小于20G。
![](https://i-blog.csdnimg.cn/blog_migrate/b435f75684e2c068748beaa48318b85d.png)
[root@GMtest ~]# lvextend -L +19.9G /dev/mapper/rl-root
Rounding size to boundary between physical extents: 19.90 GiB.
Size of logical volume rl/root changed from <35.08 GiB (8980 extents) to 54.98 GiB (14075 extents).
Logical volume rl/root successfully resized.
[root@GMtest ~]#
6:使用xfs_growfs命令增加 XFS 文件系统的大小,实际增加存储空间。
[root@GMtest ~]# xfs_growfs /dev/mapper/rl-root
meta-data=/dev/mapper/rl-root isize=512 agcount=4, agsize=2298880 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=9195520, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=4490, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 9195520 to 14412800
[root@GMtest ~]#
7:扩容完成,使用df -h命令查看
之前
![](https://i-blog.csdnimg.cn/blog_migrate/ac9e73db3ebcae72290e58267f351bb1.png)
之后
[root@GMtest ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 726M 9.6M 716M 2% /run
/dev/mapper/rl-root 55G 14G 42G 24% /
/dev/sda1 1014M 285M 730M 29% /boot
tmpfs 363M 52K 363M 1% /run/user/42
tmpfs 363M 36K 363M 1% /run/user/0
[root@GMtest ~]#
至此,扩容就完成。