Notificação de cliente de armazenamento SC: Linux grandes tamanhos de i/o podem afetar iSCSI disponibilidade do volume

Summary: Uma alteração recente do kernel foi introduzida na distribuição Oracle Enterprise Linux que altera o comportamento de como os limites de i/o são calculados em dispositivos de Block. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Alerta:

Essas alterações são descritas a seguir.

Oracle Linux 6/7:

 

ELSA-2015-3098-Bugfix a segurança do kernel corporativo e atualização do

http://linux.oracle.com/errata/ELSA-2015-3098.html

Data da versão/ 2015-11-13

[3.8.13-100.el6uek/3.8.13-100.el7uek]

Block: Remove artifical max_hw_sectors Cap (Christoph Hellwig) [Orabug: 21511611]

 

 

Oracle Linux 5:

 

ELBA-2015-3076 – atualização de correção de erro de kernel corporativo inquebrável

http://linux.oracle.com/errata/ELBA-2015-3076.html

Data da versão/ 2015-08-27

[2.6.39-400.260.1.el5uek]

Block: remover artifical max_hw_sectors Cap (Joe Jin) [Orabug: 21455630]

 

 

 

Visão geral:

Cada dispositivo de Block que existe em um sistema Linux é alocado um diretório de fila (localizado em /Sys/Block/xxx/Queue/). Esse diretório contém um número de arquivos de configuração. Os detalhes desses arquivos podem ser encontrados em:

 

https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt

 

Os dois parâmetros relevantes a esse CSTA:

 

max_hw_sectors_kb

O número máximo de kilobytes compatíveis em uma única transferência de dados.

Esse parâmetro é somente leitura e fornecido pelo dispositivo de armazenamento de destino por meio de SCSI resposta à consulta. O subsistema de destino SCSI no sistema operacional do Storage Center (SCOS) atualmente responde com um zero. Isso indica que não há limite, portanto, o servidor define o valor como o máximo permitido nesta versão do kernel do Linux (32MB).

 

max_sectors_kb

O número máximo de kilobytes que a camada de Block permitirá para uma solicitação de File System.

Esse valor é leitura/gravação. Esse valor deve ser menor ou igual ao valor max_hw_sectors_kb.

 

As alterações no kernel de Linux do Oracle que foram introduzidos em kernels 2.6.39-400.260.1. el5uek, 3.8.13-100. el6uek e 3.8.13-100. o el7uek alterou a maneira como o max_sectors_kb é calculado. Em versões anteriores do kernel, o valor era sempre definido como 512KB. Depois dessa alteração, o valor de max_sectors_kb é definido como o valor de max_hw_sectors_kb. Isso aumenta basicamente o tamanho máximo de uma única transferência de i/o para um determinado dispositivo de Block de 512KB para 32MB.

 

Essa alteração expôs um problema com o driver de iSCSI do Storage Center 10Gb para tamanhos de i/o maiores que ~ 8MB. O processo do servidor produzindo o grande IO pode travar ou o volume pode ficar indisponível devido ao tamanho grande de i/o. Além disso, o problema de driver de iSCSI 10Gb pode fazer com que a controladora consuma memória exigida por outros subsistemas do Storage Center, o que pode levar a um impacto maior.

 

 

 

Solução temporária:

Para evitar esse problema, os max_sectors_kb de cada dispositivo de Block devem ser alterados dinamicamente no servidor de Linux. A seguir, há exemplos de comandos para um dispositivo de Block de múltiplos caminhos conectados a um sistema Linux:

 

#mpath1:

Eco 512 >/sys/Block/DM-6/Queue/max_sectors_kb

Eco 512 >/sys/Block/SDC/Queue/max_sectors_kb

Eco 512 >/sys/Block/SDE/Queue/max_sectors_kb

Eco 512 >/sys/Block/SDK/Queue/max_sectors_kb

Eco 512 >/sys/Block/SDM/Queue/max_sectors_kb

 

Essas alterações não são persistentes por meio de reinicializações. Um script de inicialização pode ser implementado para ser executado quando um determinado servidor for inicializado, o que modificará esse parâmetro para todos os dispositivos de Block do iSCSI. Consulte um administrador do Linux ou Oracle suporte sobre a melhor maneira de implementar essa persistência para cada ambiente do cliente.

 

O seguinte script (regra udev) definirá o max_sectors_kb de cada iSCSI volume do Compellent anexado para 512kb. Use esse script a seu critério, pois nenhuma garantia ou garantia foi implícita. É recomendável testar o script, mas ele deve funcionar sem problemas.

 

Crie o arquivo 99-CML-iSCSI. Rules no diretório /etc/udev/rules.d/ com o seguinte conteúdo:

[root@localhost/] # gato/etc/udev/rules.d/99-CML-iSCSI.Rules

# Modify max_sectors_kb for Dell Storage Center iSCSI volumes mapeados

AÇÃO = = "Adicionar", \

ENV = = "*-iSCSI-* Compellent *", \

Execute + = "/bin/sh-c ' echo 512 >/sys $ DEVPATH/Queue/max_sectors_kb '"

 

 

Versões afetadas:

Todas as versões do SCOS são afetadas por utilizar interfaces de 10 GbE iSCSI. Fibre Channel, 1 GB iSCSI e FCoE não são afetados.

 

 

Resolução:

O problema de max_sectors_kbfoi resolvido no SCOS versões 7.01.12, 7.02.01 e 7.03.01 e superior.

 

As alterações estão disponíveis no SCOS 6.07.03 e superiores para resolver o problema de consumo de memória com o driver de iSCSI de 10 GbE.

Cause

 

Resolution

 

Affected Products

Entry Level & Midrange, Compellent (SC, SCv & FS Series), Dell Compellent SC4020, Dell Storage SC8000, Dell Compellent Series 40, Dell Storage SCv2000, Dell Storage SCv2020, Dell Storage SCv2080, Dell Storage SC9000
Article Properties
Article Number: 000137348
Article Type: Solution
Last Modified: 03 May 2021
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.