我打算使用LVM 代替扩展 MBR分区及其逻辑卷。 LVM 对我来说是一个有点新的概念(从某种意义上说,尽管我知道它的存在,但我以前从未尝试过使用这个选项),所以我需要一些帮助。
问题
我会有只有一个卷组放在只有一个物理卷。我要那个初始延伸我的逻辑卷的数量是邻近的(卷最初是连续的)。创建所有需要的逻辑卷后,应该有一个我的 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 的初始范围可以在创建时指定吗?
答案1
如果您从一个全新的 PV 开始,那么当您创建 LV 时,默认情况下,它将连续分配 PE;因为它可以。--alloc contiguous
创建 LV 时不需要指定。
正如您所说,扩展 LV 时,PE 将不再连续。归根结底,您所寻求的行为正是 LVM 默认执行的行为。
但是,您可以通过以下方式使此行为更加明确:
- 使用以下方式创建 LV
--alloc contiguous
- 将 LV 的分配策略更改回正常状态
lvchange
;创建 LV 后,您可以随时执行此操作。