PowerFlex: 과도한 데이터 역할 전환으로 인해 IO 레이턴시 및 오류가 발생함
Сводка: 이 문서에서는 과도한 데이터 역할 전환으로 인해 I/O 대기 시간 및 오류가 발생하는 방법에 대해 설명합니다.
Симптомы
특정 클러스터 상태 전환 시 MDM 역할 균형 조정 논리는 여러 콤(볼륨 데이터의 각 부분을 저장하는 SDS 노드를 추적하는 내부 데이터 구조)에 걸쳐 주/보조 역할 전환을 신속하게 생성할 수 있습니다. 각 역할 스위치는 SDC(Client-Side) 콤 맵을 무효화하고 I/O 재시도를 강제합니다. 동시에 충분한 수의 콤이 영향을 받으면 누적된 재시도 오버헤드로 인해 SDC 호스트에서 I/O 레이턴시가 급증하고 I/O 오류가 발생합니다. 호스트 환경에 따라 이로 인해 애플리케이션 I/O 시간 초과, VM이 읽기 전용 상태로 전환되거나 파일 시스템을 사용할 수 없게 될 수 있습니다.
이 동작은 여러 트리거 시나리오에서 관찰되었으며 단일 운영 절차로 제한되지 않습니다.
공통 지표
MDM_DATA_DEGRADED이벤트 이후 1-15+ 분 동안 지속되는 지속적인 I/O 대기 시간- SDC 호스트가 성능 저하 기간 동안 I/O 오류 및/또는 I/O 시간 초과를 보고함
- VMware(ESXi): VMFS 하트비트 시간 초과, SCSI 하드웨어 오류(
sense data: 0x4 0x0 0x0), VM이 읽기 전용 상태로 전환됨, 잠재적 HA 페일오버 - Linux: 시스템 로그의 I/O 오류(
/var/log/messages, dmesg), 애플리케이션에 I/O 시간 초과가 발생하거나 파일 시스템이 읽기 전용으로 다시 마운트될 수 있습니다
- VMware(ESXi): VMFS 하트비트 시간 초과, SCSI 하드웨어 오류(
- MDM 이벤트 로그에는 단일 SDS 손실에 대해 예상보다 오래 시스템이 성능 저하 상태로 표시됩니다.
- 시스템이 결국 수동 개입 없이 정상 상태로 자동 복구됨(보통)
시나리오 1: 비정상 SDS 손실(유지 보수 모드 없음)
발생할 수 있는 경우:
- 이는 드문 시나리오입니다. 비정상 SDS 손실 중에 빠르고 반복되는 역할 전환 이벤트가 발생하려면 다음과 같은 몇 가지 특정 조건이 동시에 존재해야 합니다.
-
- 대규모 환경 - 상당한 수의 SDS 노드 및 볼륨
- 대량 생산 I/O 로드 - SDS에 장애가 발생하는 순간 상당한 I/O 작업
- 재구축 워크로드가 처리 용량을 초과함 - 재구축이 필요한 메타데이터 행 수가 MDM 밸런서의 주기당 제한인 1,024개 행을 초과합니다.
각 재조정 주기는 최대 1,024개의 메타데이터 행을 처리할 수 있습니다. 더 많은 행을 다시 빌드해야 하는 경우 밸런서는 다음 계획을 생성하기 전에 현재 계획을 완료할 수 없습니다.
무슨 일이 일어날까요?
- SDS가 MDM에서 갑자기 분리됨(이벤트 SDS_DECOUPLED)
- SDS에 연결된 모든 SDC의 연결이 끊어지→ SDC 연결 해제 이벤트
- MDM은 클러스터를 DEGRADED(이벤트
MDM_DATA_DEGRADED) - 재구축할 행 수가 1,024개를 초과하므로 MDM 밸런서가 현재 재조정 계획을 완료할 수 없습니다
- 밸런서는 이전 계획이 실행되는 동안 새 계획을 시작하여 빠르고 반복되는 역할 전환 이벤트를 생성합니다
- 클라이언트 SDC에서 지속적인 I/O 장애(
IO_FAULT_NOT_PRI, SCSI sense 0x4)를 제공해야 합니다. 재시도를 모두 사용하면 호스트 OS가 I/O 오류, 시간 초과 또는 읽기 전용 파일 시스템을 보고합니다 - MDM 추적 증거:
재조정 워크로드가 1,024행 제한을 초과하면 MDM 추적에 초과된 임계값이 표시됩니다.
2026/03/28 22:43:53.246702 MED:7f1f984aedb0:balanceExec_HandleDegradedRows:00343: BALANCER: Storage Pool: 1193844800000000 - 1024 rows processed out of 1098 degraded rows. 0 allocation failures. 0 cumulative allocation failures.
이는 1,098개의 행을 다시 작성해야 하지만 현재 주기에서 1,024개만 처리할 수 있음을 나타냅니다. 나머지 행은 이전 계획이 완료되기 전에 새 재조정 계획을 트리거하여 피드백 루프를 시작합니다.
이벤트 체인:
Log Source Event / Pattern MDM events SDS_DECOUPLED — SDS formally declared dead MDM events MDM_DATA_DEGRADED — Cluster enters DEGRADED state SDS traces Flood of IO_FAULT_NOT_PRI — SDS received IO for a comb it is no longer primary for ESXi vmkernel SCSI sense data: 0x4 0x0 0x0 — Hardware error MDM events MULTIPLE_SDC_CONNECTIVITY_CHANGES — Mass SDC connectivity storm MDM events SDC_DISCONNECTED_FROM_SDS_IP — SDCs losing contact with the failed SDSMDM 이벤트 시퀀스의 예:
SDC_DISCONNECTED_FROM_SDS_IP SDC disconnected from SDS <name> SDS_DECOUPLED SDS <name> decoupled MDM_DATA_DEGRADED The system is now in DEGRADED state
시나리오 2: PMM 진입 중 SDS 전원 끄기
발생할 수 있는 경우:
이는 두 개의 동시 이벤트가 필요한 드문 시나리오입니다.
- SDS가 PMM(Protected Maintenance Mode)으로 전환되고 있습니다.
- PMM 전환이 완료되기 전에 SDS에 장애가 발생하거나 전원이 꺼짐
무슨 일이 일어날까요?
- MDM은 PMM entry 명령을 수신하고 성공한 것으로 기록합니다
- PMM 항목이 계속 진행 중인 동안 SDS가 예기치 않게 분리됩니다.
- MDM이 클러스터를 DEGRADED로 표시합니다
- 역할 밸런서가 PMM 시작 단계 전체에 걸쳐 지속적인 역할 전환 루프에 진입합니다
- 비 PMM 데이터 행은 전체 스토리지 풀에서 반복적으로 역할 전환됨
- 스톰은 SDS가 클러스터에 다시 연결하고 유지 보수 모드 전환을 완료할 때까지 지속됩니다
이벤트 체인:
Log Source Event / Pattern MDM events CLI_COMMAND_SUCCEEDED — enter_protected_maintenance_mode command succeeded MDM events SDS_DECOUPLED — SDS decoupled before maintenance mode started MDM events MDM_DATA_DEGRADED — Cluster enters DEGRADED state SDS traces Repeated role-switch operations across non-PMM rows
MDM 이벤트 시퀀스의 예:
CLI_COMMAND_SUCCEEDED Command enter_protected_maintenance_mode succeeded SDS_DECOUPLED SDS <name> decoupled MDM_DATA_DEGRADED The system is now in DEGRADED state
SDS가 다시 연결되고 PMM이 완료되면 다음을 수행합니다.
SDS_MAINTENANCE_MODE_STARTED SDS maintenance mode started MDM_DATA_NORMAL The system is now in NORMAL state
시나리오 3: IMM(Instant Maintenance Mode)의 SDS
발생할 수 있는 경우:
SDS가 IMM(Instant Maintenance Mode)으로 전환되거나 종료됩니다. 이 시나리오는 단일 SDS가 유지 보수 모드에 있고 시스템에서 특정 데이터에 대한 I/O를 처리해야 하는 SDS를 결정할 수 없는 경우에 발생합니다.
무슨 일이 일어날까요?
- 시스템이 동일한 데이터를 제공하는 SDS를 반복적으로 변경합니다.
- 이러한 지속적인 변경은 애플리케이션이 I/O 요청을 어디로 보낼지 알지 못한다는 것을 의미합니다
- I/O가 잘못된 SDS로 전송되어 재시도 및 지연 발생
- 애플리케이션에서 영향을 받는 데이터에 액세스하려고 시도하는 동안 레이턴시 또는 시간 초과가 발생함
영향:
- 고객에게 미치는 영향: SDS가 IMM에 있는 동안 애플리케이션에서 레이턴시 및 시간 초과 보고
- 시간: SDS가 IMM 상태인 동안 계속
- 복구: Automatic - SDS가 IMM에서 종료되면 해결됩니다.
이벤트 체인:
Log Source Event / Pattern SDS traces Repeated role-switch operations on the same data SDS traces Primary and secondary role switches on identical data
시나리오 4: SDS가 PMM(Protected Maintenance Mode)에서 종료
발생할 수 있는 경우:
SDS가 PMM(Protected Maintenance Mode)에서 나옵니다. 이 시나리오는 PMM을 종료할 때마다 발생하며 드문 경우는 아니지만 유지 보수 모드 작업이 지속된 기간에 따라 심각도가 달라집니다.
무슨 일이 일어날까요?
- SDS가 PMM을 종료하면 역할 밸런서가 반환되는 SDS를 포함하도록 데이터 세그먼트를 재할당해야 합니다
- 재조정 프로세스는 반환되는 SDS의 데이터뿐만 아니라 전체 스토리지 풀에 영향을 미칩니다
- 재통합 중에 여러 데이터 세그먼트에서 역할 전환이 발생합니다
- 역할 할당이 안정화됨에 따라 애플리케이션에 짧은 I/O 오류 또는 대기 시간이 발생할 수 있습니다
영향:
- 고객에게 미치는 영향: 짧은 유지 보수 기간(5초 미만)의 경우 영향이 거의 눈에 띄지 않습니다. 액티브 I/O를 사용한 유지 보수 연장의 경우 수천 개의 역할 전환이 발생하여 I/O가 지속적으로 중단될 수 있습니다
- 시간: 재조정 완료될 때까지 재통합 단계에서 계속
- 복구: 자동
이벤트 체인:
Log Source Event / Pattern MDM events Role-switch operations across the storage pool during exit SDS traces Repeated role-switch operations during reintegration
MDM 이벤트 시퀀스의 예:
SDS_MAINTENANCE_MODE_EXIT_STARTED SDS maintenance mode exit started SDS_MAINTENANCE_MODE_EXIT_COMPLETED SDS maintenance mode exit completed
로그 출력:
MDM 이벤트 로그: MDM 이벤트 로그에는 클러스터 수준 시퀀스가 표시됩니다. 주요 지표는 유지 보수 모드 종료 중 역할 전환 작업입니다.
SDS 추적 로그: SDS 노드에서 추적 로그에 재통합 중에 역할 전환 작업이 반복적으로 표시됩니다.
raidComb_SetPriTgtGenNum: combId <id> combGenNum: cur <gen> new <gen> contCmd_SetCombState: CombId <id> devId <id> PRI->SEC Switch roles contCmd_SetCombState: CombId <id> devId <id> SEC->PRI Switch roles
짧은 기간(초 내에 수천 개 이상)에 많은 양의 스위치 역할 항목이 이 문제의 SDS 측 지표입니다.
SDC/호스트 로그: 콤, 타겟 SDS 및 장애 코드를 표시하는 VMware(ESXi) SDC I/O 재시도:
vmkernel log PowerFlex mapVolIO_Do_CK:1496 :Mit: <addr>. Retrying IO Type WRITE. Failed comb: <id>. SDS_ID <id>. Comb Gen <gen>. Head Gen <gen>. PowerFlex mapVolIO_Do_CK:1510 :Mit: <addr>. Vol ID <id>. Last fault Status IO_FAULT_NOT_PRI(12). Retry count (1)
재시도가 소진되면 SCSI 오류가 반환됩니다.
sense data: 0x4 0x0 0x0 -- SCSI Hardware Error
진단 팁: 문제가 있는 노드뿐만 아니라 여러 SDS 노드에서 I/O 오류가 표시되는 경우 정상적인 성능 저하 상태 동작이 아닌 역할 스위치 스톰을 나타낼 수 있습니다. I/O 오류가 단일 SDS로 격리된 경우 이는 예상된 성능 저하 상태 동작입니다.
시나리오 5: 유지 보수 모드 위상 전환
발생할 수 있는 경우:
전환 중에 SDS가 유지 보수 모드(IMM 또는 PMM)로 전환되거나 종료되는 순간 상태가 정상에서 MM으로 또는 MM에서 다시 정상으로 변경됩니다.
무슨 일이 일어날까요?
- 역할 밸런서는 변경 사항을 수용하기 위해 데이터 책임을 재분배합니다
- 시스템이 새로운 배열에 정착함에 따라 역할 전환이 잠깐 발생합니다
- 전환 중에 애플리케이션에서 짧은 레이턴시 급증을 경험할 수 있습니다.
영향:
- 고객에게 미치는 영향: 짧은 레이턴시 급증이 몇 초에서 몇 분 동안 지속됩니다. 일반적으로 애플리케이션 시간 초과 임계값보다 낮음
- 시간: 몇 초에서 몇 분 정도 지속되다가 가라앉습니다.
- 복구: 자동
이벤트 체인:
Log Source Event / Pattern SDS traces Brief role-switch operations during phase transitions
Причина
MDM 역할 균형 조정 논리의 소프트웨어 결함으로 인해 SDS 손실 또는 유지 보수 모드 작업으로 인해 클러스터 상태가 전환될 때 피드백 루프가 발생합니다.
특정 조건에서 MDM은 영향을 받는 콤에 I/O 서비스를 담당하는 SDS 노드를 반복적으로 재할당합니다. 재할당할 때마다 데이터가 있는 위치에 대한 SDC의 캐싱된 뷰가 무효화되어 I/O를 강제로 재시도합니다. 많은 콤이 동시에 영향을 받는 경우 재할당 볼륨이 SDC의 업데이트 기능을 초과하므로 여러 호스트에서 I/O 오류가 지속적으로 발생합니다.
폭풍은 일반적으로 자체 제한됩니다. 클러스터가 안정화되면 해결되지만 기간은 보호 도메인의 크기와 이벤트 발생 당시의 I/O 로드에 따라 달라집니다.
Разрешение
이 문제는 PowerFlex Core 버전 4.5.6에서 해결되었습니다. 사용 가능해지면 이 버전으로 업그레이드하십시오. 릴리스 일정 정보는 Dell 지원 에 문의하십시오.
계획된 유지 보수 작업의 경우:
- MDM 로그가 기록될 때까지 SDS의 전원을 껐다 켜거나 재부팅하지 마십시오.
SDS_MAINTENANCE_MODE_STARTED. 물리적 유지 보수를 진행하기 전에 SDS가 완전히 유지 보수 모드로 전환되었는지 확인합니다. - 유지 보수 모드를 시작하거나 종료할 때 레이턴시 스파이크를 모니터링합니다.
예상치 못한 SDS 운영 중단의 경우:
- 스톰은 자체 제한되며 일반적으로 클러스터가 안정화됨에 따라 몇 분 내에 해결됩니다. 문제가 관찰되면 다음을 수집합니다.
getinfo이벤트 후 가능한 한 빨리 보호 도메인의 모든 SDS 노드와 모든 관리자 MDM에서 로그를 기록하고 Dell 지원에 문의하십시오.
드물지만 문제가 자체적으로 해결되지 않는 경우 재구축을 일시적으로 비활성화했다가 다시 활성화하면 MDM이 안정화될 수 있습니다.
scli --set_rebuild_mode --protection_domain_name <pd_name> --storage_pool_name <sp_name> --disable_rebuild
# 5-10초 동안 기다린 다음 다시 빌드를 활성화합니다.
scli --set_rebuild_mode --protection_domain_name <pd_name> --storage_pool_name <sp_name> --enable_rebuild
scli --query_all 명령 출력.