Observação:

Mover Dados para o OCI Cloud Storage Services usando o Rclone

Introdução

Este é o tutorial 2 de uma série de quatro tutoriais que mostra várias maneiras de migrar dados para os serviços de armazenamento em nuvem do OCI (Oracle Cloud Infrastructure). A série está configurada para que você possa revisar o Tutorial 1: Usar Ferramentas de Migração para Mover Dados para Serviços do OCI Cloud Storage para obter uma ampla compreensão das várias ferramentas e, em seguida, prosseguir para os tutoriais ou documentos relacionados relevantes para suas necessidades de migração. Este tutorial se concentrará no uso do Rclone para migrar dados para os serviços de armazenamento em nuvem da OCI.

A OCI oferece aos clientes computação de alto desempenho e opções de armazenamento em nuvem de baixo custo. Por meio do armazenamento sob demanda local, de objetos, arquivos, blocos e arquivos compactados, a Oracle atende aos principais requisitos de carga de trabalho de armazenamento e casos de uso.

Os serviços de armazenamento em nuvem da OCI oferecem opções de armazenamento em nuvem rápidas, seguras e duráveis para todas as necessidades da sua empresa. Começando com as opções de alto desempenho, como o OCI File Storage com o Lustre e o serviço OCI Block Volumes; sistemas de arquivos de escala de exabytes totalmente gerenciados do serviço OCI File Storage com pontos de acesso NFS de alto desempenho; para o OCI Object Storage altamente durável e escalável. Nossas soluções podem atender às suas demandas, desde aplicações com alto desempenho, como cargas de trabalho de IA/ML, até data lakes em escala de exabytes.

O Rclone é um utilitário de código aberto de linha de comando para migrar dados para a nuvem ou entre fornecedores de armazenamento na nuvem. O Rclone pode ser usado para fazer a migração única, bem como a sincronização periódica entre o armazenamento de origem e destino. O Rclone pode migrar dados de/para o armazenamento de objetos, armazenamento de arquivos, unidades montadas e entre 70 tipos de armazenamento suportados. O OCI Object Storage é suportado nativamente como provedor de backend Rclone. Os processos de clonagem podem ser ampliados e ampliados para aumentar o desempenho de transferência usando opções de parâmetro.

Determine a quantidade de dados que precisam ser migrados e o tempo de inatividade disponível para transferência para a nova plataforma de armazenamento da OCI. As migrações em lote são uma boa opção para dividir a migração em incrementos gerenciáveis. As migrações em batch permitirão que você programe o tempo de inatividade para aplicativos específicos em diferentes janelas. Alguns clientes têm a flexibilidade de fazer uma migração única em uma janela de manutenção programada de 2 a 4 dias. O OCI FastConnect pode ser usado para criar uma conexão privada dedicada entre o OCI e seu ambiente, com velocidades de porta de 1G a 400G para acelerar o processo de transferência de dados. O OCI FastConnect pode ser integrado a soluções de parceiros, como Megaport e ConsoleConnect, para criar uma conexão privada com seu data center ou interconexão nuvem a nuvem para mover dados mais diretamente de outro fornecedor de nuvem para o serviço de armazenamento em nuvem da OCI. Para obter mais informações, consulte a integração FastConnect com o Megaport Cloud Router.

Público-alvo

DevOps engenheiros, desenvolvedores, administradores e usuários de armazenamento em nuvem da OCI, gerentes de TI, usuários avançados da OCI e administradores de aplicativos.

Objetivo

Saiba como usar o Rclone para copiar e sincronizar dados nos serviços de armazenamento em nuvem da OCI.

Pré-requisitos

Visão Geral do Rclone e Termos Básicos

O Rclone é uma ferramenta de migração útil por causa dos muitos protocolos e provedores de nuvem que ele suporta e facilidade de configuração. É uma boa ferramenta de migração para fins gerais para qualquer tipo de conjunto de dados. O Rclone funciona particularmente bem para conjuntos de dados que podem ser divididos em lotes para expansão entre nós para transferência de dados mais rápida.

O Rclone pode ser usado para migrar:

Comandos e Flags do Rclone:

Exemplos de Uso do Rclone

Migrar Arquivos de Números Grandes usando o Rclone

