IBM DS / MD 存储 Piece Failed 处理步骤
1. 什么是 Piece?
MD 存储的磁盘组里创建多个虚拟磁盘,虚拟磁盘在每个硬盘上占用的区块是相同的(是相同的 Offset 和 Length),我们把每个硬盘上的区块称为一个 Piece。
2. 查看日志 StorageArrayprofile.txt 里 MD 存储硬盘所有的状态
一个硬盘根据不同的配置,可以包含多个 Piece。一个物理硬盘的状态是 Optimal,但里面所有的 Piece 并不一定是 Optimal,需要通过 stateCapturedata.txt 日志文件确认。
3. 如何处理 MD storage 多个 Piece 失败的问题(以具体实例说明)
故障现象:一个 MD 的某个 VD 状态是 fail,其他 VD 都正常,所有的硬盘状态都是 OPTIMAL。
主要处理步骤:
| 操作 | 命令 |
|---|---|
| MDSM 取消热备 | |
| 查看 failed piece SSID | vdmShowRAIDVolList |
| 查看 piece failed 时间和 piece# | vdmShowRVOosPieces SSID |
| 按时间顺序上线 piece | vdmRevivePiece <ssid>, <piece> |
| 重启对方控制器 | altCtlReset 2 |
查看 failed piece 的 SSID
通过 statecapturedata.txt 日志文件,查找关键字“piece”,可以看到 VD5 有几个 Piece failed。
远程 telnet / 串口,输入命令 vdmShowRAIDVolList,或在 statecapturedata.txt 里查找这个命令,就可以看到 SSID 的信息如下:
Total RAIDVolumes: 16
Curr Prim
RVAddr Ssid State Pcs Owner Owner VG# PI ExclOp
===========================================================
0x04278878 000000 RV_OPTIMAL 22 This Alt 1 0 NONE
0x0427d9d8 000001 RV_FAILED 22 Alt Alt 1 0 MEDIA SCAN
0x0427ebb8 000002 RV_FAILED 22 Alt Alt 1 0 NONE
0x0427e2c8 000003 RV_FAILED 22 This This 1 0 NONE
0x042bfbd0 000004 RV_OPTIMAL 22 This This 1 0 NONE
0x042c0950 000005 RV_DEGRADED 22 Alt Alt 1 0 NONE
0x042d3fa0 000006 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x04349a68 000007 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x0434c138 000008 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x0434e808 000009 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x042d4890 000010 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x0434a358 000011 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x0434ca28 000012 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x04376078 000013 RV_FAILED 22 Alt Alt 1 0 NONE
0x04376968 000014 RV_OPTIMAL 22 Alt Alt 1 0 NONE
0x04377258 000015 RV_FAILED 22 Alt Alt 1 0 NONE查看 Piece 掉线顺序
通过 Majorevent LOG 工具,或者用串口 / Telnet 的命令 vdmShowRVOosPieces <ssid> 查看 Piece 掉线顺序。


按时间顺序上线 piece
确认好硬盘掉线顺序、SSID 号和 Piece 后,就可以根据命令 vdmRevivePiece <ssid>, <piece> 强制上线 piece。把所有 failed 的 piece 上线,留下最后一个(最早掉线的)就可以了。
如何查看 <piece> 号是多少:命令 vdmShowRVOosPieces <ssid> 可以看到 0rd:0x000X,这个“X”是 16 进制。

参考下表把这个 16 进制的 X 转换为 10 进制 N,N-1 才是我们要输的 <piece> 号。
| 16 进制 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a |
|---|---|---|---|---|---|---|---|---|---|---|
| 10 进制 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 16 进制 | b | c | d | e | f | 10 | 11 | 12 | 13 | 14 |
| 10 进制 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
所以上图的 0rd:0x0014 即 piece 19,上线命令就是 vdmRevivePiece 3,19。

重启对方控制器
altCtlReset 2
RAID 变成 degrade,让用户去确认数据是否可以正常(备份数据等)。
正常情况下,控制器重启后,另一个 FAILED 的 piece 会自动做一个 rebuild,等 rebuild 好以后,把热备盘配置回去。