注意:
- 此教程在 Oracle 提供的免费实验室环境中提供。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成练习后,将这些值替换为特定于云环境的值。
在 Oracle Linux 上构建软件 RAID 阵列
简介
独立磁盘或 RAID 设备的冗余阵列是从两个或多个实际块设备创建的虚拟设备。此功能允许将多个设备(通常是磁盘驱动器或磁盘分区)组合到单个设备中以容纳单个文件系统。某些 RAID 级别包括冗余,允许文件系统在一定程度的设备故障后存活。
Oracle Linux 内核使用多设备 (Multiple Device, MD) 驱动程序支持 Linux 软件 RAID,并允许您将磁盘驱动器组织到 RAID 设备中并实施不同的 RAID 级别。
有关这些不同 RAID 级别的更多信息,请参见 Oracle 文档。
本教程将与 MD 实用程序 (mdadm) 配合使用,创建一个带备件的 RAID1 设备,然后解决磁盘故障。
目标
- 使用备件创建 RAID1 设备
- 恢复失败的 RAID1 设备
先决条件
具有以下配置的任何 Oracle Linux 8 系统:
- 具有 sudo 权限的非 root 用户
- 用于 Linux 软件 RAID 的其他块存储卷
设置实验室环境
注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用说明。
-
如果尚未连接,请打开一个终端并通过 ssh 连接到上述每个实例。
ssh oracle@<ip_address_of_instance> -
验证块存储卷是否存在。
sudo lsblk空闲实验环境的输出应显示现有文件系统的
/dev/sda以及可用磁盘/dev/sdb、/dev/sdc和/dev/sdd。
安装 MD 实用程序
-
如果系统中尚不可用,请安装 MD 实用程序。
检查是否已安装
mdadm。sudo dnf list --installed mdadm如果未安装,请安装
mdadm。sudo dnf -y install mdadm注:免费实验室环境已安装 MD 实用程序。
创建 RAID 设备。
RAID1 通过将相同的数据写入阵列中的每个驱动器,提供数据冗余和弹性。如果一个驱动器发生故障,则镜像可以满足 I/O 请求。镜像是一种昂贵的解决方案,因为系统会将相同的信息写入阵列中的所有磁盘。
RAID1 的功能:
- 包括冗余。
- 使用零个或更多备用磁盘的两个或多个磁盘。
- 维护每个磁盘上写入数据的精确镜像。
- 磁盘设备的大小应该相同。
- 如果一个磁盘设备大于另一个磁盘设备,则 RAID 设备将是最小磁盘的大小。
- 最多允许删除或失败 n-1 个磁盘设备,同时所有数据保持不变。
- 如果系统在发生崩溃且有备用磁盘可用的情况下,则 RAID1 镜像的恢复会自动进行,并在检测到故障后立即恢复。
- 由于将相同数据写入镜像集中的多个磁盘,与单个磁盘相比,写入性能会降低。
-
列出可用于创建 RAID 设备的选项。
使用
mdadm --help显示器使用--create选项从未使用的设备创建新数组。sudo mdadm --create --help -
创建具有一个备用磁盘的 RAID1 设备。
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc --spare-devices=1 /dev/sdd--create::创建新数组--level: raid 级别--raid-devices:数组中的活动设备数--spare-devices:初始阵列中的备件(额外)设备数
在此命令中,设备(数组)名为
/dev/md0,使用/dev/sdb和/dev/sdc创建 RAID1 设备。设备/dev/sdd自动用作从任何活动设备的故障中恢复的备件。通过键入
y并按ENTER接受Continue creating array?提示。输出示例:
[oracle@ol-mdadm-2022-06-04-180415 ~]$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc --spare-devices=1 /dev/sdd mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: size set to 52395008K Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
创建文件系统
-
在 RAID 设备上创建 ext4 文件系统并挂载该文件系统。
sudo mkfs.ext4 -F /dev/md0 sudo mkdir /u01 sudo mount /dev/md0 /u01 -
报告文件系统磁盘使用情况。
df -h输出示例:
[oracle@ol-mdadm-2022-06-04-180415 ~]$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/md0 49G 53M 47G 1% /u01 -
将条目添加到 /etc/fstab 并使挂载点在重新引导后保持不变。
echo "/dev/md0 /data01 ext4 defaults 0 0" | sudo tee -a /etc/fstab > /dev/null
验证 RAID 设备
-
获取阵列的详细信息。
sudo mdadm --detail /dev/md0输出示例:
[oracle@ol-mdadm-2022-06-04-180415 ~]$ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sat Jun 4 20:08:32 2022 Raid Level : raid1 Array Size : 52395008 (49.97 GiB 53.65 GB) Used Dev Size : 52395008 (49.97 GiB 53.65 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Sat Jun 4 20:28:58 2022 State : clean, resyncing Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Consistency Policy : resync Resync Status : 59% complete Name : ol-mdadm-2022-06-04-180415:0 (local to host ol-mdadm-2022-06-04-180415) UUID : f6c35144:66a24ae9:5b96e616:f7252a9f Events : 9 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 - spare /dev/sdd在输出中,
State显示了数组清理和重新同步。Resysc 总是发生在最初创建数组之后,或者在恢复之后。输出显示重新同步已完成 59%。 -
从内核检查实时信息。
sudo cat /proc/mdstat输出示例:
[oracle@ol-mdadm-2022-06-04-180415 ~]$ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdd[2](S) sdc[1] sdb[0] 52395008 blocks super 1.2 [2/2] [UU] [==================>..] resync = 92.2% (48341824/52395008) finish=2.7min speed=24677K/sec unused devices: <none>
创建 RAID 配置文件
-
(可选)将 RAID 配置添加到
/etc/mdadm.conf配置文件标识哪些设备是 RAID 设备,以及特定设备所属的阵列。根据此配置文件,
mdadm能够在引导时汇编数组。sudo mdadm --examine --scan | sudo tee -a /etc/mdadm.conf输出示例:
[oracle@ol-mdadm-2022-06-04-180415 ~]$ sudo mdadm --examine --scan | sudo tee -a /etc/mdadm.conf ARRAY /dev/md/0 metadata=1.2 UUID=f6c35144:66a24ae9:5b96e616:f7252a9f name=ol-mdadm-2022-06-04-180415:0 spares=1
管理 RAID 设备
此选项用于管理阵列中的组件设备,例如添加、删除或故障设备。
-
列出可用于管理 RAID 设备的选项。
sudo mdadm --manage --help--add:Hotadd 后续设备。--remove:删除后续的非活动设备。--fail:将后续设备标记为有故障。
-
将高速缓存的写入同步到持久存储。
在运行任何磁盘管理之前,这是必需的,以确保所有磁盘高速缓存都写入磁盘。
sudo sync -
将磁盘标记为故障。
sudo mdadm --manage /dev/md0 --fail /dev/sdb -
获取数组详细信息。
sudo mdadm --detail /dev/md0输出示例:
[oracle@ol-mdadm-2022-06-04-180415 ~]$ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sat Jun 4 20:08:32 2022 Raid Level : raid1 Array Size : 52395008 (49.97 GiB 53.65 GB) Used Dev Size : 52395008 (49.97 GiB 53.65 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Sat Jun 4 21:34:19 2022 State : clean, degraded, recovering Active Devices : 1 Working Devices : 2 Failed Devices : 1 Spare Devices : 1 Consistency Policy : resync Rebuild Status : 1% complete Name : ol-mdadm-2022-06-04-180415:0 (local to host ol-mdadm-2022-06-04-180415) UUID : f6c35144:66a24ae9:5b96e616:f7252a9f Events : 19 Number Major Minor RaidDevice State 2 8 48 0 spare rebuilding /dev/sdd 1 8 32 1 active sync /dev/sdc 0 8 16 - faulty /dev/sdb数组标记为 degraded 和 recovering。输出还显示备用设备
/dev/sdd自动重建阵列,而/dev/sdb有故障。 -
删除故障磁盘。
sudo mdadm --manage /dev/md0 --remove /dev/sdb -
更换故障磁盘。
将服务器的故障物理磁盘替换为新的物理磁盘。
注意:使用免费实验室环境时,此步骤无需执行任何操作。实验室将重新使用现有的
dev/sdb设备。 -
删除以前的 linux_raid_member 签名。
签名(元数据)在 RAID 阵列中使用时会写入磁盘,在删除这些签名之前无法将该磁盘移至其他系统或重复使用。
sudo wipefs -a -f /dev/sdb警告:
wipefs命令具有破坏性,并删除目标磁盘上的整个分区表 (/dev/sdb) 和任何签名。 -
向数组添加新备件。
sudo mdadm --manage /dev/md0 --add /dev/sdb -
验证备用磁盘是否存在。
sudo mdadm --detail /dev/md0在输出底部,设备
/dev/sdb应显示在列表中,并且 State 设置为 spare。
详细信息:
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle 学习资源管理器。
有关产品文档,请访问 Oracle 帮助中心。
Build a Software RAID Array on Oracle Linux
F58425-01
June 2022
Copyright © 2022, Oracle and/or its affiliates.