Otimize o desempenho de sua SAN elástica
Este artigo fornece algumas orientações gerais sobre como obter o desempenho ideal com um ambiente que usa uma SAN elástica do Azure.
Otimizações do lado do cliente
Recomendações gerais (Windows & Linux Virtual Machines)
Para obter o melhor desempenho, implante suas VMs e Elastic SAN na mesma zona e na mesma região.
A E/S de armazenamento de VM para volumes SAN elásticos usa largura de banda de rede de VM, portanto, os limites tradicionais de taxa de transferência de disco em uma VM não se aplicam aos volumes de SAN elástica. Escolha uma VM que possa fornecer largura de banda suficiente para E/S de produção/VM para VM e E/S iSCSI para volumes SAN elásticos conectados. Geralmente, você deve usar VMs Gen 5 (série D / E / M) para obter o melhor desempenho.
Habilite "Rede acelerada" na VM, durante a criação da VM. Para fazer isso por meio do Azure PowerShell ou da CLI do Azure ou para habilitar a Rede Acelerada em VMs existentes, consulte Usar o Azure PowerShell para criar uma VM com Rede Acelerada
- Você deve usar 32 sessões por volume de destino para cada volume para atingir seus limites máximos de IOPS e/ou taxa de transferência. Use Multipath I/O (MPIO) no cliente para gerenciar essas várias sessões para cada volume para balanceamento de carga. Os scripts estão disponíveis para Windows, Linux ou na página Conectar ao volume para seus volumes no portal do Azure, que usa 32 sessões por padrão. O iniciador iSCSI do software Windows tem um limite máximo de 256 sessões. Se você precisar conectar mais de oito volumes a uma VM do Windows, reduza o número de sessões para cada volume conforme necessário.
MPIO
Windows
Use os seguintes comandos para atualizar suas configurações:
# Enable multipath support for iSCSI devices
Enable-MSDSMAutomaticClaim -BusType iSCSI
# Set the default load balancing policy based on your requirements. In this example, we set it to round robin which should be optimal for most workloads.
mpclaim -L -M 2
# Set disk time out to 30 seconds
Set-MPIOSetting -NewDiskTimeout 30
Para obter mais informações sobre cmdlets MPIO, consulte Referência MPIO.
Linux
Atualize o arquivo /etc/multipath.conf com o seguinte:
defaults {
user_friendly_names yes # To create ‘mpathn’ names for multipath devices
path_grouping_policy multibus # To place all the paths in one priority group
path_selector "round-robin 0" # To use round robin algorithm to determine path for next I/O operation
failback immediate # For immediate failback to highest priority path group with active paths
no_path_retry 1 # To disable I/O queueing after retrying once when all paths are down
}
devices {
device {
vendor "MSFT"
product "Virtual HD"
}
}
iSCSI
Windows
Atualize as configurações do Registro abaixo para o iniciador iSCSI no Windows.
- Abra o Editor do Registro:
- Selecione Iniciar, digite regedit na caixa de pesquisa e pressione enter.
- Navegue até o seguinte local: [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI Initiator)\Parameters]
- Atualize as seguintes configurações. Clique com o botão direito do mouse em cada configuração e selecione Modificar. Altere Base para Decimal, atualize o valor e selecione OK.
Description | Parâmetro e valor |
---|---|
Define o máximo de dados que o iniciador envia em uma PDU iSCSI para o destino como 256 KB | MaxTransferLength=262144 |
Define a carga máxima SCSI que o iniciador negocia com o destino como 256 KB | MaxBurstLength=262144 |
Define o máximo de dados não solicitados que o iniciador pode enviar em uma PDU iSCSI para um destino como 256 KB | FirstBurstLength=262144 |
Define o máximo de dados que o iniciador pode receber em uma PDU iSCSI do destino para 256 KB | MaxRecvDataSegmentLength=262144 |
Desabilita o controle de fluxo R2T | InicialR2T=0 |
Permite dados imediatos | ImmediateData=1 |
Define o valor de tempo limite para solicitações WMI para 30 segundos | WMIRequestTimeout = 30 segundos |
Define o valor de tempo limite para o tempo de inatividade do link para 30 segundos | LinkDownTime = 30 segundos |
Em configurações de cluster, certifique-se de que os nomes dos iniciadores iSCSI sejam exclusivos em todos os nós que compartilham volumes. No Windows, você pode atualizá-los por meio do aplicativo Iniciador iSCSI.
Selecione Iniciar, procure Iniciador iSCSI na caixa de pesquisa. Isso abre o iniciador iSCSI.
Selecione Configuração para ver o nome do iniciador atual.
Para modificá-lo, selecione Alterar, insira o novo nome do iniciador e selecione OK.
Linux
Atualize as seguintes configurações com os valores recomendados no arquivo de configuração iSCSI global (iscsid.conf, geralmente encontrado no diretório /etc/iscsi) no cliente antes de conectar quaisquer volumes a ele. Quando um volume é conectado, um nó é criado junto com um arquivo de configuração específico para esse nó (por exemplo, no Ubuntu, ele pode ser encontrado no diretório /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port) herdando as configurações do arquivo de configuração global. Se você já tiver conectado um ou mais volumes ao cliente antes de atualizar o arquivo de configuração global, atualize o arquivo de configuração específico do nó para cada volume diretamente ou usando o seguinte comando:
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value
Onde
- $volume_iqn: IQN do volume da SAN elástica
- $portal_hostname: nome do host do portal de volume do Elastic SAN
- $port: 3260
- $iscsi_setting_name: parâmetro para cada configuração listada abaixo
- $setting_value: valor recomendado para cada configuração abaixo
Description | Parâmetro e valor |
---|---|
# Defina o máximo de dados que o iniciador envia em uma PDU iSCSI para o destino para 256 KB | node.conn[0].iscsi. MaxXmitDataSegmentLength = 262144 |
# Defina a carga máxima SCSI que o iniciador negocia com o destino para 256 KB | node.session.iscsi.MaxBurstLength = 262144 |
# Definir o máximo de dados não solicitados que o iniciador pode enviar em uma PDU iSCSI para um destino para 256 KB | node.session.iscsi.FirstBurstLength = 262144 |
# Defina o máximo de dados que o iniciador pode receber em uma PDU iSCSI do destino para 256 KB | node.conn[0].iscsi. MaxRecvDataSegmentLength = 262144 |
# Desativar o controle de fluxo R2T | node.session.iscsi.InitialR2T = Não |
# Ativar dados imediatos | node.session.iscsi.ImmediateData = Sim |
# Definir valor de tempo limite para solicitações WMI | nó.conn[0].timeo.login_timeout = 30 nó.conn[0].timeo.logout_timeout = 15 |
# Habilite a verificação de resumo do CRC para cabeçalho e dados | node.conn[0].iscsi. HeaderDigest = CRC32C node.conn[0].iscsi. DataDigest = CRC32C |
Em configurações de cluster, verifique se os nomes dos iniciadores iSCSI são exclusivos em todos os nós que compartilham volumes. No Linux, você pode modificar /etc/iscsi/initiatorname.iscsi para atualizar o nome do iniciador.
Otimizações de SAN elástica
Antes de implantar uma SAN elástica, é necessário determinar o tamanho ideal da SAN elástica implantada para alcançar o equilíbrio certo de desempenho para suas cargas de trabalho e custo. Use as seguintes etapas para determinar o melhor dimensionamento para você:
Com sua solução de armazenamento existente, selecione um intervalo de tempo (dia/semana/trimestre) para acompanhar o desempenho. O melhor intervalo de tempo é aquele que é um bom instantâneo de seus aplicativos/cargas de trabalho. Durante esse período de tempo, registre o IOPS máximo combinado e a taxa de transferência para todas as cargas de trabalho. Se você usar um intervalo superior a um minuto ou se alguma de suas cargas de trabalho tiver gargalos com sua configuração atual, considere adicionar mais capacidade básica à implantação do Elastic SAN. Você deve deixar algum espaço livre ao determinar sua capacidade de base, para levar em conta o crescimento. O restante do armazenamento do Elastic SAN deve usar capacidade adicional para economizar custos.
Para obter mais informações sobre desempenho, consulte SAN elástica e desempenho de máquina virtual.