尝试将安装在 LVM 上的 Linux 移动到新磁盘

Dan*_*ion 3 partition lvm grub2 fstab linux-mint

我在卷组中有两个物理磁盘(每个 1TB)的 LVM 驱动器上安装并启动了 Linux Mint。我购买了一个新硬盘 (4TB),我想克隆整个硬盘并从新磁盘启动。

\n

当根文件系统位于 LVM 驱动器上时,我真的很难找到此过程的说明。

\n

我按照这些说明进行操作,并成功地将 mint-vg/root 和 mint-vg/swap_1 逻辑卷镜像到新磁盘上,然后使用 分割镜像lvconvert --splitmirror并使用 分割卷组vgsplit。这对我的所有文件进行了很好的克隆,但我一生都无法弄清楚如何从新副本启动!

\n

首先,我尝试重命名所有 LV 和 VG,以便旧的具有“OLD_”前缀,而新的具有旧的名称。例如,“mint-vg”变为“OLD_mint-vg”,“new_mint-vg”变为“mint-vg”等。

\n

然后我意识到其中一个旧驱动器上有一个可引导的主分区。这是驱动器的原始配置:(sde 和 sdf 是旧驱动器,sdg 是新驱动器)

\n
$ lsblk\n\nNAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT\nsde                   8:64   0 931.5G  0 disk \n\xe2\x94\x94\xe2\x94\x80sde1                8:65   0 931.5G  0 part \n  \xe2\x94\x94\xe2\x94\x80mint--vg-root   253:2    0   1.8T  0 lvm  /run/timeshift/backup\nsdf                   8:80   0 931.5G  0 disk \n\xe2\x94\x9c\xe2\x94\x80mint--vg-root     253:2    0   1.8T  0 lvm  /run/timeshift/backup\n\xe2\x94\x94\xe2\x94\x80mint--vg-swap_1   253:3    0   976M  0 lvm  [SWAP]\nsdg                   8:96   0   3.7T  0 disk \n
Run Code Online (Sandbox Code Playgroud)\n

我已经尝试过grub-install /dev/sdg并且得到了"grub-install: error: failed to get canonical path of \'/cow\'"

\n

我也尝试过这些说明,但无法创建主分区,因为我的新磁盘大于最大分区大小 2048G。

\n

我还在新磁盘上安装了 linux mint,以查看它如何配置分区,它们如下所示:

\n
sdg                   8:96   0   3.7T  0 disk \n\xe2\x94\x94\xe2\x94\x80sdg1                8:97   0     1M  0 part\n\xe2\x94\x94\xe2\x94\x80sdg2                8:98   0   513M  0 part\n\xe2\x94\x94\xe2\x94\x80sdg3                8:99   0   3.7T  0 part\n  \xe2\x94\x94\xe2\x94\x80vgmint-root       253:1  0   3.7T  0 lvm\n  \xe2\x94\x94\xe2\x94\x80vgmint-swap_1     253:2  0   967M  0 lvm [SWAP]\n
Run Code Online (Sandbox Code Playgroud)\n

现在是否可以克隆我的旧根并交换 LV,然后替换新 Mint 安装中的 LV?事情真的会这么简单吗?否则,如果有人可以引导我完成设置必要的启动配置的过程,以便我可以让我的克隆系统再次运行,或者向我指出一些明确的说明,我将非常感激。

\n

谢谢,

\n

担。

\n

编辑

\n

非常感谢你的帮助,我\xe2\x80\x99m真的为此抓狂!

\n

好的,这是您请求的 Pastebin 链接,但请注意我的系统有 7 个驱动器,并且 I\xe2\x80\x99m 从 linux mint live USB 启动。

\n

原始操作系统位于驱动器上/dev/sde/dev/sdf/我已将 VG 和 LV 重命名为前缀 \xe2\x80\x9cOLD_\xe2\x80\x9d。新驱动器/dev/sdg上目前全新安装了 Linux Mint,以后需要将其删除。我安装了它,这样我就可以看到它如何配置分区。

\n

看起来新的 Mint 安装程序已经选择了您提到的 BIOS 选项和 BIOS_grub 分区 ( /dev/sdg1)

\n

