O blog da AWS

Atingindo alto throughput com um sistema de arquivos Windows de baixo custo

Conteúdo originalmente escrito por Darryl Osborne , Principal Solutions Architect. Disponível em inglês aqui.

No início deste ano, anunciamos a disponibilidade de uma opção de armazenamento de baixo custo – “New – Low-Cost HDD Storage Option for Amazon FSx for Windows File Server”- oferecendo aos clientes a opção de selecionar o armazenamento em HDD ou Solid State Drive (SSD) ao criar os sistemas de arquivos no Amazon FSx. A opção de armazenamento em HDD foi projetada para um amplo espectro de cargas de trabalho, incluindo diretórios pessoais, compartilhamentos departamentais e sistemas de gerenciamento de conteúdo. Neste post, iremos compartilhar como os sistemas de arquivos HDD oferecem alto desempenho para seus aplicativos baseados em arquivos. Para o stress test, iremos utilizar o DiskSpd, uma ferramenta de desempenho de armazenamento da Microsoft comumente usada para testes sintéticos (atividade simulada), para testar componentes de um servidor de arquivos do Amazon FSx para Windows usando diferentes operações de leitura e gravação.

O Amazon FSx fornece armazenamento de arquivos escalonável, altamente confiável e totalmente gerenciado, acessível através do protocolo SMB (Server Message Block). Ele foi desenvolvido no Microsoft Windows Server, oferecendo uma ampla variedade de recursos administrativos, como desduplicação de dados, restauração de arquivos do usuário final e integração ao Microsoft Active Directory (AD). Oferece opções de implantação em uma única AZ ou multi-AZ, backups totalmente gerenciados e criptografia de dados em repouso e em trânsito. O armazenamento de arquivos do Amazon FSx pode ser acessado nas instâncias e dispositivos de computação do Windows, Linux e MacOS em execução na AWS ou on premises.

Nesta semana, lançamos o suporte para aumentar a capacidade de armazenamento e alterar a capacidade de taxa de transferência dos sistemas de arquivos. Isso permite aumentar dinamicamente a capacidade de armazenamento de um sistema de arquivos à medida que suas necessidades de dados aumentam. Com o novo recurso para alterar a capacidade de taxa de transferência, você pode ajustar dinamicamente a capacidade de taxa de transferência para cargas de trabalho cíclicas ou para rajadas únicas, comuns para migrações que dependem do tempo. Você pode ler mais sobre esses novos recursos no Blog da AWS –  “Amazon FSx for Windows File Server – Storage Size and Throughput Capacity Scaling”.

Componentes de alto throughput

Existem algumas decisões necessárias ao criar um sistema de arquivos com o Amazon FSx. Você deve selecionar o tipo de implantação (Multi-AZ ou Single-AZ), tipo de armazenamento (SSD ou HDD), capacidade de armazenamento (32 a 65.536 GiB para SSD; 2.000 a 65.536 GiB para HDD) e capacidade de taxa de transferência (8, 16, 32, 64, 128, 256, 512, 1024 ou 2048 MB / s). Capacidade de taxa de transferência é o atributo que mais contribui para o desempenho e taxa de transferência atingíveis gerais de um sistema de arquivos. No entanto, existem três componentes de recursos que afetam significativamente a taxa de transferência geral de um sistema de arquivos: taxa de transferência de rede, cache na memória e taxa de transferência de disco. Esses componentes são ilustrados no diagrama a seguir (Figura 1).

Figura 1 – componentes de desempenho de um Amazon FSx para Windows File Server

A seção desempenho do guia do usuário do Amazon FSx possui uma tabela abrangente que mostra o disco, o cache da memória, o IOPS e a taxa de transferência de rede para todas as capacidades de taxa de transferência possíveis. A tabela a seguir (Tabela 1) é um subconjunto dessa tabela, mostrando informações sobre taxa de transferência e cache.

Tabela 1 – Desempenho do Amazon FSx para Windows File Server

Ao selecionar a capacidade de taxa de transferência de um sistema de arquivos, você está selecionando a taxa de transferência de linha de base disponível para esse sistema de arquivos (disk throughput baseline). Normalmente, esse é o componente de desempenho mais lento de um sistema de arquivos. A taxa de transferência em disco intermitente, cache na memória e desempenho de rede do filesystem são funcionalidades que permitem que você possa operar com taxas de transferência substancialmente mais altas do que o throughput de baseline de disco. Isso possibilita uma taxa de transferência real bem superior do que a taxa que você escolheu ao criar o sistema de arquivos.

Vamos ver então como os sistemas de arquivos Amazon FSx fornecem desempenho acima dos níveis de taxa de transferência da linha de base.

Testando

Inicialmente, criamos um sistema de arquivos usando o Amazon FSx com os seguintes atributos (simples, apenas para nossos testes):

Tipo de implantação Single-AZ

