Otimizar o desempenho do seu Elastic SAN
Este artigo fornece algumas diretrizes gerais sobre como obter um desempenho ideal com um ambiente que usa uma Elastic SAN do Azure.
Otimizações do lado do cliente
Recomendações gerais (Windows e Máquinas Virtuais do Linux)
Para obter o melhor desempenho, implante suas VMs e a Elastic SAN na mesma zona e na mesma região.
A E/S de armazenamento de VM para volumes de Elastic SAN usa largura de banda de rede de VM, portanto, os limites de taxa de transferência de disco tradicionais em uma VM não se aplicam a volumes de Elastic SAN. Escolha uma VM que possa fornecer largura de banda suficiente para produção/E/S de VM para VM e E/S iSCSI para volumes de Elastic SAN anexados. Em geral, você deve usar VMs Gen 5 (série D/E/M) para obter o melhor desempenho.
Habilite a "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 MPIO (E/S Multipath) 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 de software do 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 relativas aos cmdlets de MPIO, confira a referência de 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 abaixo do Registro 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.
Descrição | Parâmetro e valor |
---|---|
Define o máximo de dados que o iniciador envia em uma PDU iSCSI para o destino para 256 KB | MaxTransferLength=262144 |
Define o conteúdo máximo de 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 de 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 | InitialR2T=0 |
Habilita dados imediatos | ImmediateData=1 |
Define o valor do tempo limite para solicitações WMI como 30 segundos | WMIRequestTimeout = 30 segundos |
Define o valor do tempo limite para o tempo de inatividade de link como 30 segundos | LinkDownTime = 30 segundos |
Nas configurações de cluster, verifique se os nomes do iniciador iSCSI são exclusivos em todos os nós que estão compartilhando volumes. No Windows, você pode atualizá-los por meio do aplicativo iniciador iSCSI.
Selecione Iniciar, pesquise o 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 configurações a seguir com valores recomendados no arquivo de configuração iSCSI global (iscsid.conf, geralmente encontrado no diretório /etc/iscsi) no cliente antes de conectar qualquer volume 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 em /etc/iscsi/nós/$volume_iqn/portal_hostname,$port diretório) 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
Where
- $volume_iqn: IQN do volume de Elastic SAN
- $portal_hostname: nome do host do portal de volume de Elastic SAN
- $port: 3260
- $iscsi_setting_name: parâmetro para cada configuração listada abaixo
- $setting_value: valor recomendado para cada configuração abaixo
Descrição | Parâmetro e valor |
---|---|
# Defina os dados máximos que o iniciador envia em uma PDU iSCSI para o destino para 256 KB | node.conn[0].iscsi. MaxXmitDataSegmentLength = 262144 |
# Defina o conteúdo máximo de SCSI que o iniciador negocia com o destino como 256 KB | node.session.iscsi.MaxBurstLength = 262144 |
# Defina o máximo de dados não solicitados que o iniciador pode enviar em uma PDU iSCSI para um destino de 256 KB | node.session.iscsi.FirstBurstLength = 262144 |
# Defina os dados máximos que o iniciador pode receber em uma PDU iSCSI do destino para 256 KB | node.conn[0].iscsi. MaxRecvDataSegmentLength = 262144 |
# Desabilitar controle de fluxo R2T | node.session.iscsi.InitialR2T = No |
# Habilitar dados imediatos | node.session.iscsi.ImmediateData = Yes |
# Definir o valor do tempo limite para solicitações WMI | node.conn[0].timeo.login_timeout = 30 node.conn[0].timeo.logout_timeout = 15 |
# Habilitar a verificação de resumo do CRC para dados e cabeçalho | node.conn[0].iscsi. HeaderDigest = CRC32C node.conn[0].iscsi. DataDigest = CRC32C |
Nas configurações de cluster, verifique se os nomes do iniciador iSCSI são exclusivos em todos os nós que estão compartilhando volumes. No Linux, você pode modificar /etc/iscsi/initiatorname.iscsi para atualizar o nome do iniciador.
Otimizações do Elastic SAN
Antes de implantar uma Elastic SAN, determinar o tamanho ideal da Elastic SAN implantada é necessário 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 a 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 maior que um minuto ou se qualquer uma de suas cargas de trabalho tiver gargalos com sua configuração atual, considere adicionar mais capacidade base à sua implantação do Elastic SAN. Você deve deixar algum espaço na cabeça ao determinar sua capacidade base, para considerar o crescimento. O restante do armazenamento da Elastic SAN deve usar capacidade adicional para economizar em custos.
Para obter mais informações sobre desempenho, confira Desempenho do Elastic SAN e da máquina virtual.