Migrar para compartilhamentos de arquivos do Azure NFS

✔️ Aplica-se a: Partilhas de ficheiros NFS clássicos criadas com o fornecedor de recursos Microsoft.Storage

✖️ Não se aplica a: partilhas de ficheiros NFS criadas com o fornecedor de recursos Microsoft.FileShares ou partilhas de ficheiros SMB clássicas criadas com o fornecedor de recursos Microsoft.Storage

Este artigo aborda os aspetos básicos da migração de servidores de ficheiros Linux para partilhas de ficheiros NFS Azure, que estão disponíveis apenas como partilhas de ficheiros SSD (premium). Também compara as ferramentas open source de copiar ficheiros fpsync e rsync para te ajudar a perceber como se comportam ao copiar dados para partilhas de ficheiros no Azure.

Observação

O Ficheiros do Azure não oferece suporte a ACLs (listas de controle de acesso) NFS.

Pré-requisitos

Precisas de pelo menos uma partilha de ficheiros NFS Azure montada numa máquina virtual Linux (VM). Para criar um, consulte Criar um compartilhamento de arquivos clássico do Azure. Monta a partilha usando o nconnect para usar múltiplas ligações TCP e melhor desempenho. Para obter mais informações, consulte Melhorar o desempenho do 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 a 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 Armazenamento do Azure Mover

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 enquanto minimiza o tempo de inatividade.

Usando fpsync vs. rsync

Apesar de ser single-threaded, o rsync é uma ferramenta versátil de cópia de arquivos de código aberto. Ele pode copiar localmente, de/para outro host em qualquer shell remoto ou de/para um daemon rsync remoto. Ele oferece muitas opções e permite a especificação flexível do conjunto de arquivos a serem copiados. No entanto, o fpsync é um aplicativo multithreaded 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 ficheiros Linux para partilhas de ficheiros do NFS Azure.

Para copiar os dados, o fpsync usa as ferramentas rsync (padrão), cpio ou tar. Ele calcula subconjuntos do diretório src_dir/ de origem e gera trabalhos de sincronização para sincronizá-los com o diretório dst_dir/de destino. Ele executa trabalhos de sincronização em tempo real enquanto rastreia simultaneamente o sistema de arquivos, tornando-se uma ferramenta útil para migrar eficientemente grandes sistemas de arquivos 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 diretório de origem em si. 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 fpart

Para usar o fpsync, precisas de instalar o particionador do sistema de ficheiros fpart. Instale o fpart na distribuição 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

Verifique se o compartilhamento de arquivos do Azure de destino (destino) está montado em uma VM Linux. Veja Pré-requisitos.

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

  1. Cópia da linha de base: Copie da origem para o destino quando não existirem dados no destino. Para cópia inicial, recomendamos usar o fpsync com o cpio como ferramenta de cópia.
  2. Cópia incremental: Copie apenas as alterações incrementais da origem para o destino. Para sincronização incremental, usa fpsync o with rsync como ferramenta de cópia. Execute este comando várias vezes para captar todas as alterações.
  3. Passe final: Uma passagem final é necessária 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>

Versão de referência

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

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

Para obter mais informações, consulte Suporte do Cpio e Tar.

Cópia incremental

Para sincronização incremental, use fpsync com a ferramenta de cópia padrão (rsync). Execute este comando várias vezes para captar todas as alterações.

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

Por defeito, fpsync especifica as seguintes rsync opções: -lptgoD -v --numeric-ids. Adicione -o option ao fpsync comando para especificar opções extra 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 /data/dst/ diretório ou pode usar fpsync com a opção -E. Para obter detalhes, consulte O Passe Final.

Comparando rsync e fpsync com diferentes conjuntos de dados

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

Conjuntos de dados e configuração

A tabela seguinte 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 ficheiros Contagem de diretórios Tamanho do ficheiro Tamanho total
1.1 Versão de referência 1 milhão 1 0-32 KiB 18 GiB
1.2 Incremental (variação delta) 1 milhão 1 0-32 KiB 18 GiB
2 Versão de referência 191,345 3,906 0-32 KiB 3 GiB
3 Versão de referência 5.000 1 10 MiB 50 GiB

Os testes foram realizados em VMs do Azure Standard_D8s_v3 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 do Azure NFS com mais de 1 TiB de tamanho provisionado.

Experiências e resultados: rsync vs. fpsync

Testes mostram que o fpsync tem melhor desempenho quando se usam 64 threads com rsync e 16 threads com cpio para uma partilha de ficheiros NFS do Azure montada com nconnect=8. Os resultados reais variam consoante a 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. Algumas das experiências foram deliberadamente conduzidas 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, executamos este teste como uma cópia de linha de base e cópia incremental.

O gráfico seguinte mostra os resultados de uma cópia de referência desde a origem até ao destino.

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

O gráfico seguinte mostra os resultados de uma cópia incremental (variação delta).

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

Configuração 2

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

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

Configuração 3

O gráfico seguinte mostra os resultados de uma cópia de referência de 5.000 ficheiros grandes (10 MiB) num único diretório com um tamanho total de 50 GiB.

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

Resumo dos resultados

O uso de aplicativos multi-threaded como fpsync pode melhorar a taxa de transferência e IOPS ao migrar para compartilhamentos de arquivos do Azure NFS em comparação com ferramentas de cópia de thread único como rsync. Os nossos testes mostram que:

  • A distribuição de dados pelo diretório ajuda a paralelizar o processo de migração e, assim, alcança um melhor desempenho.
  • Copiar dados de tamanhos de arquivo maiores produz melhor desempenho do que copiar dados de tamanhos de arquivo menores.

A tabela a seguir resume os resultados:

Configuração # Contagem de ficheiros Contagem de diretórios Tamanho do ficheiro Tamanho total Duração do rsync Rsync taxa de transferência Duração do FPSYNC Taxa de transferência do fpsync Ganho de taxa de transferência
1.1 (Base de referência) 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%

Isenção de responsabilidade de informações de terceiros

As ferramentas de código aberto mencionadas neste artigo são soluções de terceiros bem conhecidas. A Microsoft não desenvolve, possui nem suporta estas ferramentas, nem direta nem indiretamente. És responsável por examinar a licença do software e a declaração de suporte fornecida na documentação do terceiro.

Próximos passos