Linux Rhel5.6: Versão do protocolo SCSI - onde é definido?

3

Em nosso ambiente, temos vários gabinetes de armazenamento conectados aos servidores RH Linux. Dependendo do gabinete de armazenamento conectado ao host, alguns LUNs são vistos usando o protocolo SCSI versão 2 (versão = 0x02 [SCSI-2]), outros são vistos com a versão de protocolo 4. (versão = 0x04 [SPC-2]). / p>

Onde esta versão de protocolo está configurada? Isso está no lado do sistema operacional? ou no lado de armazenamento? Nós instalamos os servidores RH usando exatamente da mesma maneira. Abrimos um caso no RHEL e para nosso fornecedor de armazenamento, claro RHEL diz que é o armazenamento e o fornecedor de armazenamento nos diz que é o SO.

Isso tem um impacto na descoberta de LUNs (IDs de LUN não estão em sequência - > você precisa informar manualmente scsi-varrer o intervalo de IDs de LUN que deseja verificar - > não é possível visualizar todos os LUNs em reinicialize sem intervenção manual).

Não sabemos onde procurar mais, alguém tem um ID para onde procurar? Abaixo está a saída de sg_inq em 3 servidores diferentes.

[qualification:root@xxxxxxxx:/root]$ sg_inq /dev/sda
standard INQUIRY:
PQual=0 Device_type=0 RMB=0 version=0x02 **[SCSI-2]**
[AERC=0] [TrmTsk=0] NormACA=0 HiSUP=1 Resp_data_format=2
SCCS=0 ACC=0 TPGS=0 3PC=0 Protect=0 BQue=0
EncServ=0 MultiP=1 (VS=0) [MChngr=0] [ACKREQQ=0] Addr16=1
[RelAdr=0] WBus16=0 Sync=0 Linked=0 [TranDis=0] CmdQue=1
[SPI: Clocking=0x0 QAS=0 IUS=0]
length=184 (0xb8) Peripheral device type: disk
Vendor identification: HITACHI
Product identification: DF600F
Product revision level: 0000
Unit serial number: 850531780000


[root@ccccccccccc ~]# sg_inq /dev/sda
standard INQUIRY:
PQual=0 Device_type=0 RMB=0 version=0x04 **[SPC-2]**
[AERC=0] [TrmTsk=0] NormACA=0 HiSUP=1 Resp_data_format=2
SCCS=0 ACC=0 TPGS=0 3PC=0 Protect=0 BQue=0
EncServ=0 MultiP=1 (VS=0) [MChngr=0] [ACKREQQ=0] Addr16=1
[RelAdr=0] WBus16=0 Sync=0 Linked=0 [TranDis=0] CmdQue=1
[SPI: Clocking=0x0 QAS=0 IUS=0]
length=184 (0xb8) Peripheral device type: disk
Vendor identification: HITACHI
Product identification: DF600F
Product revision level: 0000
Unit serial number: 8505035001DA

[pre-prod:root@vvvvvvvvv:/home/a143524]$ sg_inq /dev/sda
standard INQUIRY:
PQual=0 Device_type=0 RMB=0 version=0x04 **[SPC-2]**
[AERC=0] [TrmTsk=0] NormACA=0 HiSUP=1 Resp_data_format=2
SCCS=0 ACC=0 TPGS=0 3PC=0 Protect=0 BQue=0
EncServ=0 MultiP=1 (VS=0) [MChngr=0] [ACKREQQ=0] Addr16=1
[RelAdr=0] WBus16=0 Sync=0 Linked=0 [TranDis=0] CmdQue=1
[SPI: Clocking=0x0 QAS=0 IUS=0]
length=184 (0xb8) Peripheral device type: disk
Vendor identification: HITACHI
Product identification: DF600F
Product revision level: 0000
Unit serial number: 850503500032

O driver é o módulo qla padrão que vem com o rhel Nós não mudamos muitos parâmetros:

opções qla2xxx qlport_down_retry = 1 ql2xplogiabsentdevice = 1 ql2xmaxqdepth = 16

que resultam como:

