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

lar*_*els 13 lvm uuid

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

快速提问:是否可以在实时系统上安装备份 HD 之一?当我尝试这样做时,由于相同的 UUID 和卷组名称,LVM 对此感到困惑是可以理解的。按照 [this answer][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
Run Code Online (Sandbox Code Playgroud)

在这一点上,我本来希望能够访问/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
Run Code Online (Sandbox Code Playgroud)

然而,/dev/test/在所有不存在,因此我不能访问逻辑卷/dev/test/root,并/dev/test/swap_1为lvdisplay命令建议。

小智 23

如果你想从克隆磁盘挂载 lv,我在这里找到了这个有用的方法http://www.linuxquestions.org/questions/linux-hardware-18/unable-to-change-uuid-of-cloned-drive-设备左开4175470893/

vgimportclone -n orignalvgname_clone   /dev/sdx [/dev/sdy....]
Run Code Online (Sandbox Code Playgroud)

sdx,sdy.. 是构成 vg 的克隆磁盘。

vgchange -ay orignalvgname_clone
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该是公认的答案。为我工作,谢谢! (4认同)

Jos*_*din 5

trekkerboy / modonnell @ linuxquestions 的答案是最直接的,使用vgimportclone.

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

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


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

原始设备将保持在线状态,但 LVM 工具将忽略它们。它们上安装的文件系统将保持安装状态并可运行,这与 LVM 管理并不紧密结合。

过滤器就位后,执行新的操作vgscan,以确保重复项且只有它们现在处于 LVM 管理之下。您可以确保/dev/sdy通过例如查看重复的设备pvs

然后做:

vgchange -a n originalvgname
Run Code Online (Sandbox Code Playgroud)

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

pvchange -u physicaldevice
vgchange -u originalvgname
Run Code Online (Sandbox Code Playgroud)

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

vgrename originalvgname newvgname
Run Code Online (Sandbox Code Playgroud)

这将重命名重复的卷组。

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

或者,如果您实际上对保留原始 VG 名称和 PV/VG UUID 不感兴趣,则可以将其丢弃,请参阅。https://superuser.com/questions/256061/lvm-and-cloning-hds


mgo*_*ven 0

UUID 的全部意义在于唯一地标识某些内容,而您尝试做的事情使它们变得不唯一。我非常怀疑这是可能的。我尝试pvchange -u更改重复 PV 的 UUID,但操作总是失败。

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