減少 lvmgroup - 無法調整到 xxxx 範圍,因為分配了後面的範圍
我一直在通過減少 lvmgroup 來減少 Centos 6.10 圖像的大小。我已經能夠執行這個命令了:
pvresize -tv --setphysicalvolumesize 1600G /dev/md125p2
它給了我以下錯誤資訊:
/dev/md125p2: cannot resize to 409599 extents as later ones are allocated.
我試圖了解如何構造 pvmove 命令以消除錯誤,但我不太明白這個概念。
這是此命令的輸出
pvs -v --segments /dev/md125p
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 0 384000 lv_mysql 0 linear /dev/md125p2:0-383999 /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 384000 81947 0 free /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 465947 12800 lv_root 0 linear /dev/md125p2:465947-478746 /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 478747 1998 lv_swap 0 linear /dev/md125p2:478747-480744 /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 480745 7500 lv_home 0 linear /dev/md125p2:480745-488244
我知道移動命令必須看起來像這樣:
pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end
我只是不清楚如何計算 yyyy-end 部分。我認為這意味著移動從 384000 開始的 81947(塊?),但是“yyyy”和“end”是什麼?
所以,我可以看到一切都已開啟
/dev/md125p2
,我們想要減小這個 PV 的大小。您的輸出
pvs -v --segments /dev/md125p
顯示您SSize==81947
在lv_mysql
您的lv_root
. 這足以容納物理佈局中lv_root
的所有LV。所以,我建議的第一組數字是:
***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499
也就是說,將整個 移動
lv_home
到 之後直接開始的空閒空間lv_mysql
。然後重新執行
pvs -v --segments /dev/md125p
以查看修改後的數字,並將下一個塊移動到剩餘的任何可用空間中。這將有效地對您的 PV 進行碎片整理。
現在,
pvmove
可能有比我使用的更多的選項(也許指定 PV 而不是范圍?)但我感到舒服的只是明確地使用塊,所以我所有的源和目標都是形式/dev/<dev>:<Start>-<End>
或/dev/<dev>:<Start>+<SSize-1>
。我懷疑您的問題主要是缺少“源”規範的範圍。
我已經看到了一些他們使用的例子
-end
——我不知道這是否應該起作用,但它會引出“什麼結束?”的問題。所以我避免使用它並使用明確的塊號。您只需要注意+
語法是加號,並且需要比 SSize 小一。額外的
好的,在原始碼方面,您似乎可以
-name lv_home /dev/md125p2
作為簡寫/dev/md125p2:480745-488244
- 但還要注意,如果lh_home
被分割成多個範圍,這將變得更加複雜(這是否意味著“所有片段?”) - 我想我仍然更喜歡數字接近。請注意,您在問題中的範例不包括 LV 名稱,所以我不確定pvmove
從您給出的內容中會理解什麼……