[qualification:root@xxxxxxxx]$ for i in  /sys/module/qla2xxx/parameters/*;
do
echo $i;cat $i;
done

/sys/module/qla2xxx/parameters/ql2xallocfwdump
1

/sys/module/qla2xxx/parameters/ql2xdbwr
1

/sys/module/qla2xxx/parameters/ql2xdevdiscgoldfw
0

/sys/module/qla2xxx/parameters/ql2xdontresethba
0

/sys/module/qla2xxx/parameters/ql2xenablemsix
1

/sys/module/qla2xxx/parameters/ql2xetsenable
0

/sys/module/qla2xxx/parameters/ql2xextended_error_logging
1

/sys/module/qla2xxx/parameters/ql2xfdmienable
0

/sys/module/qla2xxx/parameters/ql2xfwloadbin
0

/sys/module/qla2xxx/parameters/ql2xloginretrycount
30

/sys/module/qla2xxx/parameters/ql2xlogintimeout
20

/sys/module/qla2xxx/parameters/ql2xmaxqdepth
16

/sys/module/qla2xxx/parameters/ql2xplogiabsentdevice
1

/sys/module/qla2xxx/parameters/ql2xqfullrampup
120

/sys/module/qla2xxx/parameters/ql2xqfulltracking
1

/sys/module/qla2xxx/parameters/ql2xshiftctondsd
6

/sys/module/qla2xxx/parameters/ql2xtargetreset
1

/sys/module/qla2xxx/parameters/qlport_down_retry
1

Outra coisa que me deixa pensar em um problema do Linux é: A saída a seguir é diferente no host evry: a revisão SCSI fornece resultados diferentes

cat /proc/scsi/scsi:
...

Host: scsi1 Channel: 00 Id: 04 Lun: 99
  Vendor: HITACHI  Model: DF600F           Rev: 0000
  Type:   Direct-Access                    ANSI SCSI revision: 02

Mas com o SCLI eu encontrei sempre a mesma saída SBC-2:

LUN 99
---------------------------------------
Product Vendor                 : HITACHI 
Product ID                     : DF600F          
Product Revision               : 0000
LUN                            : 99
Size                           : 100.00 GB
Type                           : SBC-2 Direct access block device
                       (e.g., magnetic disk)
WWULN                          : 48-49-54-41-43-48-49-20-38-35-30-35-32-38-39-30
                       30-30-39-39
OS LUN Name                    : /dev/sdiz;/dev/sg259;

Isso dá alguma ideia a alguém? Saudações Mike

27/10/2011 ATUALIZAÇÃO:

Oi recentemente fizemos dois testes interessantes:

  • apresentando um Lun do mesmo armazenamento para outros hosts (esse teste era óbvio, já que tivemos o mesmo problema no membro 3 de um cluster RAC)

- > Ths revisão SCSI foi OK

  • apresentando um Lun de outro armazenamento para os hosts problemáticos

- > A revisão scsi estava OK neste host

Observamos que esses 3 nós do RAC têm muitos discos em diferentes armazenamentos ... Uma vez que um armazenamento tem que ser descomissionado, vamos primeiro limpar isso antes de prosseguir ...

Também decidimos implementar um scsi-rescan na seqüência de inicialização para poder reinicializar a máquina sem problemas (eu odeio esse tipo de trabalho)

Vou manter sua outra proposta para o futuro;)

Vou mantê-lo informado sobre isso Atenciosamente

    
por Mike 09.10.2011 / 20:54

2 respostas

1

A versão do protocolo é uma propriedade da unidade ou camada de emulação localizada entre a (s) unidade (s) e o host. Se você tem um gabinete que executa funções RAID e apresenta um único LUN representando vários deivimentos, ou alguma fatia configurável, então é a camada RAID que define qual versão do protocolo SCSI ele fala.

    
por 10.10.2011 / 21:20
1

Hmm, eu vi que sg_inq não está listando as informações da versão inteira ao chamar sem parâmetros. Se você precisar de uma lista de todos os padrões que o dispositivo afirma cumprir, você deve usar sg_inq -d /dev/sda - provavelmente você obterá resultados idênticos em todos os seus hosts.

Por outro lado, independentemente do que o dispositivo esteja reivindicando, não é necessariamente o que você está usando - as propriedades do protocolo negociado podem ser diferentes.

Como seus LUNs são descobertos fora de ordem, você pode tentar procurar nas opções de configuração do Fast! Util para possíveis diferenças entre suas configurações. Também pode valer a pena perguntar ao QLogic (ou ao seu fabricante de hardware se você tiver HBAs OEM) suporte sobre possíveis causas para o problema.

Editar: O seu problema parece complicado - algumas cenas no escuro podem ajudar sem motivo aparente ou dar-lhe alguns passos em direção à resolução.

  • experimente drivers diferentes - provavelmente você está usando HBAs FC QLA 23xx / 24xx, mas usando drivers qla2xxx mais antigos - tente substituí-los por módulos específicos qla2300 / qla2400 e veja se isso faz alguma diferença
  • experimente restaurar sua configuração de HBA pela fábrica em uma máquina problemática e em uma máquina que funciona bem e veja se faz alguma diferença
  • se você tiver essa opção, use outro FC HBA (talvez apenas adquira um adaptador Emulex antigo no eBay por US $ 50) para testar e ver se isso vai mudar alguma coisa
  • inicie o sistema com uma versão do SO diferente - por exemplo, uma versão sysrescuecd ao vivo para ver se o problema é reproduzível com o kernel diferente Versões de módulo
por 10.10.2011 / 21:50