如何使用与已安装的 LV 相同的 UUID 来安装克隆的 LV

如何使用与已安装的 LV 相同的 UUID 来安装克隆的 LV

我使用 dd 对加密驱动器进行了可启动备份:

> sudo dd if=/dev/sda of=/dev/sdc bs=64k status=progress

检查是否可以从克隆启动后,我启动回原始驱动器并尝试使用 vgimportclone 挂载克隆:

> sudo cryptsetup open /dev/sdc5 sdc5_crypt
> sudo lvm
lvm> vgimportclone /dev/mapper/sdc5_crypt
lvm> pvscan --cache
lvm> vgchange -a y
lvm> quit
> mount /dev/mapper/ubuntu--vg11-root /mnt

克隆上的 VG 名称以及 VG 和 PV UUID 现在与原始驱动器上的不同,但 LV UUID 相同。原始驱动器的 VG 名称为ubuntu-vg,新驱动器的 VG 名称为ubuntu-vg11。我在克隆磁盘的未加密分区上更改了 /boot/grub.cfg 以反映这些更改并确保它仍然可引导。检查克隆仍然可启动(确实如此)后,我启动回到原始驱动器,并尝试安装克隆:

> sudo cryptsetup open /dev/sdc5 sdc5_crypt
> mount /dev/mapper/ubuntu--vg11-root /mnt

起初它似乎可以工作,但仔细检查 /mnt 的内容后,我意识到它实际上已经将原始 LV 安装在那里(它已经安装在 / 上,并且自第一次创建克隆以来添加了一些新文件) 。所以我尝试的下一件事是使用以下命令更改克隆的文件系统 UUID tune2fs

umount /mnt
tune2fs -U random /dev/mapper/ubuntu--vg11-root

我检查了克隆上的文件系统 UUID (/dev/mapper/ubuntu--vg11-root) 与原始 (/dev/mapper/ubuntu--vg-root) 上的文件系统 UUID 不同,但是问题仍然存在,所以我假设它一定是由于相同的 LV UUID。我在网上读到的所有内容都表明不可能更改 LV UUID,所以我想知道还有其他方法可以解决这个问题吗?如何与原始驱动器同时安装克隆驱动器?

答案1

我设法更改克隆上 LV 的 UUID,并使其与原始版本同时安装,而不会发生冲突。我是这样做的:

  1. 我连接了一个不同的驱动器,安装了 Ubuntu 的副本并启动到其中。
  2. 我连接了克隆驱动器,并打开了加密分区:sudo cryptsetup open /dev/sd5 sdc5_crypt
  3. 这会自动为 LV 创建链接:/dev/mapper/ubuntu--vg11-root&/dev/mapper/ubuntu--vg11-swap
  4. 然后我删除了克隆上的 LV:sudo lvremove ubuntu-vg11
  5. 然后我检查了lvm存档,它保存了所有更改的记录:sudo ls -l /etc/lvm/archive
  6. 我记下了该组的最新存档文件ubuntu-vg11,并对其进行了编辑,更改了文件中列出的 LV 的 UUID。
  7. 然后我从该存档文件中恢复了 LV:sudo vgcfgrestore ubuntu-vg11 -f /etc/lvm/archive/ubuntu-vg11_00001-123456789.vg
  8. 检查 LV 的 UUID:(由于某种原因,sudo lvscan && sudo lvdisplay 新更改的 LV 没有列出lvs,但我仍然能够毫无问题地安装它们)。
  9. 检查它们是否可以正常安装:sudo mount /dev/mapper/ubuntu--vg11-root /media/sdc5
  10. 卸载并重新启动:sudo umount /media/sdc5

现在看起来工作正常,我可以同时安装克隆和原始版本,没有任何问题。

相关内容