Partilhar via


Considerações de desempenho do datastore da Solução VMware do Azure para Azure NetApp Files

Este artigo fornece considerações de desempenho para o design e o dimensionamento do armazenamento de dados da Solução VMware do Azure quando usado com os Arquivos NetApp do Azure. Este conteúdo é aplicável a um administrador de virtualização, arquiteto de nuvem ou arquiteto de armazenamento.

As considerações descritas neste artigo ajudam você a alcançar os mais altos níveis de desempenho de seus aplicativos com eficiência de custos otimizada.

O Azure NetApp Files fornece um serviço de armazenamento instantaneamente escalável, de alto desempenho e altamente confiável para a Solução VMware do Azure. Os testes incluíram várias configurações diferentes entre a Solução VMware do Azure e os Arquivos NetApp do Azure. Os testes foram capazes de gerar mais de 10.500 MiB/s e mais de 585.000 operações de entrada/saída por segundo (IOPS) com apenas quatro hosts Azure VMware Solution/ESXi e um único pool de capacidade do Azure NetApp Files.

Obtendo maior desempenho de armazenamento para a Solução VMware do Azure usando Arquivos NetApp do Azure

O provisionamento de vários armazenamentos de dados, potencialmente maiores, em um nível de serviço pode custar menos e, ao mesmo tempo, oferecer maior desempenho. O motivo é devido à distribuição de carga através de vários fluxos TCP de hospedeiros da Solução VMware do Azure para vários datastores. Você pode usar o armazenamento de dados do Azure NetApp Files para o Azure VMware Solution TCO Estimator para calcular possíveis economias de custos carregando um relatório RVTools ou inserindo o dimensionamento médio manual da VM.

Quando você determina como configurar armazenamentos de dados, a solução mais fácil de uma perspetiva de gerenciamento é criar um único armazenamento de dados do Azure NetApp Files, montá-lo e colocar todas as suas VMs. Essa estratégia funciona bem para muitas situações, até que mais taxa de transferência ou IOPS sejam necessárias. Para identificar os diferentes limites, os testes usaram um gerador de carga de trabalho sintética, o programa fio , para avaliar uma gama de cargas de trabalho para cada um desses cenários. Essa análise pode ajudá-lo a determinar como provisionar os volumes do Azure NetApp Files como armazenamentos de dados para maximizar o desempenho e otimizar os custos.

Antes de começar

Para obter dados de desempenho dos Arquivos NetApp do Azure, consulte:

Metodologia de ensaio

Esta secção descreve a metodologia utilizada para os testes.

Cenários de teste e iterações

Este teste segue a metodologia dos "quatro cantos", que inclui operações de leitura e de escrita para cada entrada/saída (IO) sequencial e aleatória. As variáveis dos testes incluem hosts one-to-many do Azure VMware Solution, armazenamentos de dados do Azure NetApp Files, VMs (por host) e discos de VM (VMDKs) por VM. Os seguintes pontos de dados de dimensionamento foram selecionados para encontrar a taxa de transferência máxima e IOPS para os cenários determinados:

  • Escalonamento de VMDKs, cada um em seu próprio datastore para uma única VM.
  • Dimensionamento do número de VMs por host em um único armazenamento de dados do Azure NetApp Files.
  • Dimensionamento do número de hosts da Solução VMware do Azure, cada um com uma VM compartilhando um único armazenamento de dados do Azure NetApp Files.
  • Dimensionamento do número de armazenamentos de dados do Azure NetApp Files, cada um com um VMDK distribuído igualmente pelos hosts da Azure VMware Solution.

O teste das operações de blocos pequenos e grandes, juntamente com a iteração através de cargas de trabalho sequenciais e aleatórias, garante o teste de todos os componentes nas pilhas de computação, armazenamento e rede até à "periferia". Para cobrir as quatro extremidades com blocos de tamanhos variados e aleatoriedade, utilizam-se as seguintes combinações comuns:

  • Testes sequenciais de 64 KB
    • Grandes cargas de trabalho de streaming de arquivos envolvem geralmente leitura e escrita em tamanhos de blocos grandes, além de corresponderem aos tamanhos de extensão padrão do MSSQL.
    • Os testes de blocos grandes normalmente produzem a taxa de transferência mais alta (em MiB/s).
  • Testes aleatórios de 8 KB
    • Essa configuração é o tamanho de bloco comumente usado para software de banco de dados, incluindo software da Microsoft, Oracle e PostgreSQL.
    • Os testes de blocos pequenos normalmente produzem o maior número de IOPS.

