PowerFlex 3.X: durante l'NDU, un SDS si arresta in modo anomalo durante l'esecuzione della funzione mgStorageRegion_CopyFromBuffer
Summary: L SDS si arresta in modo anomalo sulla funzione mgStorageRegion_CopyFromBuffer
Symptoms
- Aggiornamento da 3.0 a 3.6
- SDS che esce dalla modalità di manutenzione istantanea (IMM)
- Il checksum in esecuzione è abilitato.
L SDS si arresta in modo anomalo con il seguente errore irreversibile:
2022/12/20 10:22:18.543129 Panic in file /data/build/workspace/ScaleIO-Common-Job/src/tgt/storage/mg_impl/mg_storage_region.c, line 4188, function mgStorageRegion_CopyFromBuffer, PID 13108.Panic Expression !(bufferSizeInBytes != ((sizeInLbs) * (512))) PANIC_ID_tgt_1517847817759. /opt/emc/scaleio/sds/bin/sds-3.6.400.107(mosDbg_PanicPrepare+0x13a) [0x93ab8a] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(mgStorageRegion_CopyFromBuffer+0x1a7) [0x810477] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(mgStorageRegion_CopyFromCachedBuffer+0x33) [0x810873] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(storageRegion_CopyFromCachedBuffer+0xde) [0x4d3f3e] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(mgStorageRegion_ReadFromSyncBuf+0x45) [0x4d4a85] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(raidComb_ReadFromRemoteUntilEntireRegionIsAcquired+0x451) [0x74e021] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(raidComb_ReadVolumeFromRemote+0x3ae) [0x74e8ee] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(raidReverseRebuild_LoopAndCopy+0x140f) [0x75518f] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(raidReverseRebuild_Start+0xb56) [0x7583c6] /opt/emc/scaleio/sds/bin/sds-3.6.400.107(raidSyncPool_StartJob+0x375) [0x5e3145]
La funzione Inflight Checksum è abilitata sui pool di storage:
Storage Pool durpsdsc7p8pool1 (Id: 469b0f6800000007) has 7 volumes and 236.9 TB (242550 GB) free net capacity. 2.5 PB (2524 TB) volume allocation limit. ... Inflight Checksum: Enabled ...
Impatto
SDS si arresta in modo anomalo e non è in grado di uscire dall'IMM. Se durante un upgrade, l'upgrade non sarà in grado di continuare.
Cause
Resolution
Disabilitare il checksum in esecuzione sul pool di storage a cui contribuisce l SDS:
1) Eseguire una query su tutti gli SDS per ottenere il nome/ID SDS:
[root@nestedsvm2 ~]# scli --query_all_sds Query-all-SDS returned 3 SDS nodes. Protection Domain 8eeacbf900000000 Name: pd1 SDS ID: ab471ceb00000002 Name: svm103 State: Connected, Joined IP: 15.15.15.103 Port: 7072 Version: 3.6.500 SDS ID: ab471cea00000001 Name: svm102 State: Connected, Joined IP: 15.15.15.102 Port: 7072 Version: 3.6.500 SDS ID: ab471ce800000000 Name: svm101 State: Connected, Joined IP: 15.15.15.101 Port: 7072 Version: 3.6.500
2) Interrogare l SDS per nome/ID e cercare "Storage Pool: ":
Nota: il/i pool/i di storage a cui apporta i dispositivi; in questo caso, ce n'è solo uno, ovvero il nome del pool di storage "sp1".
[root@nestedsvm2 ~]# scli --query_sds --sds_id ab471ceb00000002 | grep -i 'storage pool:'
1: Storage Pool: sp1 inflight requests factor: 115, inflight bandwidth factor 115
Storage Pool: sp1, Capacity: 198 GB, State: Normal
Storage Pool: sp1, Capacity: 98 GB, State: Normal
Storage Pool: sp1, Capacity: 98 GB, State: Normal
3) Eseguire una query sul pool di storage e cercare "Inflight Checksum: ":
[root@nestedsvm2 ~]# scli --query_storage_pool --storage_pool_name sp1 --protection_domain_name pd1 | grep -i 'Inflight checksum'
Inflight Checksum: Enabled
3.a) Per disabilitare il checksum in esecuzione, è possibile farlo usando scli o nel server di presentazione. Per disabilitarlo utilizzando scli, eseguire il comando riportato di seguito:
[root@nestedsvm2 ~]# scli --set_checksum_mode --protection_domain_name pd1 --storage_pool_name sp1 --disable_inflight_checksum Checksum mode modified successfully
3.b) Nel server di presentazione, accedere a Storage Pools > , selezionare Storage Pool > ModifyGeneral >> , deselezionare "Enable Inflight Checksum" > Apply.
Versioni interessate
PowerFlex 3.5.x
PowerFlex 3.6.x