Answers:
即使LVM本身并不关心拥有真正的分区,创建它的一个原因还是要告知分区程序“那里有东西”。噩梦般的场景是新的系统管理员,它诊断服务器上的启动问题,启动分区程序,查看未分区的磁盘并得出驱动器已损坏的结论。
我认为创建LVM分区没有任何不利之处。你呢?
虽然您可以仅使用原始块设备创建pv,但通常我会尽量避免使用它,因为它可能会导致混淆该块设备的用途。如果LVM缺少配置文件,它也可能会破坏LVM可以使用的一些自动发现例程。
这是一个使用parted创建一个GPT的示例,该GPT的1个分区是整个驱动器,并将分区标志设置为lvm。mkpart要求您指定文件系统,但它不会创建文件系统。似乎是一个长期存在的错误。另外,起始偏移量为1M,以确保获得正确的对齐。
parted /dev/sdb
mklabel GPT
mkpart primary ext2 1M 100%
set 1 lvm on
mkpart primary 1M 100%
工作并且文件系统字段留为空白。
如果直接在KVM guest虚拟机内的虚拟存储设备上创建PV,则您会注意到来自guest虚拟机的逻辑卷在管理程序上可见。如果您在多个guest虚拟机上使用相同的逻辑卷和卷组名称,则可能会造成混乱。您可能还会在管理程序上收到一些警告,指出它找不到设备。
例如,我在测试管理程序上重新创建了此问题:
[root@testhost ~]# vgs
Couldn't find device with uuid dCaylp-1kvL-syiF-A2bW-NTPP-Ehlb-gtfxZz.
VG #PV #LV #SN Attr VSize VFree
vg_main 2 2 0 wz-pn- 19.25g 768.00m
vg_main 2 2 0 wz-pn- 19.25g 768.00m
vg_testhost 1 8 0 wz--n- 237.98g 120.15g
在这里,您可以看到2个具有相同名称的卷组,这两个组都是来自来宾的,它们不应真正出现在虚拟机监控程序上。
因此,我建议您先使用parted或fdisk在此处创建KVM分区(如3dinfluence上一个回答所示),然后再创建PV并将其添加到卷组中。这样,来宾逻辑卷对虚拟机管理程序保持隐藏。
filter
在/etc/lvm/lvm.conf中使用它来过滤掉VM直接使用的所有块设备,则可以避免这种情况。
kpartx -a
会为你做的。系统管理程序可以访问所有来宾磁盘,但是不应激活卷组。
缺点是不可能将空间热添加到分区表内部的PV中。如果您将整个块设备用于PV,这不是问题。
根据RedHat的LVM指南中的第4.2.1节 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/physvol_admin
他们说不需要分区表,他们甚至建议我们将整个磁盘用于VG(卷组)时销毁它,除非我们只打算只包括它的一部分(分区)。
即使过去使用PV的MS-DOS磁盘标签或GPT磁盘标签,现在我还是更喜欢直接在主块设备上使用LVM。除非您有非常特殊的用例(例如带有引导扇区和引导分区的磁盘),否则没有理由使用两个disklabel。
直接使用LVM的优点是: