Migrar para compartilhamentos de arquivos do Azure NFS

Este artigo aborda os aspetos básicos da migração de servidores de arquivos Linux para compartilhamentos de arquivos do Azure NFS, que só estão disponíveis como compartilhamentos de arquivos Premium (tipo de conta FileStorage). Também compararemos as ferramentas de cópia de arquivo de código aberto fpsync e rsync para entender como elas se comportam ao copiar dados para compartilhamentos de arquivos do Azure.

Nota

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

Aplica-se a

Tipo de partilhas de ficheiros SMB NFS
Partilhas de ficheiros Standard (GPv2), LRS/ZRS No No
Partilhas de ficheiros Standard (GPv2), GRS/GZRS No No
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS No Yes

Pré-requisitos

Você precisará de pelo menos um compartilhamento de arquivos do Azure NFS montado em uma máquina virtual (VM) Linux. Para criar um, consulte Criar um compartilhamento de arquivos do Azure NFS e montá-lo em uma VM Linux. Recomendamos montar o compartilhamento com nconnect para usar várias conexões TCP. Para obter mais informações, consulte Melhorar o desempenho do compartilhamento de arquivos do Azure NFS.

Ferramentas de migração

Muitas ferramentas de código aberto 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.

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.

Neste artigo, usaremos o fpsync para mover dados de um servidor de arquivos Linux para compartilhamentos de arquivos do Azure NFS.

Para copiar os dados, o fpsync usa as ferramentas rsync (padrão), cpio ou tar. Ele calcula subconjuntos do diretório de origem e gera trabalhos de sincronização para sincronizá-los com o diretório src_dir/ 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.

Nota

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, você precisará instalar o particionador do sistema de arquivos fpart. Instale o fpart na distribuição Linux de sua escolha. Depois de instalado, você verá fpsync 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 de linha de base, recomendamos usar 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, recomendamos o uso de fpsync com rsync como a ferramenta de cópia. Isso deve ser feito várias vezes para capturar todas as alterações.
  3. Aprovação final: uma aprovação 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>

Cópia da linha de base

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 a Cpio e Tar.

Cópia incremental

Para sincronização incremental, use fpsync com a ferramenta de cópia padrão (rsync). Para capturar todas as alterações, recomendamos executá-lo várias vezes.

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

Por padrão, o fpsync especificará as seguintes opções de rsync: -lptgoD -v --numeric-ids. Você pode especificar opções rsync adicionais adicionando -o option ao comando fpsync.

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 para excluir arquivos extras do /data/dst/ diretório ou pode usar fpsync com rsync --delete 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 a seguir lista os diferentes conjuntos de dados que usamos para comparar o desempenho da ferramenta de cópia em diferentes cargas de trabalho.

Configuração # Tipo de cópia Contagem de ficheiros Contagem de diretórios Tamanho do ficheiro Tamanho total
1.1 Cópia da linha de base 1 milhão 5 0-32 KiB 18 GiB
1.2 Incremental (variação delta) 1 milhão 5 0-32 KiB 18 GiB
2 Cópia da linha de base 191,345 3,906 0-32 KiB 3 GiB
3 Cópia da linha de base 5.000 5 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

Com base em nossos experimentos com as configurações acima, observamos que o fpsync teve o melhor desempenho quando usado com 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 a sua configuração e conjuntos de dados.

Nota

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.

Observamos os seguintes resultados fazendo uma cópia de linha de base da origem para o destino.

Chart showing the test results of configuration 1 for a baseline copy.

Observamos os seguintes resultados fazendo uma cópia incremental (alteração delta).

Chart showing the test results of configuration 1 for an incremental copy.

Configuração 2

Observamos os seguintes resultados fazendo uma cópia de linha de base de 191.345 arquivos pequenos em 3.906 diretórios com um tamanho total de 3 GiB.

Chart showing the test results of configuration 2 for a baseline copy.

Configuração 3

Observamos os seguintes resultados fazendo uma cópia de linha de base de 5.000 arquivos grandes (10 MiB) em um único diretório com um tamanho total de 50 GiB.

Chart showing the test results of configuration 3 for a baseline copy.

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 Taxa de transferência rsync 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 5 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 5 0-32 KiB 18 GiB 84.02 minutos 3,25 MiB/s 7.5 minutos 36,41 MiB/s 1,020%
2 (início do estudo) 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 (início do estudo) 5.000 5 10 MiB 50 GiB 8.12 minutos 105,04 MiB/s 2.76 minutos 308,90 MiB/s 194%

Exclusã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. Eles não são desenvolvidos, possuídos ou suportados pela Microsoft, direta ou indiretamente. É responsabilidade do cliente examinar a licença de software e a declaração de suporte fornecida na documentação de terceiros.

Próximos passos