Observação

Este artigo aborda exclusivamente o teste dos Arquivos NetApp Azure. Ele não cobre o armazenamento vSAN incluído na solução VMware do Azure.

Detalhes do ambiente

Os resultados neste artigo foram obtidos usando a seguinte configuração de ambiente:

  • Hosts da solução VMware do Azure:
    • Tamanho: AV36
    • Contagem de anfitriões: 4
    • VMware ESXi versão 7u3
  • Conectividade da solução Azure VMware em nuvem privada: gateway UltraPerformance com FastPath
  • Máquinas Virtuais convidadas:
    • Sistema operacional: Ubuntu 20.04
    • CPUs/Memória: 16 vCPU / 64 GB de memória
    • Controlador Virtual LSI SAS SCSI com disco de SO de 16 GB no armazenamento de dados vSAN da Solução VMware do Azure
    • Controlador SCSI paravirtual para VMDKs de teste
    • Configurações de LVM/disco:
      • Um volume físico por disco
      • Um grupo de volumes por volume físico
      • Uma partição lógica por grupo de volumes
      • Um sistema de arquivos XFS por partição lógica
  • Azure VMware Solution para o protocolo Azure NetApp Files: NFS versão 3
  • Gerador de carga de trabalho: fio versão 3.16
  • Scripts de fio: fio-parser

Resultados do teste

Esta seção descreve os resultados dos testes realizados.

Single-VM escalonamento

Quando configurar o armazenamento apresentado pelo datastore numa máquina virtual da Azure VMware Solution, deve considerar-se o impacto da estrutura do sistema de ficheiros. A configuração de vários VMDKs espalhados por vários armazenamentos de dados fornece as maiores quantidades de largura de banda disponíveis. A configuração de VMDKs one-to-many colocados em um único datastore garante a maior simplicidade no que diz respeito a backups e operações de recuperação de desastres (DR), mas ao custo de um limite de desempenho mais baixo. Os dados empíricos fornecidos neste artigo ajudam-no nas decisões.

Para maximizar o desempenho, é comum dimensionar uma única VM em vários VMDKs e colocar esses VMDKs em vários armazenamentos de dados. Uma única VM com apenas um ou dois VMDKs pode ser limitada por um armazenamento de dados NFS à medida que é montada por meio de uma única conexão TCP com um determinado host da Solução VMware do Azure.

Por exemplo, os engenheiros geralmente provisionam um VMDK para um log de base de dados e depois provisionam vários VMDKs para os arquivos de base de dados. Com vários VMDKs, há duas opções. A primeira opção é usar cada VDMK como um sistema de arquivos individual. A segunda opção consiste em usar um utilitário de gestão de armazenamento, como LVM, Filegroups do MSSQL ou Oracle ASM, para equilibrar a E/S através da distribuição pelos VMDKs. Quando VMDKs são usados como sistemas de arquivos individuais, distribuir cargas de trabalho em vários armazenamentos de dados é um esforço manual e pode ser complicado. O uso de utilitários de gerenciamento de armazenamento para distribuir os arquivos entre VMDKs permite a escalabilidade da carga de trabalho.

Caso você distribua volumes uniformemente em vários discos, assegure que o software de backup ou de recuperação de desastres suporte o backup simultâneo de vários discos virtuais. Como as gravações individuais são distribuídas em vários discos, o sistema de arquivos precisa garantir que os discos sejam "congelados" durante as operações de snapshot ou backup. A maioria dos sistemas de arquivos modernos incluem uma operação de congelamento ou instantâneo, como xfs (xfs_freeze) e NTFS (cópias de sombra de volume), que o software de backup pode aproveitar.

Para entender o quão bem uma única VM do Azure VMware Solution é dimensionada à medida que mais discos virtuais são adicionados, os testes foram realizados com um, dois, quatro e oito armazenamentos de dados (cada um contendo um único VMDK). O diagrama a seguir mostra um único disco com uma média em torno de 73.040 IOPS (variando de 100% gravações / 0% leituras, para 0% gravações / 100% leituras). Quando este teste foi aumentado para dois drives, o desempenho aumentou em 75,8% para 128.420 IOPS. O aumento para quatro drives começou a mostrar resultados decrescentes em relação ao que uma única VM, dimensionada como foi testada, conseguia gerar. O pico de IOPS observado foi de 147.000 IOPS com 100% leituras aleatórias.