现在 Mint 安装程序已经设置了上述分区,我现在可以从全新安装中删除卷组 \xe2\x80\x9cvgmint\xe2\x80\x9d 并将其替换为我的克隆卷组“mint-vg”吗?如果是这样,我需要重新配置什么才能让它启动?或者我应该擦拭驱动器并重新开始?

\n

Dan*_*ion 6

我已经搞乱了好几天了,所以我想我应该为其他遇到类似问题的人发布我的解决方案。以下是当安装在跨越 2 个 1TB 磁盘的 LVM 上时,如何将 Mint 安装克隆到新的 4TB 磁盘:

\n

有用的链接:

\n\n

术语

\n
    \n
  • PV = 物理体积
  • \n
  • VG = 卷组
  • \n
  • LV = 逻辑卷
  • \n
\n

要克隆安装在 LVM 系统上的系统磁盘并从克隆启动,我们将执行以下步骤:

\n
    \n
  1. 准备新磁盘(创建分区)
  2. \n
  3. 创建PV
  4. \n
  5. 将新 PV 添加到包含目标 LV 的同一 VG
  6. \n
  7. 在新 PV 上创建目标 LV 的镜像
  8. \n
  9. 将镜像分成两个独立的 LV
  10. \n
  11. 拆分 VG,以便启用镜像 LV 的新 PV 位于新 VG 中
  12. \n
  13. 整理(重命名 LV、VG)
  14. \n
  15. 安装 Grub 使其可启动
  16. \n
\n

1 - 准备新磁盘

\n

如果您的磁盘小于 2048 GB,您可以为磁盘准备 MBR 分区,但这不在此处介绍。

\n

如果您想要引导至大于 2TB 的驱动器,则必须创建BIOS 引导分区。我发现这些说明很有用,但说实话,我有点作弊。

\n

我配置分区的方法是在我的新驱动器上全新安装 linux mint。设置了 3 个分区 BIOS 启动分区 (bios_grub) 一些未知的 fat32 分区(我还在研究这个我正在考虑删除它它有半个千兆!!!)和一个 LVM2 分区(与 LV \xca\xbbroot\xca\xbb 和 \xca\xbbswap_1\xca\xbb 中)。

\n

然后,我删除了全新安装的 Mint 的新卷组,留下一个空白分区 (/dev/sdg3),然后将我的旧 Mint VG 克隆到该空白分区。

\n

我认为,如果我按照这些说明中的说明使用 fdisk 创建了 1meg Bios 分区,然后使用磁盘的其余部分创建了 LVM 分区,我可能可以避免重新安装 mint。不过它确实有效,所以请随意尝试或作弊,这取决于您。

\n

2 - 创建PV

\n

lsblk现在您已经对磁盘进行了分区,您需要使用或查找最大分区的设备名称fdisk -l(我的称为/dev/sdg3)。现在创建新的 PV:

\n
pvcreate /dev/sdg3\n\n
Run Code Online (Sandbox Code Playgroud)\n

3 - 将新的 PV 添加到与目标 LV 相同的 VG

\n

您可以使用(我将使用“mint-vg”)列出逻辑卷vgs并添加新的 PV,如下所示:

\n
vgextend mint-vg /dev/sdg3\n
Run Code Online (Sandbox Code Playgroud)\n

4 - 在新 PV 上创建目标 LV 的镜像

\n

使用 列出您的 LV lvs,我的被称为“root”,我还克隆了 swap_1,因此您可以对两个 LV 重复这些说明。

\n

如果您的 LV 相当大,则镜像在复制所有数据时可能会花费很长时间。它会让您在屏幕上了解其进度,如果您遇到断电或类似情况,它应该在您下次启动到实时磁盘时从中断处继续。您可能还想使用该选项在后台运行它-b

\n
lvconvert --type mirror -m1 /dev/mint-vg/root /dev/sdg3\n
Run Code Online (Sandbox Code Playgroud)\n

完成后,您可能想检查一下是否一切正常:

\n
lvs -a -o +devices | egrep "LV|root"\n
Run Code Online (Sandbox Code Playgroud)\n

请注意Cpy%Sync应显示复制百分比的列。

\n

现在再次开始此部分并镜像“swap_1”LV。

\n

5 - 将镜像分成两个独立的 LV

\n