Tipo de armazenamento HDD

Capacidade de armazenamento de 5120 GiB

Capacidade de taxa de transferência de 32 MB / s

Figura 2 – Configuração do FSx

Segundo, iremos iniciar uma instância do Amazon EC2 m5n.8xlarge usando a mais recente Amazon Machine Image (AMI) do Windows Server 2019. Selecionamos este tipo de instância intencionalmente  por causa de seu desempenho de rede não variável para garantir que o desempenho do EC2 não seja um fator limitante. Ou seja, precisamos de desempenho consistente da rede do Amazon EC2 para o sistema de arquivos.

Terceiro, iremos instalar a última versão do DiskSpd.

Figura 3 – Instalando DiskSpd

# install DiskSpd (windows)
$path = "C:\Tools\DiskSpd-2.0.21a"
$url = "https://gallery.technet.microsoft.com/DiskSpd-A-Robust-Storage-6ef84e62/file/199535/2/DiskSpd-2.0.21a.zip"
$destination = "C:\Tools\DiskSpd-2.0.21a.zip"
$download = New-Object -Typename System.Net.WebClient
New-Item -Type Directory -Path $path
$download.DownloadFile($url,$destination)
$extract = New-Object -ComObject Shell.Application
$files = $extract.Namespace($destination).Items()
$extract.NameSpace($path).CopyHere($files)

Agora, iremos criar um arquivo de 8 GiB e usar o DiskSpd para gravar continuamente neste arquivo por 15 minutos. Para isso, iremos ignorar o cache local no cliente usando a opção “-Sr”, use apenas 1 thread e use um tamanho de bloco de 1 MB.

Figuras 4&5 – Iniciando o teste de burst

$random = $(Get-Random)
fsutil file createnew \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat 8589934592
C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d900 -s1M -w100 -t1 -o32 -b1M -Sr -L \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat

Durante este teste, iremos abrir o Gerenciador de tarefas e monitorar o tráfego de rede de saída da instância do EC2. Ocasionalmente, o teste de gravação atinge uma taxa de transferência de pico de 400 MB / s várias vezes, com uma taxa de transferência de 287,5 MB / s entre os picos. Esse padrão é muito consistente durante todo o teste. Veja a seguinte captura de tela do Gerenciador de tarefas (Figura 2).

Figura 6 – Taxa de transferência da rede do cliente EC2 mostrando a taxa de transferência burst de um teste de gravação

 

Nos resultados do DiskSpd, temos 258MiB/s de escrita:

Figura 7 – Resultado de escrita (258MB /s).

O sistema de arquivos é capaz de efetuar burst por mais tempo que o nosso teste de 15 minutos, por isso iremos prolongar a duração do teste de gravação para que ela consuma toda a capacidade de burst. Quando ocorre uma queda significativa da taxa de transferência, sabemos que a capacidade de intermitência está esgotada e encerramos o teste para o próximo teste – um teste de gravação da taxa de transferência de baseline.

Para isso, altero meu script de d900 para d90000

C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d90000 -s1M -w100 -t1 -o32 -b1M -Sr -L \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat

Agora que a capacidade de burst do sistema de arquivos foi consumida, iremos executar o mesmo script DiskSpd novamente – agora testando a taxa de transferência de gravação de baseline.

A captura de tela a seguir (Figura 3) do Gerenciador de tarefas mostra o tráfego de rede de saída da instância do EC2. Durante o teste da linha de base de gravação, vemos a instância obtendo uma taxa de transferência de 32 MB / s no sistema de arquivos (que também confirma os 32MB que configuramos este FSx).

Figura 8 – Taxa de transferência da rede do cliente EC2 mostrando a taxa de transferência de baseline de um teste de gravação

Figura 9 – Resultado de escrita (29.43MB /s).

Agora iremos esperar algum tempo até que os créditos de burst sejam repostos antes de iniciar o próximo teste. Desta vez, iremos testar apenas o desempenho da rede do sistema de arquivos para criar um arquivo de 2 GB que possa residir totalmente no cache da memória. Iremos executar um comando DiskSpd que lê o arquivo continuamente por 15 minutos. Este comando, como os outros, usa a opção -Sr para ignorar o cache local da instância do EC2.

Isso significa que todas as minhas solicitações de IO são provenientes da rede a partir do cache da memória do sistema de arquivos e não do disco.

$random = $(Get-Random)
fsutil file createnew \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat 2000000000
C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d900 -s1M -r100 -t1 -o32 -b1M -Sr -L \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat

Mais uma vez, iremos abrir o Gerenciador de tarefas para monitorar o tráfego de rede de saída da instância do EC2, conforme a leitura ocorre no FSx. Existe uma taxa de transferência consistente de 5,0 Gbps ou aprox 600MBs enquanto a leitura ocorre no sistema de arquivos:

Figura 10 – Leitura consistente de 568MB.

