Centos

減少 lvmgroup - 無法調整到 xxxx 範圍,因為分配了後面的範圍

  • August 12, 2021

我一直在通過減少 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==81947lv_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從您給出的內容中會理解什麼……

引用自:https://serverfault.com/questions/1074171