我使用 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,并使其与原始版本同时安装,而不会发生冲突。我是这样做的:
- 我连接了一个不同的驱动器,安装了 Ubuntu 的副本并启动到其中。
- 我连接了克隆驱动器,并打开了加密分区:
sudo cryptsetup open /dev/sd5 sdc5_crypt
- 这会自动为 LV 创建链接:
/dev/mapper/ubuntu--vg11-root
&/dev/mapper/ubuntu--vg11-swap
- 然后我删除了克隆上的 LV:
sudo lvremove ubuntu-vg11
- 然后我检查了lvm存档,它保存了所有更改的记录:
sudo ls -l /etc/lvm/archive
- 我记下了该组的最新存档文件
ubuntu-vg11
,并对其进行了编辑,更改了文件中列出的 LV 的 UUID。 - 然后我从该存档文件中恢复了 LV:
sudo vgcfgrestore ubuntu-vg11 -f /etc/lvm/archive/ubuntu-vg11_00001-123456789.vg
- 检查 LV 的 UUID:(由于某种原因,
sudo lvscan && sudo lvdisplay
新更改的 LV 没有列出lvs
,但我仍然能够毫无问题地安装它们)。 - 检查它们是否可以正常安装:
sudo mount /dev/mapper/ubuntu--vg11-root /media/sdc5
- 卸载并重新启动:
sudo umount /media/sdc5
现在看起来工作正常,我可以同时安装克隆和原始版本,没有任何问题。