PowerFlex 3.x: a migração do vTree pode causar pane ou travamento do SDS
요약: Durante a migração do vTree, os nós SDS que executam o PowerFlex 3.6.7 podem entrar em pane, resultando em um evento de indisponibilidade de dados (DU). Em versões anteriores do PowerFlex, o processo de migração pode ficar travado indefinidamente e não ser concluído. ...
증상
No PowerFlex versão 3.6.7, durante uma migração agendada do vTree, vários SDSs entram em pane, fazendo com que o sistema entre em um estado de indisponibilidade de dados.
Como resultado dos atrasos de migração, o consumo de capacidade do pool de armazenamento (SP) aumenta rapidamente e pode atingir a utilização total em um curto período.
Eventos do MDM:
2026-06-30 07:27:19.340 SDS_DECOUPLED ERROR SDS: SDS11 (id: 64cb920800000006) decoupled. 2026-06-30 07:27:19.465 MDM_DATA_DEGRADED ERROR The system is now in DEGRADED state .... 2026-06-30 07:32:20.638 SDS_DECOUPLED ERROR SDS: SDS9 (id: 64cb920b00000009) decoupled. 2026-06-30 07:32:20.638 SDS_DECOUPLED ERROR SDS: SDS12 (id: 64cb920a00000008) decoupled. 2026-06-30 07:32:21.842 MDM_DATA_FAILED CRITICAL The system is now in DATA FAILURE state. Some data is unavailable ... 2026-06-30 07:32:23.538 DEV_CAPACITY_USAGE_CRITICAL ERROR Capacity usage on Protection Domain PD1, Storage Pool FGSP_01 is CRITICAL. 2026-06-30 07:32:23.605 DEV_CAPACITY_USAGE_FULL ERROR Capacity usage on Protection Domain PD1, Storage Pool FGSP_02 is FULL.
Os logs de rastreamento em todos os nós do SDS afetados produzem o mesmo rastreamento de pilha de pane:
2026/07/01 17:45:33.506630 Panic in file /data/build/workspace/ScaleIO-Common-Job/src/mos/mos_timer.c, line 437, function mosTimerReq_AddByQ, PID 1291427.Panic Expression pReq->state == MOS_TIMER_REQ_STATE__IDLE . /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(mosDbg_PanicPrepare+0xe5) [0x932ce5] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(mosTimerReq_AddByQ+0x143) [0x917043] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(vaeCleaner_CleanVae+0x64) [0x668904] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(head_removeVae+0x170) [0x545e00] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(head_Update+0x373) [0x546363] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(contHead_UpdateFull+0x69) [0x4db689] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(contCmd_AddHead+0x18a) [0x60d85a] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(contCmd_AddHeadGroup+0x100) [0x61b630] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(contCmd_NewRequest+0x15fd) [0x62b96d] /opt/emc/scaleio/sds/bin/sds-3.6.7000.123(contNet_RecvRequest+0xd0) [0x4ce880]
Nas versões do PowerFlex anteriores à 3.6.7, durante uma migração agendada do vTree, o progresso da migração trava e nunca é concluído.
Na interface do usuário > do PowerFlex Manager Running Storage Jobs, ele mostra Loading withlessly:

