小言_互联网的博客

Linux下未做lvm情况下如何扩容才能保证现有数据的不丢失

271人阅读  评论(0)

系统: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、此时就实现了分区的扩容并保证了数据的不丢失

如果还有好的方法欢迎大神们评论指教


转载:https://blog.csdn.net/qq_39565646/article/details/104594493
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场