Migrar para compartilhamentos de arquivos NFS do Azure

✔️ Aplica-se a: Compartilhamentos de arquivos NFS clássicos criados com o provedor de recursos Microsoft.Storage

✖️ Não se aplica a: compartilhamentos de arquivos NFS criados com o provedor de recursos Microsoft.FileShares ou compartilhamentos de arquivos SMB clássicos criados com o provedor de recursos Microsoft.Storage

Este artigo aborda os aspectos básicos da migração de servidores de arquivos Linux para compartilhamentos de arquivos NFS do Azure, que estão disponíveis apenas como compartilhamentos de arquivos SSD (premium). Também compara as ferramentas de cópia de arquivos código aberto fpsync e rsync para ajudar a entender como elas se comportam ao copiar dados para compartilhamentos de arquivos do Azure.

Observação

Os Arquivos do Azure não dão suporte a listas de controle de acesso (ACL) do NFS.

Pré-requisitos

Você precisa de pelo menos um compartilhamento de arquivos NFS Azure montado em uma máquina virtual Linux (VM). Para criar uma, confira Criar um compartilhamento de arquivos clássico do Azure. Monte o compartilhamento usando o nconnect para usar múltiplas conexões TCP e melhor desempenho. Para obter mais informações, consulte Aprimorar o desempenho de compartilhamento de arquivos do Azure NFS.

Ferramentas de migração

Muitas ferramentas estão disponíveis para transferir dados para compartilhamentos de arquivos NFS. No entanto, nem todos eles são eficientes ao lidar com um sistema de arquivos distribuído com considerações de desempenho distintas em comparação com as configurações locais. Em um sistema de arquivos distribuído, cada chamada de rede envolve uma viagem de ida e volta para um servidor que pode não ser local. Portanto, otimizar o tempo gasto em chamadas de rede é crucial para alcançar o desempenho ideal e a transferência eficiente de dados pela rede.

Usar o Migrador de Armazenamento do Azure

Agora você pode usar o Armazenamento do Azure Mover para migrar seus compartilhamentos de arquivos NFSv3 e NFSv4 para compartilhamentos de arquivos do Azure NFSv4.1. O Armazenamento do Azure Mover é um serviço de migração totalmente gerenciado que permite migrar arquivos e pastas locais para o Azure, minimizando o tempo de inatividade.

Uso de fpsync versus rsync

Apesar de ser de thread único, o rsync é uma ferramenta de cópia de arquivo de software livre versátil. Ele pode copiar localmente, para/de outro host em qualquer shell remoto ou para/de um daemon remoto do rsync. Ele oferece muitas opções e permite que a especificação flexível do conjunto de arquivos seja copiada. No entanto, fpsync é um aplicativo de vários threads e, portanto, oferece algumas vantagens, incluindo a capacidade de executar trabalhos rsync em paralelo.

Este artigo explica como usar o fpsync para transferir dados de um servidor de arquivos Linux para compartilhamentos de arquivos do NFS Azure.

Para copiar os dados, o fpsync usa ferramentas rsync (padrão), cpio ou tar. Ele calcula subconjuntos do diretório de origem src_dir/ e gera trabalhos de sincronização para sincronizá-los com o diretório de destino dst_dir/. Ele executa trabalhos de sincronização em tempo real enquanto rastreia simultaneamente o sistema de arquivos, o que o torna uma ferramenta útil para migrar sistemas de arquivos grandes com eficiência e copiar grandes conjuntos de dados com vários arquivos.

Observação

O fpsync sincroniza apenas o conteúdo do diretório, não o próprio diretório de origem. Ao contrário do rsync, o fpsync impõe o "/" final no diretório de origem, o que significa que você não obterá um subdiretório com o nome do diretório de origem no diretório de destino após a sincronização.

Instalar o fpart

Para usar o fpsync, você precisa instalar o particionador do sistema de arquivos fpart. Instale o fpart na distribuição do Linux de sua escolha. Após a instalação, o fpsync aparece em /usr/bin/.

No Ubuntu, use o gerenciador de pacotes apt para instalar o fpart.

sudo apt-get install fpart

Copiar dados da origem para o destino

Certifique-se de que o compartilhamento de arquivos do Azure de destino (alvo) esteja montado em uma VM do Linux. Consulte Pré-requisitos.

Se você estiver fazendo uma migração completa, deverá copiar os seus dados em três fases:

  1. Cópia da linha de base: copie da origem para o destino quando nenhum dado existir no destino. Para cópia de linha de base, recomendamos usar o fpsync com cpio como a ferramenta de cópia.
  2. Cópia incremental: copie apenas as alterações incrementais da origem para o destino. Para sincronização incremental, use fpsync com rsync como ferramenta de cópia. Execute esse comando várias vezes para capturar todas as mudanças.
  3. Passe final: um passe final é necessário para excluir todos os arquivos no destino que não existem na origem.

Copiar dados com fpsync sempre envolve alguma versão deste comando:

fpsync -m <specify copy tool - rsync/cpio/tar> -n <parallel transfers> <absolute source path> <absolute destination path>

Cópia de linha de base

Para cópia de linha de base, use o fpsync com cpio.

fpsync -m cpio -n <parallel transfers> <absolute source path> <absolute destination path>

Para obter mais informações, confira Suporte a cpio e tar.

Cópia incremental

