如何在 Linux 中设置 RAID

虽然硬件 RAID 将在 BIOS 中设置并由 Linux 内核自动使用,但软件 RAID 在 Linux 上需要更多的工作。

这些说明适合拥有家庭系统且希望文件安全的人或运行小型自托管服务器的人。 对于较大的生产级系统,建议进行仔细规划和更精细的实施。

使用的工具

在 Linux 上,RAID 磁盘不遵循通常的 /dev/sdX 命名,但将表示为 md (disk) 文件,例如 md0, md1, md2,标准。

您需要记住的一个重要文件是 /proc/mdstat,它将提供有关系统上任何 RAID 设置的信息。 打字

将告诉您所有有关任何现有 RAID 设置的信息。

您需要用来设置 raid 的命令是 mdadm. 大多数系统都应该预装这个。 如果没有,例如在某些 Debian 系统上,您可以使用

一旦您拥有了所有必需的工具,就该决定您的实施方式了。

选择正确的 RAID 设置

您可以在此处找到有关不同 RAID 级别的更多信息。 从理论上讲,您可以将 RAID 阵列的任意组合应用到您的磁盘和分区,尽管有一些常见的做法和注意事项值得考虑。

  • RAID 0 适合需要速度的非关键磁盘。 RAID 0 的一个很好的用途是交换分区,因为它可以显着提高其速度。
  • 仅对于两个磁盘,在需要冗余且无需考虑容量的小型系统(如家用计算机)上,请使用 RAID 1。
  • 如果您有四个或更多磁盘并且需要速度和冗余,那么 RAID 10 是一个不错的选择。
  • RAID 5 至少需要三个磁盘,为小型随机磁盘写入引入了开销,并且在大型或慢速驱动器上表现不佳。 如果您的磁盘速度较慢(低于 7200 RPM)和/或较大(超过 1TB),请勿使用 RAID 5。
  • 对于较大的磁盘,首选 RAID 6,但您将丢失两个磁盘进行奇偶校验(与 RAID 5 中的一个相比),并且写入开销大于 RAID 5。
  • 对于更复杂的设置,值得考虑将 RAID 与 LVM 一起使用,但这需要专业知识和仔细规划。

有两种方法可以在 Linux 上实现 RAID。 最简单的方法是将新的 RAID 阵列添加到现有系统以用于存储目的。 为了更精细的设置和更好的保护,可以(并且应该)在安装时实施 RAID,但当然这并不总是一种选择。

也可以将已安装的系统迁移到新实施的 RAID 阵列上,但这是一个相当高级的过程,不会在本简单教程中介绍。 我们现在将专注于将 RAID 阵列添加到您现有的设置中,用于存储敏感数据或您希望确保存在恢复选项的任何内容。

将 RAID 阵列添加到现有系统

在这个 example 我们将在两个磁盘上设置一个 RAID 1 阵列,用于存储重要的数据文件。

笔记: 对磁盘进行分区和配置很容易导致数据损坏或丢失。 在尝试此类操作之前始终创建备份,并且只有在您确信自己理解该过程时才继续。 继续需要您自担风险!

首先,您需要准备分区。 使用您最喜欢的分区工具并创建两个分区,每个驱动器上一个,将用作 RAID 阵列。 新分区的大小应该相同,并且类型为“fd”(RAID 自动检测)(如果您的系统分区需要调整大小,您可以使用 Live CD,例如 分开的魔法)。

假设您的分区现在是第一个磁盘上的 sda1、sda2 和第二个磁盘上的 sdb1、sdb2

  • sda1 是你原来的系统分区,(ext4挂载为/)
  • sda2 是您将在 7.7GB 大小的 RAID 阵列中使用的新分区
  • sdb1 是要在 7.7GB 大小的 RAID 阵列中使用的另一个分区
  • sdb2 是第二个硬盘驱动器的剩余部分(因为组成 RAID 的分区大小必须相同,在这种情况下无法有意义地使用超出部分。)

现在有趣的是组成 RAID 阵列的 sda2 和 sdb1 分区。

使用 mdadm 允许对管理 RAID 进行精细控制的命令。 要查看所有选项,请键入:

对于我们的 example,使用如下命令:

分解上面的命令

--create /dev/md0 将创建新的 RAID 阵列并调用它 md0. 如果您有现有的 RAID 设置,请确保使用在此之前未使用的编号。

--level=1 这是为了确保它是 RAID 1。

--raid devices=2 基本上告诉 mdadm 将使用两个分区,将在 (/dev/sada2/dev/sdb1 在这种情况下)。

--verbose 将产生更多输出,因此当您监视命令时,您将获得更多信息。

- p f2 将使用“远”轮换计划,这意味着数据不会以相同的顺序存储,从而可以更好地防止同时发生驱动器故障。 (如果驱动器因制造错误而发生故障,则始终以相同的方式写入相同的数据序列可能意味着驱动器可能或多或少同时发生故障。对 RAID 10 很有用)

只需接受确认对话,您就完成了。

linux-raid-确认

要查看设置过程中发生的情况,您可以使用 watch 从另一个终端窗口命令来监视 /proc/mdstat 文件:

linux-raid-progress

准备就绪后,进度条将变为文件内容的通常布局。

linux-raid-完成

尽管并非所有系统都严格要求,因为大多数系统会自动扫描活动 RAID 阵列,但最好确保 /etc/mdadm/mdadm.conf 文件被创建。 这 sudo 命令将没有足够的“权力”来解决这个问题。 您需要以 root 身份登录或使用 su. 在 Ubuntu 系统上,作为安全预防措施,root 密码通常未配置。 要给它一个密码,请输入:

并输入两次新的 root 密码。 (此密码在您使用时有效 su. 为了 sudo 您仍将使用通常的用户密码。)

现在成为根:

并配置 mdadm.conf

很遗憾 mdadm 默认情况下添加一个名称参数,这可能会导致在引导时安装 RAID 阵列时出现问题。 要解决此问题,请打开新更新的 mdadm.conf 文件:

并删除 name=[devicename]:[x] 位,在我们的例子中是:

现在保存并退出。

然后你应该更新 initramfs 使用修改过的 mdadm.conf

检查新的 RAID 阵列:

该命令应该不会返回错误。

linux-raid-检查-扫描

现在将您的新 RAID 阵列格式化为您选择的文件系统。 在这个 example 我们将使用 ext4。

要挂载新阵列,请创建挂载点。 这可能在任何地方。 在这个 example 我们将使用 ~/failsafe

然后打开 /etc/fstab 写文件

并添加以下行:

当然,你必须替换 [path_to_mount_point] 包含要安装新 RAID 1 阵列的完整路径。 在我们的例子中,这条线看起来像:

现在安装它而不重新启动:

您已准备好使用新的 RAID 1 阵列。

linux-raid-lsblk-final

如果您的 RAID 已变为只读,请检查挂载目录的权限和所有权。 如果它是根,你可以改变它 chown

之后您的 RAID 阵列将是可写的。

这就是在 Linux 中设置 RAID 所需要做的一切。 如果您在设置过程中遇到任何问题,请在评论中告诉我们。

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