LVM 在哪里存储它的配置?

ams*_*ams 22 lvm

我试图了解 LVM 如何/在哪里存储其配置数据。

  • 是否pvcreate /dev/sdb将任何元数据写入/dev/sdb?如果是这样写的是什么?
  • vgcreate data /dev/sdb /dev/sdc卷组的配置存储在哪里?
  • LVM 将逻辑盘区和物理盘区之间的映射存储在哪里?
  • LVM 配置中是否有任何特定于机器的配置?
  • 假设我的机器有 2 个磁盘配置到一个逻辑卷中,我可以将这些磁盘从机器中取出并将它们放在另一台机器上,并期望逻辑卷可以在新机器上工作吗?

Cel*_*ada 18

是否pvcreate /dev/sdb将任何元数据写入/dev/sdb?如果是这样写的是什么?

是的,但是将块设备标记为 LVM PV 只不过是一些标头和标识数据。“真正的”元数据在您创建卷组时出现。

vgcreate data /dev/sdb /dev/sdc卷组的配置存储在哪里?

在属于卷组的每个物理卷上。默认情况下,在卷组内每个物理卷的每个元数据区域中都维护一个相同的元数据副本。LVM 卷组元数据很小并以 ASCII 存储。

LVM 将逻辑盘区和物理盘区之间的映射存储在哪里?

这是上述卷组元数据的一部分。

LVM 配置中是否有任何特定于机器的配置?

不可以。通过使用在创建 PV 时分配的唯一标识符来查找和组装属于 VG 的 PV。

假设我的机器有 2 个磁盘配置到一个逻辑卷中,我可以将这些磁盘从机器中取出并将它们放在另一台机器上,并期望逻辑卷可以在新机器上工作吗?

是的。如果构成 VG 的所有 PV 都存在,则该 VG 上的 LV 将起作用。


Cit*_*ght 12

pvcreate /dev/sdb 是否将任何元数据写入 /dev/sdb?如果是这样写的是什么?

如果您-vvpvcreate命令传递一个标志,它会使命令更加冗长,您将看到 pvcreate 在磁盘上创建了一个元数据区域。

 Writing physical volume data to disk "/dev/sdc1"
        lvmcache: /dev/sdc1: now in VG #orphans_lvm2 (#orphans_lvm2) with 0 mdas
        Creating metadata area on /dev/sdc1 at sector 8 size 2040 sectors
        Opened /dev/sdc1 RW O_DIRECT
        /dev/sdc1: block size is 1024 bytes
        /dev/sdc1: physical block size is 512 bytes
        /dev/sdc1: Preparing PV label header xxx.xxxxx.xxxxxxxxxxxxxxx

      /dev/sdc1: Writing label to sector 1 with stored offset 32.
Run Code Online (Sandbox Code Playgroud)

什么写入元数据区域?

我不知道您可以使用哪个命令来查看元数据,但是该命令vgcfgbackup可用于备份元数据,您可以打开这样创建的备份文件来查看元数据

vgcfgbackup -f /path/of/your/choice/file <your_vg_name>

/path/of/your/choice/file由上述命令创建将包含PV,VG和LVM元数据。其中一个部分将如下所示:

physical_volumes {

                pv0 {
                        id = "abCDe-TuvwX-DEfgh-daEb-Xys-6Efcgh-LkmNo"
                        device = "/dev/sdc1"    # Hint only

                        status = ["ALLOCATABLE"]
                        flags = []
                        dev_size = 10477194     # 4.99592 Gigabytes
                        pe_start = 2048
                        pe_count = 1278 # 4.99219 Gigabytes
                }
        }
Run Code Online (Sandbox Code Playgroud)

建议你看一下目录的内容/etc/lvm和命令的输出lvm dumpconfig

假设我的机器有 2 个磁盘配置到一个逻辑卷中,我可以将这些磁盘从机器中取出并将它们放在另一台机器上,并期望逻辑卷可以在新机器上工作吗?

是的你可以。

您可以将卷组迁移到另一台主机。虽然它不完全是即插即用的,但执行此操作的过程非常简单。有许多在线教程可用于如何执行此操作。

此 serverfault 线程讨论了如何使用该dd命令将 LVM 分区移动到另一台主机。


小智 5

  • 是否pvcreate /dev/sdb写入任何元数据/dev/sdb?如果是的话写什么?
  • vgcreate data /dev/sdb /dev/sdc卷组的配置存储在哪里?

pvcreate为 PV 创建“标签”和“标头”,并为卷上的元数据分配空间(由选项指定--[pv]metadata)。标头是一个二进制数据结构,其中包括指向该 PV 上元数据区域的指针。

vgcreate命令将卷组当前状态的文本描述存储到先前在关联 PV 上分配的元数据区域(由选项--[vg]metadatacopies等控制)。这些是命令支持的描述vgcfgbackup,在大多数情况下是人们有兴趣检查的元数据。

对于更晦涩的 PV 标签/标头信息:可以在LVM Internals中找到一个概述描述,http://mo.morsi.org/blog/node/392(其中包含指向可以解析标签的 Ruby 脚本的链接) /标题,lvm-parser.rb.)

类似的 Python 模块可以在http://www.syslinux.org/wiki/index.php?title=Development/LVM_supportpvdissect的底部找到。