添加新硬盘,使用 raid1 镜像现有 LVM 驱动器

添加新硬盘,使用 raid1 镜像现有 LVM 驱动器

我有一块 320GB 的硬盘,其中有一个 LVM2 卷组,它是在默认安装时创建的。如果我将第二个 320GB 硬盘放入计算机,我可以使用 Linux 软件 RAID1 或类似软件将第二个硬盘镜像到第一个硬盘吗?我尝试在 Gnome 磁盘实用程序中添加新的 RAID 阵列,但它只给了我创建具有两个空分区的阵列的选项。

答案1

如果有人仍在阅读这个老问题,请注意 raid1 现在已内置于 lvm2。要使用 lvm2 在新驱动器上镜像现有 lv,请执行以下操作:

  • 安装新驱动器并创建 lvm2 分区(至少与您现有驱动器的 lvm 分区或您想要镜像的分区大小相同)(使用parted /dev/newdrivesfdisk -d /dev/sda | sfdisk /dev/sdb假设 sdb 是您的新驱动器)
  • 将新分区初始化为 lvm2 pv(s) ( pvcreate /dev/newpartition)
  • 将现有的 lvm2 vg 扩展到新的分区(vgextend /dev/myvg /dev/newpartition),然后首先检查并确认新驱动器上的范围数量相同或更多(pvdisplay)新驱动器上的可用 PE 应该大于旧驱动器的总 PE。
  • 对于要在新分区上镜像的每个 lv:

    lvconvert -m1 /dev/myvg/existinglv /dev/newpartition
    

    (即,将我现有的(线性)lv 转换为具有 1 个额外镜像腿的 raid1 镜像 lv,并在给定的新 pv/分区上分配镜像腿所需的新 PE)

  • 请注意,您将需要在现有和新的 lv 上留出一些额外的空间,因为 lvm2 raid1 镜像段(默认)将其日志存储在与镜像腿相同的 pv/段上(您将需要在现有和新的 pv 上每个镜像腿额外留出 1 个 PE)。

    如果您收到类似这样的错误1 extents needed, but only 0 available,则可能表示创建日志时出现问题,您可能需要在现有 pv 上创建一些可用空间,可能通过缩小相关 lv 来留出空间(lvreduce)。如果执行此操作,您可能需要事先调整底层文件系统的大小(resize2fs))。

答案2

我通过将所有数据备份到外部驱动器、将 Ubuntu 重新安装到 RAID 阵列,然后在新文件系统中恢复备份来实现此目的。具体来说,我遵循了以下步骤:

  1. 使用以下说明备份数据此论坛主题使用命令

    sudo tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=backup.tgz --exclude=/mnt --exclude=/sys --exclude=/dev --exclude=/etc/fstab --exclude=/etc/mtab --exclude=/boot --exclude=/media /
    

    将两种情况下的 backup.tgz 替换为备份的位置

  2. 关闭计算机并安装两个硬盘,其中较小的硬盘至少要等于 raid 阵列的大小(可能包括原始硬盘)

  3. 启动安装盘并运行安装程序。

  4. 使用手动分区,在每个硬盘上为最终文件系统中的每个分区创建一个分区。例如,如果您希望/home分区为 100 GB,则在每个硬盘上创建一个 100GB 的分区。将将成为 RAID 阵列一部分的所有分区设置为 RAID 自动检测 (0xfd)。

  5. 选择制作raid阵列,将各个分区与另外一个磁盘上对应的分区一起放入raid阵列中。

  6. 正常完成安装并重新启动进入全新的 Ubuntu 安装。

  7. 如果尚未安装外部驱动器,请将其安装,然后按照上述论坛帖子中的说明使用命令恢复备份

    sudo tar xvpfz backup.tgz -C /
    
  8. 运行sudo update-grub然后重新启动。新操作系统现在应该与原始操作系统完全一样。

我更喜欢这种方法,原因如下:

  • 一般情况下,进行文件系统级别的复制而不是磁盘级别的复制似乎更好

  • 它不依赖于保持分区结构相同

  • 一旦我弄清楚了如何做,整个过程所花的时间比磁盘级复制所花的时间还短

  • 它允许安装程序为启动设备和挂载设备创建正确的条目,这些条目需要更改,因为 raid 分区与常规分区的引用方式不同。

相关内容