進階應用
VG Import/Export
用途:將 VG 的磁碟遷移至不同的主機上
移除 PV Disk
從一個現有 LV 中移除正在使用的一個 PV Disk (/dev/sdb1)
NOTE: 這個 LV 的所屬 VG 必須要有足夠的可用空間
# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdb1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G 15.00G
# pvremove /dev/sdb1
/dev/sdb1: Moved: 2.0%
...
/dev/sdb1: Moved: 79.2%
...
/dev/sdb1: Moved: 100.0%
# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 17.15G 0
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G 15.00G
# vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg"
[root@tng3-1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 myvg lvm2 a- 17.15G 7.15G
/dev/sdb1 lvm2 -- 17.15G 17.15G
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G
搬移 PV Disk
搬移現有 PV Disk (/dev/sdb1) 內的所有資料至一個新的 PV Disk (/dev/sdd1)
方法一:使用 Mirror 方式 *建議*
參考連結:
- https://www.thegeekdiary.com/centos-rhel-7-how-to-create-and-remove-the-lvm-mirrors-using-lvconvert/
- https://linux.m2osw.com/creating-drive-mirror-lvm-including-exact-partition-cloning
說明:
- VG: vg_data
- LV: db_worktmp, lv_mydev, lv_worktmp
- PV: from /dev/sdb1 to /dev/sdc
1. 確認新硬碟的容量需求
#> lvs -a -o name,copy_percent,devices,lv_size vg_data
LV Cpy%Sync Devices LSize
db_worktmp /dev/sdb1(0) 20.00g
lv_mydev /dev/sdb1(5121) 60.00g
lv_mydev /dev/sdb1(10242) 60.00g
lv_worktmp /dev/sdb1(20482) 500.00m
2. 將新硬碟加入到同一個 VG 內
#> vgextend vg_data /dev/sdc
3. 逐一將所有 LV 作完 Mirror
#> lvconvert -m1 vg_data/db_worktmp
#> lvconvert -m1 vg_data/lv_mydev
#> lvconvert -m1 vg_data/lv_worktmp
檢查 Mirror 時的進度
#> lvs -a -o name,copy_percent,devices,lv_size vg_data
4. 逐一將所有 LV 移除 Mirror,需指定舊硬碟代號
#> lvconvert -m0 vg_data/db_worktmp /dev/sdb1
#> lvconvert -m0 vg_data/lv_mydev /dev/sdb1
#> lvconvert -m0 vg_data/lv_worktmp /dev/sdb1
5. 從 VG 裡移除 PV /dev/sdb1, 再移除整個 PV
#> vgreduce vg_data /dev/sdb1
#> pvremove /dev/sdb1
方法二:使用 PV 搬移指令 pvmove
NOTE: PV 必須在同一個 VG 才能互相搬移
# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G
# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created
# vgextend myvg /dev/sdd1
Volume group "myvg" successfully extended
[root@tng3-1]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdd1 myvg lvm2 a- 17.15G 17.15G 0
# pvmove /dev/sdb1 /dev/sdd1
/dev/sdb1: Moved: 10.0%
...
/dev/sdb1: Moved: 79.7%
...
/dev/sdb1: Moved: 100.0%
[root@tng3-1]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 17.15G 0
/dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdd1 myvg lvm2 a- 17.15G 15.15G 2.00G
# vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg"