ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

RAID磁盘阵列选型配置与故障排查实战指南

RAID磁盘阵列选型配置与故障排查实战指南 做运维这些年凡是服务器存储出问题十有八九最后都绕回到同一个词上——RAID磁盘阵列。小到工作站两块盘做镜像大到机房几十块盘组RAID 6这套机制撑起了绝大多数业务系统的数据底座。但说实话真正把它吃透的人不多多数时候是照着厂商文档点几下配置完就扔在那儿了直到某天硬盘指示灯狂闪、业务报错才发现当初的RAID级别选得有问题或者热备盘压根没配。这篇文章就围绕RAID磁盘阵列把级别区别、配置入口、系统层验证、典型故障排查这些实操内容串一遍全程按真实干活的经验来聊不扯虚的。1. RAID 0/1/5/10 的选择逻辑别只看纸面性能很多刚接触服务器的人上来就问“RAID 哪个最快”这种思路本身就是个坑。RAID 的核心价值从来不是单一维度的速度而是在性能、容量利用率和数据安全之间找一个适合业务场景的平衡点。选错了级别轻则浪费盘位重则数据全灭还没法恢复。1.1 四种常用级别的数据组织方式先简单过一遍最基础的几种组合用大白话讲清楚它们各自是怎么干活的RAID 0条带化数据被切成小块均匀分散写到所有成员盘上。读写的并行度最高延迟表现最好但没有任何冗余。任何一块盘挂了整个阵列直接分崩离析数据恢复基本别想。适合用来放缓存、临时渲染文件、游戏盘这类“丢了也不心疼”的数据。RAID 1镜像同样一份数据原封不动写到两块盘里。只要还有一块盘活着数据就完好无损。读取时可以从两块盘同时读读性能有一定提升写性能基本等于单盘。空间利用率固定是50%两块1TB盘实际可用只有1TB。适合系统盘、配置目录、数据库日志这种必须绝对可靠的数据。RAID 5条带化分布式奇偶校验数据条带化分布同时把校验信息轮流写到各块盘上任何一块盘挂了都能靠其他盘上的数据和校验信息反推出丢失的内容。空间利用率是n-1块盘冗余成本和性能的平衡点。随机写入性能因为要额外计算和写入校验信息反而比RAID 0低但在绝大多数业务场景下这一点性能损失换来的数据安全是值得的。RAID 10镜像条带化先1后0先把盘两两组成镜像对再把多个镜像对条带化。既有RAID 0的读写性能又有RAID 1的冗余能力挂掉一块盘时阵列还能正常读写重建时性能影响也相对小。代价是空间利用率只有50%需要至少4块盘。数据库、虚拟化平台这种对性能和可靠性双重要求的场景基本是标配。1.2 重建时间和故障场景下才见真章纸面参数只是入门RAID 真正考验人的是在故障场景下的表现这里有几个经常被忽视的事。第一重建过程其实相当脆弱。以RAID 5为例三块4TB盘组阵列坏了一块换上备盘之后控制器要用剩下两块盘的数据加上校验信息把整块盘的容量依次推演出来。这个过程中所有硬盘都在满负荷工作如果剩余两块盘本身也有老化隐患极容易在重建期间跟着罢工那阵列就彻底报废了。所以RAID 5建议盘数量不超过5到6块盘越多重建越久风险越大。第二读性能的陷阱。RAID 5在某块盘掉线后读取需要从所有剩余盘上读取数据进行异或运算这比正常路径多一次计算延迟。在IOPS密集型业务上这种降级模式的性能衰减能到百分之三四十很多系统就是在这个状态下暴露出慢查询、超时问题。第三RAID 10的重点其实是容错组合。RAID 10允许同一镜像对内挂两块盘吗可以但前提是坏的正好是镜像对的另一块——不对同一镜像对里两块都坏了等于这个镜像对整体失效阵列就挂了。RAID 10能容错的条件是“每个镜像对最多坏一块”如果是两个不同镜像对各挂一块阵列依然健康。这里面的差别就是很多人选错级别的根源。1.3 实际项目中的选型建议结合我做过的一些项目给一个相对通用的选择顺序参考场景推荐级别盘数要求空间利用率理由系统盘/小型机RAID 1250%绝对可靠重建速度快文件存储/备份RAID 53-5(n-1)/n空间和冗余平衡大容量冷存储RAID 64-8(n-2)/n允许同时坏两块盘数据库/OracleRAID 104起偶数50%性能高恢复快缓存/转码临时目录RAID 02起100%只追求速度不存核心数据注意一个容易被带偏的点RAID 5和RAID 6的写惩罚是真实存在的块大小、写缓存策略、电池保护模块都会影响实际写入性能。如果业务随机写入量很大宁可牺牲空间上RAID 10也别在RAID 5上死扛。2. 进 RAID 配置卡前的战场侦察各品牌服务器入口整个RAID配置过程中第一道坎往往不是设置本身而是“怎么进到配置界面”。不同品牌的服务器、不同型号的RAID卡入口差异非常大而且经常被用户忽略。2.1 常见服务器品牌的进入方式结合平时给客户交付服务器、处理售后积累的经验列出几类主流设备的进入姿势华为服务器如H22H、RH2288H等开机自检到出现华为Logo界面时反复按CtrlR或CtrlH。进入的是华为自家的阵列配置界面和Intel/LSI的界面逻辑基本一致。需要注意的是一部分较新的华为机型在UEFI模式下需要进入BIOS的“Device Manager”再找到RAID配置入口直接按CtrlR可能无效。浪潮服务器如NF5468M6、NF5280M5等开机自检过程中按CtrlR或CtrlC取决于配置的RAID卡型号。如果出现LSI或AVAGO字样基本都是CtrlC进入SAS BIOS Configuration Utility再展开控制器进行配置。曙光服务器根据RAID卡型号不同常见的是CtrlC或者CtrlR部分皓龙/飞腾平台机型在BIOS界面下按F11进入启动管理再选择“RAID配置”工具进入。曙光有些刀片式服务器还提供IPMI管理界面远程配置RAID的通道比较冷门但实际项目中会用到。中兴服务器如R5300G3R5300G3默认加载LSI/Avago阵列卡开机提示按CtrlR进入配置界面。DELL PowerEdge系列F2进入系统设置再到Device Settings——RAID Controller或者开机出现logo时按CtrlR两种方式都行。HPE ProLiant系列开机F9进入ROM-Based Setup UtilityRBSU在System Configuration——Embedded SATA / RAID Configuration中配置或者F5进入智能配置工具。这里有个核心规律常用LSI芯片方案的RAID卡基本都是CtrlC或CtrlR板载软RAID多是CtrlM或CtrlI而大厂整机服务器普遍支持通过BIOS界面或专门的配置工具进入。记不住没关系开机时注意屏幕英文提示一般都会有明显的组合键提示。2.2 UEFI/BIOS 模式下的界面差异最近几年的服务器统一换成了UEFI启动方式配置RAID的路径也变了。很多人在老机器上习惯了重启按快捷键换了新机器发现按了没反应其实不是硬件坏了而是入口变了。在纯UEFI模式下常见做法是开机按F2或对应机型的设置键进入固件设置界面在Advanced或Device Manager菜单下找到RAID控制器的配置入口。有些机型还支持在启动时按F11进入启动菜单直接选到RAID卡的Option ROM或UEFI Driver。如果阵列卡支持两种模式建议同一台机器统一用UEFI模式因为后续装操作系统时UEFI引导对GPT分区支持更好单盘容量超过2TB时不会遇到MBR分区上限的问题。2.3 一个容易被忽略的细节RAID 卡驱动热搜词里出现了“sr320bc raid卡驱动”这个我得多说两句。很多人把所有注意力放在进配置界面上结果配置完了装系统时找不到硬盘——这就是RAID卡驱动没过。特别是用Windows Server安装镜像时如果镜像里没有集成对应控制的驱动安装界面会看不到任何磁盘。常规解法是提前下载好对应芯片厂商Broadcom/LSI等的Windows驱动放到U盘里安装系统选择磁盘那一步点“加载驱动程序”手动指到驱动路径。Linux下相对宽容大多数发行版内核里集成了常见RAID卡驱动但个别新卡还是需要安装厂商提供的驱动包或固件更新。3. 创建 RAID 的完整流程以华为 H22H 为例华为H22H这款机架式服务器在中小机房里很常见用它来走一遍整个创建RAID的流程逻辑上是通用的。其他品牌服务器的界面命名可能略有差异但操作思路一致。3.1 清空旧配置并恢复出厂刚接手一台旧服务器建议先清掉历史RAID配置避免出现“跨盘残留配置”这种隐蔽问题。进入配置界面后找到Controller级别的菜单H22H上通常是Main Menu——Configuration Management先看当前逻辑盘信息。如果之前被配置过可以在Manage Foreign Configuration里处理外来配置Foreign Config有旧配置残留要先Import如果盘里数据不需要或Clear。清空之前务必再次确认盘上数据不再需要这个操作不可逆。我之前碰到过一台机器只是换了个硬盘位结果控制器把新插的盘当成外来配置管理员在“Clear”上直接回车把原本包含业务数据的逻辑盘信息清掉了。后来只能靠数据恢复机构处理。所以看到任何带“Clear”“Delete”“Reset”字眼的选项条件反射般多停顿五秒。3.2 创建阵列和逻辑盘H22H的流程基本是在Configuration Management中选择Create Virtual Drive。选择RAID级别H22H板载阵列卡支持0/1/5/10具体看型号。勾选物理盘Physical Drive配置成对应阵列。选盘时留意盘位编号避免把不同型号、不同容量的盘混在一个阵列里。设置逻辑盘参数RAID Level根据业务选择见上一节的选型表。Stripe Size条带大小数据库在线事务建议64KB或128KB文件存储和流媒体建议256KB到1MB。默认值一般是64KB没特殊需求先保持默认即可。Read Policy有缓存时选“Read Ahead”预读对顺序读取有帮助随机读场景反而有副作用。保守一点选“No Read Ahead”或者“Adaptive”。Write Policy如果阵列卡有电池或电容保护模块可以开“Write Back”回写性能明显提升没有掉电保护模块的话建议保持“Write Through”直写否则意外断电会有缓存数据丢失风险。Disk Cache Policy默认“Unchanged”就行不建议强行开启单盘缓存。设置逻辑盘名称和容量默认会占满整个虚拟磁盘组的所有空间。确认后执行初始化操作。3.3 热备盘Hot Spare设置这一步经常被漏掉但重要性极高。所谓热备盘就是阵列里放一块不参与数据存储的“预备役”硬盘平时完全闲置阵列里某块盘挂了之后控制器自动把这块备盘顶替上去开始重建。配置方法是在物理盘列表里选择一块容量不小于阵列中最大盘容量的硬盘使用Assign Global Hot Spare操作把它指定为全局热备。全局热备的意思是这个备盘对所有该控制器下的逻辑盘都生效不局限于某一个虚拟磁盘。也可以选专用的“Dedicated Hot Spare”只对某一个虚拟磁盘组生效适用场景更窄。热备盘不是一个必需项但强烈建议在条件允许时配置。一块热备盘的成本相比故障时业务中断的代价通常是微不足道的。3.4 初始化与一致性检查创建完RAID后控制器一般会自动开始后台初始化Initialization。初始化期间逻辑盘已经可以正常使用了但性能会受一定影响。初始化这个过程很重要不能图省事跳过因为在初始化完成前阵列的冗余信息还没来得及完全建立此时如果一块盘挂了可能无法完整重建。配置完成后可以做一个“一致性检查”Consistency Check校验数据与校验信息是否一致相当于给阵列做个体检。对于生产环境建议在维护窗口期周期性手动触发。4. 系统装好后别急着走两个平台下的状态核验配置完RAID、装完系统很多人就觉得大功告成实际上这时候才是真正的开始。系统层面的RAID状态核验应该养成肌肉记忆。4.1 Linux 下查询 RAID 状态Linux服务器查询RAID状态分两种情况硬件RAID和软件RAID。如果使用的是硬件RAID阵列卡查询工具通常由驱动或厂商提供。最常见的是MegaCli和sas3ircu系列工具新一点的还有storcli。以实际命令为例# MegaCli 查询逻辑盘状态 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aALL # Storcli 查询控制器和虚拟盘状态 storcli /c0 /vall show storcli /c0 /eall /sall show输出重点看逻辑盘的State是否为OptlOptimal以及物理盘状态是否全部为OnlnOnline。如果出现DgrdDegraded状态说明有物理盘掉了需要及时处理。如果是软件RAIDLinux下用的是mdadm命令# 查看所有软件 RAID 设备的详细信息 cat /proc/mdstat mdadm --detail /dev/md0/proc/mdstat里能看到阵列级别比如raid1、raid5、成员盘状态[UU]表示两块盘都正常[U_]表示有一块盘失效了以及重建进度百分比。# 查看磁盘是否是 RAID 盘 lsblk -o NAME,SIZE,TYPE,RAID4.2 Windows 下查看 RAID 状态Windows Server场景下的硬件RAID状态查询平时最实用的有两个途径。第一种是使用厂商提供的管理工具。戴尔的OMSA、惠普的SSA、联想的XClarity等都能直接在Windows界面下展示物理盘、逻辑盘的状态。如果是超融合或者虚拟化环境厂商工具对应的服务可能会被精简掉这时候就得考虑命令行方式。第二种是使用Windows自带的磁盘管理控制台。在服务器管理器——工具——计算机管理——磁盘管理里能看到用硬件RAID映射出来的物理磁盘但只能看到磁盘数量看不出阵列的健康状态和冗余信息。这个方式适合快速确认系统是否识别到阵列盘不适合做详细诊断。4.3 微软官方软件 RAID 的适用场景热搜词里有“微软官方软件 raid”这个指的是Windows的“存储空间”Storage Spaces功能。它能利用SATA、SAS或者NVMe磁盘做类似RAID的池化、镜像和奇偶校验无需独立硬件阵列卡部署更灵活。存储空间支持几种布局Simple类似RAID 0、Mirror类似RAID 1/10、Parity类似RAID 5/6。它的优势是纯软件实现适合台式机和入门级服务器不需要专门的硬件。劣势也明显性能损耗比硬件RAID大尤其在奇偶校验模式下CPU占用会明显上升并且依赖Windows系统的正常运行在PE或救援环境下识别数据会比较麻烦。对于生产环境我还是建议优先考虑硬件RAID或Linux mdadm这种更成熟的方案。Windows存储空间更适合用于测试环境、家庭NAS这种对成本和灵活性要求更高的场景。5. 真实踩坑iBMC 与 RAID 控制器通信失败热搜词里有一条非常典型“communication between the ibmc and raid controller card 1 failed”。这个错误在很多华为服务器用户那里都出现过我当时处理这个问题时也折腾了一阵。5.1 故障代码是什么意思iBMC是华为服务器的带外管理控制器相当于独立的远程管理“小电脑”。它会持续与RAID卡通信获取阵列健康状态并上报到管理界面。当它报出“communication between the ibmc and raid controller card 1 failed”时意思是iBMC这边和RAID控制器之间通信链路断了管理平面和存储控制平面之间“失联”。出现这个报错后常见表现是华为管理界面iBMC Web里看不到阵列卡信息、物理盘温度、逻辑盘状态或者磁盘状态显示异常但业务端口上的数据读写可能还是正常的。所以很多人一开始并不在意甚至认为是误报。5.2 排查链路我当时处理一台华为H22H时走的排查路径是这样的写出来供参考先看业务是否受影响。登录系统用MegaCli或storcli查询阵列状态。如果逻辑盘状态正常物理盘全部在线说明RAID本身没故障问题大概率出在管理通道上。检查iBMC日志。登录iBMC的Web管理界面打开系统日志查看报错的具体时间点以及是否伴随其他告警比如固件升级记录、异常重启记录、传感器阈值告警等。确认固件版本配套。这个报错在华为服务器的早期固件版本上出现概率更高通常是iBMC固件和RAID卡固件版本存在兼容性问题导致通信异常。解决方案是分别升级iBMC固件和RAID卡固件让两者匹配到官方推荐的配套版本。重新插拔阵列卡。如果在日志里看到是在某次设备重启或搬运之后开始报错的怀疑是阵列卡物理接触不良。断电、打开机箱、拆出RAID卡清理金手指或重新插拔装回后再开机验证。短接复位或清配置保留数据情况下。如果以上步骤都没解决且机器处于搬迁后可以考虑在iBMC里做一次控制器复位这操作一般不影响阵列数据但要谨慎操作建议在非业务高峰进行。5.3 这类问题的通用方法论从这次排障里得到的经验其实可以推广到所有带外管理通道故障的处理带外管理通道断掉业务系统暂时没故障不代表可以放任不管因为故障预警能力丧失了。出现频繁的硬件告警先对比各组件固件版本配套关系这是系统性排障里最容易操作也最常被忽略的一步。重启和重新插拔属于物理层排查手段适用于硬件位移或长期运行后的接触不良场景但在操作前要确认设备断电。6. 硬件 RAID 与软件 RAID 的分界判断很多用了几年服务器的老司机偶尔也会被一个基础问题问住——我机器上的RAID到底是硬件做的还是系统做的判断方式其实直接在系统里看到阵列盘如果是一整块大容量磁盘出现在设备列表里比如/dev/sda显示为3.6TB但实际上插了4块盘同时你查不到独立的物理盘设备说明是硬件RAID控制器把多块盘合成了一块虚拟盘给系统如果系统里直接看到多块物理盘sda、sdb、sdc都各是单盘容量要用mdadm或LVM去组合则是软件RAID方案。另外一个判断方法看启动过程有没有RAID卡的BIOS自检界面以及开机有没有CtrlR/CtrlC这类组合键提示。有基本可以确定是硬件RAID。日常定位问题的时候先搞清楚这一层能省下大量不必要的排查时间。比如系统看到的是单块大容量盘性能却不达标你怀疑某块物理盘有问题用硬盘哨兵之类的工具是看不到单盘状态的必须借助RAID卡工具去看底层物理盘。7. 日常维护里那些容易忽略的小习惯最后说几个RAID磁盘阵列日常维护的小习惯都是一次次加班中总结出来的价值不比前面配置部分低。所有逻辑盘冗余状态为降级时第一时间补上备盘让阵列尽早回到健康状态。好多人看到降级还能用就不急着处理结果第二次故障来时直接歇菜。物理盘固件版本建议定期关注一下厂商公告有些批次硬盘存在特定场景下的稳定性问题厂商会推送固件修复。更新固件时注意逐个盘升级不要在多盘阵列里一次性全部刷写防止意外中断导致阵列失效。RAID配置好后把配置信息导出一份保存。绝大多数阵列管理工具都支持导出配置或者在iBMC/管理界面截图存档。重建服务器时按存档恢复能快速定位是不是原来了配置也方便做变更记录。环境温度和硬盘散热是一个长期被忽视的隐性因素。服务器机柜散热不良会显著缩短物理盘寿命尤其是RAID 5这种对全局冗余依赖度高的场景等着你的很可能就是多盘连续故障。在一次实际处理中我发现机房一台服务器报警因为物理盘温度已经到61摄氏度。当时数据还能正常读写但再这样运行下去盘老化速度和故障概率都会明显上升。后来清理了前面板防尘网、调整了机柜风道温度降到42度区间才彻底安心。RAID能防硬盘故障带来的数据丢失但它防不了散热不良对整机寿命的慢性侵蚀。机柜的散热设计和风道规划和RAID本身一样值得重视。回到最开始那个话题——RAID 不是一个“配置完就忘”的功能它是整个服务器存储体系里最长线的一环。选级别、配热备、做巡检、查固件每一步都不难难的是每次都想到。把这些环节做成日常习惯比抱着侥幸心理等故障发生再补救省心得多。
返回列表