资讯详情

资讯详情

LSI RAID 配置与掉盘修复实战:storcli 建 VD、换盘重建与巡检

简介这份LSI RAID配置/修复教程手册面向使用LSI RAID控制器的服务器运维人员与存储工程师针对磁盘阵列配置、跨接设置及故障修复等实际问题提供操作指引。资源包内含1个doc文档压缩包约921KB以图文步骤形式呈现便于对照操作界面逐步查阅。手册围绕Configure配置菜单展开涵盖New Configuration新建逻辑驱动器、物理驱动器选择与添加、阵列跨接、逻辑驱动器配置等关键环节并说明F2、F3、F10等热键用途同时提示磁条大小一致、数据备份、PERC4/Di仅支持RAID1与5跨接等注意事项帮助读者理解RAID0/1/5/10/50的组建条件与写入策略设置。目前已有1167人学习适合需要快速掌握LSI阵列配置与修复思路的技术人员参考。1. LSI RAID 配置与修复从一块掉线盘说起机房巡检时发现一台存储节点告警登录带外管理一看LSI RAID 卡下的虚拟盘状态是Degraded一块成员盘被标成Failed。这种场景下运维人员最关心的不是RAID 是什么而是三件事现在数据还在不在、能不能在线把盘换回来、换完之后怎么确认重建真的跑起来了。LSI现属 Broadcom 体系的 MegaRAID 系列是服务器里最常见的硬件 RAID 方案之一配套工具主要是storcli新一代和MegaCli老一代配置、巡检、修复基本都围绕这两个命令行工具展开。这篇笔记面向的是手里真有 LSI 卡、需要动手配阵列或救故障盘的工程师从建 VD 讲到掉盘修复把参数、命令和踩过的坑都摊开说清楚。新手可以照着命令走熟手可以重点看参数边界和排查思路。2. 先搞清楚 LSI RAID 的层级模型和工具选型动手之前必须把 LSI 的术语体系理顺否则命令敲下去连自己在操作哪一层都不知道。MegaRAID 的抽象是三层物理盘PDPhysical Drive、虚拟盘VDVirtual Drive、以及承载 VD 的磁盘组DGDrive Group。一块物理盘可以被划进某个 DGDG 上再切出一个或多个 VD 对外呈现为操作系统看到的块设备。很多人把 DG 和 VD 混为一谈结果扩容时切错对象这是血泪经验里最常见的一类翻车。2.1 PD、VD、DG 三层到底谁管谁物理盘是硬件层每块盘有 Enclosure ID 和 Slot ID 定位比如252:0表示 enclosure 252 的 0 号槽。磁盘组是 RAID 级别的容器一个 DG 内的所有盘共享同一个 RAID 级别RAID0/1/5/6/10 等。虚拟盘是最终对 OS 暴露的逻辑卷一个 DG 可以切多个 VD比如 8 块盘做 RAID6 建一个 DG再切成两个 VD 分别给系统盘和数据盘。理解这个层级后扩容、重建、迁移这些操作才知道该动哪一层加盘扩容动的是 DG改 RAID 级别通常要重建 DG换故障盘动的是 PD。2.2 storcli 和 MegaCli 该用哪个老服务器上常见MegaCli64新一点的固件和卡基本都推storcli64。两者功能重叠但 storcli 的输出更结构化、脚本友好MegaCli 在部分老卡上兼容性更好。判断标准很简单先看卡型号和固件版本能跑 storcli 就优先 storcli因为它的 JSON 输出/j对自动化巡检太友好了。下面这条命令先确认工具能识别到卡# 列出所有 LSI/Broadcom RAID 控制器 storcli64 show # 老卡用 MegaCli 的等价命令 MegaCli64 -AdpAllInfo -aALL | head -40storcli64 show会输出控制器编号Controller 0,1...、型号、固件版本、以及是否有 BBU/CV 缓存模块。逻辑说明控制器编号是后续所有命令的c0、c1前缀来源先确认编号再往下操作。参数说明如果输出为空多半是驱动没加载或工具版本与卡不匹配先查lspci | grep -i raid确认系统认到卡没有。2.3 建阵列前必须确认的四件事建 VD 之前有四件事没确认就动手后面大概率返工。第一盘的健康状态storcli64 /c0/eall/sall show看每块盘是UGood未配置好盘还是Onln已在线。第二RAID 级别和业务 IO 特征匹配随机写多的库选 RAID10顺序读多的大文件选 RAID5/6。第三条带大小Strip Size和 OS 文件系统块对齐默认 64K 或 256K 要结合业务定。第四初始化方式Fast Init只写元数据快但后台还在跑Full Init慢但干净生产环境首次建盘建议 Full Init 或至少确认后台初始化完成。3. 用 storcli 建 VD 并跑通第一次配置这一章是纯操作从清盘到建 VD 到验证每一步都给命令和参数解释。假设控制器是 c0用 enclosure 252 下 0 到 7 号槽的 8 块盘做 RAID6切两个 VD。3.1 清盘与确认物理盘状态如果盘上有残留的旧配置比如从别的机器拆过来的直接建 VD 会报foreign configuration或者盘状态是UBad。先看状态# 查看所有物理盘状态重点看 State 列 storcli64 /c0/eall/sall show # 如果存在外部配置Foreign先导入或清除 storcli64 /c0/fall show storcli64 /c0/fall import # 确认是需要的配置才导入 storcli64 /c0/fall delete # 确认不需要则清除逻辑说明eall/sall是通配所有 enclosure 和 slot方便一次性看全。fall指 foreign外部配置。参数说明导入前务必确认这块盘上的数据是不是你要的导入和清除都是不可逆操作清除后旧阵列元数据就没了。盘状态是UGood才能用于新建UBad说明盘本身有问题先换盘。3.2 建磁盘组和虚拟盘的具体命令确认盘都UGood后建 DG 和 VD 可以一条命令搞定也可以分两步。分两步更清晰# 第一步用 0-7 号槽的盘建一个 RAID6 磁盘组 storcli64 /c0 add vd typeraid6 drives252:0-7 # 第二步在刚建的 DG 上切两个 VD假设 DG 编号为 0 # VD0 用 100GB 做系统盘VD1 用剩余空间做数据盘 storcli64 /c0/v0 add size100GB storcli64 /c0/v1 add sizeall逻辑说明第一条命令创建 DG 并默认生成一个占满全盘的 VD0如果只想切分更稳妥的做法是先建 DG 再指定 VD 大小。参数说明typeraid6指定 RAID 级别drives252:0-7是盘定位范围sizeall表示用掉 DG 剩余全部空间。注意 RAID6 至少需要 4 块盘RAID5 至少 3 块RAID10 至少 4 块且必须偶数。3.3 初始化与验证 VD 状态建完 VD 必须初始化才能被 OS 正常识别否则可能看到盘但读写异常# 对 v0 做快速初始化 storcli64 /c0/v0 start initialization # 查看初始化进度和 VD 状态 storcli64 /c0/v0 show storcli64 /c0/vall show逻辑说明start initialization触发初始化show看State是否为OptlOptimal。参数说明快速初始化Fast Init只清元数据几秒完成完整初始化Full Init会写全盘大容量盘可能几小时。生产环境如果对数据一致性要求高建议完整初始化命令是storcli64 /c0/v0 start initialization full。验证时重点看三列State 是否 Optl、RAID 级别对不对、Size 是否符合预期。3.4 把新 VD 交给操作系统识别VD 建好初始化完成后OS 层可能还需要重新扫描才能看到新块设备# 触发 SCSI 总线重新扫描 echo - - - /sys/class/scsi_host/host0/scan # 或者用 rescan 脚本 /usr/bin/rescan-scsi-bus.sh # 确认新盘出现 lsblk fdisk -l | grep -i Disk /dev/sd逻辑说明硬件 RAID 对 OS 呈现的就是普通 SCSI 块设备重新扫描后/dev/sdX会出现。参数说明host0要换成实际的 SCSI host 编号用ls /sys/class/scsi_host/查。如果扫描后还是看不到检查 VD 状态是否 Optl以及是否有未初始化的 VD。4. 掉盘修复把 Failed 盘换回来并确认重建这是最考验人的环节。盘掉了不可怕可怕的是重建过程中又掉一块或者重建根本没启动而你以为它在跑。下面按确认故障 → 换盘 → 触发重建 → 监控的顺序走。4.1 判断是真掉盘还是误报先看 VD 和 PD 状态确认是物理盘故障还是链路抖动# 看 VD 状态Degraded 说明有盘掉了 storcli64 /c0/vall show # 看具体哪块盘 Failed storcli64 /c0/eall/sall show | grep -i -E Failed|UBad|Offln # 看控制器事件日志确认掉盘原因 storcli64 /c0 show events | tail -50逻辑说明Degraded是 VD 级别告警具体哪块盘出问题要看 PD 状态。参数说明事件日志里如果看到PD missing或timeout可能是链路或背板问题不一定是盘坏如果看到medium error或predictive failure基本可以判定盘要换。误报的情况先尝试storcli64 /c0/e252/s3 set good把盘重新拉回但如果是真故障这步会失败。4.2 在线换盘与重建触发确认盘故障后热插拔换盘服务器和背板支持的前提下新盘插上后通常会自动开始重建。如果没有自动重建手动触发# 确认新盘已被识别为 UGood storcli64 /c0/e252/s3 show # 如果新盘是 UGood 但没自动重建手动指定为热备并触发 storcli64 /c0/e252/s3 add hotsparedrive # 或者直接对 VD 发起重建部分固件支持 storcli64 /c0/v0 start rebuild逻辑说明热备盘Hot Spare分全局和专用全局热备任何 DG 掉盘都能顶专用热备只服务指定 DG。参数说明add hotsparedrive把盘设为热备如果阵列已有掉盘设完会自动开始重建。注意新盘容量必须大于等于原盘否则重建会失败或只能部分重建。4.3 监控重建进度和性能影响重建期间最怕的就是再掉一块盘所以必须盯着进度和剩余盘的健康# 查看重建进度百分比 storcli64 /c0/v0 show rebuild # 持续监控每 30 秒刷新一次 watch -n 30 storcli64 /c0/v0 show rebuild # 同时看其他盘有没有异常 storcli64 /c0/eall/sall show | grep -v Onln逻辑说明show rebuild输出重建百分比和预计剩余时间。参数说明重建速度受盘速、RAID 级别、控制器负载影响RAID6 重建比 RAID5 慢大容量盘可能跑十几个小时。重建期间业务 IO 会变慢如果业务对延迟敏感可以调整重建速率storcli64 /c0 set rebuildrate3030 表示用 30% 的控制器资源做重建给业务留余量。4.4 重建完成后的验证动作重建到 100% 不代表万事大吉还要确认 VD 回到 Optl 且数据一致# 确认 VD 状态回到 Optimal storcli64 /c0/vall show # 确认所有 PD 都是 Onln storcli64 /c0/eall/sall show | grep -c Onln # 检查是否有 media error 或一致性错误 storcli64 /c0/v0 show all | grep -i -E error|inconsistent逻辑说明重建完成后 VD 状态应从 Degraded 回到 Optl所有成员盘应为 Onln。参数说明如果状态还是 Degraded可能是重建没真正完成或又掉了盘。有条件的话做一次一致性检查Consistency Check命令是storcli64 /c0/v0 start consistencycheck它会校验条带数据发现静默错误。5. 避坑与排查那些让重建失败的常见问题这一章全是踩过的坑每条按现象、原因、解决写。LSI RAID 的很多问题不是命令错而是对状态机和硬件边界理解不到位。5.1 新盘插上不重建状态一直是 UGood现象换上新盘后storcli64 /c0/eall/sall show看到新盘是 UGood但 VD 还是 Degraded重建进度为 0。原因新盘没有被自动纳入热备池或者固件策略是手动重建。解决先确认新盘容量不小于故障盘然后storcli64 /c0/e252/sX add hotsparedrive设为热备设完通常几秒内自动开始重建如果还不重建检查控制器是否开启了Auto Rebuild用storcli64 /c0 show看相关策略项。5.2 重建到一半又掉一块盘VD 直接 Offline现象RAID5 重建过程中第二块盘掉线VD 状态变成 Offline数据不可访问。原因RAID5 只容忍一块盘故障重建期间再掉一块就彻底失效或者重建压力把本就有隐患的盘逼死了。解决这种情况只能从备份恢复或者找专业数据恢复。预防手段是 RAID6 或 RAID10以及定期做 Patrol Read patrol read提前发现弱盘storcli64 /c0 start patrolread。血泪经验重建前先看其他盘有没有Predictive Failure标记有就先换掉再重建。5.3 重建速率拉满导致业务 IO 超时现象重建开始后业务侧大量 IO 超时数据库响应从毫秒级涨到秒级。原因默认重建速率可能占用大量控制器和磁盘带宽。解决重建前先设速率上限storcli64 /c0 set rebuildrate2020 表示 20%。重建完成后可以调回默认。注意这个值不是越低越好太低重建时间拉长风险窗口变大一般 20 到 40 之间比较平衡。5.4 foreign configuration 没处理建盘直接报错现象从别的机器拆过来的盘插上后建 VD 报foreign configuration found命令失败。原因盘上残留了旧阵列的元数据控制器认为这是外部配置。解决先storcli64 /c0/fall show看清楚是什么配置确认不需要就storcli64 /c0/fall delete清除需要就import导入。注意清除是不可逆的导入前务必确认数据归属。5.5 初始化没完成就挂载文件系统报错现象VD 建完立刻格式化挂载mkfs报 IO 错误或挂载后读写异常。原因VD 还在后台初始化部分扇区不可写。解决建完 VD 后用storcli64 /c0/v0 show确认 State 是 Optl 且初始化进度 100% 再交给 OS。快速初始化虽然几秒完成但后台可能还在跑稳妥做法是等Initialization相关字段显示完成。6. 进阶用 storcli 做自动化巡检和一致性校验手动敲命令适合救火但生产环境更需要的是提前发现隐患。这一章讲怎么把 storcli 用成巡检工具以及一致性校验这个容易被忽略的动作。6.1 用 JSON 输出做脚本化巡检storcli 的/j参数输出 JSON非常适合喂给监控系统。下面这个脚本片段检查所有 VD 是否 Optl、所有 PD 是否 Onln有异常就输出告警#!/bin/bash # 巡检 LSI RAID 状态异常时输出到标准错误 CTRL0 VD_JSON$(storcli64 /c$CTRL/vall show all J) PD_JSON$(storcli64 /c$CTRL/eall/sall show J) # 检查 VD 状态 echo $VD_JSON | python3 -c import sys, json data json.load(sys.stdin) for ctrl in data.get(Controllers, []): for vd in ctrl.get(Response Data, {}).get(VD List, []): state vd.get(State, ) if state ! Optl: print(fALERT: VD {vd.get(\DG/VD\)} state{state}, filesys.stderr) # 检查 PD 状态 echo $PD_JSON | python3 -c import sys, json data json.load(sys.stdin) for ctrl in data.get(Controllers, []): for pd in ctrl.get(Response Data, {}).get(PD List, []): state pd.get(State, ) if state not in (Onln, UGood, GHS, DHS): print(fALERT: PD {pd.get(\EID:Slt\)} state{state}, filesys.stderr) 逻辑说明脚本分别拉 VD 和 PD 的 JSON用 Python 解析后判断状态非正常状态输出到 stderr方便被监控系统捕获。参数说明J是 JSON 输出开关注意大小写有些版本是/j。这个脚本可以放进 cron 每 5 分钟跑一次配合告警通道就能提前发现掉盘。6.2 一致性校验和 Patrol Read 的区别这两个动作经常被混淆。一致性校验Consistency Check是主动校验 VD 内所有条带的冗余数据是否一致能发现静默数据损坏Patrol Read 是后台扫描所有盘的扇区提前发现弱扇区并触发重映射。两者互补建议都定期跑# 启动一致性校验 storcli64 /c0/v0 start consistencycheck # 查看校验进度 storcli64 /c0/v0 show consistencycheck # 启动 Patrol Read storcli64 /c0 start patrolread # 查看 Patrol Read 进度 storcli64 /c0 show patrolread逻辑说明一致性校验针对 VDPatrol Read 针对 PD。参数说明一致性校验会占用 IO 资源建议在业务低峰期跑Patrol Read 可以设成自动周期执行storcli64 /c0 set patrolreadauto。校验发现不一致时RAID 会用冗余数据修复但如果冗余也不可信就需要从备份恢复。6.3 固件和驱动版本别乱升最后说一个容易被忽视的点LSI 卡的固件、驱动、storcli 工具三者版本要匹配。我见过升级固件后老驱动不认新特性导致 VD 状态显示异常也见过 storcli 版本太新老卡命令不兼容。升级前先记录当前版本storcli64 /c0 show里的 FW Version 和 Driver Version查清楚目标版本的兼容矩阵生产环境先在测试机验证。升级固件有风险务必确认业务有备份、BBU 电量充足、不断电。这个习惯帮我躲过了好几次潜在的翻车。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →