系统:Centos7,磁盘只有一块
1、环境描述:因一开始为做好规划导致磁盘分区不够用,现需要进行扩容
数据盘/dev/vdb1 (非LVM卷)中存在数据并且随生产需要的增长已经存不下了,需要进行扩容操作
① 这里模拟需求,一些大文件,再创建一些小文件,添加一些数据
dd if=/dev/zero of=mysqllog.txt bs=1024M count=14
touch mysql-log{0001..5888}
echo qwert123456 > mysql-log3
② 使用hash算法得出文件的hash值,等扩容完成后进行比对
③ 将此目录下的文件打一个包再hash
tar zcf mysql-bak.tar.gz /mysql/*
④ 把值输出到一个文件中报存
2、因为没有多余的数据盘可以拷贝数据,所以只能在现有磁盘/dev/vdb上,想办法,并实现把原有空间15G扩容并保证数据的完好无损
思路: 可以先把vdb磁盘的剩余空间35G分区并做成LVM逻辑卷,然后把原有数据从vdb1的分区中拷贝到新创建的逻辑卷中,最后再把vdb1分区也做成pv物理卷加入到LVM中,这样既实现了扩容又保证了原有数据的安全性
3、把剩余容量分区并做成LVM
① 硬盘分区
fdisk /dev/vdb
同步分区表
partprobe
② 制作pv,vg,lv
# pvcreate /dev/vdb5 创建物理卷
Physical volume "/dev/vdb5" successfully created.
# pvs 查看pv信息
PV VG Fmt Attr PSize PFree
/dev/vdb5 lvm2 --- <35.00g <35.00g
# vgcreate vg1 /dev/vdb5 创建卷组vg1
Volume group "vg1" successfully created
# vgs 查看vg信息
VG #PV #LV #SN Attr VSize VFree
vg1 1 1 0 wz--n- <35.00g 0
# lvcreate -n lv1 -l 100%FREE vg1 把vg1剩余容量做成逻辑卷lv1
Logical volume "lv1" created.
# lvs 查看lv信息
lv1 vg1 -wi-a----- <35.00g
③ 给逻辑卷制作文件系统xfs
mkfs.xfs /dev/vg1/lv1
# blkid /dev/vg1/lv1
/dev/vg1/lv1: UUID="46e49f78-1073-463f-a55c-39ee28ba711e" TYPE="xfs"
④ 创建挂载点并挂载
4、拷贝数据到逻辑卷的挂载点中
cp -r /mysql/* /newdisk/
为了安全起见,要使用hash算法验证一下前后文件的hash值是否一样,一样的话就可以把原有的分区vdb1格式化并做成pv卷再加入到LVM中。
比对结果相同,确认数据无损后再执行格式化
md5sum /newdisk/mysql-log0001 /newdisk/mysqllog.txt /newdisk/mysql-bak.tar.gz > /hash2.txt
5、格式化/dev/vdb1分区并做成pv合并到LVM卷中
pvcreate /dev/vdb1
vgextend vg1 /dev/vdb1
lvextend -L +14G /dev/vg1/lv1
查看挂载容量,新扩容的14G容量并没有生效
因为刚刚添加的容量还没有文件系统,使用以下命令同步文件系统即可
xfs_growfs + 逻辑卷 # xfs文件系统使用这个
resize2fs + 逻辑卷 # ext4的文件系统使用resize2fs
6、此时就实现了分区的扩容并保证了数据的不丢失
如果还有好的方法欢迎大神们评论指教