接下来将镜像 LV 转换为实际 LV。两个 LV(原始卷和副本)将位于同一个 VG 上,因此需要在执行此操作时重命名它们(我将使用“new_root”)。sync此外,为了安全起见,首先使用命令刷新缓存也很重要。

\n
sync\nlvconvert --splitmirrors 1 --name new_root /dev/mint-vg/root /dev/sdg3\n\n
Run Code Online (Sandbox Code Playgroud)\n

现在重复/dev/min-vg/swap_1

\n

6 - 分割 VG,以便带有镜像 LV 的新 PV 位于新 VG 中

\n

在分割 VG 之前,我们必须停用 LV:(-a 代表 activate [y|n])

\n
lvchange -an /dev/mint-vg/new_root\nlvchange -an /dev/mint-vg/new_swap_1\n
Run Code Online (Sandbox Code Playgroud)\n

现在我们可以从 /dev/sdg3 创建一个新的 VG,其中仍然包含镜像 LV:

\n
vgsplit mint-vg new_mint-vg /dev/sdg3\n
Run Code Online (Sandbox Code Playgroud)\n

您现在应该能够看到复制的 LV 和两个 VG 及其关联设备

\n
lvs -o +devices\n
Run Code Online (Sandbox Code Playgroud)\n

7 - 整理(重命名 LV、VG,或许还可以标记 VG 以便导出)

\n

如果(像我一样)您尝试将系统复制到打算启动的新磁盘并擦除旧系统驱动器,则需要重命名所有 LV 和 VG,以便旧的“mint-vg”被称为“OLD_mint” -vg”,新的“new_mint-vg”被称为“mint-vg”等,LV 也是如此。

\n

您可以像这样重命名 LV 和 VG:(首先卸载!)

\n
umount /dev/mapper/mint\xe2\x80\x94vg-root\nlvrename mint-vg root OLD_root\nvgrename mint-vg OLD_mint-vg\n\n
Run Code Online (Sandbox Code Playgroud)\n

如果您打算删除卷组(也许您已将其复制到外部驱动器以进行运输),您应该停用其上的 LV 和 VG 本身,并将其标记为导出:

\n
lvchange -an /dev/mint-vg/old_root\nvgchange -an old_mint-vg\nvgexport old_mint-vg\n\n
Run Code Online (Sandbox Code Playgroud)\n

现在,如果您运行,pvs您应该会看到 VG 属性有一个x表示它已标记为导出,并且没有任何a属性表示它未处于活动状态。

\n

8 - 安装 Grub 以使可启动

\n

快速提及 fstab

\n

是您的文件的简要说明/etc/fstab

\n

我只是想快速提一下你的/etc/fstab文件。它用于告诉您的系统需要安装的分区、安装顺序以及安装时为其分配某些选项。就我而言,我将 LV 重命名为 VG,因此它们与原始版本相同。此外,在我的/etc/fstab文件中,我的分区是通过其设备名称而不是唯一的 UUID 来标识的,这意味着一切都适合我。

\n

/etc/fstab为了熟悉一下您的文件,也许值得一看。

\n
cat /etc/fstab\n
Run Code Online (Sandbox Code Playgroud)\n

如果您已重命名 VG,则任何 LV 或分区均由 fstab 文件中的 UUID 进行标识,您可能需要编辑 fstab 文件才能启动系统并挂载卷。

\n

blkid您可以通过在终端中输入来找到 UUID 。

\n

蛴螬

\n

要让克隆从新磁盘启动,您需要在其上安装 Grub。为此,您必须首先挂载根文件夹,以便我们可以将 grub 指向 /boot 文件夹。

\n

这些说明可能有用,但如果您不告诉它您的 /boot 文件夹,您将收到以下错误:“无法找到规范的 /cow”。阅读 Grub 手册后info grub-install- 我能够通过将 grub 指向根 LV 上的 /boot/ 文件夹来安装 grub。就是这样:

\n

首先创建一个挂载点文件夹:\n然后挂载根LV\n最后就可以安装grub了

\n
cat /etc/fstab\n
Run Code Online (Sandbox Code Playgroud)\n

这将设置您的 \xca\xbb/boot\xca\xbb 文件夹,并在 BIOS 启动分区中创建一个新的 \xca\xbbcore.img\xca\xbb。您现在应该可以启动了,不要忘记在 BIOS 中更改启动设备!

\n

天啊速度!

\n