在 Ubuntu 20.04 上创建 RAID 级别 10 (RAID 1+0)

可以使用软件 RAID 级别进行管理 mdadm Linux 上的工具。 在本教程中,您将学习如何在 Ubuntu 20.04 上使用创建 RAID Level 10 (RAID 1+0) mdadm 公用事业。 有不同级别的 RAID 配置,范围从 0 到 9。 某些级别,例如 RAID 级别 1 (mirroring) 和 RAID 级别 0 (striping) 可以组合起来提供更好的存储冗余和更高的数据恢复机会,以防某些磁盘损坏。

在我们之前的指南中,我们学习了如何创建和设置 RAID 级别 1。

在 Ubuntu 20.04 上设置软件 RAID

在 Ubuntu 20.04 上创建 RAID 级别 10 (RAID 1+0)

将物理驱动器连接到您的机器

RAID 级别 10 (1+0),至少需要四个驱动器。

我们已经有物理驱动器连接到我们的系统,/开发/SD[b-e],都与 4G 存储大小。

lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT loop0                       7:0    0 93.8M  1 loop /snap/core/8935 loop1                       7:1    0   67M  1 loop /snap/lxd/14133 sda                         8:0    0   15G  0 disk  ├─sda1                      8:1    0    1M  0 part  ├─sda2                      8:2    0    1G  0 part /boot └─sda3                      8:3    0   14G  0 part    └─ubuntu--vg-ubuntu--lv 253:0    0   14G  0 lvm  / sdb                         8:16   0    4G  0 disk  sdc                         8:32   0    4G  0 disk  sdd                         8:48   0    4G  0 disk  sde                         8:64   0    4G  0 disk

创建 RAID 分区

将上面连接的磁盘分区并初始化为 RAID 分区。

for i in {b..e}; do parted -a optimal /dev/sd$i mklabel msdos; done
for i in {b..e}; do parted -a optimal /dev/sd$i mkpart primary ext4 0% 100%; done
for i in {b..e}; do parted -a optimal /dev/sd$i set 1 raid on; done

检查磁盘的分区表;

parted -a optimal /dev/sdb print
Model: ATA VBOX HARDDISK (scsi) Disk /dev/sdb: 4295MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags:   Number  Start   End     Size    Type     File system  Flags  1      1049kB  4295MB  4294MB  primary               raid

您可以对其他磁盘执行相同操作。

在 Ubuntu 20.04 上创建 RAID 级别 10 (RAID 1+0)

磁盘设置完成后,您现在可以使用以下命令在 Ubuntu 20.04 上创建 RAID 级别 10 (1+0) mdadm 命令。

检查是否 mdadm 安装包;

apt list -a mdadm
Listing... Done mdadm/focal-updates,now 4.1-5ubuntu1.2 amd64 [installed,automatic] mdadm/focal 4.1-5ubuntu1 amd64

如果没有安装,你可以通过运行下面的命令来安装它;

apt install mdadm

的基本命令行语法 mdadm 命令是;

mdadm [mode] <raiddevice> [options] <component-devices>

[mode] 指定任何主要的 mdadm 操作模式,可以是以下之一;

  • Assemble (-A, --assemble): 将先前创建的数组的组件组装到活动数组中。
  • Build (-B, --build):构建一个没有每个设备元数据(超级块)的数组。
  • Create (-C, --create):使用每个设备的元数据(超级块)创建一个新数组。
  • Follow/Monitor (-F, --follow, --monitor):监控一个或多个 md 设备并对任何状态变化采取行动。 这仅对 RAID1、4、5、6、10 或多路径阵列有意义。
  • Grow (-G, --grow):增长(或缩小)一个数组,或者以某种方式重塑它。
  • Incremental Assembly (-I, --incremental):将单个设备添加到适当的阵列。
  • Manage:这是用于对阵列的特定组件执行操作,例如添加新备件和移除故障设备。
  • Misc:这是一种“其他一切”模式,支持对活动阵列的操作、对组件设备的操作(例如擦除旧超级块)和信息收集操作。
  • 自动检测 (–auto-detect):此模式不会作用于特定设备或阵列,而是请求 Linux 内核激活任何自动检测到的阵列。

