在VM虚拟机中,我们经常会选择默认磁盘大小20G,用着用着才发现20G不够用,服务启动不了,就很尴尬,让我们今天一起来学习下,如何在虚拟机给磁盘扩容。
一:关闭虚拟机,添加硬盘
背景:我们使用df -h命令,发现磁盘使用率已经37%,我们给此磁盘扩容,简单演示下扩容的过程。
1:虚拟机关机,添加一块20G大小的硬盘,添加硬盘一路选择默认,并单击确定添加完成,就不多赘述,如图所示。然后开启虚拟机
2:虚拟机开机后,我们用fdisk -l 命令查看新增加的硬盘,如图所示
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/sdb1mke2fs 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。
[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-rootmeta-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=1data = bsize=4096 blocks=9195520, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0, ftype=1log =internal log bsize=4096 blocks=4490, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0data blocks changed from 9195520 to 14412800[root@GMtest ~]#
7:扩容完成,使用df -h命令查看
之前
之后
[root@GMtest ~]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 4.0M 0 4.0M 0% /devtmpfs 1.8G 0 1.8G 0% /dev/shmtmpfs 726M 9.6M 716M 2% /run/dev/mapper/rl-root 55G 14G 42G 24% //dev/sda1 1014M 285M 730M 29% /boottmpfs 363M 52K 363M 1% /run/user/42tmpfs 363M 36K 363M 1% /run/user/0[root@GMtest ~]#
至此,扩容就完成。