query_vtree_migration A saída mostra que a porcentagem de progresso nunca muda:
scli --query_vtree_migration --volume_id 53b80e00000000d1
VTree ID: ba46bf57000000d1 Name: PDC-GC-LNX-N-01-PFSP01-01-V043
Storage Pool 5f2f4acc00000000 Name: PDC-FLEX-LNX-SP01
Protection Domain 908ff43700000000 Name: PDC-FLEX-LNX-PD01
Data layout: Medium granularity
Provisioning: Thin
Total capacity in use: 504.7 GB (516787 MB)
Total user data: 504.7 GB (516787 MB)
Total base user data: 504.7 GB (516787 MB)
Total snapshots user data: 0 Bytes
VTree migration info:
Migration status: Migrating
Source: Storage Pool: PDC-FLEX-LNX-SP01 ID: 5f2f4acc00000000 Protection Domain: PDC-FLEX-LNX-PD01 ID: 908ff43700000000
Destination: Storage Pool: PDC-FLEX-LNX-SP03 ID: 5f2fe70d00000004 Protection Domain: PDC-FLEX-LNX-PD03 ID: 9090907800000003
Conversion type: No conversion
Queue position: 1
Progress percentage : 34%
Impacto
Em versões anteriores à 3.6.7, a migração de volumes nunca termina, a utilização da capacidade da SP é crítica ou superior e os aplicativos podem apresentar erros de E/S.
Na versão 3.6.7, indisponibilidade de dados.
원인
Esse problema é causado por uma condição de corrida com vários threads envolvendo um mecanismo de temporizador compartilhado no componente de limpeza do Elemento de Alocação de Volume (VAE) durante as operações de migração de volume.
Nas versões do PowerFlex anteriores à 3.6.7, um processo de limpeza assíncrona era usado para excluir dados de locais antigos da controladora de armazenamento após uma migração. Em raras condições, como operações simultâneas de gerenciamento de volume, exclusões simultâneas de volume, alta carga de E/S ou instabilidade de rede, esse processo poderia apresentar uma condição de corrida que fazia com que as migrações parecessem presas indefinidamente.
Para resolver isso, um mecanismo de monitoramento aprimorado foi introduzido na versão 3.6.7. Esse mecanismo de segurança apresentava um temporizador projetado para detectar um thread de limpeza do VAE travado e entrar proativamente no serviço do SDS para evitar corrupção de dados ou paralisações prolongadas, semelhante à forma como o sistema lida com comandos de E/S ou MDM travados.
No entanto, na implementação inicial dessa correção, o temporizador de monitoramento foi inicializado apenas uma vez durante a construção dos dados de migração e foi compartilhado globalmente em todas as chamadas subsequentes do limpador de VAE. Quando vários threads em segundo plano tentam acessar esse único temporizador compartilhado simultaneamente durante cargas de trabalho de migração pesadas, uma nova condição de corrida é acionada. Esse acesso simultâneo faz com que o mecanismo de rastreamento sinalize incorretamente o limpador de VAE como travado, resultando em falhas não intencionais do serviço SDS e disrupção localizada da disponibilidade dos dados, resultando em indisponibilidade de dados.
해결
Correção permanente (recomendado)
Faça upgrade do cluster para o PowerFlex 3.6.7.1 ou posterior. A correção para as condições de corrida do limpador VAE e do temporizador está incluída.
Solução temporária (se o upgrade não puder ser realizado imediatamente)
Em versões anteriores à 3.6.7
- No MDM primário, vá para o diretório de logs de rastreamento localizado em
/opt/emc/scaleio/mdm/logs/. Para localizar o log de rastreamento atual , executels -ltr, portanto, o mais recentetrc.z.*O log está listado na parte inferior da lista. - Como os logs são compactados, use o comando
trace_decompressutilitário localizado em/opt/emc/scaleio/mdm/bin/
tail -f <current_trace_log> | /opt/emc/scaleio/mdm/bin/trace_decompress
- Filtro para ID de SDS (por exemplo,
TGT) entradas. Usar ogrepComando para localizar:
tail -f <current_trace_log> | /opt/emc/scaleio/mdm/bin/trace_decompress | grep volumeBlock_HandleQueryCleanVaeResponse
- Identifique o
TGT. Procure linhas semelhantes à seguinte na saída filtrada:
TGT 41a903f100000036 not done yet
Se a TGT O ID permanece consistente ao longo do tempo, ele provavelmente corresponde ao nó do SDS envolvido. Execute novamente a etapa 3 para confirmar que permanece consistente.
- Execute o seguinte comando para listar todos os nós do SDS e fazer a correspondência com o
TGTID com o nome/endereço IP do SDS:
scli --query_all_sds
- Depois de ter as informações necessárias, você poderá
SSHpara esse SDS e reinicie o serviço SDS executando:
pkill sds
Na versão 3.6.7
- Serializar operações de gerenciamento de volume: execute apenas uma exclusão, redimensionamento ou migração por vez.
- Reduza a carga de E/S nos domínios de proteção afetados enquanto as migrações são executadas.
- Evite migrações em massa do vTree; agrupe-os em pequenos grupos.
- Não pause nem cancele uma migração quando a rede mostrar instabilidade.
Essas ações diminuem a probabilidade de uso simultâneo do temporizador e, portanto, reduzem as ocorrências de pânico.
Versões afetadas
PowerFlex Core 3.x.x.x
Correção feita na versão
PowerFlex Core 3.6.7.1