一、场景描述
在kvm虚拟机中安装好了kubernets,但是一开始虚拟机的磁盘只有50G,为了kubernetes中可以运行更多的pod,因此需要对虚拟机进行磁盘扩容,由于虚拟机在系统安装是磁盘使用的lvm的方式,所以可以进行根分区扩容,若采用的是传统的分区方式,扩容需要采用其他的方案
二、操作步骤
1、使用qemu-img对虚拟机的磁盘文件进行扩容命令如下:
qemu-img -resize k8s-master-1.23 +100G
ps: 需要提起将虚拟机关机,否则会出现扩容失败,导致磁盘文件损坏,具体解决方法: https://blog.51cto.com/u_15743393/6174635
扩容完成如下:
[root@tyb ~]# qemu-img info /vm/k8s-master-1.23.qcow2
image: /vm/k8s-master-1.23.qcow2
file format: qcow2
virtual size: 150G (161061273600 bytes)
disk size: 3.8G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
2、扩容跟分区
这是开启虚拟机我们可以看到磁盘的分区大小并没有改变
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 150G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 49G 0 part
└─centos-root 253:0 0 49G 0 lvm /
但是磁盘的总大小已经变成了150G 接下来需要对扩容的100G进行分区 fdsik命令完成后如下所示
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 150G 0 disk
├─vda1 252:1 0 1G 0 part /boot
├─vda2 252:2 0 49G 0 part
│ └─centos-root 253:0 0 49G 0 lvm /
└─vda3 252:3 0 90G 0 part
这里可以看到我们新添加的分区 查看你一下虚拟机中lvm的结果
[root@master ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <49.00g
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 1 0 wz--n- <49.00g 0
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centos lvm2 a-- <49.00g 0
下一步开始lv的扩容
# 将新添加的分区做成pv
[root@master ~]# pvcreate /dev/vda3
Physical volume "/dev/vda3" successfully created.
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centos lvm2 a-- <49.00g 0
/dev/vda3 lvm2 --- 90.00g 90.00g
# 扩容原有的vg
[root@master ~]# vgextend centos /dev/vda3
Volume group "centos" successfully extended
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 1 0 wz--n- 138.99g <90.00g
[root@master ~]#
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centos lvm2 a-- <49.00g 0
/dev/vda3 centos lvm2 a-- <90.00g <90.00g
# 扩容lv,这里的lv就是我的根分区
[root@master ~]# lvextend /dev/centos/root /dev/vda3
Size of logical volume centos/root changed from <49.00 GiB (12543 extents) to 138.99 GiB (35582 extents).
Logical volume centos/root successfully resized.
You have new mail in /var/spool/mail/root
[root@master ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 138.99g
这块扩容的比较简单直接将所有的空间全部扩容进去了
3、最后重载根分区
# 先查看根分区的文件类型,然后选用合适的工具
[root@master ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.6M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 49G 3.9G 46G 8% /
/dev/vda1 xfs 1014M 137M 878M 14% /boot
tmpfs tmpfs 396M 0 396M 0% /run/user/0
# 我的根分区是xfs的文件系统,所以使用xfs_growfs进行重载
[root@master ~]# xfs_growfs /
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3211008 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=12844032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6271, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12844032 to 36435968
# 完成后如下
[root@master ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.6M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 139G 3.9G 136G 3% /
/dev/vda1 xfs 1014M 137M 878M 14% /boot
tmpfs tmpfs 396M 0 396M 0% /run/user/0
最后完美扩容根分区