Linux
將 PV1 的 LVM 移動到 PV2
如何將 sda3 上的 LVM 移動/合併到 sda2?問題是 vg1-var 和 vg1-opt 駐留在兩個 PV 上,所以 a
pvmove
不會解決問題。sda 8:0 0 80G 0 disk ├─sda1 8:1 0 300M 0 part /boot ├─sda2 8:2 0 37G 0 part │ ├─vg1-root 253:0 0 5G 0 lvm / │ ├─vg1-swap 253:1 0 4G 0 lvm [SWAP] │ ├─vg1-usr 253:2 0 8G 0 lvm /usr │ ├─vg1-home 253:4 0 2G 0 lvm /home │ ├─vg1-var 253:5 0 6.7G 0 lvm /var │ ├─vg1-tmp 253:6 0 10G 0 lvm /tmp │ └─vg1-opt 253:7 0 5G 0 lvm /opt └─sda3 8:3 0 42.7G 0 part ├─vg1-var 253:5 0 6.7G 0 lvm /var └─vg1-opt 253:7 0 5G 0 lvm /opt
PV VG Fmt Attr PSize PFree /dev/sda2 vg1 lvm2 a-- 37.00g 0 /dev/sda3 vg1 lvm2 a-- <42.70g 39.00g
最簡單的方法是臨時附加一個新驅動器
pvmove /dev/sda3
。這將使您成長/dev/sda2
並將一切移回。如果這不可能,您將不得不對您擁有的驅動器中的數據進行洗牌。由於對齊問題,相鄰的 PV 通常不能直接合併,因此您仍然需要移動所有內容兩次。
你
/dev/sda3
的容量是 42.7G,有 39G 免費,所以使用了 ~3.7G。所以你應該能夠縮小/dev/sda3
4G,以便/dev/sda4
在磁碟末尾創建一個新的 4G 大小:pvresize /dev/sda3 --setphysicalvolumesize 37G parted /dev/sda -- resizepart 3 -4G parted /dev/sda -- mkpart primary -4G -1
將所有數據移動到新分區:
vgextend vg1 /dev/sda4 pvmove /dev/sda3 vgreduce vg1 /dev/sda3
刪除現在免費的
/dev/sda3
並相應增長/dev/sda2
:parted /dev/sda -- rm 3 parted /dev/sda -- resizepart 2 -4G pvresize /dev/sda2
將所有內容從
/dev/sda4
現在足夠大/dev/sda2
:pvmove /dev/sda4 vgreduce vg1 /dev/sda4
此時,您的 VG 僅使用單個 PV
/dev/sda2
,.刪除現在免費的
/dev/sda4
並再次增長/dev/sda2
:parted /dev/sda -- rm 4 parted /dev/sda -- resizepart 2 -1 pvresize /dev/sda2
請注意,這些步驟非常粗糙,並且在某些時候可能會失敗,您必須相應地進行調整。特別
parted
是命令不應盲目執行,始終驗證發生了什麼parted /dev/sda print free
,vgs
,lvs
,pvs
,lsblk
, …如果沒有充分的理由來洗牌,我會原樣離開。麻煩多多,收益少。擁有多個 PV 也有優勢,例如額外的元數據副本。