Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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.
-
Use o Rclone para migrar dados do sistema de arquivos (local, NAS, hospedado na nuvem) para o OCI Object Storage.
-
Migre dados de outro objeto de nuvem ou armazenamento blob para o OCI Object Storage.
-
Use o Rclone no Oracle Cloud Infrastructure Kubernetes Engine (OKE) para migrar dados do OCI File Storage para o OCI Object Storage.
Pré-requisitos
-
Uma conta do OCI.
-
Instância de máquina virtual (VM) no OCI para implantar as ferramentas de migração ou um sistema no qual você pode implantar e usar ferramentas de migração.
-
A CLI do OCI (Interface de Linha de Comando) do Oracle Cloud Infrastructure foi instalada com um arquivo de configuração de trabalho no diretório home em um subdiretório chamado
.oci
. Para obter mais informações, consulte Configurando o Arquivo de Configuração. -
Acesso a um bucket do OCI Object Storage.
-
Permissões de usuário no OCI para usar o OCI Object Storage, ter acesso para gerenciar buckets e objetos ou gerenciar a família de objetos para pelo menos 1 bucket ou compartimento. Para mais informações, consulte Políticas Comuns e Referência de Políticas.
-
Permissão do usuário para criar, exportar e montar o OCI File Storage ou acesso a um ponto de acesso NFS do OCI File Storage que já esteja montado em uma VM ou outro sistema de arquivos NFS ou local a ser usado para copiar dados de/para. Para obter mais informações, consulte Gerenciar Política de Armazenamento de Arquivos.
-
Familiaridade com o uso de uma interface de terminal/shell no Mac OS, Linux, Berkeley Software Distribution (BSD) ou Windows PowerShell, prompt de comando ou bash.
-
Familiaridade com a instalação de software em um sistema Linux e ter alguma experiência ou compreensão do Kubernetes.
-
Conhecimento básico do Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) e trabalho com grupos dinâmicos com um host do Ubuntu em um grupo dinâmico. Para obter mais informações, consulte Gerenciando Grupos Dinâmicos.
-
Revise Fundamentos de Migração para Mover Dados para o OCI Cloud Storage para instalar o Rclone e outras ferramentas de migração.
-
Para saber as ferramentas de migração que podemos usar, consulte o Tutorial 1: Usar Ferramentas de Migração para Mover Dados para o OCI Cloud Storage Services.
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:
-
Dados do sistema de arquivos (OCI File Storage, OCI Block Storage, OCI File Storage com Lustre, sistema de arquivos on-premises e NFS on-premises) para outros tipos de armazenamento de sistema de arquivos e de/para o armazenamento de objetos (incluindo OCI Object Storage).
-
Armazenamento de objetos de provedores de nuvem suportados de e para o OCI Object Storage.
Comandos e Flags do Rclone:
-
Compreender o Desempenho do Rclone
O Rclone é uma boa ferramenta de uso geral para sincronizar ou copiar arquivos entre dados do sistema de arquivos, outros provedores de nuvem e serviços de armazenamento em nuvem da OCI. O desempenho dependerá de quanto você pode expandir e expandir. Recomendamos a execução de vários testes em seus sistemas de migração com um conjunto de migração de amostra para determinar quando você atinge os limites da largura de banda da rede.
Por exemplo, seu bucket de origem tem 10 pastas/prefixos, cada um com cerca de 1 TB. Você pode dividir a migração em 2 VMs de grande capacidade de CPU/RAM e acionar vários processos de cópia de Rclone em paralelo das duas VMs. Dependendo da topologia de cada pasta e da capacidade de computação, os parâmetros do Rclone podem ser ajustados para melhorar a velocidade de transferência.
Você pode começar com a execução dos comandos a seguir em 2 VMs e, em seguida, ajustar a contagem de transferências e a contagem de verificadores até saturar a NIC em cada VM.
rclone copy --progress --transfers 10 --checkers 8 --no-check-dest aws_s3_virgina:/source_bucket_name/folder1 iad_oss_native:/destination_bucket_name/folder1 rclone copy --progress --transfers 50 --checkers 8 --no-check-dest aws_s3_virgina:/source_bucket_name/folder2 iad_oss_native:/destination_bucket_name/folder2
-
Instâncias de sistemas ou VMs com mais CPU, memória e largura de banda de rede podem executar mais transferências de arquivos e verificadores em paralelo. O dimensionamento para sistemas com mais recursos permitirá um desempenho mais rápido.
-
Se seus dados puderem ser divididos em vários batches com base na estrutura, você também poderá executar o Rclone em vários sistemas ou instâncias de VM para expansão.
Recomendamos ampliar e expandir para melhorar o desempenho do Rclone. Nossos testes incluíram 2 VMs para executar transferências de Rclone em paralelo para expandir. Se você tiver um conjunto de dados maior, talvez queira usar até 4 máquinas ou até mesmo instâncias Bare Metal (BM).
-
-
Clonar comandos de cópia e sincronização
-
O comando de cópia de clone copia arquivos de origem ou objetos para o destino. Ele ignorará arquivos idênticos na origem e no destino, testando por tamanho e tempo de modificação ou md5sum. O comando copy não exclui arquivos do destino.
-
O comando de sincronização Rclone sincroniza a origem com o destino, também ignorando arquivos idênticos. O destino será modificado para corresponder à origem, o que significa que os arquivos que não corresponderem à origem serão excluídos.
Observação: Tenha cuidado ao usar a sincronização e use-a somente quando quiser que o destino se pareça exatamente com a origem. Use o comando de cópia quando quiser apenas copiar novos arquivos para o destino.
-
-
Usar Indicadores de Linha de Comando de Clonagem Direita
Há vários sinalizadores de linha de comando Rclone que podem ser usados com o Rclone que afetam a rapidez com que a migração de dados ocorre. É importante entender como alguns desses flags funcionam para obter a melhor taxa de transferência de dados.
-
--no-traverse
: Isso só funciona com o comando de cópia, não percorre o sistema de arquivos de destino. Este sinalizador economiza tempo porque não conduzirá listas no destino para determinar quais arquivos copiar. Ele verificará os arquivos um de cada vez para determinar se eles precisam ser copiados. Um por um pode parecer lento, mas pode ser mais rápido quando você tem um número muito pequeno de arquivos / objetos para copiar para um destino com muitos arquivos já presentes. -
--no-check-dest
: Isso só funciona com o comando copy e não verificará nem listará os arquivos de destino para determinar o que precisa ser copiado ou movido, o que minimiza as chamadas de API. Os arquivos são sempre transferidos. Use este comando quando souber que deseja que tudo na origem seja copiado, independentemente do que está no destino ou se souber que o destino está vazio.Observação: Use os comandos
no-traverse
ouno-check-dest
, muitos usuários colocam os dois na linha de comando, o que não é necessário.- Se seu destino estiver vazio ou você quiser que todos os arquivos sejam copiados da origem para o destino, não importa o quê, use
no-check-dest
. - Quando você tiver alguns arquivos muito grandes que precisam ser migrados, use
no-traverse
, que verificará cada arquivo para ver se ele está atual no destino antes de copiá-lo para a origem; isso pode salvar na lista chamadas de API e o volume de dados copiados para o destino.
- Se seu destino estiver vazio ou você quiser que todos os arquivos sejam copiados da origem para o destino, não importa o quê, use
-
--ignore-checksum
: Isso realmente acelerará a transferência; no entanto, o Rclone não verificará a corrupção de dados durante a transferência. -
--oos-disable-checksum
: Não armazene a soma de verificação MD5 com metadados do objeto. O Rclone calcula a soma de verificação MD5 dos dados antes do upload e os adiciona aos metadados do objeto, o que é ótimo para a integridade dos dados. No entanto, ele causa atrasos antes que arquivos grandes iniciem o processo de upload. -
--transfers <int>
: Número de transferências de arquivo a serem executadas em paralelo (padrão 4). Aumente esse número com base no tamanho do sistema em que você está executando o rclone, você pode fazer execuções de teste e aumentar o número inteiro até atingir a velocidade máxima de transferência do host. Realmente recomendamos testar e aumentar esse número até que você obtenha desempenho aceitável, vimos os clientes aumentarem esse número entre 64 e 3000 para obter o desempenho desejado. -
--checkers <int>
: Número de verificações a serem executadas em paralelo (padrão 8). Quantidade de verificadores de arquivos a serem executados em paralelo, seja cauteloso, pois pode drenar a integridade do servidor e causar problemas no destino. Se você tiver um sistema com memória muito grande, aumente esse número em incrementos de 2. O número máximo que testamos essa configuração com bons resultados no ambiente de teste é 64, normalmente 8-10 é suficiente. Os verificadores podem estar em qualquer lugar de 25-50% do número de transferência; quando o número de transferência é maior, esse número tende a estar mais próximo de 25%.Observação: Ao expandir com vários hosts executando transferências e verificadores de Rclone, você pode atingir um erro 429 "TooManyRequests", caso isso aconteça, comece diminuindo a quantidade de verificadores em incrementos de 2 até atingir 10. Se a redução dos verificadores não for suficiente, você também precisará reduzir o número de transferências.
-
--progress
: Isso mostrará o andamento durante a transferência. -
--fast-list
: Use a lista recursiva, se disponível; use mais memória, mas menos transações/chamadas de API. Esta é uma boa opção para usar quando você tem um número moderado de arquivos em diretórios aninhados. Não use comno-traverse
ouno-check-dest
, pois eles são flags contrários. Pode ser usado com o comando de cópia ou sincronização. -
--oos-no-check-bucket
: Use isso quando souber que o bucket existe, ele reduzirá o número de transações que o Rclone realiza, definirá o Rclone para assumir que o bucket existe e para começar a mover dados para ele. -
--oos-upload-cutoff
: Os arquivos maiores que esse tamanho serão submetidos a upload em chunks; o padrão é 200MiB. -
--oos-chunk-size
: Ao fazer upload de arquivos maiores que a definição de fechamento de upload ou de arquivos com tamanho desconhecido, eles serão submetidos a upload como uploads multiparte usando esse tamanho de chunk. O Rclone aumentará automaticamente o tamanho do bloco ao fazer upload de um arquivo grande de tamanho conhecido para permanecer abaixo do limite de 10.000 blocos. O padrão é 5MiB. -
--oos-upload-concurrency <int>
: É usado para uploads multiparte e é o número de chunks submetidos a upload simultaneamente. Se você está carregando um pequeno número de arquivos grandes em links de alta velocidade e esses uploads não utilizam totalmente sua largura de banda, aumentar isso pode ajudar a acelerar as transferências. O padrão é 8, se isso não estiver utilizando largura de banda, aumente lentamente para melhorar o uso da largura de banda.Observação: Os uploads em várias partes usarão memória extra ao usar os parâmetros:
--transfers <int>
,--oos-upload-concurrency <int>
e--oos-chunk-size
. Os uploads de uma única parte não usam memória extra. Ao definir esses parâmetros, considere a latência da sua rede, quanto mais latência, maior a probabilidade de uploads de uma única parte serem mais rápidos.
-
-
Exemplo de Arquivo de Configuração de Rclone para o OCI Object Storage
[oci] type = oracleobjectstorage namespace = xxxxxxxxxxx compartment = ocid1.compartment.oc1..xxxxxxxxx region = us-ashburn-1 provider = user_principal_auth config_file = ~/.oci/config config_profile = Default
-
Formato Básico de Comando de Rclone
rclone <flags> <command> <source> <dest>
-
Exemplo de execução de cópia de Rclone de uma origem de sistema de arquivos local ou origem do OCI File Storage para o destino do OCI Object Storage.
rclone copy /src/path oci:bucket-name
-
Exemplo de execução de cópia de Rclone da origem do OCI Object Storage para um sistema de arquivos local ou destino do OCI File Storage.
rclone copy oci:bucket-name /src/path
-
Exemplo de execução de cópia de Rclone de uma origem S3 para um destino do OCI Object Storage.
rclone copy s3:s3-bucket-name oci:bucket-name
Observação: ao migrar do AWS e usar a criptografia do servidor com o KMS, certifique-se de que o rclone esteja configurado com
server_side_encryption = aws:kms
para evitar erros de soma de verificação. Para obter mais informações, consulte Rclonar S3 KMS e Rclonar a configuração S3
Observação: O formato do comando de sincronização será basicamente o mesmo, basta substituir a cópia por sincronização.
-
Exemplos de Uso do Rclone
-
Exemplo 1: Use o Rclone para migrar um pequeno número de arquivos pequenos copiados para um destino que já contém dados com uma contagem alta de arquivos ou objetos.
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
Exemplo 2: Rclone com menos arquivos grandes com uploads em várias partes.
rclone --progress --oos-no-check-bucket --fast-list --no-traverse --transfers 8 --oos-chunk-size 10M --oos-upload-concurrency 10 --checkers 10 copy <source> <dest>
Observação: Esses são pontos de partida para as opções
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
e--checkers
, você precisará ajustá-los com base no tamanho do arquivo/objeto, na memória e nos recursos disponíveis nos sistemas que está usando para migrar dados. Ajuste-os até obter uso suficiente da largura de banda para migrar seus dados de forma ideal. Se o seu sistema for muito pequeno, talvez seja necessário ajustar esses números para economizar recursos. -
Exemplo: 3 Use o Rclone para execução de expansão em 3 máquinas BM com NIC de 100 Gbps, tamanho misto do conjunto de dados com uploads multiparte com petabytes de dados, bucket não vazio, serviço OCI File Storage para o serviço OCI Object Storage.
rclone --progress --stats-one-line --max-stats-groups 10 --fast-list --oos-no-check-bucket --oos-upload-cutoff 10M --transfers 64 --checkers 32 --oos-chunk-size 512Mi --oos-upload-concurrency 12 --oos-disable-checksum --oos-attempt-resume-upload --oos-leave-parts-on-error --no-check-dest /src/path oci:bucket
Sinalizadores adicionais usados:
--stats-one-line
: Ajuste as estatísticas em uma linha.--max-stats-group
: O número máximo de grupos de estatísticas a serem mantidos na memória, no máximo mais antigo, é descartado (padrão 1000).--oos-attempt-resume-upload
: Tentativa de retomar o upload em várias partes iniciado anteriormente para o objeto.--oos-leave-parts-on-error
: Evite chamar abortar o upload em caso de falha, deixando todas as partes carregadas com sucesso para recuperação manual.
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.
-
Execute o comando a seguir para obter uma lista de arquivos na origem.
rclone lsf --files-only -R src:bucket | sort > src
-
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_##
, comosrc_00
.split -l 1000 --numeric-suffixes src src_
-
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ó.
-
Filesystem partitioner (Fpart) é uma ferramenta que pode ser usada para particionar a estrutura do diretório. Ele pode chamar ferramentas como rsync, tar e Rclone com uma partição do sistema de arquivos para serem executadas em paralelo e independentes umas das outras. Vamos usar fpart com Rclone.
-
fpsync é um script wrapper que usa fpart para executar as ferramentas de transferência (rsync, Rclone) em paralelo. O comando
fpsync
é executado de um host do operador fpsync. A ferramenta fpsync também tem opções para usar nós de trabalho separados. O fpsync modificado suporta pods Rclone e também Kubernetes. -
O kubectl gerencia jobs do Kubernetes.
Siga as etapas:
-
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.
-
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
-
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
-
Configure o arquivo
kubeconfig
para ter acesso ao cluster do OKE. Para obter mais informações, consulte Configurando o Acesso Local a Clusters. -
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
-
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. -
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
es5cmd
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 deos sync
es5cmd
, 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
-
Conjunto de Dados 1:
Tamanho Total Contagem de Arquivos Intervalo de Tamanho do Arquivo 3TB 3 1TB Método Para Tempo Comando Flags sincronização do OS NFS/File PHX para IAD do Objeto 123m17.102s NA --parallel-operations-count 100
s5cmd NFS/File PHX para IAD do Objeto 239m20.625s copiar run commands.txt
, execução padrão--numworkers 256
rclone NFS/File PHX para IAD do Objeto 178m27.101s copiar --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
Observação: Nossos testes mostraram
os sync
executando o mais rápido para esse conjunto de dados. -
Conjunto de dados 2:
Tamanho Total Contagem de Arquivos Intervalo de Tamanho do Arquivo 9.787GB 20.000 1 MB Método Para Tempo Comando Flags s5cmd NFS/File PHX para IAD do Objeto 1m12.746s copiar execução padrão --numworkers 256
sincronização do OS NFS/File PHX para IAD do Objeto 2m48.742s NA --parallel-operations-count 1000
rclone NFS/File PHX para IAD do Objeto 1m52.886s copiar --transfers=500 --oos-no-check-bucket --no-check-dest
Observação: Nossos testes mostraram que
s5cmd
tem o melhor desempenho para este conjunto 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:
- Os 14 diretórios foram divididos entre as 2 instâncias de VM.
- Cada VM executou 7 comandos/processos, 1 para cada diretório, salvo indicação em contrário.
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:
-
Usando o OCI Object Storage Sync e o S5cmd, consulte o Tutorial 3: Mover Dados para o OCI Cloud Storage Services usando o OCI Object Storage Sync e o S5cmd.
-
Usando o Fpsync e o Rsync para migrações de dados do sistema de arquivos, consulte Tutorial 4: Mover Dados para Serviços de Armazenamento na Nuvem do OCI usando o Fpsync e o Rsync para Migrações de Dados do Sistema de Arquivos.
Links Relacionados
-
Fundamentos de Migração para Mover Dados para o OCI Cloud Storage
-
Mover dados para o armazenamento de objetos na nuvem usando Rclone
-
Transferência de Dados entre sistemas de arquivos e OCI Object Storage usando o OKE
-
Anúncio do suporte de backend nativo do provedor de Armazenamento de Objetos do OCI no rclone
Confirmações
- Autors - Melinda Centeno (Gerente Sênior Principal de Produtos, OCI Object Storage), Vinoth Krishnamurthy (Membro Principal da Equipe Técnica, OCI File Storage), Aboo Valappil (Membro Consultor da Equipe Técnica, OCI File e Block Storage)
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.
Move Data into OCI Cloud Storage Services using Rclone
G25572-02
Copyright ©2025, Oracle and/or its affiliates.