「Linux」- Intel RST RAID in Linux

  CREATED BY JENKINSBOT

在 Dell M6800 中,组建 RAID 5 阵列,并安装 Ubuntu 系统

问题描述

在 BIOS 中,我们设置 RAID 之后,我们从 Windows PE 启动(老毛桃),然后可以看到有 RAID 创建的逻辑磁盘。

当我们换成 Linux 发行版的 USB 安装盘 时,问题出现:
1)从启动盘进去系统后,看到的是多个单盘,而不是单个逻辑磁盘
2)当我再次从 Windows PE 启动后,看到的依旧是单个逻辑磁盘;
3)当我们将发行版直接安装到 USB 中,并从中启动,此时看到的现象与 1) 相同;

问题原因

然后我在 RAID 设置界面,看到 Intel Rapid Storage Technology 标题,这是 仅有的 可用于 Google 搜索的 信息。

Intel Rapid Storage Technology

关于该技术的详细介绍可以参考 Intel® Rapid Storage Technology 页面:
1)该技术会释放固态硬盘的性能;
2)配合 Intel® Smart Response Technology 特性,提高文件和应用的访问速度;(支持 SSHD 磁盘)
3)支持 RAID 技术
4)快速数据恢复(Intel® Rapid Recover Technology)

该技术与磁盘有关,用于提高性能、响应、可靠性,具有以下特性:
Intel® Smart Response Technology
PCIe* storage support
Dynamic storage accelerator
Serial ATA RAID 0, 1, 5, and 10 support
Power-up in standby (PUIS) support

所以说,我们的 RAID 是 IRST 提供的,我们得搜索 IRST 与 Linux 有关的问题(Google: Intel RST raid linux),于是得到下面这篇文章:
Intel® Rapid Storage Technology (Intel® RST) in Linux*

Intel Rapid Storage Technology in Linux(学习笔记)

在阅读 Intel® Rapid Storage Technology (Intel® RST) in Linux* 之后,我们得知以下事实:

根据该文档的描述,他依旧是种软 RAID 技术。

Linux software RAID implementations 支持多种 RAID volume type,这其中就包括 Intel RST RAID volume type 。

使用 Intel RST RAID volume type 的好处在于:当那个 Intel RST OROM 存在时,能够直接从 Intel RST RAID volume type 中启动,而无需 dedicated partition 或 RAID superblock partation 来存储 bootloader 程序。

需要使用 MD RAID 工具,Intel 增强该工具,使其支持 RST 元数据OROM,并且由 Intel 验证并支持用于服务器平台。因此只要 Linux 发行版安装该工具,就可以操作 RST RAID 。官方文献提供 MD RAID 与 DM RAID 对比,这里不再展开,文献推荐 使用 MD RAID 工具。

MD RAID (IRST RAID) 是个中间层:

		OS File System
				|
		IRST RAID driver
		|				|
	AHCI driver	SAS driver

在 BOIS 中的 OROM 用于创建 Intel RST RAID volume 并作为访问其的接口。当 BIOS 将控制传递给 OS bootloader 之前,OROM 会将其支持的特性留在内存中。此后,当创建 Intel RST volume 时,工具 mdadm 将使用内存中的这些数据确定可用的特性(比如 RAID 5 阵列)。

系统安装 与 引导启动

很多发行版的安装程序都有特殊化的模块,该模块使用 mdadm 组装 RAID volume 。

在引导过程中,大致发生以下事情:
1)OROM 将 RAID volume 作为单独设备进行暴露
2)BIOS 从中读取分区表(MBR、GPT),启动 bootloader 程序(比如 GRUB 包含 mdadm 模块)
3)RAM file system 加载 MD RAID driver 然后 组装 RAID volume
4)在 RAID volume 中的 根文件系统被挂载,然后系统启动成功

Managing RAID Volumes(需要关注)

针对我们的问题,这可能是我们要关注的内容。

Creating a RAID volume:
RST 使用 CONTAINER device 概念,将设备作为集合进行管理。比如说:

	我们将五个磁盘作为整个集合。
	我们设置其中的四个磁盘,每个磁盘的第一部分组建 RAID 5 阵列,每个磁盘的第二部分组建 RAID 0 阵列。
	剩余那个磁盘可以用作备用磁盘。

另外,有一组元数据用于描述在 CONTAINER 中的设备,因此当使用 mdadm 创建 CONTAINER device 时,该设备只是用于存储元数据,而其他设备可以在该在 CONTAINER 中创建。

=> 通过试验,我们观察到以下现象 <=
1)即使未在 BIOS 中设置阵列,当我们进入 Linux 系统之后,我们使用 mdadm 设置阵列。当我们再次重启系统,在 BIOS 中我们可以看到磁盘已经加入阵列。(这充分验证我们在文档上看到的内容)

2)我们在 BIOS 中设置阵列的过程,无非是将磁盘设备加入 CONTAINER device 而没有创建实际的卷。(可能在 Windows 中,底层默认执行某些动作,完成卷创建)

以下章节是具体操作(略过):
Creating RAID configuration file
Volume Assemble
Stopping the volumes
To fail an active drive
Remove a failed drive
Erasing RAID meta data
Adding Spare disk to the RAID volume

Reporting RAID information(需要关注)

针对我们的问题,这可能是我们要关注的内容。

Online Capacity Expansion(忽略)

该部分与我们的问题无关,因此不再复述,有需要可以参考官方文献。

RAID migration(忽略)

该部分介绍如何切换 RAID level 但是又不会丢失数据。

该部分与我们的问题无关,因此不再复述,有需要可以参考官方文献。

RAID monitoring(忽略)

该部分与我们的问题无关,因此不再复述,有需要可以参考官方文献。

Read Patrol(忽略)

该部分与我们的问题无关,因此不再复述,有需要可以参考官方文献。

解决方法

现在回头看我们的问题。