A clonagem é sincronizada diretório por diretório. Se você estiver migrando dezenas de milhões de arquivos / objetos, é importante garantir que os diretórios / prefixos sejam divididos em cerca de 10.000 arquivos / objetos ou inferiores por diretório. Isso é para evitar que o Rclone use muita memória e depois trave. Muitos clientes com uma contagem alta (100 de milhões ou mais) de arquivos pequenos muitas vezes encontram esse problema. Se todos os seus arquivos estiverem em um único diretório, divida-os primeiro.

  1. Execute o comando a seguir para obter uma lista de arquivos na origem.

    rclone lsf --files-only -R src:bucket | sort > src
    
  2. Divida o arquivo em blocos de 1.000 a 10.000 linhas, usando divisão. O comando split a seguir dividirá os arquivos em blocos de 1.000 e os colocará em arquivos denominados src_##, como src_00.

    split -l 1000 --numeric-suffixes src src_
    
  3. Distribua os arquivos para várias instâncias de VM para expandir a transferência de dados. Cada comando Rclone deve ter esta aparência:

    rclone --progress --oos-no-check-bucket --no-traverse --transfers 500 copy remote1:source-bucket remote2:dest-bucket --files-from src_00
    

    Como alternativa, um loop for simples pode ser usado para iterar nas listas de arquivos geradas pelo comando split. Durante o teste com ~270.000 arquivos em um único bucket, vimos que os tempos de cópia melhoram 40x, sua quilometragem pode variar.

    Observação: Dividir os arquivos por estrutura de diretório ou usando o utilitário de divisão é uma maneira importante de otimizar as transferências.

Usar Rclone, OKE e fpart juntos para Mover Dados de Sistemas de Arquivos para o OCI Object Storage

Vários pods do Kubernetes podem ser usados para dimensionar a transferência de dados entre sistemas de arquivos e armazenamento de objetos. A paralelização acelera as transferências de dados para sistemas de armazenamento com latência relativamente alta e alto throughput. A abordagem que combina estruturas de diretório de partições Rclone, OKE e fpart em vários chunks e executa a transferência de dados em paralelo em contêineres no mesmo nó de computação ou em vários nós. A execução em vários nós agrega o throughput da rede e o poder de computação de cada nó.

Siga as etapas:

  1. Identifique um host que será o host do operador fpsync que tem acesso aos dados de origem de migração e o Rclone está instalado.

  2. Execute o comando a seguir para instalar o kubectl.

    # curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    # chmod 755 kubectl
    # cp -a kubectl /usr/bin
    
  3. Crie uma política do OCI IAM para o host do operador fpsync para gerenciar o cluster do OKE.

    A política a seguir pode ser usada para essa finalidade. Uma permissão mais granular pode ser configurada para atingir o requisito mínimo para controlar os pods.

    Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
    
  4. Configure o arquivo kubeconfig para ter acesso ao cluster do OKE. Para obter mais informações, consulte Configurando o Acesso Local a Clusters.

  5. Instale e aplique patch em fpart e fpsync. O patch fpsync é necessário para executar o Rclone ou o rsync em paralelo para expandir a transferência de dados. O fpsync que vem com o pacote fpart não suporta pods Rclone ou Kubernetes, um patch é necessário para suportar essas ferramentas.

    Execute o comando a seguir para instalar no Ubuntu.

    # apt-get install fpart
    # git clone https://github.com/aboovv1976/fpsync-k8s-rclone.git
    # cd fpsync-k8s-rclone/
    # cp -p /usr/bin/fpsync /usr/bin/k-fpsync
    # patch /usr/bin/k-fpsync fpsync.patch
    
  6. Crie a imagem do contêiner.

    A especificação de build de imagem do docker disponível em rclone-rsync-image pode ser usada para criar a imagem do contêiner. Depois que a imagem for criada, ela deverá ser carregada em um registro que possa ser acessado no cluster do OKE.

    # rclone-rsync-image
    # docker build -t rclone-rsync . 
    # docker login
    # docker tag rclone-rsync:latest <registry url/rclone-rsync:latest>
    # docker push <registry url/rclone-rsync:latest>
    

    Uma cópia da imagem é mantida em fra.ocir.io/fsssolutions/rclone-rsync:latest. O diretório de amostra contém alguns exemplos de arquivos de saída.

  7. Execute o k-fpsync. O fpsync corrigido (k-fpsync) pode particionar o sistema de arquivos de origem e expandir a transferência usando vários pods do Kubernetes. A regra antiafinidade do pod do Kubernetes está configurada para preferir nós que não tenham pods de trabalho de transferência em execução. Isso ajuda a utilizar a largura de banda nos nós de forma eficaz para otimizar o desempenho. Para obter mais informações, consulte Designando Pods a Nós.

    Monte o sistema de arquivos de origem no host do operador fpart e crie um diretório compartilhado que será acessado por todos os pods. Este é o diretório onde todos os arquivos de log e arquivos de partição são mantidos.

    O comando a seguir transfere dados do sistema de arquivos /data/src para o bucket do OCI Object Storage rclone-2. Ele iniciará 2 pods de cada vez para transferir a partição do sistema de arquivos criada pelo fpart.

    # mkdir /data/fpsync
    # PART_SIZE=512 && ./k-fpsync -v -k fra.ocir.io/fsssolutions/rclone-rsync:latest,lustre-pvc  -m rclone -d /data/fpsync  -f $PART_SIZE -n 2 -o "--oos-no-check-bucket --oos-upload-cutoff 10Mi --multi-thread-cutoff 10Mi --no-check-dest --multi-thread-streams 64 --transfers $PART_SIZE  --oos-upload-concurrency 8 --oos-disable-checksum  --oos-leave-parts-on-error" /data/src/ rclone:rclone-2
    

    Observação: Os logs da execução são mantidos no diretório run-ID, no exemplo a seguir, eles estão em /data/fpsync/{Run-Id}/log directory. As saídas de amostra são fornecidas no diretório de amostra.

