Os comandos powermt falham com "ERROR: Falha na solicitação de Lam do dispositivo"
Summary: Os comandos powermt falham com "ERROR: Falha na solicitação de Lam do dispositivo"
Symptoms
Esse problema específico só pode acontecer quando o servidor está conectado a arrays gerenciados e não gerenciados do PowerPath e após as alterações de configuração em ambos os arrays. Em nosso exemplo, alguns dispositivos Clariion foram removidos, mas o pseudodispositivo correspondente não foi limpo. Em seguida, o armazenamento IBM foi adicionado e os hdisks, inicialmente usados como um caminho para esses dispositivos Clariion removidos, foram reutilizados para descrever os novos discos IBM. Isso resultou nessas entradas incorretas no ODM
Ambiente:
Sistema operacional: AIX (qualquer sabor)
DELL SW: PowerPath for AIX (qualquer versão)
Não DELL HW: discos de um array não gerenciável pelo PowerPath.
Em um ambiente AIX, os comandos powermt falham com "ERROR: Falha na reivindicação de Device Lam." Esse erro não está documentado na CLI da família Dell PowerPath e na Referência de mensagens do sistema.
Cause
O PowerPath relata essa mensagem quando o PowerPath não consegue determinar a qual Lam (Loadable Array Module, módulo de array carregável) um dispositivo pertence. Como os comandos do PowerPath não estão funcionando, a solução de problemas só pode ser feita analisando o ODM. Se o PowerPath estiver procurando uma LAM e não conseguir encontrar a LAM adequada, isso significa que há um pseudodispositivo, com entradas no ODM, apontando para um tipo de dispositivo não esperado pelo PowerPath.
No caso que causou a criação deste artigo, tivemos o seguinte no ODM:
CuAt: name = "hdiskpower29" attribute = "vpd_map" value = "MF0808C,TM1010C,RL2004C,Z00008X,Z1040780C,SN081083X" type = "V" generic = "" rep = "sl" nls_index = 0
Verificando o PdAt para este tipo de dispositivo, encontramos:
PdAt: uniquetype = "disk/fcp/2145" attribute = "vpd_map" deflt = "MF0808C,TM1010C,RL2004C,Z00008X,Z1040780C,SN081083X" values = "" width = "" type = "V" generic = "" rep = "sl" nls_index = 0
Esse não é um tipo de disco DELL nem nada gerenciado pelo PowerPath: este é um disco IBM.
O atributo unique_id do pseudodispositivo fornece evidências mais fáceis da natureza do dispositivo. No nosso caso, tivemos (o valor real foi alterado para preservar a confidencialidade):
CuAt:
name = "hdiskpower29"
attribute = "unique_id"
value = "33213600507680C80017D3800000000000XXXXXXX4503IBMfcp"
type = "R"
generic = ""
rep = "s"
nls_index = 0
Quando essas entradas existem no ODM e quando o pseudodispositivo (aqui hdiskpower29) é referenciado em "powermt_custom.xml", então "powermt config" não consegue associar uma LAM ao dispositivo e falha, e o outro comando "powermt" falha com o mesmo erro.
Resolution
Como todos os comandos "powermt" falham, não é possível atualizar o arquivo "powermt_custom.xml" com um "powermt save". A exclusão do arquivo "powermt_custom.xml" seria uma má ideia devido ao risco de perda da relação entre os pseudodispositivos corretos e os dispositivos de array gerenciados do PowerPath.
A única maneira de resolver o problema é remover do ODM todos os pseudodispositivos em que o atributo "unique_id" é XXXXIBMfcp. E em vez de usar comandos "odmdelete" perigosos, é aconselhável simplesmente usar um comando "rmdev -dl <pseudo_device>".
Aqui está um exemplo dos comandos que foram executados para remover as entradas incorretas em nosso exemplo (cada caso é exclusivo e a lista abaixo é um exemplo):
for i in 29 30 31 32 33 34 39 40 41 42 43 44 45 46 47 48 125 136 137 138 167 168 169 170 171 172 173 216 217 267 522 523 524 525 526 527 do rmdev -dl hdiskpower$i done
Após essa limpeza, execute uma "powermt config" seguida por uma "powermt save". Nessa fase, você também pode detectar alguns caminhos "inativos" (para pseudodispositivos também removidos da configuração, mas em que os hdisks correspondentes não foram reutilizados para apontar para discos não gerenciados pelo PowerPath e que não foram detectados no ODM ao verificar o atributo "unique_id") em "powermt display". Essas entradas são limpas com um comando "powermt check". Nesse caso, não se esqueça de executar um "powermt save" novamente após essa limpeza final.