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. ...
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.