(Opcional) Ambientes de Teste

As recomendações são feitas com base em testes e interações com o cliente.

Observação: As execuções do script de cópia em massa, os resultados os sync e s5cmd são incluídos para fornecer mais informações sobre o desempenho. Saiba mais sobre como usar o script de cópia em massa aqui: Use os Utilitários Python do Oracle Cloud Infrastructure Object Storage para Operações em Massa. Para obter mais informações sobre o uso de os sync e s5cmd, consulte o Tutorial 3: Mover Dados para o OCI Cloud Storage Services usando o OCI Object Storage Sync e o S5cmd.

Ambiente de Teste 1:

1 instância de VM VM.Standard.E4.Flex, 1 OCPU, largura de banda de rede 1Gbps, 16 GB de memória. Para simular a migração on-premises para o OCI, copie os dados do NFS PHX para o IAD.

Conjuntos de Dados

Ambiente de Teste 2:

Instâncias de VM: 2 instâncias de VM foram usadas para cada teste; usamos um VM.Standard.E4.Flex com 24 OCPUs, largura de banda de rede 24Gbps e 384 GB de memória. O Oracle Linux 8 foi usado para testes do Linux.

Conjuntos de dados usados no teste: 14 diretórios principais com a seguinte contagem e tamanhos de arquivos.

Diretório do Conjunto de Dados Tamanho Contagem de arquivos Tamanho de cada arquivo
Diretório 1 107.658 GiB 110,242 1 MiB
Diretório 2 1.687 GiB 110,569 15 MiB
Diretório 3 222 GiB 111 2 GiB
Diretório 4 1.265 TiB 1,295 1 GiB
Diretório 5 26.359 GiB 1,687 16 MiB
Diretório 6 105.281 MiB 26,952 4 KiB
Diretório 7 29.697 MiB 30,410 1 KiB
Diretório 8 83.124 GiB 340,488 256 KiB
Diretório 9 21.662 GiB 354,909 64 KiB
Diretório 10 142.629 GiB 36,514 4 MiB
Diretório 11 452.328 MiB 57,898 8 MiB
Diretório 12 144 GiB 72 2GiB
Diretório 13 208.500 GiB 834 256 MiB
Diretório 14 54.688 GiB 875 64 MiB

Observação:

Método Para Tempo Comando Sinalizadores/Observações
s5cmd NFS/File PHX para IAD do Objeto 54m41.814s copiar --numworkers 74
sincronização do OS NFS/File PHX para IAD do Objeto 65m43.200s NA --parallel-operations-count 50
rclone NFS/File PHX para IAD do Objeto 111m59.704s copiar --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50
rclone PHX do Objeto para IAD do Objeto 28m55.663s copiar --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400, mesmo comando executado em 2 VMs para uma simultaneidade de 800 transferências
Script de cópia em massa do python PHX do Objeto para IAD do Objeto 25m43.715s Padrão 1 VM, 50 workers, 100.000 arquivos enfileirados por vez