Para sincronização incremental, use fpsync com a ferramenta padrão de cópia (rsync). Execute esse comando várias vezes para capturar todas as mudanças.

fpsync -n <parallel transfers> <absolute source path> <absolute destination path>

Por padrão, fpsync especifica as seguintes rsync opções: -lptgoD -v --numeric-ids. Adicione -o option ao fpsync comando para especificar opções extras rsync .

Passe final

Depois de várias sincronizações incrementais, você precisa fazer uma passagem final para excluir todos os arquivos nesse destino que não existem na origem. Você pode fazer isso manualmente com rsync --delete para excluir arquivos extras do diretório /data/dst/ ou usar o fpsync com a opção -E. Para obter detalhes, confira Passe final.

Comparando rsync e fpsync com conjuntos de dados diferentes

Esta seção compara o desempenho do rsync e do fpsync com conjuntos de dados diferentes.

Conjuntos de dados e configuração

A tabela a seguir lista os diferentes conjuntos de dados usados para comparar o desempenho das ferramentas de cópia sob diferentes cargas de trabalho.

Configuração # Tipo de cópia Contagem de arquivos Contagem de diretórios Tamanho do arquivo Tamanho total
1.1 Cópia de linha de base 1 milhão 1 0-32 KiB 18 GiB
1,2 Incremental (alteração delta) 1 milhão 1 0-32 KiB 18 GiB
2 Cópia de linha de base 191.345 3.906 0-32 KiB 3 GiB
3 Cópia de linha de base 5.000 1 10 MiB 50 GiB

Os testes foram realizados no Azure Standard_D8s_v3 VMs com 8 vCPUs, 32 GiB de memória e mais de 1 TiB de espaço em disco para grandes conjuntos de dados. Para o destino, configuramos compartilhamentos de arquivos NFS do Azure com tamanho provisionado acima de 1 TiB.

Experimentos e resultados: rsync versus fpsync

Testes mostram que o fpsync tem melhor desempenho quando você usa 64 threads com rsync e 16 threads com cpio para um compartilhamento de arquivos NFS do Azure montado com nconnect=8. Os resultados reais variam de acordo com sua configuração e conjuntos de dados.

Observação

A taxa de transferência dos Arquivos do Azure pode ser muito maior do que a representada nos gráficos a seguir. Alguns dos experimentos foram deliberadamente realizados com pequenos conjuntos de dados para simplificar.

Configuração 1

Para um único diretório com 1 milhão de arquivos pequenos, totalizando 18 GiB, fizemos este teste como uma cópia de linha de base e uma cópia incremental.

O gráfico a seguir mostra os resultados de uma cópia base da fonte ao destino.

Gráfico mostrando os resultados do teste da configuração 1 para uma cópia de linha de base.

O gráfico a seguir mostra os resultados de uma cópia incremental (mudança delta).

Gráfico mostrando os resultados do teste da configuração 1 para uma cópia incremental.

Configuração 2

O gráfico a seguir mostra os resultados de uma cópia de referência de 191.345 arquivos pequenos em 3.906 diretórios, com um tamanho total de 3 GiB.

Gráfico que mostra os resultados de teste da configuração 2 para uma cópia de linha de base.

Configuração 3

O gráfico a seguir mostra os resultados de uma cópia básica de 5.000 arquivos grandes (10 MiB) em um único diretório com um tamanho total de 50 GiB.

Gráfico que mostra os resultados de teste da configuração 3 para uma cópia de linha de base.

Resumo dos resultados

O uso de aplicativos com vários threads, como o fpsync, pode melhorar a taxa de transferência e o IOPS ao migrar para compartilhamentos de arquivos NFS do Azure em comparação com ferramentas de cópia de thread único, como o rsync. Nossos testes mostram que:

  • A distribuição de dados no diretório ajuda a paralelizar o processo de migração e, portanto, obtém um melhor desempenho.
  • Copiar dados de tamanhos de arquivo maiores gera melhor desempenho do que copiar dados de tamanhos de arquivo menores.

A tabela a seguir resume os resultados:

Configuração # Contagem de arquivos Contagem de diretórios Tamanho do arquivo Tamanho total Duração do rsync Taxa de transferência do rsync Duração do fpsync Taxa de transferência do fpsync Ganho de taxa de transferência
1.1 (linha de base) 1 milhão 1 0-32 KiB 18 GiB 837,06 minutos 0,33 MiB/s 228,16 minutos 1,20 MiB/s 267%
1,2 (incremental) 1 milhão 1 0-32 KiB 18 GiB 84,02 minutos 3,25 MiB/s 7,5 minutos 36,41 MiB/s 1,020%
2 (linha de base) 191.345 3.906 0-32 KiB 3 GiB 191,86 minutos 0,27 MiB/s 8,47 minutos 6,04 MiB/s 2,164%
3 (linha de base) 5.000 1 10 MiB 50 GiB 8,12 minutos 105,04 MiB/s 2,76 minutos 308,90 MiB/s 194%

Aviso de isenção de responsabilidade de informações de terceiros

As ferramentas de software livre mencionadas neste artigo são soluções de terceiros conhecidas. A Microsoft não desenvolve, possui ou dá suporte a essas ferramentas, nem direta nem indiretamente. Você é responsável por examinar a licença do software e a declaração de suporte fornecida na documentação do terceirizado.

Próximas etapas