Lvm

LVM 邏輯卷具有最初相鄰的擴展,但可通過不相鄰的擴展進行擴展

  • October 26, 2019

我計劃使用LVM 而不是擴展 MBR分區及其邏輯卷。LVM 對我來說是一個新概念(從某種意義上說,儘管我知道它的存在,但我以前從未嘗試使用此選項)所以我需要一些幫助。

問題

我將只有一個 Volume Group放在一個 Physical Volume上。我希望我的邏輯卷的初始擴展是****相鄰的(卷最初是連續的)。創建所有需要的邏輯卷後**,我的 PV 末尾應該有一個空白空間以**供將來使用(根據需要擴展 LV)。因此,只有後來擴展初始大小的 LV 部分不會與這些 LV 的初始空間相鄰。哪個lvcreate命令選項--alloc--type用於剛才描述的用法。

可能的解決方案

選項:

--alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit

--type linear|striped|snapshot|mirror|raid|thin|cache|thin-pool|cache-pool

也許有一個選項可以在命令中顯式指定 PE 範圍,但****在創建邏輯卷時,而不是在創建它之後?pvmove

就像是:

pvmove /dev/sdb2:501-800   /dev/sdb2:1001-1300
pvmove /dev/sdb2:101-300   /dev/sdb2:1301-1500
pvmove /dev/sdb2:4001-5500 /dev/sdb2:1501-3000

…但是使用單個 lvcreate命令而不是上述序列可能會不必要地花費很長時間:

lvcreate /dev/sdb2:1001-3000 -n home vg1

…而不是低於可能(我想)創建與上述命令行相同大小的分散LV(如果上面的語法正確):

lvcreate -l 2000 -n home vg1

原因

原因是我不希望我的邏輯卷(以及這些卷上的大文件)過於分散。一個選項是使用非常大的擴展(64 MiB 或 128 MiB),但我認為應該(並且可能是)一個選項可以另外減少我的文件碎片和分散在我的驅動器上。

簡而言之

  • --alloc--type選項有什麼區別?
  • 我應該使用哪一個以及使用什麼論據?
  • 如果這些選項都不能實現我想要的,那麼我可以做的不是創建分散的體積,然後移動(通過pvmove)它的每個範圍,以便整個體積是連續的。
  • 可以在創建時指定 PE 的初始範圍嗎?

如果你從一個全新的 PV 開始,那麼當你創建 LV 時,預設情況下,它會連續分配 PE;因為它可以。--alloc contiguous創建 LV 時無需指定。

正如您所說,在擴展 LV 時,PE 將不再是連續的。這歸結為,您正在尋找的行為是 LVM 預設所做的。

但是,您可以通過以下方式使這種行為更加明確:

  1. --alloc contiguous
  2. lvchange使用;將 LV 的分配策略更改為正常狀態 您可以在創建 LV 後隨時執行此操作。

引用自:https://unix.stackexchange.com/questions/548861