我已将实时系统中的硬盘驱动器克隆(使用 dd)到多个备份硬盘驱动器上。实时系统中的根分区是 LVM 卷。备份副本旨在替代原始副本,这意味着它们需要具有与主副本相同的 UUID。
快速提问:是否可以在实时系统上安装其中一个备份 HD?当我尝试这样做时,LVM 会对此感到困惑,这是可以理解的,因为 UUID 和卷组名称相同。按照 [此答案][1] 中的提示,首先重命名原始 LVM 组,我尝试过:
将外部备份 HD 连接到 USB 端口
正在运行(请注意,字符串“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/sdx
到filter
部分中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”连接磁盘(或使用快照选项进行写时复制配置),这是一个安全的操作。