要在 Ubuntu 20.04 上创建 RAID Level 10 (RAID 1+0),可以使用这样的命令。

mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[bcde]1

样本输出;

mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.

有关 mdadm 选项的信息,请参阅手册页。

检查 RAID 状态

您可以使用以下命令检查上面创建的 RAID 设备的状态;

mdadm --detail /dev/md0

样本输出;

/dev/md0:            Version : 1.2      Creation Time : Tue Jun 15 18:35:00 2021         Raid Level : raid10         Array Size : 8380416 (7.99 GiB 8.58 GB)      Used Dev Size : 4190208 (4.00 GiB 4.29 GB)       Raid Devices : 4      Total Devices : 4        Persistence : Superblock is persistent         Update Time : Tue Jun 15 18:35:42 2021              State : clean      Active Devices : 4    Working Devices : 4     Failed Devices : 0      Spare Devices : 0              Layout : near=2         Chunk Size : 512K  Consistency Policy : resync                Name : ubuntu20:0  (local to host ubuntu20)               UUID : 4491a495:a29490e6:3e353c6d:cffac47d             Events : 17      Number   Major   Minor   RaidDevice State        0       8       17        0      active sync set-A   /dev/sdb1        1       8       33        1      active sync set-B   /dev/sdc1        2       8       49        2      active sync set-A   /dev/sdd1        3       8       65        3      active sync set-B   /dev/sde1

列出每个 RAID 设备的详细信息;

mdadm --examine /dev/sd[bcde]1

您还可以通过运行以下命令来检查状态;

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  md0 : active raid10 sde1[3] sdd1[2] sdc1[1] sdb1[0]       8380416 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]        unused devices: <none>

从上面的输出;

  • Personalities 行显示内核当前支持的 RAID 级别。
  • md 设备行显示阵列的状态、设备上设置的当前 RAID 级别以及阵列中使用的设备。
  • 另一行以块为单位表示数组的可用大小
  • [n/m] 例如 [4/4] 显示该阵列将有 n 个设备,但目前正在使用 m 个设备。 当 m >= n 时,一切都很好。 U 表示启动,UUUU 表示阵列上的所有四个设备都已启动,并且全部启动。

在 RAID 10 设备上创建文件系统

创建 RAID 10 设备后,您需要在其上创建文件系统以使其可用。

我们使用了四个磁盘,每个磁盘都有 4G。 RAID 10 不是总共获得 16G,而是将大小减少了一半,因此可以使用 8G。

数据在阵列中的磁盘之间进行镜像和条带化。

在 RAID 10 设备上创建文件系统。 下面的命令创建一个 EXT4 文件系统。

mkfs.ext4 /dev/md0

挂载 RAID 10 设备

您现在可以挂载 RAID 10 设备以开始使用它

mount /dev/md0 /mnt

确认安装;

df -hT -P /mnt/
Filesystem     Type  Size  Used Avail Use% Mounted on /dev/md0       ext4  7.9G   36M  7.4G   1% /mnt

要在启动时自动挂载设备,请更新 /etc/fstab 通过添加类似于下面的行来创建文件;

/dev/md0 /mnt ext4 defaults 0 0

此外,您需要更新 /etc/mdadm/mdadm.conf 通过创建一个原型配置文件,该文件描述了已知由 IDE 或 SCSI 驱动器的分区组成的当前活动阵列,使用 mdadm --detail --scan 命令

mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=ubuntu20:0 UUID=244a7fd9:d6fcc210:9b559249:df999270

将信息写入 mdadm.conf,然后运行;

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

一旦你更新 mdadm.conf,然后您可以更新 initramfs。

update-initramfs -u

完成后,更新 initramfs,您可以重新启动系统以确认 RAID 设备是否可以自动挂载。

这标志着我们关于如何在 Ubuntu 20.04 上创建 RAID 级别 10 (1+0) 的指南结束。

咨询 man mdadm 有关其用法的更多信息。

在 Rocky Linux 8 上设置软件 RAID

在 Debian 10 上设置软件 RAID

在 Ubuntu 20.04 上设置 NFS 服务器的简单方法