PowerFlex 在 SDS 服务器冷启动后修复了许多读取错误
Summary: 在意外的 SDS 服务器重启后,MDM 报告许多已修复的读取错误。 使用中粒度 (MG) 存储池并启用持久校验和功能的 PowerFlex 系统。 大于 2 TB 的设备。 单个 SDS 服务器意外遇到电源重启(冷启动)。 两个或更多 SDS 服务器意外遇到电源重启(冷引导)。 我们确认此问题是由大于 2 TB 的设备的持久校验和 (PC) 功能引起的,尤其是在与 SDS 服务器的冷启动结合使用时。 ...
Symptoms
情况说明
使用中等粒度存储池并启用持久校验和功能的 PowerFlex 系统。
大于 2 TB 的设备。
单个 SDS 服务器意外遇到电源重启(冷启动)。
两个或更多 SDS 服务器意外遇到电源重启(冷引导)。
症状
MDM 事件日志报告许多已修复的读取错误:
2023-12-05 12:01:42.634000:0031658:SCANNER_NEW_FIXED_ERRORS__INFO INFO SDS <name> encountered one or more read errors on device /dev/disk/by-id/scsi-<id>, and they were all fixed (Found: 29443, Fixed: 29443) ...
SDS 跟踪日志显示校验和不匹配:
2023/12/05 12:01:39.643280 7ff09dd3ddb0:mosT10Dif_VerifyContT10DIFBuffer:00381: (T10DIF) DIF Verification Failed: blk=0, blkSize=8, pData=0x7fedddbff000, pDif=0x7ff09dd38820, computed_guard=b5c2, DIF_guard=58e1, difGranularity=8 2023/12/05 12:01:39.643288 7ff09dd3ddb0:mgPhyDevPersChksm_IO_ReadValidate:03647: data Validation (state: PROTECTED) failed, devId 0xddd77b550046000e, combId 4716801282c6, combOffsetInLbs 16609280, dataOffsetInLbs 4306157568, dataSizeInLbs 2048, chksmRelativeOffsetBytes 1075099648, chksmSizeBytes 512, rc IO_ERR_PERS_CHECKSUM_MISMATCH (Pers. Checksum) 2023/12/05 12:01:39.643298 7ff09dd3ddb0:mgStorageRegion_ReadSync:03646: Reading tooth data failed: IO_ERR_PERS_CHECKSUM_MISMATCH. combId:4716801282c6,vTree:0xda6ddd6400000022,offsetVol:0x374ba9000,offsetInComb:16609280,sizeInLbs:2048,phyToothIdx:2101592,srcToothIdx:inv,dstToothIdx:inv New:(0,0) Requested:(37,1) volId:0 2023/12/05 12:01:39.643372 7ff09dd3ddb0:mgPhyDev_IncreaseInaccessibleCapacity:06587: PDE - devId ddd77b550046000e toothIndex 2101592 Increased inaccessible capacity to 1 2023/12/05 12:01:39.643383 7ff09dd3ddb0:raidComb_ReportCorruptionIfShould:19441: PDE - Comb 4716801282c6 Reported CORRUPT integrity result SUCCESS combId:4716801282c6,vTree:0xda6ddd6400000022,offsetVol:0x374ba9000,offsetInComb:16609280,sizeInLbs:2048,phyToothIdx:2101592,srcToothIdx:inv,dstToothIdx:inv New:(0,0) Requested:(37,1) volId:0 2023/12/05 12:01:39.643390 7ff09dd3ddb0:ioh_NewRequest:10209: Check for scan error on comb 4716801282c6 - Done rc is IO_ERR_PERS_CHECKSUM_MISMATCH (Lba 16609280 2048) (0 ms) 2023/12/05 12:01:39.647175 7ff098be4db0:storageRegion_PostIntegrityCorrection:04647: PDE - Clearing corruption in comb 4716801282c6 offsetInComb 16609280 extentSize 2048 after raidComb_WriteCombLocal combId:4716801282c6,vTree:0xda6ddd6400000022,offsetVol:0x374ba9000,offsetInComb:16609280,sizeInLbs:2048,phyToothIdx:2101592,srcToothIdx:inv,dstToothIdx:inv New:(0,0) Requested:(37,1) volId:0 2023/12/05 12:01:39.647259 7ff098be4db0:mgPhyDev_DecreaseInaccessibleCapacity:06604: PDE - devId ddd77b550046000e toothIndex 2101592 Decreased inaccessible capacity to 0 2023/12/05 12:01:39.647350 7ff098be4db0:ioh_NewRequest:09688: comb:4716801282c6,vTree:0x0,offsetVol:0xffffffffffffffff,offsetTooth:0x0, Succeeded to fix comb 4716801282c6, offset 16609280, by its primary
如果多个 SDS 遇到冷启动,则可能会观察到容量无法访问。这可以从query_all中看出:
Number of devices with inaccessible capacity: 367
影响:
MDM 警报指示镜像拷贝已纠正的已修复读取错误。
MDM 事件日志充满了有关已修复读取错误的事件。
Cause
冷启动到 SDS 服务器后,存在一个软件代码问题,该问题会阻止在大于 2 TB 的设备上完全重建持久校验和。后台扫描程序 (BGS) 功能可检测由于缺少校验和而导致的数据主副本和辅助副本之间的差异,并将其标记为已修复读取错误。请务必注意,不存在数据完整性或丢失的风险。BGS 函数通过纠正校验和来自动纠正已识别的差异。因此,观察到的已修复读取错误是此过程的副产品,可确保数据完整性保持不变。
Resolution
可以安全地忽略这些事件和警报。BGS 通过所有设备后,事件和警报最终会消失。
如果 MDM 警报和事件有问题,则可以从系统中删除遇到冷启动的 SDS,然后重新添加。
如果多个 SDS 遇到冷启动,并且看到无法访问的容量,则需要暂时禁用持久校验和。
要禁用持久校验和功能,需要先禁用 BGS:
1) 连接到主 MDM 服务器。
2) 禁用 BGS:
scli --disable_background_device_scanner --protection_domain_name <pd> --storage_pool_name <sp>
3) 禁用持久校验和:
scli --disable_persistent_checksum --protection_domain_name <pd> --storage_pool_name <sp> |
无法进入的区域应停止增加并开始减少。This may take some time.有时,为每个受影响的设备执行 SCLI 命令test_inaccessible_capoacity可能有助于加快此过程。
4) 如果无法访问的区域未从上述作中减少,请将标记为 PDE 的 SDS 置于 IMM 并重新启动 SDS 服务。
所有无法访问的容量都用完后,启用持久校验和和 BGS。
1) 启用持久校验和:
scli --enable_persistent_checksum --protection_domain_name <pd> --storage_pool_name <sp>
这可能需要很长时间,因为必须重建所有数据的所有校验和。可以使用 SCLI query_all 命令跟踪此作的进度。计算并保护持久校验和后,只有这样才能启用 BGS。
2) 启用 BGS:
scli --enable_background_device_scanner --protection_domain_name <pd> --storage_pool_name <sp>
Additional Information
受影响的版本
PowerFlex 3.xPowerFlex
4.x
已修复问题的版本
PowerFlex 3.6.3PowerFlex
4.5.2