O que são tempos limite do comando SCSI do Linux e o padrão adequado para invasão de software?

3

Meu entendimento dos tempos limite de SCSI é que qualquer leitura, gravação, flush e outros comandos têm um tempo limitado para serem concluídos. Se excedido, o comando será cancelado e um erro será relatado à camada superior. Enquanto aguarda a conclusão do comando, qualquer aplicativo que depende da E / S será interrompido.

Minha próxima camada seria o mdraid, o RAID de software do Linux. Pelo que eu li, o mdraid não tem timeouts por conta própria, mas depende da camada inferior para os comandos de timeout.

O valor padrão do tempo limite SCSI é de 90 segundos para o Kernel 3.2 (Debian).

Um disco rígido que encontrar um erro de leitura tentará corrigir o erro dentro de um prazo definido pelo firmware. Esse limite de tempo é alto para unidades de desktop (normalmente autônomo, portanto, a correção tem alta prioridade) e baixo para unidades de servidor (geralmente RAID, portanto, informe o setor defeituoso em breve, deixe que outra unidade responda). Às vezes, pode ser ajustado via smartctl (SCTERC, TLER, etc.).

Portanto, se um HDD estiver configurado para um tempo limite alto do ERC, o kernel aguardará 90 segundos por padrão antes de abortar a solicitação. Somente então o mdraid redirecionará o pedido do aplicativo para outro disco.

90 segundos é muito tempo para uma página web carregar.

É correto assumir que o tempo limite SCSI padrão é destinado a propósitos de área de trabalho ou equipamentos SCSI não-HDD (unidade de fita, biblioteca de fita vêm à mente) e seguro para reduzir para, digamos, 7 segundos para uso de RAID? / p>     

por korkman 17.04.2012 / 21:35

1 resposta

3

A adequação depende das suas necessidades. Para você, parece que 90 segundos não são uma boa opção.

Eu já vi uma documentação de fornecedor recomendando que são definidos em 60 segundos para lidar melhor com coisas como failover de matriz, atualizações de firmware para controladores e afins. O lado negativo é como você aponta: pode levar a atrasos muito longos para retornar o armazenamento.

E na verdade isso não é uma coisa ruim. Muitos sistemas operacionais forçarão a desmontagem de um LUN se ele obtiver timeouts de HBA, o que pode ser muito mais perturbador do que um longo atraso ocasional para retornar um bloco. O truque é equilibrar o seguinte:

  • A probabilidade de sua pilha de armazenamento gerar longos atrasos
  • Sua tolerância a dados atrasados
  • Sua tolerância a LUNs desmontados

Em geral, os discos colocados em uma matriz RAID devem ter um valor de tempo limite baixo, pois permite que o controlador RAID saiba lidar com a solicitação de bloqueio em outro lugar. Esta é uma grande razão pela qual as unidades de nível de consumidor são uma má ideia quando usadas com placas RAID de hardware; seus tempos limite são muito longos, o que pode levar apenas ao problema que você não deseja.

    
por 17.04.2012 / 22:04