Os comandos s5cmd e os sync são adequados ao sistema de arquivos/NFS para o armazenamento de objetos. O script de cópia em massa só faz transferências de bucket para bucket e não foi testado para migração NFS.

Somente rclone e o script de cópia em massa do python são capazes de fazer transferências bucket-to-bucket entre regiões; portanto, as outras ferramentas não foram testadas para isso. O script de cópia em massa do python funciona melhor nos dados bucket-to-bucket entre regiões, no entanto, só é compatível com o OCI Object Storage, enquanto o rclone oferece suporte a muitos backends e provedores de nuvem.

Pequenas execuções de teste foram conduzidas usando rclone para transferir dados do Microsoft Azure Blob Storage, Amazon Simple Storage Service (Amazon S3) e do Google Cloud Platform Cloud Storage para o OCI Object Storage para verificar se as ferramentas funcionam para esses tipos de transferências. Para obter mais informações, consulte Mover dados para o armazenamento de objetos na nuvem usando o Rclone.

Ambiente de Teste 3:

Instâncias de VM: 1 a 2 instâncias de VM foram usadas para cada teste; usamos um VM.Standard.E4.Flex com 24 OCPUs, largura de banda de rede 24Gbps e 384 GB de memória. O Oracle Linux 8 foi usado para testes do Linux. Todos os testes foram bucket-to-bucket.

Tamanho Total Contagem de Arquivos Intervalo de Tamanho do Arquivo
7.74 TiB 1,000,000 30 MiB
Método Para Tempo Comando Flags Notas  
rclone IAD de Objeto para Objeto -> IAD 18h39m11.4s copiar --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi 1 VM, muito lenta devido à alta contagem de arquivos e listagem de chamadas para a origem  
rclone IAD de Objeto para Objeto -> IAD 55m8.431s copiar --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> 2 VMs, 500 transferências por VM, lista de objetos/arquivos alimentada por 1.000 arquivos por vez, impede a listagem na origem e no destino e melhora o desempenho  
Script de cópia em massa do python IAD de Objeto para Objeto -> IAD 28m21.013s NA Padrão 1 VM, 50 workers, 100.000 arquivos enfileirados por vez  
Script de cópia em massa do python IAD de Objeto para Objeto -> IAD NA NA Padrão 2 VMs, 50 workers por VM, 100.000 arquivos enfileirados por vez. Foram recebidos 429 erros, o script foi suspenso e não pôde ser concluído  
s5cmd IAD de Objeto para Objeto -> IAD 14m10.864s copiar Padrões (256 trabalhadores) 1 VM NA
s5cmd IAD de Objeto para Objeto -> IAD 7m50.013s copiar Defaults 2 VMs, 256 colaboradores cada VM Executado em metade do tempo como 1 VM
s5cmd IAD de Objeto para Objeto -> IAD 3m23.382s copiar --numworkers 1000 1 VM, 1000 workers Em vários testes, descobrimos que essa era a execução ideal para esse conjunto de dados com o s5cmd
rclone IAD de Objeto para Objeto -> PHX 184m36.536s copiar --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> 2 VMs, 500 transferências por VM, lista de objetos/arquivos alimentada por 1.000 arquivos de cada vez  
Script de cópia em massa do python IAD de Objeto para Objeto -> PHX 35m31.633s NA Padrão 1VM, 50 workers, 100.000 arquivos enfileirados de cada vez  

O comando s5cmd foi executado consistentemente melhor para a contagem de arquivos grandes e arquivos pequenos. O s5cmd é limitado porque só pode fazer cópias bucket-to-bucket na mesma tenancy e na mesma região.

Observe altas melhorias em rclone depois que os arquivos são alimentados no comando e do dimensionamento para outra VM. O Rclone pode funcionar mais lentamente do que outras ferramentas, é o mais versátil nas várias plataformas que suporta e tipos de migrações que pode realizar.

A API Python de Cópia em Massa do OCI Object Storage só pode usar a API CopyObject Nativa do OCI e só pode obter até uma simultaneidade de 50 trabalhadores antes de ser limitada.

Os testes de IAD para PHX só foram feitos no que funcionou melhor no IAD para IAD e os testes problemáticos não foram executados novamente. O s5cmd não foi executado para IAD para PHX porque só pode fazer cópias bucket-to-buckets dentro da mesma região.

Próximas Etapas

Prossiga para os tutoriais relacionados relevantes para suas necessidades de migração. Para mover dados para os serviços de armazenamento em nuvem do OCI:

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.