Como você “conserta” um caminho defeituoso no device-mapper-multipath

2

Eu tenho uma configuração de vários caminhos que estava funcionando, mas agora mostra um caminho "com falha":

[root@nas ~]# multipath -ll
sdd: checker msg is "readsector0 checker reports path is down"
mpath1 (36001f93000a63000019f000200000000) dm-2 XIOTECH,ISE1400
[size=200G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 1:0:0:1 sdb 8:16  [active][ready]
\_ round-robin 0 [prio=0][enabled]
 \_ 2:0:0:1 sdd 8:48  [active][faulty]

Ao mesmo tempo, vejo essas três linhas repetidas vezes em /var/log/messages

Feb  5 12:52:57 nas kernel: sd 2:0:0:1: SCSI error: return code = 0x00010000
Feb  5 12:52:57 nas kernel: end_request: I/O error, dev sdd, sector 0
Feb  5 12:52:57 nas kernel: Buffer I/O error on device sdd, logical block 0

E esta linha também aparece com bastante frequência

Feb  5 12:52:58 nas multipathd: sdd: readsector0 checker reports path is down

Uma coisa que não entendo é por que ele está usando o método de verificação readsector0 quando meu arquivo /etc/multipath.conf diz usar tur

[root @ nas ~] # tail -n15 /etc/multipath.conf

devices {
        device {
                vendor                  "XIOTECH "
                product                 "ISE1400         "
                path_grouping_policy    multibus
                getuid_callout          "/sbin/scsi_id -g -u -d /dev/%n"
                path_checker            tur
                prio_callout              "none"
                path_selector           "round-robin 0"
                failback                    immediate
                no_path_retry           12
                user_friendly_names yes
        }
}

Olhando para a documentação do upstream aqui, este parágrafo parece relevante: link

For each path:

\_ host:channel:id:lun devnode major:minor [path_status][dm_status_if_known]

The dm status (dm_status_if_known) is like the path status
(path_status), but from the kernel's point of view. The dm status has two
states: "failed", which is analogous to "faulty", and "active" which
covers all other path states. Occasionally, the path state and the 
dm state of a device will temporarily not agree. 

Tem sido bem mais de 24 horas para mim, então não é temporário.

Então, com tudo isso como pano de fundo, minhas perguntas são
Como posso determinar a causa raiz aqui?
como posso manualmente / linha de comando executar o que verificar sua fazendo

- por que está ignorando meu multipath.conf (eu fiz errado?)

Agradecemos antecipadamente por qualquer ideia, se houver mais alguma coisa que eu possa fornecer informações, informe-nos em um comentário e eu os editarei na postagem.

    
por cagenut 05.02.2010 / 19:20

1 resposta

3

Há um bug sutil no seu multipath.conf, fornecedor e produto estão correspondendo no nível regexp, e você adicionou uma série de espaços principais que está causando multipathd para não corresponder à sua configuração com os dispositivos reais no sistema. Se você examinasse a saída de echo 'show config' | multipathd -k , encontraria duas seções de dispositivo para sua SAN, uma que correspondesse a todos os espaços extras que você adicionou e a configuração padrão (se existir) fornecida por interno banco de dados.

Ajuste seu multipath.conf para ficar assim:

            vendor                  "XIOTECH "
            product                 "ISE1400.*"

SCSI Inquiry espera que um campo de fornecedor que não seja maior do que 8 caracteres terminados por um ASCII Zero, se você não usar todos os 8, deve preencher o campo com espaços para alcançar 8 caracteres. Multipathd está interpretando a especificação para a letra da lei, você poderia também ter feito "XIOTECH.*" se realmente quiser ter certeza.

Depois de fazer essas alterações, pare o multipathd usando seus initscripts, multipath -F, que liberará sua configuração e iniciará o multipathd novamente. Seu arquivo de configuração deve ser honrado agora. Se você ainda tiver problemas, reinicie.

Se houver alguma dúvida de que seu arquivo de configuração não está sendo respeitado, sempre examine a configuração em execução usando o encantamento de eco e compare o que está carregado no banco de dados com o seu arquivo de configuração.

    
por 07.02.2012 / 17:02