开机自检那声“滴”响完,屏幕停在 RAID 卡自检画面,机房里的服务器风扇声一瞬间显得特别大。接触服务器久了你会发现,不管你是搞运维、搭私有云,还是自己在家组一台 NAS,到最后都绕不开 RAID 磁盘阵列这三个字母。它不是什么高深莫测的黑科技,但配置错了、选型错了,轻则性能上不去,重则数据直接没,代价非常现实。
这篇文章我打算一次性把 RAID 讲透:从最基础的原理讲到 0/1/5/10 四种级别的区别,再到服务器上怎么进 RAID 配置界面、怎么建阵列,最后把 Linux 和 Windows 下查询 RAID 状态的各种命令和工具整理一份能直接照着用的清单。适合第一次配服务器的运维新人,也适合那些手里有老服务器但一直没搞明白 RAID 状态怎么看的同学。内容全部来自我这些年摸过的真实设备,踩过的坑我都给你标出来了。
1. RAID到底解决什么问题
1.1 一块盘的困境
先说个最直白的问题:为什么服务器一定要做 RAID,而不是像家用电脑一样直接插几块硬盘用?
因为单个物理磁盘的可靠性太差了。一块机械硬盘的年度故障率通常在 2% 到 4% 之间,听着不高,但机房一上架几十台服务器,每台再插个六块八块盘,算下来一年到头总有盘子要坏。关键不是盘子会不会坏,而是坏了以后怎么办。单盘存储意味着盘一挂,数据就跟你说再见,这在家用场景只是损失点照片,在服务器场景可能就是核心业务中断,代价天差地别。
RAID 的全称是 Redundant Array of Independent Disks,独立磁盘冗余阵列。核心思想很简单:把多块物理盘组合成一个逻辑卷,让操作系统看起来像是一块大硬盘,同时通过数据条带化、镜像、校验等技术,在性能、容量、可靠性三个维度里做取舍。
1.2 RAID的三个核心价值
把 RAID 解决的问题拆开看,其实就是三件事。
第一是容量聚合。单块盘再大也有限,RAID 可以把 8 块 2TB 的盘变成一个逻辑上的大卷,容量管理上省心很多。
第二是性能提升。数据可以同时写到多块盘上,通过并行 I/O 提高读写吞吐量,这对数据库这类随机读写密集的业务尤其明显。
第三是容错能力。这是 RAID 存在的根本意义,某块盘物理损坏后,在重建完成前,系统依然能正常读写数据,不会因为一块盘的故障就停机。
但注意,这里面有个被很多人误解的地方:RAID 不是备份。数据被误删、被勒索病毒加密、被程序写坏,RAID 一点忙都帮不上,它解决的是硬件损坏的容错问题。备份是备份,RAID 是 RAID,这两件事谁也别想替代谁。
1.3 什么时候没必要上RAID
RAID 有没有缺点?有,而且很明显。硬件 RAID 卡要花钱,阵列重建期间性能会掉,控制器本身也是一个故障点。最重要的是,不同级别的 RAID 会损失一部分容量,这也是很多人纠结的地方。
所以在实际项目里,我见过很多不该做 RAID 的场景。比如监控存储这种纯顺序写入、数据允许少量丢失的业务,直接上 RAID 0 或者干脆单盘分区反而更划算;再比如已经完全靠分布式存储做了三副本的集群,底下那层盘很多时候用 RAID 0 就行,因为数据的可靠性已经在上层解决了,底层重复做 RAID 5 等于白白浪费容量。
选不选 RAID、选哪种 RAID,本质上是个工程权衡问题,没有绝对的对错,只有适不适合当前业务。
2. RAID 0/1/5/10怎么选
2.1 四种级别的本质差异
先说 RAID 0。它的做法是把数据切成块,轮流写到每块盘上,这就是条带化。两块盘写数据,每块各写一半,写性能翻倍,读性能也跟着上去,容量是两块盘的总和。但代价是冗余为零,任何一块盘坏了,整个阵列的数据全部丢失。所以 RAID 0 严格来说不是冗余阵列,纯粹是为性能服务的。
RAID 1 走的是另一个方向,镜像。数据同时写两份到两块盘,一块坏了另一块顶上,读性能有提升但写性能基本没变,容量损失一半。两块盘做 RAID 1 是性价比最高的容错方案,代价也最直观:花钱买了两块盘,实际能用一块的容量。
RAID 5 是生产环境最常见的方案。它用分布式校验的方式,数据条带化分布在各块盘上,同时每块盘还承担一部分校验信息。校验信息被分散存储,任何一块盘坏了,都能通过其它盘上的数据和校验位把丢失的数据算回来。可用容量是 N 减一块盘的容量,至少需要三块盘。
RAID 10 是 RAID 1 和 RAID 0 的组合。先把盘两两镜像,再把多组镜像做条带化。它同时具备 RAID 0 的性能和 RAID 1 的容错,读性能和写性能都好,还能容忍每组镜像里坏一块盘。代价就是容量利用率只有一半,因为本质上每块数据盘都有一块镜像备份。
2.2 一张表看懂区别
| 级别 | 最小盘数 | 可用容量 | 容错能力 | 读性能 | 写性能 | 典型场景 |
|---|---|---|---|---|---|---|
| RAID 0 | 2 | N块盘总和 | 无 | 高 | 高 | 缓存、临时数据、性能优先 |
| RAID 1 | 2 | 总容量的一半 | 允许坏1块 | 较高 | 普通 | 系统盘、数据库日志 |
| RAID 5 | 3 | N-1块盘容量 | 允许坏1块 | 较高 | 中低 | 文件存储、虚拟化 |
| RAID 10 | 4 | 总容量的一半 | 每组允许坏1块 | 高 | 高 | 数据库、核心业务 |
2.3 真实场景选型建议
我在生产环境里的选型原则比较固定,可以给你参考。
操作系统盘和数据库日志盘,首选 RAID 1,两块盘就可以了,系统这块量不大,对性能要求高,冗余要求也高,RAID 1 的性价比最合适。
虚拟机存储、文件共享这类对容量有要求、对性能要求适中的场景,用 RAID 5 最常见。四块或六块盘组一个 RAID 5,容量和容错平衡得比较好。但要注意 RAID 5 有个天生的短板:写性能受校验计算拖累,而且单块大盘在阵列重建期间如果第二块盘又坏了,整个阵列就废了。所以盘越多、单盘容量越大,RAID 5 的风险就越高。
数据库数据盘、核心业务系统,这是最容易出事故的场景,别犹豫,直接 RAID 10。虽然容量利用率低,但性能和容错都拉满,数据库这种随机 I/O 密集的负载,RAID 10 写性能的稳定性和重建速度是 RAID 5 比不了的。
RAID 还有一个后来的高级玩法叫 RAID 50 或 RAID 60,就是把多个 RAID 5 或 RAID 6 再条带化,适合盘位特别多的大规模存储。不过普通业务用不上,这里就不展开细说了。
注意:RAID 5 和 RAID 6 的区别也值得知道。RAID 6 有双份校验,能承受两块盘同时损坏,但需要至少四块盘,写入性能也更差。盘位超过 8 块的大容量阵列,我建议优先考虑 RAID 6 或 RAID 10,别在 RAID 5 上赌运气。
3. 服务器上怎么配RAID
3.1 先分清硬件卡还是软件RAID
配置 RAID 之前,必须先搞清楚你服务器上是什么类型的 RAID,因为后续操作路径完全不同。
现在的服务器绝大多数用的是硬件 RAID 卡,也就是一块独立的 PCIe 扩展卡,上面有自己的处理器和缓存,负责所有 RAID 计算和磁盘读写调度。操作系统看到的是一个已经组好的虚拟磁盘,不用关心底层物理盘怎么分布。装机时按 Ctrl+R 或 Ctrl+H 等组合键进入的就是 RAID 卡的管理界面。
软件 RAID 则是用操作系统或者 CPU 来模拟 RAID 功能。最常见的是 Linux 下的 mdadm,Windows 的存储空间也属于这一类。软件 RAID 便宜、灵活,但性能和功能上不如硬件卡,特别是在校验计算上会消耗 CPU 资源。
还有一种半硬半软的叫板载 RAID,主板上集成了 RAID 功能但大多不带处理器和缓存,性能介于两者之间。消费级主板上所谓的 RAID 基本都是这种,我个人的建议是:家用平台别折腾硬 RAID,用系统自带的存储池功能更实在。
3.2 进入配置界面的几种方式
不同品牌服务器的 RAID 卡进入方式有差异,但万变不离其宗。开机自检时屏幕上都会提示按什么键进入 RAID 配置界面,常见的有这几种:
| 服务器/RAID卡类型 | 进入方式 | 管理界面 |
|---|---|---|
| DELL PERC 卡 | Ctrl+R | 蓝底文字界面(旧) |
| DELL PERC H730/H740 | F2 进入 System Setup | UEFI 图形界面 |
| HP Smart Array | F9 或按提示进入 | Option ROM / UEFI |
| 浪潮服务器 | Ctrl+H(LSI 芯片卡) | LSI MegaRAID 界面 |
| 华为服务器 | Ctrl+H 或 iBMC 远程管理 | 具体视 RAID 卡型号 |
| 中兴服务器 | Ctrl+R 或 Ctrl+H | 视 RAID 卡型号而定 |
3.3 实操:DELL R730配置步骤
以用得最多的 DELL PowerEdge R730 为例,这套操作几乎能平移到所有使用 PERC 或 LSI 芯片 RAID 卡的服务器上。
开机看到 DELL logo 时,按 F2 进入 System Setup,然后进入 Device Settings,选择 RAID Controller 那一项。在 PERC 卡的配置界面里,先看一下 Physical Disks 列表确认所有硬盘都被识别,这个动作非常重要,如果某块盘没被识别,先处理盘和背板的问题,别急着建阵列。
接着选择 Configuration Management,然后选 Create Virtual Disk,在这里选择 RAID 级别,勾选需要用到的物理盘。配置里有两项容易忽略:一个是初始化方式,RAID 0 和 RAID 1 通常选 Fast Init 快速初始化即可,RAID 5 和 RAID 10 也要做后台初始化,可以选自动启动初始化让阵列在后台完成一致性检查;另一个是写策略 Write Policy,一般选 Write Back 回写,性能好,但对 RAID 卡电池或电容有依赖,必须有掉电保护,否则断电可能丢数据。
配完 Virtual Disk 后按提示初始化,出来一个几百 GB 的逻辑盘,系统装机时看到的硬盘就是它。如果你的 RAID 卡里有备用盘配置,可以通过 Hot Spare 相关选项设置全局或专用热备盘,这个强烈建议生产环境配一个,阵列里某块盘坏了,热备盘会自动顶上去开始重建,不用你半夜爬起来换盘。
3.4 国产品牌服务器进入方式
国产服务器这块,我接触比较多的是浪潮和华为,给你补充一下实际情况。
浪潮服务器的 RAID 卡很多是基于 LSI 芯片的,开机自检时按 Ctrl+H 能进 MegaRAID 配置界面。界面是图形化的,左侧菜单依次进入 Configuration Wizard,选 New Configuration,然后 Add 物理盘创建虚拟驱动,操作逻辑跟 DELL 的基本一致。浪潮的板载 SATA 组的软 RAID 也可以用 Ctrl+I 进入 Intel 的 Rapid Storage Technology 界面,但这东西性能不怎么样,专业场景建议还是买独立 RAID 卡。
华为服务器,比如 RH2288H V3 这一代,RAID 卡同样是 LSI 芯片,按 Ctrl+H 或者用 iBMC 管理口远程打开虚拟控制台进入。有些机型在 UEFI 模式下需要先在 BIOS 里确认 RAID 模式是 Enabled 才能正常识别阵列。
中兴的 R5300G3 服务器,我之前在项目里配过一次,进 RAID 配置界面的按键是开机自检时按 Ctrl+R。这个应该算是全系列比较统一的入口,如果你手里的机器按键没反应,还有一个通用招数:把显示器接到 VGA 口上看自检画面的提示,RAID 卡固件版本不同,提示键可能有差异。
提示:远程管理口是你最值得依赖的入口。DELL 的 iDRAC、华为的 iBMC、浪潮的 BMC,只要配置了 IP 并连了网线,就能在网页上打开远程控制台,直接看到服务器屏幕,再按上面的快捷键操作。机房能不开就不开,远程配置 RAID 的体验比站在机柜前看小屏幕舒服一百倍。
3.5 线缆连接:看到8643别慌
很多初次接触服务器硬件的人,拆开机箱看到 RAID 卡上密密麻麻的接口会懵,尤其是热词里提到的“raid卡上行 下行 8643”。
8643 是常见的 Mini-SAS 接口型号,全称 SFF-8643,物理形态是那种内部小方口的连接器,一般出现在 RAID 卡和服务器背板上,用于连接 RAID 卡到磁盘背板。所谓上行、下行,就是数据从背板到 RAID 卡的方向和从 RAID 卡到背板的方向,通俗讲,接到背板的那一头就是下行,接在 RAID 卡自身端口上的是上行。
线连错方向或者端口插不对,最常见的现象就是物理盘识别不出来,或者 RAID 卡报找不到驱动器。实际操作中只要记住一点:每条线一端的端口接 RAID 卡,另一端的端口接背板,背板上的接口能插进去基本不会错。SAS 线是有方向性的接口设计,插反了根本进不去,这点倒是挺友好。
如果盘多了,要确认 RAID 卡每个端口对应背板上哪些盘位,最好的办法是看服务器硬件手册的背板端口映射图。没有手册就直接用排除法测试:只插一块盘,遍历 RAID 卡的所有端口,哪个识别到了,你就知道这个端口对应哪个盘位了。
4. Linux下怎么查RAID状态
4.1 硬件RAID还是软RAID,先分清楚
到了 Linux 系统里面,查询 RAID 状态之前同样要先分清硬件 RAID 和软件 RAID,两条路用的命令完全不一样。
最简单的判断方法:看有没有 /dev/md* 设备。如果你的阵列在 Linux 里显示为 /dev/md0、/dev/md127 这种,那基本就是软件 RAID,或者说逻辑卷管理 LVM 做的镜像;如果系统里只有 /dev/sda、/dev/sdb 这样的物理盘符,但整块盘的总容量明显是多块物理盘加起来的,那大概率是硬件 RAID,RAID 卡已经把阵列包装成一块硬盘交给系统了,操作系统层面根本感知不到后端有几块物理盘。
这个区别特别重要。很多人用 Linux 的 fdisk -l 或 lsblk 查了半天,只看到一块几百 GB 甚至几 TB 的盘,就以为服务器没做 RAID,其实是硬件 RAID 已经把底层盘包装好了。想看清底层物理盘和 RAID 卡状态,你得用下面这些专门工具。
4.2 用厂商工具查硬件RAID
硬件 RAID 卡的查询工具,基本跟着芯片厂牌走。
LSI / Broadcom MegaRAID 系列的卡,也就是 DELL PERC、浪潮和华为服务器里最常见的那种,官方命令行工具叫 MegaCli,新版本叫 StorCli。这工具在服务器运维里是神一般的存在,功能强大到能直接命令行建阵列、删阵列、看状态。装完之后,查询物理盘和虚拟盘状态用这两条:
# 查看虚拟盘(逻辑卷)状态 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL # 查看物理盘状态 /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL输出里需要重点看的字段很明确:虚拟盘那个部分看 RAID Level、State 是否为 Optimal 或者 Online,如果显示 Degraded 就说明有盘掉了;物理盘那个部分看 Firmware State 是否为 Online,如果显示 Failed、Rebuild、Unconfigured Bad,那这块盘基本已经出问题了。
新版 MegaCli 的替代品是 StorCli,命令风格变化不大:
storcli show all storcli /c0 show storcli /c0/eall/sall show第一条显示所有控制器的概况,第二条看控制器 0 的属性,第三条列出控制器 0 下所有物理盘的状态。storcli 的输出比 MegaCli 易读一些,状态列一眼就能看到哪个盘 Onln、哪个盘 Rbld、哪个盘 Dgd。
4.3 用mdadm查软件RAID
如果你的阵列是 Linux 软件 RAID,查询工具就是 mdadm。查看所有 RAID 阵列的概况:
cat /proc/mdstat mdadm -D /dev/md0第一条是最快的检查方式,几行文字就能看到每个 md 设备的状态,比如 [UU] 表示两块盘都正常,[U] 或者 [U] 就说明有一块盘掉线了,正在重建时会显示 [UU_] 加一个形如 recovery = 12.3% 的重建进度。
mdadm -D 的输出更详细,能看到阵列级别、盘成员、每块盘的状态和工作模式。磁盘故障时的状态字段会明确标出 FAULTY,重建中的盘会显示 spares 或 rebuilding。
4.4 监控告警的思路
查询 RAID 状态最重要的用途,是让你在盘坏掉的早期就发现问题,而不是等业务受影响了才反应过来。我的习惯是在每台服务器上挂一个定时任务,每天执行一次 RAID 状态检查,把结果发到监控系统,关键词就是平时查状态的命令加上一个判断。
# 用storcli判断是否有盘掉线,有异常则告警 storcli /c0 show | grep -E "Dgd|Failed|Rbld" && echo "RAID ALERT" || echo "RAID OK"注意:RAID 卡从降级到完全损坏有一个时间窗口,一块盘挂了并不会立刻让系统停机,你从日志里能看到状态从 Optimal 变成 Degraded。如果在 24 小时内没发现这个变化,第二块盘再挂的时候,整个阵列就真的没了。所以状态监控不是锦上添花,是必须做的事。
5. Windows下怎么查RAID状态
5.1 系统里怎么看
Windows Server 环境下查 RAID 状态,比 Linux 要稍微绕一点,因为微软系统默认不提供直接查看硬件 RAID 状态的命令。但生产环境里的 Windows 服务器同样跑着各种业务,盘的状态你反而更要盯紧。
最基本的办法是打开"服务器管理器",进入"文件和存储服务",再看"磁盘"那一栏。硬件 RAID 组的虚拟盘会以一块物理磁盘的形式显示在这里,系统能看到的总容量就是阵列容量。如果这里显示磁盘状态异常,那已经是 RAID 卡和驱动层面解决不了的问题,得进 RAID 卡管理界面去看物理盘。
如果你装了 RAID 卡厂商的管理软件,比如 DELL 的 OpenManage Server Administrator、HP 的 Smart Storage Administrator,会在系统里提供一个图形界面,能看到每个物理盘的健康状态、固件版本、温度这些信息。生产环境建议装上,运维省心不少。
5.2 命令行怎么查
Windows 下没有直接对应 MegaCli 的命令,但有几个命令行工具可以作为替代,排查时非常实用。
diskpart 是 Windows 自带的磁盘分区工具,可以列出所有磁盘:
diskpart list diskpowershell 里的 Get-PhysicalDisk 和 Get-VirtualDisk 更适合查询磁盘和 RAID 逻辑卷信息:
Get-PhysicalDisk | Format-Table FriendlyName, MediaType, HealthStatus, OperationalStatus Get-VirtualDisk | Format-Table FriendlyName, HealthStatus, OperationalStatusHealthStatus 显示 Healthy 是正常,Warning 或 Unhealthy 就需要关注了。不过要说明一下,这些 PowerShell 命令查询的是 Windows 存储子系统层面的状态,如果 RAID 卡是纯硬件 RAID,系统只能看到虚拟盘,Get-PhysicalDisk 看到的其实也只是虚拟盘,不是后端真实的物理硬盘。想要看到真实物理盘的状态,还是得靠 RAID 卡厂商的工具或者进 RAID 卡管理界面。
5.3 驱动问题的坑
Windows 下查 RAID 状态,最常见的问题反而是装系统时找不到磁盘或 RAID 卡驱动报错。这也是热词里出现"r730服务器raid驱动 w2012r2"这类搜索的原因。
DELL R730 想装 Windows Server 2012 R2,在安装界面加载 PERC 卡的驱动是必须的一步。AMD 或者 Intel 芯片组服务器装系统时,加载 RAID 卡驱动的方式是一样的:把驱动文件放到 U 盘里,安装系统时到选择磁盘那一步,点"加载驱动程序",选择对应的 inf 文件,系统识别出 RAID 卷后就能继续安装了。
驱动文件去哪找?DELL 官网的支持页面输入服务标签,切换到驱动下载,选择 Windows Server 2012 R2 系统版本,再筛选 RAID 控制器驱动,下载的 EXE 文件可以用 7-Zip 解压,里面有打包好的安装文件,也能从里面提取出驱动目录加载到系统安装流程里去。
如果服务器进系统后 RAID 卡报感叹号或者事件日志里有大量关于存储控制器的错误,多半就是驱动版本不匹配,卸载重装正确版本的驱动基本上能解决。
6. 常见故障与排障实录
6.1 阵列降级怎么办
阵列降级即 Degraded,意思是阵列里至少有一块盘挂了,但整个逻辑卷还能继续读写。遇到这种情况,第一件事不是急着换盘,而是先确认挂掉盘的盘位号,再判断是盘物理损坏还是被 RAID 卡误判下线了。
用 MegaCli 或 storcli 查到 Failed 那块盘的 Enclosure Device 和 Slot Number,记录下盘位。热插拔设计的情况下,可以直接更换坏盘,如果是直通背板、非热插拔盘位,就需要关机换盘。新盘插入后,RAID 卡一般会自动识别并开始重建,重建期间性能会明显下降,这是正常现象,不要恐慌。
有个经验要分享:换下来的盘先别急着扔,我以前遇到过盘状态 Failed 但拆下来检测完全没有物理坏道的情况,重新插回去之后 RAID 卡自动识别并成功重建了。这种情况通常是瞬时掉电、线缆接触不良或者背板供电问题导致的误判,确认是这种情况,只需要做好背板和线缆的重新插拔,就能省下一块盘的采购成本。
6.2 开机报错处理
服务器开机自检时报 RAID 卡错误,最典型的就是热词里那条:Communication between the iBMC and RAID controller card 1 failed。这行字在华为服务器上很常见,意思是服务器的远程管理芯片 iBMC 和 RAID 卡之间通信失败。
解决方案从简单到复杂排一遍:先进 BIOS 界面,确认 RAID 卡是否被识别。识别不到,优先考虑断电重启,把服务器完全断电等十几秒再上电,很多固件通信的临时故障这样就能解决;还是不行就检查 RAID 卡是否松动,重新插拔一下,确认卡槽和接触点没有灰尘;最后再排除 RAID 卡固件损坏,卡固件挂掉的话,很多时候只能通过刷固件或者换卡解决。
最需要重视的是:遇到 RAID 卡通信报错,千万别在那个状态下重启服务器或做任何可能触发阵列重建的操作。如果 iBMC 或者 RAID 卡无法正常识别阵列,系统启动时可能会把阵列里的盘误判成新盘,反而造成数据丢失。先插上显示器确认 RAID 卡识别状态,再决定下一步。
6.3 性能不达预期的排查思路
RAID 阵列明明盘数和级别都合理,跑起来速度就是上不去,这是排障时特别常见的问题。按下面顺序排查,基本能定位到问题所在。
第一,确认 RAID 卡缓存策略。Write Back 和 Write Through 的性能差距非常明显,前者是数据先写到 RAID 卡缓存里就返回成功,后者是必须真正落到物理盘,写密集业务下性能能差几倍。前提是卡要有电池或超级电容,不然断电丢数据的风险你担不起。
第二,确认物理盘本身是不是瓶颈。SATA 盘和 SAS SSD 混在一个阵列里,性能以最慢的那块盘为准,这个不用想。另外,机械盘做 RAID 5,在重建期间写性能必然大幅下降,这个也属于正常现象。
第三,检查系统层面的 I/O 队列和调度。Linux 下 I/O 调度器选择、mount 参数里的 noatime 是否设置,Windows 下供电模式的节能策略,都会影响最终表现。我实际测过,Linux 下把磁盘调度器改成 none 或 mq-deadline,对 SSD 阵列的随机读性能提升非常明显。
第四,检查连接线。SAS 线的质量、长度、是否弯折过度,都会影响信号质量。以前遇到过一次阵列读写速度忽高忽低,最后排查到是一根 SAS 线有一处被机箱盖板压变形了。换根线,速度立刻恢复正常。
6.4 RAID卡上的缓存和掉电保护
跟 RAID 卡缓存有关的坑,值得单独拿出来说。硬件 RAID 卡的写入缓存是性能的关键,但这个缓存是易失性的,掉电就丢。因此专业的服务器 RAID 卡都会配电池或超级电容,在突然掉电时给缓存供电,把还没落盘的数据刷回硬盘。
所以选择写策略时一定要先确认 RAID 卡有掉电保护。如果没有电池或者电容,老老实实用 Write Through 或 Write Back with BBU 禁用状态,别拿数据赌性能。家用平台用的软件 RAID 或板载 RAID 没有独立的掉电保护机制,写缓存策略更要保守。
另外要提醒一点:服务器机房意外断电后,重启时发现 RAID 卡提示 cache contains data 或者 foreign configuration,这不是故障,是 RAID 卡在把掉电前缓存里的数据做恢复处理。这个阶段千万不要做任何初始化、配置或清除操作,等它把缓存数据刷干净,通常需要几分钟,等系统正常进入引导流程再说。
6.5 阵列的日常巡检建议
最后聊一聊巡检。RAID 最怕的不是某块盘坏,而是坏盘之后你没有发现,导致阵列带着隐患运行了几个月。日常巡检的目标很简单:确保阵列状态是 Optimal,确保没有盘处于 Failed 或 Rebuild 状态,确保定期一致性检查已经完成。
Linux 下用 MegaCli 或 storcli 的定时任务,Windows 下用厂商管理软件的告警,远程管理口 iDRAC、iBMC 的邮件告警也要配置好,这些能保证盘挂的第一时间就通知到人。
还有一个很多人忽略的细节:RAID 卡的一致性检查 Consistency Check 要定时跑。它会把阵列中的数据和校验信息做比对,尽早发现静默数据损坏。DELL 的 PERC 卡默认会按月执行,你可以通过控制器维护界面调整周期,但别把它关了。一致性检查期间系统 I/O 性能会小幅下降,一般安排在业务低峰期跑就行。
我个人的习惯是每个季度至少手动触发一次一致性检查,同时记录每台服务器的 RAID 配置快照,哪台机器什么级别的阵列、哪块盘在哪个槽位,都整理成表格。真出故障的时候,这份记录能帮你省下宝贵的排障时间。毕竟服务器换盘这种事,拼的不是技术,是准备充分不充分。