Migrar para compartilhamentos de arquivos NFS do Azure
Este artigo aborda os aspectos básicos da migração de servidores de arquivos do Linux para compartilhamentos de arquivos NFS do Azure, 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 software livre fpsync e rsync para entender como elas são executadas 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.
Aplica-se a
Tipo de compartilhamento de arquivos | SMB | NFS |
---|---|---|
Compartilhamentos de arquivos padrão (GPv2), LRS/ZRS | ||
Compartilhamentos de arquivos padrão (GPv2), GRS/GZRS | ||
Compartilhamento de arquivos premium (FileStorage), LRS/ZRS |
Pré-requisitos
Você precisará de pelo menos um compartilhamento de arquivos NFS do Azure montado em uma máquina virtual (VM) do Linux. Para criar um, confira Criar um compartilhamento de arquivos NFS no Azure e montá-lo em uma VM do Linux. Recomendamos montar o compartilhamento com nconnect para usar várias conexões TCP. Para obter mais informações, consulte Aprimorar o desempenho de compartilhamento de arquivos do Azure NFS.
Ferramentas de migração
Muitas ferramentas de software livre 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.
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.
Neste artigo, usaremos fpsync para mover dados de um servidor de arquivos do Linux para compartilhamentos de arquivos NFS do 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ê precisará instalar o particionador do sistema de arquivos fpart. Instale o fpart na distribuição do Linux de sua escolha. Depois de instalado, você deverá ver o 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
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:
- 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.
- Cópia incremental: copie apenas as alterações incrementais da origem para o destino. Para sincronização incremental, é recomendável usar o fpsync com o rsync como a ferramenta de cópia. Isso deve ser feito várias vezes para capturar todas as alterações.
- 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 o fpsync com a ferramenta de cópia padrão (rsync). Para capturar todas as alterações, recomendamos executar isso várias vezes.
fpsync -n <parallel transfers> <absolute source path> <absolute destination path>
Por padrão, o fpsync especificará as seguintes opções do rsync: -lptgoD -v --numeric-ids
. Você pode especificar opções do rsync adicionais adicionando -o option
ao comando do 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 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 que usamos para comparar o desempenho da ferramenta de cópia em cargas de trabalho diferentes.
Config # | 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
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 no Azure montado com nconnect=8
. Os resultados reais variarão de acordo com a sua configuração e os seus 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.
Observamos os seguintes resultados fazendo uma cópia de linha de base da origem para o destino.
Observamos os seguintes resultados fazendo uma cópia incremental (alteração delta).
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.
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.
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:
Config # | 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 | 94% |
Aviso de isenção de responsabilidade para informações de terceiros
As ferramentas de software livre mencionadas neste artigo são soluções de terceiros conhecidas. Elas não são desenvolvidas pela Microsoft e nem têm suporte ou são de propriedade da Microsoft direta ou indiretamente. É responsabilidade do cliente examinar a licença de software e a instrução de suporte fornecida na documentação de terceiros.