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

減少 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”是什麼?

答案1

所以,我可以看到一切都在進行/dev/md125p2,我們希望能減小這個 PV 的大小。

你的輸出顯示你在你的之後和之前pvs -v --segments /dev/md125p有一個非常大的可用空間(SSize==81947)。這足夠大,可以容納和lv_mysqllv_rootlv_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>or的形式/dev/<dev>:<Start>+<SSize-1>

我懷疑您的問題主要是缺少“源”規範的範圍。

我看過一些他們使用的例子-end- 我不知道這是否是應該工作,但這會引出一個問題“結束什麼+,並且需要比 SSize 減一。

額外的

好的,在源方面,您似乎可以-name lv_home /dev/md125p2作為簡寫- 但還要注意,如果分成多個範圍,/dev/md125p2:480745-488244這會變得更加複雜lh_home沒有包括 LV 名稱,所以我不確定pvmove從你給出的內容中可以理解什麼...

答案2

減少 PV 需要將範圍移至所需大小之前的可用空間。在您的情況下,範圍低於 409599。

首先,測試備份還原以確保必要時可以還原資料。

lvremove您不需要的捲。

pvmove允許透過 LV 名稱指定範圍,並使用 + 符號透過偏移量指定目標。提供目的地時,該目的地必須是 PV,而不是 VG。

將一個 LV 移動到可用空間中的第一個範圍。偏移量是被移動的段的大小。

pvmove --alloc anywhere  -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998

再次取得新的段佈局pvs -v --segmentspvmove使用不同的 LV 和新的可用空間起始範圍重複此操作。

就我個人而言,我更喜歡將資料 VG 與作業系統 VG 分開。但這是你的儲存空間,你可以隨意佈置。

相關內容