Linux下未做lvm情況下如何擴容才能保證現有數據的不丟失

系統: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、此時就實現了分區的擴容並保證了數據的不丟失
在這裏插入圖片描述

如果還有好的方法歡迎大神們評論指教

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章