为什么LVM不提供递归创建的功能?

为什么LVM不提供递归创建的功能?

我尝试在LVM上递归创建LVM但似乎无法提供此功能。我做的方式是这样的:

首先,我在物理设备上创建了一个物理卷和一个卷组

$ vgcreate vgtest /dev/sda
Physical volume "/dev/sda" successfully created.
Volume group "vgtest" successfully created

vgtest其次,我在创建的逻辑卷上创建了一个逻辑卷

$ lvcreate -n lvtest -L 1G vgtest
Logical volume "lvtest" created.

然后,我尝试在逻辑卷上创建LVM lvtest,但显示失败信息:

$ vgcreate vgtest_recursive /dev/vgtest/lvtest
Cannot use /dev/vgtest/lvtest: device is an LV

我们可以使用LVM只在设备上创建卷,这与luks的做法不一致:luks可以用于在任何文件上创建文件甚至其他设备。现在,如果我打算以递归方式在另一个 LVM 中创建 LVM,我需要在两层 LVM 之间利用 luks。

LVM 设计选择背后的理由是什么?它似乎符合 Linux 的基本原则:“一切皆文件”。

答案1

默认情况下禁用“嵌套”LVM。如果你想在 VG 中创建 VG,你首先需要scan_lvsLVM配置。此类配置通常与虚拟化一起使用(LV 用作来宾系统的后备块设备),因此您通常不希望使用这些 VG 以避免主机和来宾 LVM 工具之间发生冲突。该scan_lvs属性的评论/etc/lvm/lvm.conf进一步解释了这一点:

    # Configuration option devices/scan_lvs.
    # Scan LVM LVs for layered PVs, allowing LVs to be used as PVs.
    # When 1, LVM will detect PVs layered on LVs, and caution must be
    # taken to avoid a host accessing a layered VG that may not belong
    # to it, e.g. from a guest image. This generally requires excluding
    # the LVs with device filters. Also, when this setting is enabled,
    # every LVM command will scan every active LV on the system (unless
    # filtered), which can cause performance problems on systems with
    # many active LVs. When this setting is 0, LVM will not detect or
    # use PVs that exist on LVs, and will not allow a PV to be created on
    # an LV. The LVs are ignored using a built in device filter that
    # identifies and excludes LVs.
    # This configuration option has an automatic default value.
    # scan_lvs = 0

答案2

感觉你误解了 LVM 的设计:卷组是由物理卷组成的。您可以在任何块设备上创建它。因此,您需要pvcreatelvtest创建一个包含它的 VG。

相关内容