LVM 和克隆 HD

jce*_*cea 8 linux grub lvm

使用 Linux,我有几个备份级别。其中之一是将dd我的笔记本电脑硬盘逐个扇区复制(使用)到外部 USB 磁盘的定期扇区。是的,我也有其他备份,比如远程 rsync。

这种方法(磁盘dd)在克隆没有 LVM 卷的 HDD 时是可以的,因为我可以随时插入外部磁盘并安装分区/dev/sdb*而不是/dev/sda*. 琐碎而方便。

今天我将所有硬盘(包括/boot)都移到了 LVM。一切正常。我会强调几天,然后我将逐个扇区复制到我的外部硬盘。

现在我有一个问题,我想。

如果将来我插入外部 USB 硬盘来恢复任何文件,操作系统将检测到重复的 LVM 配置,具有相同的名称和相同的 UUID。即使做了vgrename哪个 LVM 会被重命名,内部硬盘还是外部硬盘?),克隆的 UUID 也不会改变。是否有任何命令可以更改名称和 UUID?理想情况下,我会克隆 HDD,然后更改 LVM 组名称及其 UUID,但我不知道该怎么做。

另一个相关的问题是......

在过去,我已经使用外部磁盘,使用BIOS启动菜单,并从手动更改GRUB条目引导启动我的笔记本电脑/dev/sdb来代替/dev/sda。但是现在我当前的 GRUB 配置直接从 LVM 逻辑卷启动,例如:set root='(LVM-root)'在我的grub.cfg. 那么......重复的卷会发生什么?

有什么建议吗?

我想我可以重新分区我的外部硬盘并将备份策略从 更改ddrsync,但是这个磁盘也安装了 Windows,我真的很想拥有一个物理“真实”副本。

jce*_*cea 4

一年后,结束这个问题。我已经把答案写在我的个人网站里了。我希望它对其他人有用。

\n\n
\n

我使用多个级别的备份,从 rsync 到外部磁盘,再到远程计算机上的\xc2\xa0rsync+ZFS。我所做的备份之一是 - 有时 - 从我的笔记本电脑硬盘“dd”到连接的外部 USB(仅在备份过程期间连接)。例如,我在带着笔记本电脑去旅行之前会这样做。

\n\n

这个程序多年来一直运作良好。直到我开始在笔记本电脑上使用 LVM。

\n\n

如果您在计算机上使用 LVM,则使用复制硬盘dd(从 LiveCD 启动)并在计算机正常运行时插入外部硬盘,稍后,\xc2\xa0 您将损坏您的数据,甚至丢失所有文件系统维修!!!。

\n\n

为什么?。因为当您插入外部硬盘时,操作系统会在两个磁盘中看到相同的 LVM 配置,并且会天真地假设两个磁盘是相同的,可以通过多路径链接访问,因此它将在两个磁盘之间传播读写操作,从而不可避免地损坏两个磁盘。 \xc2\xa0您将丢弃您的实时数据和备份!。

\n\n

这事发生在我身上一次。我丢失了数据。几天前我还有其他备份,所以我没有丢失任何非常重要的东西,但这很烦人,并暴露了我的备份策略中的一个缺陷。

\n\n

解决办法:确保备份磁盘中的LVM配置不同。问题是……怎么办呢?

\n\n

我将问题发布在\xc2\xa0superuser.com\xc2\xa0(Stack Exchange)上,但我没有得到任何好的答案。因此,我开发了自己的程序,经过一年多的实际测试,我将其发布在这里并结束原来的问题:

\n\n
    \n
  • 确保如果出现问题,您的计算机将不会自动启动。就我而言,如果电源关闭然后再次打开,我的笔记本电脑不会自动启动。而且,硬盘是加密的,所以会要求输入密码。

    \n\n

    这是必要的,因为如果在完成该过程之前重新启动并连接了备份磁盘,则可能会损坏两个磁盘。

  • \n
  • 从 Live CD 启动。如果您希望能够恢复数据,则不能从活动分区执行“dd”:-)。

    \n\n

    将来要尝试的事情是使用 LVM 快照,以便能够在我使用计算机时进行备份,但是这样我就会遇到重复的 LVM 问题,我在这里试图避免这种情况。另一种选择是重新配置 LVM 以将数据实时镜像到外部硬盘,并在同步完成后中断镜像。但这听起来很危险,并且不会备份我的 Windows 分区或未保存在 LVM 卷中的数据。

  • \n
  • 启动 LiveCD 后,插入外部 USB 硬盘。

  • \n
  • 以“root”身份登录并执行vgchange -a n。此命令将禁用两个磁盘中的 LVM。当然,我执行了几次该命令。

  • \n
  • 确保/dev/sda是源(内部硬盘)和/dev/sdb目标(USB 外部硬盘)。例如,检查dd if=/dev/sdb of=/dev/null哪个硬盘 LED 闪烁。

  • \n
  • 当您确定哪个磁盘是哪个磁盘时,您可以使用 进行复制dd if=/dev/sda of=/dev/sdb bs=65536。根据我的配置,备份需要四个小时。我的内部硬盘是 500GB,我的 USB 复制速度为 35MB/s。我在晚上睡觉时这样做。

    \n\n

    您的外部 USB 硬盘必须至少与内部硬盘一样大。这很明显,不是吗?

  • \n
  • 完成此复制后,您将拥有内部硬盘的精确克隆。备份完成。但现在,如果您在使用内部硬盘时将此硬盘插入计算机,就会遇到问题,如上所述。我们需要更改 LVM 配置。

  • \n
  • 现在,“dd”完成后,执行“sync”并拔下外部 UDB 硬盘。

  • \n
  • 你执行pvchange --uuid /dev/sda*. 此命令将更改内部硬盘中所有物理卷的 UUID。即使您的分区不是 LVM 的物理卷,此命令也是安全的,因为它们会被自动安全地跳过。

    \n\n

    由于分区类型以及创建 LVM 时执行的“pvcreate”,系统知道哪些分区是物理卷。

  • \n
  • 你执行vgchange -u LVM. 此命令将更改 LVM 卷组的 UUID。顺便说一句,我的卷组称为“LVM”。

  • \n
  • 你执行vgscan. 此命令将扫描内部硬盘(当前唯一连接的硬盘)并在那里找到您的 LVM 卷组。

  • \n
  • 您执行vgrename LVM LVM2, 来更改卷组的名称。

  • \n
  • 现在插入外部 USB 硬盘。

  • \n
  • 您再次“vgscan”,这次是为了在外部 USB 硬盘中找到卷组。现在您将有两个卷组。一个在您的内部硬盘中称为“LVM2”,另一个在您的 USB 外部硬盘中称为“LVM”。

  • \n
  • 将外部 USB 硬盘中的卷组重命名为vgrename LVM LVM_BACKUP.

  • \n
  • 并将内部硬盘中的卷组重命名回原来的名称:vgrename LVM2 LVM

  • \n
  • 你完成了。您可以使用 查看情况vgdisplay -v

    \n\n

    您将看到两个卷组中的逻辑卷 UUID 相同,但这似乎不会导致任何问题,而且我不知道如何更改它们。

  • \n
  • 拔下外部 USB 硬盘,将其存放在安全的地方,重新启动计算机,弹出 LiveCD,然后继续工作。

  • \n
\n
\n