(一)情况介绍
cnetos7,发现lvm逻辑卷占用空间已满
很明显,df -h 查看磁盘空间,发现deploylvm这个逻辑卷20g都被占用了,不考虑挂载的目录下内容是不是可以删除,我们需要扩容
(二)查看挂载目录下的大文件
进入挂载目录 cd /opt/tidb-deploy/
查看当前目录占用空间 du -h --max-depth=1 (-h 代表容易读的显示; 1代表最大深度,如果要查询当前文件下的子目录,可以改成2)
很明显,software目录占用了19g的空间,进入这个目录,继续执行du命令,找到比较大的文件,看看是什么,如果可以删除,那么空间占用也会降低,这里我们考虑扩容
(三)lvm扩容前的查询情况
为了方便理解,下面全面了解当前lvm空间情况,便于后续扩容操作。
(1)pv 物理卷查询(pvs / pvdisplay)
很明显,磁盘sdb的分区sdb1,在这上面创建了pv,这些pv组成了一个vg卷组(tidbvg)有空闲的物理卷pv,7679个PE,1个PE4m,也就是大约7679*4m≈30g的空闲空间
(2)vg 卷组查询(vgs / vgdisplay)
这个tidbvg卷组是100g,已分配70g,30g未分配
(3)lv 逻辑卷查询(lvs / lvdisplay)
很明显,100g的tidbvg卷组,划分了2个lvm逻辑卷,分别是50g的datalvm和20g的deploylvm,现在我们是deploylvm满了,扩容这个
(4)空闲磁盘查询 (lsblk)
这里可以看到sdb1只分了2个lvm,还有30g没分,一块sdc磁盘是新增的,还没用到
(四)规划扩容
经过上面的查询,服务器其实有30g的空间可以扩容lvm,不必再增加新的磁盘
这也就是为什么在创建lvm逻辑卷的时候最好预留一部分空间的原因。如果是生产环境,数据盘满了,我可以直接用预留空间扩容,后续再考虑增加磁盘,不会影响业务,方便操作。
下面扩容从使用已有的预留空间扩容,和新增磁盘扩容lvm2个部分介绍扩容操作。
(五)lvm扩容操作
(1)使用已有的预留空间扩容lvm
通过上面的查询,这30g的预留空间实际上已经是vg卷组里的空间了,所以我们直接扩展lvm就行
(注意扩容的时候,+20g,这个加号 不要丢,+是扩容20g,不带加号是扩容到20g,概念是不一样的哦)
lvextend -L +20g /dev/tidbvg/deploylvm
可以看到LV虽然扩展了,但是文件系统大小还是原来的,下面开始扩容文件系统
centos6:ext4文件系统扩容使用命令语法:resize2fs 逻辑卷名称(resize2fs /dev/tidbvg/deploylvm )
centos7,8:xfs文件系统扩容使用命令语法:xfs_growfs 挂载点 (xfs_growfs /opt/tidb-deploy)
resize2fs和xfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用;当然一般来说centos7是推荐使用的xfs文件系统,但也可以是ext4,这个自己的服务器可以通过 df -T 命令自行查看
xfs_growfs /opt/tidb-deploy
在线扩容完成,嘎嘎方便
(2)新增磁盘扩容lvm
如何新增磁盘,emo,这个自己操作吧。
空闲磁盘查询的时候发现有一块sdc磁盘没用,这个是我新增进去的,使用这个再扩容20g,一些步骤可以参考
新增磁盘创建LVM逻辑卷?速来_小小白下士的博客-CSDN博客
1.新增磁盘分区
fdisk /dev/sdc
2.创建pv物理卷
pvcreate /dev/sdc1
--输出:Physical volume "/dev/sdc1" successfully created.
3.扩展vg卷组
vgextend 需要扩展的vg组名 空闲磁盘名称
可以看到tidbvg卷组现在空闲60g,就是刚扩展的50g+原来剩下的10g
[root@tidbserver software]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 tidbvg lvm2 a-- <100.00g <10.00g
/dev/sdc1 lvm2 --- <50.00g <50.00g
[root@tidbserver software]# vgextend tidbvg /dev/sdc1
Volume group "tidbvg" successfully extended
[root@tidbserver software]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 tidbvg lvm2 a-- <100.00g <10.00g
/dev/sdc1 tidbvg lvm2 a-- <50.00g <50.00g
[root@tidbserver software]# vgs
VG #PV #LV #SN Attr VSize VFree
tidbvg 2 2 0 wz--n- 149.99g 59.99g
4.扩展lv逻辑卷 +扩展文件系统
这里的命令和上面 "使用已有预留空间扩容" 步骤操作类似了
[root@tidbserver software]# lvextend -L +20g /dev/tidbvg/deploylvm
Size of logical volume tidbvg/deploylvm changed from 40.00 GiB (10240 extents) to 60.00 GiB (15360 extents).
Logical volume tidbvg/deploylvm successfully resized.
[root@tidbserver software]# xfs_growfs /opt/tidb-deploy
meta-data=/dev/mapper/tidbvg-deploylvm isize=512 agcount=8, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=10485760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 10485760 to 15728640
[root@tidbserver software]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 9.4M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda3 50G 14G 37G 27% /
/dev/sda1 6.0G 33M 6.0G 1% /home
/dev/mapper/tidbvg-datalvm 50G 1.6G 49G 4% /opt/tidb-data
/dev/mapper/tidbvg-deploylvm 60G 20G 40G 34% /opt/tidb-deploy
tmpfs 379M 12K 379M 1% /run/user/42
tmpfs 379M 0 379M 0% /run/user/0
到此就完成了新增的磁盘,扩容到lvm
LVM可以动态增加,但是XFS不支持动态缩小,所以我们无法实现基于xfs的动态缩小。
实际生产中,不推荐使用缩减,扩的时候给小点,不够再继续扩,不推荐使用缩减,可能会丢失数据,所以预留一部分空间还是很有效的。