如何将 Linux 软件 RAID 移动到新机器?

如何将 Linux 软件 RAID 移动到新机器?

我有一台新安装的机器,上面安装了 Gentoo Linux,还有来自另一台机器的软件 RAID 5 阵列(4 个 IDE 磁盘连接到板外 PCI 控制器)。我已成功将控制器移至新机器;内核检测到驱动器;我使用 mdadm --examine 并验证了单个 RAID 分区已被检测到、干净,甚至按“正确”顺序排列(hde1 == 驱动器 0、hdg1 == 驱动器 1,等等)。

我无法访问旧机器的原始配置文件。我应该如何在不丢失数据的情况下重新激活此阵列?

答案1

您确实需要原始的 mdadm.conf 文件。但是,由于您没有它,因此您必须重新创建它。首先,在执行任何操作之前,通过 mdadm 手册页了解 mdadm。为什么要冒着因您不了解的情况或命令而丢失数据的风险呢?

话虽如此,此建议的风险由您自行承担。使用错误的命令很容易丢失所有数据。在运行任何命令之前,仔细检查该命令的后果. 我不对您采取的任何行动造成的数据丢失或其他问题负责 - 因此仔细检查一切

您可以尝试以下操作:

mdadm --assemble --scan --verbose /dev/md{number} /dev/{disk1} /dev/{disk2} /dev/{disk3} /dev/{disk4}

这应该会为您提供一些信息,以及 ID。它还将创建一个新的阵列设备 /dev/md{number},从那里您应该能够找到任何挂载。 不要使用该--auto选项,手册页措辞暗示在某些情况下,这可能会导致驱动器上的阵列设置被覆盖。 这可能是不是情况确实如此,并且该页面可能需要重写以提高清晰度,但为什么要冒险呢?

如果阵列组装正确,并且一切“正常”,确保已将 mdadm.conf 写入并存储在 中/etc,以便您在启动时能够获得它。 在文件中包括来自数组的新 ID 以帮助其完成。

答案2

我只是想至少为 Debian 添加我的完整答案。

  • 通过 --> 安装 raid 管理器 sudo apt-get install mdadm
  • 通过 --> 扫描旧的 raid 磁盘 sudo mdadm --assemble --scan

  • 此时,我喜欢BLKID手动检查并安装突袭以进行确认。

    blkid mount /dev/md0 /mnt

  • 通过 --> 将信息附加到 mdadm.conf mdadm --detail --scan >> /etc/mdadm/mdadm.conf
  • 通过 --> 更新 initramfs update-initramfs -u

  • 故障排除:

确保输出mdadm --detail --scan匹配你的/etc/mdadm/mdadm.conf

    nano /etc/mdadm/mdadm.conf

    ARRAY /dev/md/0 level=raid5 num-devices=3 metadata=00.90 UUID=a44a52e4:0211e47f:f15bce44:817d167c
  • 示例 FSTAB

    /dev/md0    /mnt/mdadm   ext4    defaults,nobootwait,nofail     0    2
    

https://unix.stackexchange.com/questions/23879/using-mdadm-examine-to-write-mdadm-conf/52935#52935

https://askubuntu.com/questions/729370/can-i-transfer-my-mdadm-software-raid-to-a-new-system-in-case-of-hardware-failur

如何将 Linux 软件 RAID 移动到新机器?

答案3

在将操作系统从 CentOS 6.2 更新到 CentOS 8.2 时,4 磁盘数据 Raid0 与操作系统磁盘分离的问题将我带到了这里。

我能够使用 Avery 上面接受的答案(https://serverfault.com/a/32721/551746),但由于 Kernel 3.14 中引入的 Raid Layout 混乱而遇到了问题。

在本帖之后 (https://www.reddit.com/r/linuxquestions/comments/debx7w/mdadm_raid0_default_layout/)我必须更改默认布局(/sys/module/raid0/parameters/default_layout),以便新内核使用旧的 Raid0 布局。

mdadm --detail /dev/mdx
echo 2> /sys/module/raid0/parameters/default_layout #study the previous link to see if 2,1 or 0 needs to be echoed here.
mdadm --assemble --scan

如果可行,请添加内核参数,以便重启时 raid0 默认布局为 2(或 1 或 0),方法是编辑 /etc/default/grub 并设置

raid0.default_layout=2

重建 grub.cfg,添加到 /etc/fstab 并重新启动!

答案4

2023 年更新

现在事情变得简单多了,而且这或多或少不需要任何麻烦、手动组装或访问原始配置等。下面的过程是在将 10 年前的 3 驱动器 RAID 5 设置从 SL(即 RedHat)6.9 移动到 Ubuntu 22.04 时测试的。

如果可以的话,从旧机器上获取以下内容:

  1. mdadm.conf/etc/mdadm.conf或者/etc/mdadm/mdadm.conf
  2. /etc/fstab
  3. 输出cat /proc/mdstat
  4. 的输出mdadm -D /dev/mdx,其中'mdx'可以从(3)中找到(即/dev/md0

如果您无法获取这些信息并没有关系;您只需要它来进行健全性检查。

现在mdadm在新机器上安装,然后重新启动。将会有一个新的mdadm.conf(几乎肯定在),它应该正确报告驱动器 UUID(它应该与旧机器上/etc/mdadm报告的 UUID 相同)。这将看起来像mdadm -D

ARRAY /dev/md/0  metadata=1.1 UUID=68d1ea02:83b09989:707c6320:1905a656 name=0

cat /proc/mdstat和的新输出mdadm -D应该与旧机器的输出几乎相同,只是设备可能有变化(在我的情况下,/dev/md127更改为/dev/md0)并且报告的尺寸可能略有不同。

现在你需要创建一个/etc/fstab条目,并且你(最好)需要一个 fstab 样式的 UUID(这是不是与 报告的 UUID 相同mdadm)。如果您的新数组是/dev/md0,那么

  $ blkid | grep /dev/md0
 /dev/md0: UUID="some-long-uuid" BLOCK_SIZE="4096" TYPE="ext4"

现在创建您想要挂载新驱动器的目录,并创建一个/etc/fstab条目:

UUID=some-long-uuid  /data   ext4   defaults   0 2

在这种情况下,阵列将安装在/data

以 root 身份运行测试新的 fstab 条目mount -a;这将挂载尚未挂载的任何内容。您还应该检查/etc/mtab以确认挂载选项是否正确:

$ cat /etc/mtab | grep /dev/md0
/dev/md0 /data ext4 rw,relatime,stripe=256 0 0

在运行这些测试之前,请勿尝试重新启动。如果您输入的 UUID 不正确,内核将启动到带有依赖性错误的紧急控制台。要恢复,请删除新/etc/fstab条目并重新启动。

重新启动后,您应该会在挂载点看到旧阵列。

相关内容