服务器还在正常运行,RAID却可能已经降级?硬盘冗余状态这样查

服务器还能正常登录、网站也没有报错,并不代表 RAID 阵列一定正常。
很多 RAID 1、RAID 5 或 RAID 10 阵列在损坏一块硬盘后,系统仍然可以继续运行。真正危险的是,管理员没有及时发现阵列已经进入“降级”状态,直到第二块硬盘出现问题,业务才突然中断,甚至造成数据无法恢复。
因此,检查服务器硬盘冗余不能只看磁盘是否挂载、容量是否正常,还要确认阵列状态、成员盘状态和重建进度。
先看一个实际存储服务器案例
以一台用于企业备份和文件归档的香港存储服务器为例,配置如下:
-
CPU:Intel Xeon E5-2695 V4,18 核 36 线程
-
内存:64GB DDR4
-
硬盘:4×14TB 企业级 7.2K 机械硬盘
-
阵列卡:Dell PERC H730
-
带宽:25Mbps 直连 CN2
-
IP 与防护:5 个 IP、5G DDoS 防护
这类服务器通常会根据业务需求配置 RAID 5 或 RAID 10。
如果用于网站备份、图片归档和下载资源存储,可以考虑 RAID 5,4 块 14TB 硬盘的标称可用容量约为 42TB;如果用于企业资料库、文件同步和频繁读写业务,则更适合 RAID 10,标称可用容量约为 28TB。
无论选择哪一种 RAID,都不能只在服务器开通时检查一次。硬盘可能在运行数月后出现坏扇区、掉线、预测故障或接口异常,因此需要定期检查阵列状态。
RAID 正常、降级和故障分别是什么意思
在不同阵列卡和管理工具中,状态名称可能略有差异,但基本可以分成以下几类。
Optimal、Online、Ready:通常表示正常
如果虚拟磁盘显示为:
Optimal
成员硬盘显示为:
Online
通常说明 RAID 阵列结构完整,所有成员盘均正常参与工作。
不过,“Optimal”只代表当前阵列没有掉盘,并不等于所有硬盘完全健康。还应继续检查硬盘是否出现介质错误、预测故障和异常延迟。
Degraded:阵列已经降级
如果状态显示:
Degraded
说明阵列中至少有一块硬盘已经掉线、损坏或被移出,但 RAID 依靠剩余硬盘仍然能够提供数据。
例如:
-
RAID 1 损坏一块盘后,另一块镜像盘仍可工作;
-
RAID 5 损坏一块盘后,可通过其余硬盘和校验数据继续读取;
-
RAID 10 某个镜像组损坏一块盘后,阵列通常仍可运行。
这时服务器可能没有明显异常,但硬盘冗余已经减少。尤其是 RAID 5,如果重建完成前再损坏一块盘,整个阵列可能直接失效。
Rebuild:正在重建
更换故障盘后,阵列一般会进入:
Rebuild
这表示阵列正在把数据恢复到新硬盘中。
重建期间不要把“服务器还能用”理解为已经恢复正常。此时剩余硬盘负载较高,业务读写也可能变慢,应持续监控重建百分比、磁盘错误和系统 I/O。
Failed、Offline:阵列或硬盘已经离线
如果虚拟磁盘显示 Failed,或者多块成员盘显示 Offline、Missing,说明情况已经比较严重。
此时不要随意执行初始化、清除阵列配置、强制上线硬盘或重新创建 RAID,否则可能覆盖原有阵列信息,增加数据恢复难度。
第一步:先确认服务器使用哪种 RAID
服务器中的 RAID 大致分为两类。
一种是硬件 RAID,由 H730、H740、MegaRAID 等独立阵列卡负责管理。操作系统通常只能看到一个逻辑磁盘,无法直接看到每块物理硬盘。
另一种是软件 RAID,例如 Linux 的 mdadm。操作系统可以直接管理阵列成员盘。
Linux 下可以先检查 PCI 设备:
lspci | grep -Ei 'raid|sas|scsi'
如果看到类似 PERC、MegaRAID、Smart Array 等信息,通常说明服务器安装了硬件阵列卡。
还可以检查软件 RAID:
cat /proc/mdstat
如果出现 /dev/md0、/dev/md1 等设备,通常表示系统使用了 Linux 软件 RAID。
H730 等硬件 RAID 怎么检查
以案例中的 Dell PERC H730 为例,可以使用 PercCLI 或 StorCLI 检查。
先查看服务器中的控制器:
sudo perccli show
查看 0 号阵列卡整体状态:
sudo perccli /c0 show
重点关注:
-
Controller Status
-
Virtual Drives
-
Physical Drives
-
Cache 状态
-
电池或缓存保护模块状态
查看所有虚拟磁盘:
sudo perccli /c0/vall show
如果状态正常,通常会看到:
State = Optl
其中 Optl 是 Optimal 的缩写。
如果看到:
State = Dgrd
则表示虚拟磁盘已经降级。
继续查看全部物理硬盘:
sudo perccli /c0/eall/sall show
常见硬盘状态包括:
Onln
表示硬盘在线并参与阵列。
Rbld
表示硬盘正在重建。
UGood
表示硬盘状态良好,但当前没有加入阵列。
Offln
表示硬盘已经离线。
Msng
表示原有成员盘缺失。
某些服务器安装的是 StorCLI,命令结构基本类似:
sudo storcli /c0 show
sudo storcli /c0/vall show
sudo storcli /c0/eall/sall show
控制器编号不一定都是 /c0,机箱和槽位编号也会因服务器型号而不同,应以实际检测结果为准。
Linux 软件 RAID 怎么检查
Linux 软件 RAID 最直接的检查方式是:
cat /proc/mdstat
正常的四盘阵列可能显示:
md0 : active raid10 sda1[0] sdb1[1] sdc1[2] sdd1[3]
27343718400 blocks
[4/4] [UUUU]
这里最重要的是:
[4/4] [UUUU]
第一个数字表示应有 4 块盘,目前也有 4 块盘在线;每个 U 代表一块正常成员盘。
如果显示:
[4/3] [UU_U]
说明阵列需要 4 块盘,但当前只有 3 块正常,中间缺少一块,阵列已经降级。
还可以查看详细状态:
sudo mdadm --detail /dev/md0
正常时常见结果为:
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
降级时可能显示:
State : clean, degraded
Active Devices : 3
Failed Devices : 1
如果阵列正在重建,/proc/mdstat 中还会显示进度:
recovery = 38.6%
可以持续观察:
watch -n 5 cat /proc/mdstat
Windows 服务器怎么检查
如果 Windows 使用的是存储空间,可以打开 PowerShell 执行:
Get-VirtualDisk |
Select-Object FriendlyName, ResiliencySettingName, HealthStatus, OperationalStatus
继续查看物理硬盘:
Get-PhysicalDisk |
Select-Object FriendlyName, SerialNumber, HealthStatus, OperationalStatus, Size
正常情况下,健康状态一般为:
Healthy
如果出现:
Warning
Degraded
Unhealthy
Lost Communication
则需要进一步排查。
如果服务器使用 H730 等硬件 RAID,仅查看 Windows“磁盘管理”通常是不够的。磁盘管理看到的是阵列卡提供的逻辑磁盘,即使其中一块物理盘已经损坏,逻辑盘仍可能显示正常。
这时仍需使用 PercCLI、StorCLI、iDRAC 或服务器厂商提供的阵列管理工具。
阵列正常,还要检查哪些指标
RAID 显示 Optimal,只能说明阵列当前没有明确掉盘。为了提前发现硬盘风险,还应检查以下信息。
预测故障
硬盘可能仍然在线,但阵列卡已经记录:
Predictive Failure
这通常意味着硬盘出现了异常指标,尚未完全损坏,但继续使用的风险较高。
Media Error
Media Error 通常与盘面坏扇区、读取失败等介质问题有关。
少量错误也不能完全忽视,尤其是错误数量持续增加时,应尽快备份并考虑更换硬盘。
Other Error
Other Error 可能与接口、背板、电缆、电源或通信异常有关。
如果同一槽位频繁掉盘,更换硬盘后问题仍然出现,就不能只怀疑硬盘,还要检查背板和阵列卡连接。
阵列卡缓存保护
硬件 RAID 通常依赖写缓存提升性能。如果阵列卡电池、电容或缓存保护模块异常,控制器可能关闭写回缓存,导致写入速度明显下降。
因此除了检查硬盘,还应关注:
-
CacheVault 或 BBU 状态;
-
Write Back 是否降为 Write Through;
-
控制器温度;
-
缓存错误;
-
巡检任务是否正常。
发现 RAID 降级后应该怎么处理
发现 Degraded 后,第一步不是立即重启,而是先确认故障范围。
建议按以下顺序处理。
1. 立即确认重要数据是否有备份
如果重要数据只有阵列中的一份,应先把最关键的数据同步到其他服务器或存储位置。
降级阵列还能读取,不代表可以继续长期运行。
2. 确认故障盘的槽位和序列号
不要只根据 /dev/sdb、Disk 1 之类的系统编号拔盘,因为系统磁盘顺序和物理槽位未必完全对应。
应通过阵列管理工具确认:
-
Enclosure 编号;
-
Slot 编号;
-
硬盘序列号;
-
硬盘容量;
-
当前状态。
必要时可以使用阵列卡的定位灯功能,让目标硬盘闪灯后再进行更换。
3. 不要随意清除 Foreign 配置
更换硬盘、阵列卡重启或连接异常后,某些磁盘可能显示为:
Foreign
Foreign 表示硬盘中存在阵列配置信息,并不一定代表硬盘损坏。
在没有确认阵列结构前,不要直接执行 Clear Foreign、Import Foreign 或初始化操作。错误处理可能导致原阵列无法识别。
4. 更换容量不小于原盘的硬盘
替换盘的实际可用容量不能小于原硬盘。
即使两块硬盘都标称 14TB,不同型号的扇区数量也可能略有差异。用于 RAID 替换时,最好选择同接口、同规格、同容量或更大容量的企业级硬盘。
5. 观察重建过程
更换完成后,要确认阵列是否自动进入重建。
硬件 RAID 可以执行:
sudo perccli /c0/eall/sall show rebuild
软件 RAID 可以执行:
watch -n 5 cat /proc/mdstat
重建期间重点关注:
-
重建百分比是否持续增加;
-
是否出现新的硬盘错误;
-
I/O wait 是否异常升高;
-
业务是否出现超时;
-
剩余成员盘是否出现预测故障。
6. 重建完成后再次核验
重建到 100% 后,还应确认:
-
虚拟磁盘恢复为 Optimal;
-
所有成员盘恢复为 Online;
-
Failed Devices 为 0;
-
没有新的 Media Error;
-
文件系统可以正常读写;
-
关键文件可以校验和解压;
-
备份任务恢复正常。
哪些情况不适合直接重建
如果只是单块硬盘明确损坏,其他成员盘状态良好,通常可以正常更换并重建。
但出现以下情况时,不建议自行反复操作:
-
RAID 5 同时有两块盘离线;
-
RAID 10 同一镜像组两块盘离线;
-
多块硬盘同时出现预测故障;
-
阵列显示 Failed 或 Punctured;
-
多块盘出现 Foreign;
-
阵列卡无法读取原配置;
-
重建过程中再次掉盘;
-
文件系统已经无法挂载;
-
服务器中没有可用备份。
这时盲目强制上线、反复重启或重新创建阵列,可能进一步破坏数据结构。更稳妥的做法是保留现场状态,记录阵列卡信息、硬盘槽位和错误日志,再由机房技术人员或数据恢复人员处理。
RAID 不是备份,正常状态也不能掉以轻心
RAID 的主要作用,是在部分硬盘故障时维持服务器可用性。
它不能解决:
-
文件被人为误删;
-
程序错误覆盖数据;
-
勒索病毒加密;
-
文件系统损坏;
-
阵列卡故障;
-
多块硬盘同时损坏;
-
机房级故障;
-
错误数据同步到所有副本。
比较稳妥的存储方案应该包含三部分:
本机 RAID + 多版本备份 + 异地副本
例如,案例中的 4×14TB 香港存储服务器可以负责本地冗余和文件归档,同时再把关键数据库、配置文件和最近版本备份同步到另一台服务器或其他地区节点。
这样即使阵列重建失败,也不至于把全部恢复希望寄托在原硬盘上。
总结
判断 RAID 阵列是否正常,不能只看服务器是否开机、目录是否能访问。
硬件 RAID 应通过 PercCLI、StorCLI、iDRAC 等工具检查虚拟磁盘和物理硬盘;Linux 软件 RAID 应检查 /proc/mdstat 和 mdadm --detail;Windows 存储空间则可以通过 PowerShell 查看健康状态。
正常阵列一般显示 Optimal、Online 或 Healthy;出现 Degraded 说明冗余已经下降;出现 Rebuild 说明仍在恢复;出现 Failed、Offline 或多盘异常,则需要谨慎处理。
对于存储服务器来说,真正可靠的方案不是“配置了 RAID 就不用管”,而是定期检查阵列状态、监控硬盘错误、及时处理降级,并始终保留独立备份。