PowerFlex: Disco com falha com ID de dispositivo incorreto
Summary: O disco do sistema ScaleIO é exibido como tendo falhado quando foi usado em outro nó SDS.
Symptoms
Situação
Quando um cliente estiver usando o mesmo compartimento de disco para dois nós SDS ou mais, ele deverá configurar off-line/on-line para cada disco e o nó ao qual ele pertence.
Às vezes, o cliente pode estar enganado e colocar on-line o mesmo disco nos dois nós do SDS. Em seguida, podemos ver um disco com falha.
Possíveis erros:
- O cliente está on-line no mesmo disco nos dois nós do SDS e, em seguida, um disco apresenta falha.
- O cliente troca discos, o que significa que cada disco está on-line no nó errado, nesse caso, vemos duas unidades com falha, uma em cada nó SDS.
Sintomas
O ID de dispositivo de disco incorreto encontrado pelo nó do SDS e o processo do SDS definem o disco para o estado FAILED.
No início do processo do SDS depois que o processo do SDS da peça mosConf é movido para a detecção de dispositivos físicos, quando o disco não é para uso do scaleio (como disco do sistema operacional do sistema ou disco livre) o erro "Assinatura inválida do cabeçalho do dispositivo" será exibido (primeira linha na saída). Quando o disco está em uso pelo ScaleIO, um dispositivo é encontrado e o ID do dispositivo é mostrado ao lado dele.
Na primeira saída abaixo (arquivo trc do servidor 1) podemos ver que 12 dispositivos foram encontrados, mas olhando atentamente podemos ver que dois dispositivos são diferentes (L,M) - o 12º caractere no ID do dispositivo é 3 e não 0 como todos os outros IDs de dispositivos.
Na segunda saída abaixo (arquivo trc do servidor 2) foram encontrados 12 discos e, novamente, dois discos são diferentes (K,L) - o 12º caractere no ID do dispositivo é 0 e não 3 como todos os outros IDs de dispositivos.
Após o processo de detecção, o processo do SDS muda para a adição de dispositivos de volta ao SDS, quando o SDS não encontra o resultado rc do disco será NOT_FOUND (arquivo trc do servidor 1), como podemos ver nos exemplos abaixo, em cada SDS, temos discos com ID de dispositivo que não pertence a seu SDS, o SDS mostrará esses discos como FAILED porque eles estão NOT_FOUND (arquivo trc do servidor 1).
Arquivo TRC do servidor 1
30/04 09:48:16.328000 000000A170629EA0:phyDev_ReadDevId:02679: Invalid device header signature : path=C, devVersion=2807280628052804, sigStart=2803280228012800, sigEnd=283b283a28392838
30/04 09:48:16.328000 000000A170629EA0:phyDevMap_ReloadSpecific:00128: Failed to read DeviceId of C. rc=351
30/04 09:48:16.329000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device F ,a2901dcd00000000
30/04 09:48:16.330000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device G ,a2901dce00000001
30/04 09:48:16.331000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device H ,a2901dcf00000002
30/04 09:48:16.332000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device I ,a2901dd000000003
30/04 09:48:16.333000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device J ,a2901dd100000004
30/04 09:48:16.333000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device K ,a29044bf00000005
30/04 09:48:16.337000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device L ,a29044c400030006
30/04 09:48:16.342000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device M ,a29044c000030005
30/04 09:48:16.343000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device N ,a29044cb00000008
30/04 09:48:16.344000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device O ,a2906bcf00000009
30/04 09:48:16.345000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device P ,a2906bd30000000a
30/04 09:48:16.345000 000000A170629EA0:phyDevMap_ReloadSpecific:00136: Found device Q ,fbd792df0000000b
...
30/04 09:48:16.345000 000000A1730BCEA0:contCmd_AddDev:01204: DevId a2901dce00000001 - Start rc = SUCCESS
30/04 09:48:16.346000 000000A173086EA0:contCmd_AddDev:01204: DevId a29044c700000007 - Start rc = SUCCESS
30/04 09:48:16.346000 000000A173098EA0:contCmd_AddDev:01204: DevId a2906bd30000000a - Start rc = SUCCESS
30/04 09:48:16.346000 000000A1730E0EA0:contCmd_AddDev:01204: DevId fbd792e50000000c - Start rc = SUCCESS
30/04 09:48:16.346000 000000A1730B3EA0:contCmd_AddDev:01204: DevId a2901dcf00000002 - Start rc = SUCCESS
30/04 09:48:16.346000 000000A17310DEA0:contCmd_AddDev:01204: DevId a2901dcd00000000 - Start rc = SUCCESS
30/04 09:48:16.346000 000000A173062EA0:contCmd_AddDev:01204: DevId a29044cb00000008 - Start rc = SUCCESS
30/04 09:48:16.346000 000000A1730C5EA0:contCmd_AddDev:01204: DevId a2901dd100000004 - Start rc = SUCCESS
30/04 09:48:16.346000 000000A1730E0EA0:contCmd_AddDev:01391: DevId fbd792e50000000c - Done rc = NOT_FOUND
30/04 09:48:16.348000 000000A1730A1EA0:contCmd_AddDev:01204: DevId fbd792ee0000000e - Start rc = SUCCESS
30/04 09:48:16.348000 000000A1730A1EA0:contCmd_AddDev:01391: DevId fbd792ee0000000e - Done rc = NOT_FOUND
30/04 09:48:16.349000 000000A1730F2EA0:contCmd_AddDev:01204: DevId fbd792e90000000d - Start rc = SUCCESS
30/04 09:48:16.349000 000000A17306BEA0:contCmd_AddDev:01204: DevId a2901dd000000003 - Start rc = SUCCESS
30/04 09:48:16.349000 000000A17307DEA0:contCmd_AddDev:01204: DevId a2906bcf00000009 - Start rc = SUCCESS
30/04 09:48:16.349000 000000A173074EA0:contCmd_AddDev:01204: DevId a29044bf00000005 - Start rc = SUCCESS
30/04 09:48:16.349000 000000A173086EA0:contCmd_AddDev:01391: DevId a29044c700000007 - Done rc = NOT_FOUND
30/04 09:48:16.349000 000000A1730F2EA0:contCmd_AddDev:01391: DevId fbd792e90000000d - Done rc = NOT_FOUND
30/04 09:48:16.351000 000000A1730FBEA0:contCmd_AddDev:01204: DevId fbd792ef0000000f - Start rc = SUCCESS
30/04 09:48:16.352000 000000A1730FBEA0:contCmd_AddDev:01391: DevId fbd792ef0000000f - Done rc = NOT_FOUND
30/04 09:48:16.352000 000000A173104EA0:contCmd_AddDev:01391: DevId a29044c300000006 - Done rc = NOT_FOUND
Arquivo TRC do servidor 2
30/04 11:37:57.065000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device F ,a2901dc800030000
30/04 11:37:57.065000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device G ,a2901dc900030001
30/04 11:37:57.065000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device H ,a2901dca00030002
30/04 11:37:57.065000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device I ,a2901dcb00030003
30/04 11:37:57.065000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device J ,a2901dcc00030004
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device K ,a29044c300000006
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device L ,a29044c700000007
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device M ,a29044c800030007
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device N ,a29044cc00030008
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device O ,a2906bd000030009
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device P ,a2906bd40003000a
30/04 11:37:57.081000 000000EE1DC2AEA0:phyDevMap_ReloadSpecific:00136: Found device Q ,fbda92e00003000b
Explicação do ID do dispositivo SDS
Cada dispositivo SDS tem um cabeçalho salvo em sua64ª LB.
O cabeçalho tem a seguinte estrutura:
Assinatura de 64 bits
Versão do dispositivo de 64 bits
ID do SDS de 64 bits
ID do dispositivo SDS de 64 bits ß o que você está procurando.
O ID do dispositivo SDS, também conhecido como TgtDevId, consiste no seguinte:
ID exclusivo de 32 bits
Índice TGT 16 bits
Índice do dispositivo de 16 bits
Por exemplo: um SDS com o ID 2df4737600000002, teria dois dispositivos com os IDs: 7FFF29EA00020000, 7FFF29EB00020001
De qualquer forma, se um dispositivo pertencente ao SDS x foi trocado no SDS y, ao reconectar o dispositivo ao SDS y, ele descobre que pertence a um SDS diferente, verificando o ID do SDS salvo no cabeçalho.
Talvez você possa vê-lo nos registros do SDS, se você procurar por "Dispositivo errado"
Impacto
Recriação e rebalanceamento do sistema, pois o disco está no estado FAILED.
Cause
O ID do dispositivo de disco pertence a outro nó do SDS, portanto, o ScaleIO nunca o usará.
Resolution
Adicionar o disco ao nó SDS correto.
Versões afetadas
Todas as versões do PowerFlex
Corrigido na versão
Funciona conforme projetado.