Diagrama que mostra o dimensionamento de uma única VM para vários armazenamentos de dados.

Dimensionamento de host único – armazenamento de dados único

Ele é mal dimensionado para aumentar o número de VMs que direcionam a E/S para um único armazenamento de dados a partir de um único host. Este facto deve-se ao fluxo único da rede. Quando o desempenho máximo é atingido para uma determinada carga de trabalho, geralmente isso ocorre devido à utilização de uma única fila ao longo do caminho até ao único armazenamento de dados NFS do host através de uma única conexão TCP. Usando um tamanho de bloco de 8 KB, o total de IOPS aumentou entre 3% e 16% ao dimensionar de uma VM com um único VMDK para quatro VMs com 16 VMDKs totais (quatro por VM, todos em um único armazenamento de dados).

O aumento do tamanho do bloco (para 64 KB) para cargas de trabalho de bloco grandes teve resultados comparáveis, atingindo um pico de 2148 MiB/s (VM única, VMDK única) e 2138 MiB/s (4 VMs, 16 VMDKs).

Diagrama que mostra o dimensionamento de VMs em um único host de armazenamento de dados.

Dimensionamento de host único – Vários armazenamentos de dados

A partir do contexto de um único host da Solução VMware do Azure, enquanto um único armazenamento de dados permitia que as VMs gerassem cerca de 76.000 IOPS, a distribuição das cargas de trabalho por dois armazenamentos de dados aumentou a taxa de transferência total em 76% em média. Passar de dois para quatro datastores resultou num aumento de 163% (comparado a um datastore, um aumento de 49% de dois para quatro), conforme mostrado no diagrama a seguir. Apesar de ainda haver ganhos de desempenho, aumentar além de oito datastores resultou em retornos cada vez menores.

Diagrama que mostra o dimensionamento de VMs em um único host de armazenamento de dados com quatro VMs.

Dimensionamento de vários hosts – armazenamento de dados único

Um único armazenamento de dados de um único host produziu mais de 2000 MiB/s de taxa de transferência sequencial de 64 KB. Distribuir a mesma carga de trabalho em todos os quatro hosts produziu um ganho de pico de 135% gerando mais de 5000 MiB/s. Esse resultado provavelmente representa o teto superior de um único desempenho de taxa de transferência de volume do Azure NetApp Files.

Diagrama que mostra o dimensionamento da taxa de transferência em um único volume de Arquivos NetApp do Azure.

Diminuir o tamanho do bloco de 64 KB para 8 KB e executar novamente as mesmas iterações resultou em quatro VMs produzindo 195.000 IOPS, conforme mostrado no diagrama a seguir. O desempenho é dimensionado à medida que o número de hosts e o número de armazenamentos de dados aumentam, porque o número de fluxos de rede aumenta. O desempenho aumenta ao dimensionar o número de hosts multiplicado pelo número de datastores, porque a contagem de fluxos de rede é proporcional ao produto dos hosts pelo número de datastores.

Fórmula que mostra o cálculo dos fluxos totais de rede.

Diagrama que mostra o dimensionamento de IOPS em um único armazenamento de dados do Azure NetApp Files.

Dimensionamento de vários hosts – Vários armazenamentos de dados

Um único datastore com quatro VMs distribuídas por quatro hosts produziu mais de 5000 MiB/s de IO sequencial de 64 KB. Para cargas de trabalho mais exigentes, cada VM é movida para um armazenamento de dados dedicado, produzindo mais de 10.500 MiB/s no total, conforme mostrado no diagrama a seguir.

Diagrama que mostra o dimensionamento de armazenamentos de dados em quatro hosts.

Para cargas de trabalho aleatórias de blocos pequenos, um único armazenamento de dados produziu 195.000 IOPS aleatórias de 8 KB. O dimensionamento para quatro datastores produziu mais de 530.000 operações aleatórias de 8K IOPS.

Diagrama que mostra o dimensionamento de armazenamentos de dados em quatro hosts com tamanho de bloco de 8k.

Implicações e recomendações

Esta seção discute por que espalhar suas VMs em vários armazenamentos de dados tem benefícios substanciais de desempenho.

