是否可以同时安装 2 个彼此完全相同(相同 UUID)的 LVM 卷?

是否可以同时安装 2 个彼此完全相同(相同 UUID)的 LVM 卷?

我已将实时系统中的硬盘驱动器克隆(使用 dd)到多个备份硬盘驱动器上。实时系统中的根分区是 LVM 卷。备份副本旨在替代原始副本,这意味着它们需要具有与主副本相同的 UUID。

快速提问:是否可以在实时系统上安装其中一个备份 HD?当我尝试这样做时,LVM 会对此感到困惑,这是可以理解的,因为 UUID 和卷组名称相同。按照 [此答案][1] 中的提示,首先重命名原始 LVM 组,我尝试过:

  1. 将外部备份 HD 连接到 USB 端口

  2. 正在运行(请注意,字符串“test”是该系统上的组名)

# vgrename test test-live
Volume group "test" successfully renamed to "test-live"
vgscan --mknodes
Reading all physical volumes.  This may take a while...
Found duplicate PV qWUadGaM2MU1UAJ5Spp8upD6fbddk7Zb: using /dev/dm-3 not /dev/dm-0
Found volume group "test" using metadata type lvm2
# vgchange -ay
Found duplicate PV qWUadGaM2MU1UAJ5Spp8upD6fbddk7Zb: using /dev/dm-3 not /dev/dm-0
2 logical volume(s) in volume group "test" now active

此时我希望能够访问下的各个逻辑卷/dev/test/。运行lvdisplay产生。

Found duplicate PV qWUadGaM2MU1UAJ5Spp8upD6fbddk7Zb: using /dev/dm-3 not /dev/dm-0

  --- Logical volume ---
  LV Name                /dev/test/root
  VG Name                test
  LV UUID                UuKUH3-yzPo-CbOz-tU4B-W6om-qdMn-0XSNZU
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                126.48 GiB
  Current LE             32378
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

  --- Logical volume ---
  LV Name                /dev/test/swap_1
  VG Name                test
  LV UUID                OGJhJu-QByo-6AzG-sk1x-jh3e-dU9L-sHk91t
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                3.90 GiB
  Current LE             999
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

但是,根本不存在,因此我无法按照lvdisplay 的建议/dev/test/访问逻辑卷。/dev/test/root/dev/test/swap_1

答案1

UUID 的整个目的是唯一地标识某些东西,而您尝试做的事情使它们变得不唯一。我非常怀疑这是可能的。我尝试pvchange -u更改重复 PV 的 UUID,但操作总是失败。

如果您确实需要在实时主机上安装备份,我建议您单独备份 LV(即在备份设备上创建新的 PV、VG 和 LV,并分别 dd 每个 LV)。

答案2

如果你想从克隆磁盘挂载 LV,我发现这里有一个有用的方法http://www.linuxquestions.org/questions/linux-hardware-18/unable-to-change-uuid-of-cloned-drive-device-left-open-4175470893/

vgimportclone -n orignalvgname_clone   /dev/sdx [/dev/sdy....]

sdx、sdy.. 是组成 vg 的克隆磁盘。

vgchange -ay orignalvgname_clone

此后,您应该能够从克隆的磁盘上挂载 lvs。

答案3

trekkerboy / modonnell @ linuxquestions 的回答最直接,使用vgimportclone

还要注意,创建克隆后,您必须使用 激活它vgchange -a y newvgname,并且必须使用 清理 oldvgname 的设备节点dmsetup remove /dev/oldvgname/*

作为参考,接下来是一种更手动的方法,它显然类似于人们在源代码中可以读到的内容的一个子集vgimportclone


如果您能够先暂时停用对原始副本的管理,则可以通过将与原始副本匹配的模式添加到 中的devices过滤器中来做到这一点lvm.conf。例如,如果您克隆/dev/sdx/dev/sdy,则必须暂时将其添加/dev/sdxfilter部分中devices { ... }

原始设备将保持在线,但 LVM 工具将忽略它们。挂载在其上的文件系统将保持挂载和运行状态,这与 LVM 管理并不紧密相关。

过滤器到位后,执行新的vgscan,以确保重复项现在处于 LVM 管理之下。您可以/dev/sdy通过例如 来确保看到重复的设备pvs

然后做:

vgchange -a n originalvgname

这将停用名为 的卷组originalvgname,但由于只有重复的设备可见,因此它将在它们上停用该卷组(originalvgname由于上面的过滤器,原始卷组已经不可见)。此步骤是必需的,以便您可以自由更改现在不活动的卷组及其组成物理卷的属性。

pvchange -u physicaldevice
vgchange -u originalvgname

这将为重复项提供新的 UUID。

vgrename originalvgname newvgname

这将重命名重复的卷组。

此后,您可以删除过滤器lvm.conf并再次重新扫描,两组 LVM 设备都将可见,但具有不同的名称和 UUID。

或者,如果您实际上不想保留原始 VG 名称和 PV/VG UUID,那么您可以丢弃它们,参见https://superuser.com/questions/256061/lvm-and-cloning-hds

答案4

我昨天就遇到了这个问题。我在 Linux 上有文件系统(LVM(MD(sda、sdb、sdc-syncing-only-weekly-basis))配置,需要访问 sdc 上的旧数据。

我通过将备份磁盘 (sdc) 连接到虚拟机解决了这个问题。只要我使用“qemu ... -drive file=/dev/sdc,readonly”连接磁盘(或使用快照选项进行写时复制配置),这是一个安全的操作。

相关内容