Algumas cargas de trabalho podem ser muito maiores que a memória designada para armazenamento em cache. No entanto, a parte do conjunto de trabalho ativo da sua carga de trabalho deve poder aproveitar esse cache na memória e a alta taxa de transferência de rede variável desses sistemas de arquivos.

 

Ferramentas de teste como o DiskSpd são úteis se estiverem configuradas para imitar os padrões de IO do mundo real. Ao conversar com os clientes, enfatizamos a importância de testar suas cargas de trabalho reais no sistema de arquivos. Para os testes finais, iremos baixar uma coleção de conjuntos de dados de ciências da Terra mantidos pela NASA, disponíveis como parte do Registro de dados abertos na AWS.

Dentro desse conjunto de dados, existem algumas transformações cartográficas inversas dos arquivos NDVI globais do GIMMS AVHRR. Iremos zipar e descompactar um subconjunto deste conjunto de dados, cerca de 757 arquivos .n07-V13g das décadas de 1980, 1990, 2000 e 2010, totalizando 13,1 GB. Para isso, utilizaremos o WinRAR e quatro threads em paralelo para compactar o conjunto de dados para 2,29 GB no sistema de arquivos Amazon FSx. Esse zip levou 99 segundos para ser concluído. A captura de tela do Gerenciador de tarefas mostra a taxa de transferência de leitura durante a compressão (237.5 MB/s).

O teste final é descompactar o arquivo compactado em uma nova pasta no sistema de arquivos Amazon FSx. A Figura a seguir mostra uma captura de tela do Gerenciador de tarefas durante a mesma operação de descompactação, com a taxa de transferência de gravação atingindo 187,5 MB/s. A descompactação foi concluída em 73 segundos.

O  sistema de arquivos utilizado nestes ultimos testes (unzip) está na região oeste dos EUA (Oregon) e é um sistema de arquivos Amazon FSx multi-AZ HDD 5120 GiB de 32 MBs.

Atingimos 625 MBps durante o teste de leitura de cache na memória, burst de 400 MBps durante o teste de gravação e 32 MBps de gravação baseline. Esse servidor de arquivos foi executado por 2 horas e custou apenas US$ 0,742, o que equivale a US$ 270,72 por mês (excluindo backups).

Por esse valor, obtivemos:

  • Armazenamento de arquivos do Windows com alto desempenho, gerenciado e altamente disponível;
  • Funcionalidade total de failover entre duas zonas de disponibilidade;
  • Dados replicados dentro de cada zona de disponibilidade para alta durabilidade;
  • Criptografia de dados em repouso e em trânsito;
  • Deduplicação de dados, volume shadow copy (instantâneos);
  •  Conformidade com vários programas de conformidade, como PCI DSS, ISO (9001, 27001, 27017 e 27018), SOC (1, 2 e 3) e GDPR;
  • Um sistema de arquivos elegível para HIPAA.

As cargas de trabalho baseadas em arquivo geralmente têm uma pequena parte do conjunto de dados geral que é utilizada ativamente em um determinado momento. Essas cargas de trabalho se beneficiarão do cache na memória e da alta taxa de transferência de rede variável do Amazon FSx para Windows File Server. Além disso, essas cargas de trabalho tipicamente utilizam “spikes”, ou altos níveis de taxa de transferência por curtos períodos, porém gerando níveis mais baixos de taxa de transferência por períodos mais longos.

Como os resultados mostram, mesmo os sistemas de arquivos HDD de baixo custo são capazes de atingir altos níveis de taxa de transferência, mesmo acima da taxa de transferência de baseline (nós documentamos os níveis de rede com base no cache e nos níveis de burst) desses sistemas de arquivos.

Para saber mais sobre os sistemas de arquivos HDD do Amazon FSx para Windows File Server, visite o nosso site e o guia do usuário do Amazon FSx para Windows File Server.

Leitura recomendada –

Amazon FSx for Windows File Server, Capítulo 1 – Criando e configurando

Amazon FSx for Windows File Server, Capítulo 2 – Mais funcionalidades: Shadow Copy, DFS Namespace, Data Deduplication e Quotas

Amazon FSx for Windows File Server, Capítulo 3 – Mapeando o FSx para servidores Linux

Amazon FSx for Windows File Server, Capítulo 4 – Migrando dados com o AWS DataSync (Cenário de Multi-Região)


Sobre o autor

Caio Ribeiro Cesar atualmente trabalha como arquiteto de soluções especializadas em tecnologia da Microsoft na nuvem AWS. Ele iniciou sua carreira profissional como administrador de sistemas, que continuou por mais de 13 anos em áreas como Segurança da Informação, Identity Online e Plataformas de Email Corporativo. Recentemente, se tornou fã da computação em nuvem da AWS e auxilia os clientes a utilizar o poder da tecnologia da Microsoft na AWS.