Conforme mostrado nos resultados do teste, os recursos de desempenho dos Arquivos NetApp do Azure são abundantes:

  • Os testes mostram que uma datastore pode gerar uma média de ~148,980 IOPS de 8 KB ou ~4147 MiB/s utilizando IOPS de 64 KB (média de todos os testes de gravação%/leitura%) a partir de uma configuração de quatro hosts.
  • Uma VM em um armazenamento de dados –
    • Se você tiver VMs individuais que podem precisar de mais de ~75K IOPS de 8 KB ou mais de ~1700 MiB/s, espalhe os sistemas de arquivos por várias VMDKs para dimensionar o desempenho de armazenamento das VMs.
  • Uma VM em vários armazenamentos de dados – Uma única VM em 8 armazenamentos de dados alcançou até ~147.000 IOPS de 8 KB ou ~2786 MiB/s com um tamanho de bloco de 64 KB.
  • Um host - Cada host foi capaz de suportar uma média de ~198.060 IOPS de 8 KB ou ~2351 MiB/s se você usar pelo menos 4 VMs por host com pelo menos 4 armazenamentos de dados do Azure NetApp Files. Assim, você tem a opção de equilibrar a disponibilização suficiente de armazenamentos de dados para um desempenho máximo, com picos potenciais, versus a complexidade do gerenciamento e os custos.

Recomendações

Quando os recursos de desempenho de um único armazenamento de dados forem insuficientes, espalhe suas VMs por vários armazenamentos de dados para dimensionar ainda mais. A simplicidade geralmente é a melhor, mas o desempenho e a escalabilidade podem justificar a complexidade adicional, mas limitada.

Quatro datastores do Azure NetApp Files fornecem até 10 GB/s de largura de banda utilizável para grandes E/S sequenciais ou capacidade de processar até 500K IOPS aleatórias de 8K. Embora um armazenamento de dados possa ser suficiente para muitas necessidades de desempenho, para obter o melhor desempenho, comece com um mínimo de quatro armazenamentos de dados.

Para ajuste granular de desempenho, os sistemas operacionais convidados Windows e Linux permitem a distribuição em vários discos. Como tal, você deve distribuir sistemas de arquivos em vários VMDKs espalhados por vários armazenamentos de dados. No entanto, se a consistência do instantâneo da aplicação for um problema e não puder ser superada com LVM ou espaços de armazenamento, considere montar ficheiros NetApp do Azure a partir do sistema operativo hóspede ou investigue o dimensionamento a nível de aplicação, para o qual a Azure tem muitas opções excelentes.

Caso você distribua volumes uniformemente em vários discos, assegure que o software de backup ou de recuperação de desastres suporte o backup simultâneo de vários discos virtuais. Como as gravações individuais são distribuídas em vários discos, o sistema de arquivos precisa garantir que os discos sejam "congelados" durante as operações de snapshot ou backup. A maioria dos sistemas de arquivos modernos incluem uma operação de congelamento ou instantâneo, como xfs (xfs_freeze) e NTFS (cópias de sombra de volume), que o software de backup pode aproveitar.

Como os Arquivos NetApp do Azure cobram pela capacidade provisionada no pool de capacidade em vez da capacidade alocada (armazenamentos de dados), você pagará, por exemplo, o mesmo para armazenamentos de dados de 4x20TB ou 20x4TB. Se precisar, você pode ajustar a capacidade e o desempenho de armazenamentos de dados sob demanda, dinamicamente por meio da API/console do Azure.

Por exemplo, ao se aproximar do final de um ano fiscal, você descobre que precisa de mais desempenho de armazenamento no armazenamento de dados padrão. Você pode aumentar o nível de serviço dos armazenamentos de dados por um mês para permitir que todas as VMs nesses armazenamentos de dados tenham mais desempenho disponível para eles, mantendo outros armazenamentos de dados em um nível de serviço mais baixo. Você não só economiza custos, mas ganha mais desempenho ao ter cargas de trabalho espalhadas entre mais conexões TCP entre cada armazenamento de dados para cada host AVS.

Você pode monitorar suas métricas de armazenamento de dados por meio do vCenter Server ou por meio da API/Console do Azure. No vCenter Server, você pode monitorizar a média agregada de operações de entrada/saída por segundo (IOPS) de um armazenamento de dados nos Gráficos de Desempenho/Avançados, desde que ative a recolha das Métricas de Controlo de IO de Armazenamento no armazenamento de dados. A API e o console do Azure apresentam métricas para WriteIops, ReadIops, ReadThroughpute , entre WriteThroughputoutras, para medir suas cargas de trabalho no nível do armazenamento de dados. Com as métricas do Azure, você pode definir regras de alerta com ações para redimensionar automaticamente um armazenamento de dados por meio de uma função do Azure, um webhook ou outras ações.

Próximos passos