LVM 在哪里存储其配置?

LVM 在哪里存储其配置?

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

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

答案1

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

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

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

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

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

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

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

不会。作为 VG 一部分的 PV 是通过使用在创建 PV 时分配的唯一标识符来查找和组装的。

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

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

答案2

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

如果您-vv向命令传递一个标志,pvcreate它会使命令更加详细,您将看到 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.

元数据区域写入了什么?

我不知道可用于查看元数据的命令,但该命令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
                }
        }

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

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

是的你可以。

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

这个服务器故障线程讨论如何使用命令将 LVM 分区移动到另一台主机dd

答案3

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

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

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

对于更晦涩的 PV 标签/标头信息:可以在以下位置找到一份概述说明:LVM 内部结构,http://mo.morsi.org/blog/node/392(其中包括指向 Ruby 脚本的链接,该脚本可以解析标签/标题lvm-parser.rb。)

类似的 Python 模块pvdissect位于http://www.syslinux.org/wiki/index.php?title=开发/LVM_support

相关内容