Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Traslado de datos a OCI Cloud Storage Services mediante Rclone
Introducción
Este es el tutorial 2 de una serie de cuatro tutoriales en los que se muestran varias formas de migrar datos a los servicios de almacenamiento en la nube de Oracle Cloud Infrastructure (OCI). La serie está configurada para que pueda revisar el Tutorial 1: Uso de herramientas de migración para mover datos a los servicios de almacenamiento en la nube de OCI para obtener una amplia comprensión de las distintas herramientas y, a continuación, continuar con los tutoriales o documentos relacionados relevantes para sus necesidades de migración. Este tutorial se centrará en el uso de Rclone para migrar datos a los servicios de almacenamiento en la nube de OCI.
OCI proporciona a los clientes recursos informáticos de alto rendimiento y opciones de almacenamiento en la nube de bajo costo. A través del almacenamiento local, de objetos, de archivos, de bloques y de archivos bajo demanda, Oracle aborda los requisitos y casos de uso de la carga de trabajo de almacenamiento de claves.
Los servicios de almacenamiento en la nube de OCI ofrecen opciones de almacenamiento en la nube rápidas, seguras y duraderas para todas las necesidades de su empresa. A partir de las opciones de alto rendimiento, como OCI File Storage con el servicio Lustre y OCI Block Volumes; sistemas de archivos de escala de exabytes totalmente gestionados desde el servicio OCI File Storage con destinos de montaje de alto rendimiento; hasta OCI Object Storage altamente duradero y escalable. Nuestras soluciones pueden satisfacer sus demandas, desde aplicaciones de alto rendimiento como cargas de trabajo de IA/AA hasta lagos de datos a escala de exabytes.
Rclone es una utilidad de línea de comandos de código abierto para migrar datos a la nube o entre proveedores de almacenamiento en la nube. Rclone se puede utilizar para realizar una migración puntual, así como la sincronización periódica entre el almacenamiento de origen y destino. Rclone puede migrar datos desde y hacia el almacenamiento de objetos, el almacenamiento de archivos, las unidades montadas y entre 70 tipos de almacenamiento admitidos. OCI Object Storage está soportado de forma nativa como proveedor de backend de Rclone. Los procesos de clonación se pueden ampliar y reducir para aumentar el rendimiento de la transferencia mediante las opciones de parámetros.
Determina la cantidad de datos que se deben migrar y el tiempo de inactividad disponible para la transición a la nueva plataforma de almacenamiento de OCI. Las migraciones por lotes son una buena opción para desglosar la migración en incrementos gestionables. Las migraciones por lotes le permitirán programar el tiempo de inactividad de aplicaciones específicas en diferentes ventanas. Algunos clientes tienen la flexibilidad de realizar una migración única durante un período de mantenimiento programado de 2 a 4 días. OCI FastConnect se puede utilizar para crear una conexión dedicada y privada entre OCI y su entorno, con velocidades de puerto de 1G a 400G para acelerar el proceso de transferencia de datos. OCI FastConnect se puede integrar con soluciones de partners como Megaport y ConsoleConnect para crear una conexión privada a su centro de datos o interconexión de nube a nube para mover los datos más directamente de otro proveedor en la nube al servicio de almacenamiento en la nube de OCI. Para obtener más información, consulte la integración de FastConnect con Megaport Cloud Router.
Público Objetivo
DevOps ingenieros, desarrolladores, administradores y usuarios de OCI Cloud Storage, responsables de TI, usuarios avanzados de OCI y administradores de aplicaciones.
Objetivo
Descubra cómo utilizar Rclone para copiar y sincronizar datos en los servicios de almacenamiento en la nube de OCI.
-
Utilice Rclone para migrar datos del sistema de archivos (local, NAS, alojados en la nube) a OCI Object Storage.
-
Migre datos de otro objeto en la nube o almacenamiento de blob a OCI Object Storage.
-
Utilice Rclone en Oracle Cloud Infrastructure Kubernetes Engine (OKE) para migrar datos de OCI File Storage a OCI Object Storage.
Requisitos
-
Una cuenta de OCI.
-
Instancia de máquina virtual (VM) en OCI para desplegar las herramientas de migración o un sistema en el que puede desplegar y utilizar herramientas de migración.
-
Interfaz de línea de comandos (CLI) de Oracle Cloud Infrastructure instalada con un archivo de configuración de trabajo en el directorio raíz en un subdirectorio denominado
.oci
. Para obtener más información, consulte Configuración del archivo de configuración. -
Acceso a un cubo de OCI Object Storage.
-
Permisos de usuario en OCI para utilizar OCI Object Storage, tener acceso para gestionar cubos y objetos o gestionar la familia de objetos para al menos 1 cubo o compartimento. Para obtener más información, consulte Políticas comunes y Referencia de políticas.
-
Permiso de usuario para crear, exportar y montar OCI File Storage, o acceso a un destino de montaje de OCI File Storage que ya esté montado en una máquina virtual, u otro montaje de NFS o sistema de archivos local que se utilice para copiar datos desde y hacia. Para obtener más información, consulte Gestión de la política de almacenamiento de archivos.
-
Familiaridad con el uso de una interfaz de terminal/shell en Mac OS, Linux, Berkeley Software Distribution (BSD) o Windows PowerShell, símbolo del sistema o bash.
-
Familiaridad con la instalación de software en un sistema Linux y tener cierta experiencia o comprensión de Kubernetes.
-
Conocimientos básicos de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) y trabajo con grupos dinámicos con un host de Ubuntu en un grupo dinámico. Para obtener más información, consulte Gestión de grupos dinámicos.
-
Revise Aspectos esenciales de la migración para mover datos a OCI Cloud Storage para instalar Rclone y otras herramientas de migración.
-
Para conocer las herramientas de migración que podemos utilizar, consulte Tutorial 1: Uso de herramientas de migración para mover datos a OCI Cloud Storage Services.
Visión General de Rclone y Términos Básicos
Rclone es una herramienta de migración útil debido a los numerosos protocolos y proveedores de nube que soporta y a la facilidad de configuración. Es una buena herramienta de migración de propósito general para cualquier tipo de juego de datos. Rclone funciona especialmente bien para juegos de datos que se pueden dividir en lotes para escalar horizontalmente en los nodos para una transferencia de datos más rápida.
Rclone se puede utilizar para migrar:
-
Datos del sistema de archivos (OCI File Storage, OCI Block Storage, OCI File Storage con Lustre, sistema de archivos local y NFS local) a otros tipos de almacenamiento del sistema de archivos y a/desde almacenamiento de objetos (incluido OCI Object Storage).
-
Almacenamiento de objetos de proveedores de nube soportados a y desde OCI Object Storage.
Comandos e indicadores de clonación:
-
Descripción del rendimiento de clonación
Rclone es una buena herramienta de uso general para sincronizar o copiar archivos entre datos del sistema de archivos, otros proveedores de nube y servicios de almacenamiento en la nube de OCI. El rendimiento dependerá de cuánto pueda escalar verticalmente y horizontalmente. Recomendamos ejecutar varias pruebas en los sistemas de migración con un juego de migración de ejemplo para determinar cuándo alcanza los umbrales del ancho de banda de red.
Por ejemplo, el cubo de origen tiene 10 carpetas/prefijos, cada uno con aproximadamente 1 TB. Puede dividir la migración en 2 VM de gran capacidad de CPU/RAM y disparar varios procesos de copia de clonación en paralelo desde las dos VM. Según la topología de cada carpeta y la capacidad de cálculo, los parámetros de Rclone se pueden ajustar para mejorar la velocidad de transferencia.
Puede comenzar con la ejecución de los siguientes comandos en 2 máquinas virtuales y, a continuación, ajustar el recuento de transferencias y el recuento de comprobadores hasta saturar la NIC en cada máquina virtual.
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
-
Los sistemas o instancias de máquina virtual con más CPU, memoria y ancho de banda de red pueden ejecutar más transferencias de archivos y comprobadores en paralelo. La ampliación a sistemas con más recursos permitirá un rendimiento más rápido.
-
Si los datos se pueden dividir en varios lotes en función de la estructura, también puede ejecutar Rclone en varios sistemas o instancias de VM para escalar horizontalmente.
Recomendamos ampliar y reducir para mejorar el rendimiento de Rclone. Nuestras pruebas incluyeron 2 VM para ejecutar transferencias de Rclone en paralelo para escalar horizontalmente. Si tiene un conjunto de datos más grande, puede que desee utilizar hasta 4 máquinas o incluso utilizar instancias con hardware dedicado (BM).
-
-
Comandos de sincronización y copia de clonación
-
El comando de copia de clonación copia los archivos u objetos de origen en el destino. Se omitirán los archivos que son idénticos en el origen y el destino, las pruebas por tamaño y hora de modificación o md5sum. El comando de copia no suprime archivos del destino.
-
El comando de sincronización de clonación sincroniza el origen con el destino, además de omitir archivos idénticos. El destino se modificará para que coincida con el origen, lo que significa que se suprimirán los archivos que no coincidan con el origen.
Nota: Tenga cuidado al utilizar la sincronización y úsela solo cuando desee que el destino se parezca exactamente al origen. Utilice el comando copy cuando solo desee copiar nuevos archivos en el destino.
-
-
Usar indicadores de línea de comandos de clonación derecha
Hay varios indicadores de línea de comandos Rclone que se pueden utilizar con Rclone que afectan a la rapidez con la que se produce la migración de datos. Es importante comprender cómo funcionan algunos de estos indicadores para obtener el mejor rendimiento de transferencia de datos.
-
--no-traverse
: esto solo funciona con el comando copy, no recorre el sistema de archivos de destino. Este indicador ahorra tiempo porque no llevará a cabo listas en el destino para determinar qué archivos copiar. Comprobará los archivos de uno en uno para determinar si se deben copiar. Uno por uno puede parecer lento, pero puede ser más rápido cuando tiene un número muy pequeño de archivos/objetos para copiar en un destino con muchos archivos ya presentes. -
--no-check-dest
: solo funciona con el comando de copia y no comprobará ni mostrará los archivos de destino para determinar qué se debe copiar o mover, lo que minimiza las llamadas de API. Los archivos siempre se transfieren. Utilice este comando cuando sepa que desea que se copie todo en el origen independientemente de lo que esté en el destino o si sabe que el destino está vacío.Nota: Utilice los comandos
no-traverse
ono-check-dest
, muchos usuarios colocan ambos en la línea de comandos, lo que no es necesario.- Si el destino está vacío o desea que todos los archivos se copien del origen al destino independientemente de qué, utilice
no-check-dest
. - Cuando tenga algunos archivos muy grandes que se deban migrar, utilice
no-traverse
, que comprobará cada archivo para ver si está actual en el destino antes de copiarlo en el origen; esto podría guardar en la lista de llamadas de API y la cantidad de datos copiados en el destino.
- Si el destino está vacío o desea que todos los archivos se copien del origen al destino independientemente de qué, utilice
-
--ignore-checksum
: esto realmente acelerará la transferencia; sin embargo, Rclone no comprobará si hay daños en los datos durante la transferencia. -
--oos-disable-checksum
: no almacene el total de control MD5 con metadatos de objeto. Rclone calcula el total de control MD5 de los datos antes de cargarlos y los agrega a los metadatos del objeto, lo que es ideal para la integridad de los datos; sin embargo, provoca retrasos antes de que los archivos grandes comiencen el proceso de carga. -
--transfers <int>
: número de transferencias de archivos que se van a ejecutar en paralelo (valor por defecto 4). Amplíe este número en función del tamaño del sistema en el que esté ejecutando rclone, puede realizar ejecuciones de prueba y aumentar el número entero hasta que alcance la velocidad máxima de transferencia para el host. Realmente recomendamos probar y aumentar este número hasta que obtenga un rendimiento aceptable, hemos visto a los clientes aumentar este número entre 64 y 3000 para obtener el rendimiento deseado. -
--checkers <int>
: número de comprobaciones que se van a ejecutar en paralelo (por defecto, 8). Cantidad de comprobadores de archivos para ejecutar en paralelo, tenga cuidado, ya que puede vaciar el estado del servidor y causar problemas en el destino. Si tiene un sistema con una memoria muy grande, aumente este número en incrementos de 2. El número máximo que probamos este valor con buenos resultados en el entorno de prueba es de 64, normalmente de 8 a 10 es suficiente. Las damas pueden estar entre el 25 y el 50% del número de transferencia; cuando el número de transferencia es mayor, este número tiende a estar más cerca del 25%.Nota: Al escalar horizontalmente con varios hosts que ejecutan transferencias y comprobadores de Rclone, puede pulsar un error 429 "TooManyRequests", en caso de que esto ocurra, empiece por reducir la cantidad de comprobadores en incrementos de 2 hasta que alcance los 10. Si bajar las damas no es suficiente, también tendrá que reducir el número de traslados.
-
--progress
: mostrará el progreso durante la transferencia. -
--fast-list
: utilice una lista recursiva si está disponible; utiliza más memoria, pero menos transacciones/llamadas de API. Esta es una buena opción cuando tiene un número moderado de archivos en directorios anidados. No lo utilice conno-traverse
ono-check-dest
porque son indicadores contrarios. Se puede utilizar con el comando de copia o sincronización. -
--oos-no-check-bucket
: utilícelo cuando sepa que el cubo existe, reduce el número de transacciones que realiza Rclone, define Rclone para asumir que el cubo existe y para empezar a mover datos a él. -
--oos-upload-cutoff
: los archivos de más de este tamaño se cargarán en fragmentos; el valor por defecto es 200MiB. -
--oos-chunk-size
: al cargar archivos de mayor tamaño que la configuración de corte de carga o archivos de tamaño desconocido, se cargarán como cargas de varias partes mediante este tamaño de fragmento. Rclone aumentará automáticamente el tamaño del fragmento al cargar un archivo grande de tamaño conocido para permanecer por debajo del límite de 10,000 fragmentos. El valor por defecto es 5MiB. -
--oos-upload-concurrency <int>
: se utiliza para cargas de varias partes y es el número de fragmentos cargados simultáneamente. Si está cargando pequeñas cantidades de archivos grandes a través de enlaces de alta velocidad y estas cargas no utilizan completamente su ancho de banda, aumentar esto puede ayudar a acelerar las transferencias. El valor predeterminado es 8, si no se utiliza el ancho de banda, aumente lentamente para mejorar el uso del ancho de banda.Nota: Las cargas de varias partes utilizarán memoria adicional al utilizar los parámetros:
--transfers <int>
,--oos-upload-concurrency <int>
y--oos-chunk-size
. Las cargas de una sola parte no utilizan memoria adicional. Al definir estos parámetros, tenga en cuenta la latencia de red, cuanto más latencia tenga, más probabilidades habrá de que las cargas de una sola parte sean más rápidas.
-
-
Ejemplo de clonación de archivo de configuración para 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 clonación
rclone <flags> <command> <source> <dest>
-
Ejemplo de ejecución de una copia de clonación desde un origen de sistema de archivos local o un origen de OCI File Storage al destino de OCI Object Storage.
rclone copy /src/path oci:bucket-name
-
Ejemplo de ejecución de copia de clonación desde el origen de OCI Object Storage a un sistema de archivos local o destino de OCI File Storage.
rclone copy oci:bucket-name /src/path
-
Ejemplo de ejecución de una copia de clonación desde un origen S3 a un destino de OCI Object Storage.
rclone copy s3:s3-bucket-name oci:bucket-name
Nota: Al migrar desde AWS y utilizar el cifrado del servidor con KMS, asegúrese de que rclone esté configurado con
server_side_encryption = aws:kms
para evitar errores de total de control. Para obtener más información, consulte Rclone S3 KMS y Rclone S3 configuration.
Nota: El formato del comando de sincronización será básicamente el mismo, simplemente sustituya la copia por sincronización.
-
Ejemplos de uso de clonación
-
Ejemplo 1: utilice Rclone para migrar un pequeño número de archivos pequeños copiados a un destino que ya contenga datos con un recuento alto de archivos u objetos.
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
Ejemplo 2: clonación con menos archivos grandes con cargas de varias 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>
Nota: Estos son los puntos de inicio de las opciones
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
y--checkers
. Deberá ajustarlos en función del tamaño del archivo/objeto, la memoria y los recursos disponibles en los sistemas que está utilizando para migrar datos. Ajustarlos hasta que obtenga suficiente uso de ancho de banda para migrar los datos de forma óptima. Si el sistema es muy pequeño, es posible que deba ajustar estos números para conservar los recursos. -
Ejemplo: 3 utilice Rclone para la ejecución de escala horizontal en 3 máquinas con hardware dedicado con NIC de 100 Gbps, tamaño mixto de juego de datos con cargas de varias partes con petabytes de datos, cubo no vacío, servicio OCI File Storage al servicio 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
Indicadores adicionales utilizados:
--stats-one-line
: haga que las estadísticas se ajusten en una línea.--max-stats-group
: se desecha el número máximo de grupos de estadísticas para mantener en memoria, en el máximo más antiguo (por defecto, 1000).--oos-attempt-resume-upload
: intento de reanudar la carga de varias partes iniciada anteriormente para el objeto.--oos-leave-parts-on-error
: evite llamar a la carga de abortos en caso de fallo y deje todas las partes cargadas correctamente para la recuperación manual.
Migrar un gran número de archivos mediante Rclone
Sincronización de clonación por directorio. Si va a migrar decenas de millones de archivos/objetos, es importante asegurarse de que los directorios/prefijos estén divididos en unos 10 000 archivos/objetos o menos por directorio. Esto es para evitar que Rclone use demasiada memoria y luego se bloquee. Muchos clientes con un recuento alto (100's de millones o más) de archivos pequeños a menudo se encuentran con este problema. Si todos los archivos están en un solo directorio, divídalos primero.
-
Ejecute el siguiente comando para obtener una lista de archivos en el origen.
rclone lsf --files-only -R src:bucket | sort > src
-
Divida el archivo en fragmentos de 1.000 a 10.000 líneas, mediante la división. El siguiente comando de división dividirá los archivos en fragmentos de 1.000 y, a continuación, los colocará en archivos con el nombre
src_##
, comosrc_00
.split -l 1000 --numeric-suffixes src src_
-
Distribuya los archivos a varias instancias de máquina virtual para ampliar la transferencia de datos. Cada comando Rclone debe tener el siguiente aspecto:
rclone --progress --oos-no-check-bucket --no-traverse --transfers 500 copy remote1:source-bucket remote2:dest-bucket --files-from src_00
Como alternativa, se puede utilizar un bucle for simple para iterar a través de las listas de archivos generadas a partir del comando split. Durante las pruebas con ~270 000 archivos en un solo cubo, vimos que los tiempos de copia mejoraban 40x, el kilometraje puede variar.
Nota: La división de los archivos por estructura de directorios o mediante la utilidad de división es una forma importante de optimizar las transferencias.
Uso de Rclone, OKE y fpart juntos para mover datos de sistemas de archivos a OCI Object Storage
Se pueden utilizar varios pods de Kubernetes para escalar horizontalmente la transferencia de datos entre sistemas de archivos y almacenamiento de objetos. La paralelización acelera las transferencias de datos a sistemas de almacenamiento con una latencia relativamente alta y un alto rendimiento. El enfoque que combina estructuras de directorio de particiones Rclone, OKE y fpart en varios fragmentos y ejecuta la transferencia de datos en paralelo en contenedores, ya sea en el mismo nodo de cálculo o en varios nodos. La ejecución en varios nodos agrega el rendimiento de la red y la potencia de cálculo de cada nodo.
-
El partición del sistema de archivos (Fpart) es una herramienta que se puede utilizar para particionar la estructura de directorios. Puede llamar a herramientas como rsync, tar y Rclone con una partición del sistema de archivos para que se ejecuten en paralelo e independientes entre sí. Utilizaremos fpart con Rclone.
-
fpsync es una secuencia de comandos de envoltorio que utiliza fpart para ejecutar las herramientas de transferencia (rsync, Rclone) en paralelo. El comando
fpsync
se ejecuta desde un host de operador fpsync. La herramienta fpsync también tiene opciones para utilizar nodos de trabajador independientes. La fpsync modificada soporta Rclone y también pods de Kubernetes. -
kubectl gestiona trabajos de Kubernetes.
Realice los pasos:
-
Identifique un host que será su host de operador fpsync que tenga acceso a los datos de origen de migración y Rclone esté instalado.
-
Ejecute el siguiente comando para instalar 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
-
Cree una política de OCI IAM para que el host de operador fpsync gestione el cluster de OKE.
Para ello se puede utilizar la siguiente política. Se puede configurar un permiso más granular para lograr el requisito mínimo básico para controlar los pods.
Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
-
Configure el archivo
kubeconfig
para tener acceso al cluster de OKE. Para obtener más información, consulte Configuración del acceso local a los clusters. -
Instale y aplique parches a fpart y fpsync. El parche fpsync es necesario para ejecutar Rclone o rsync en paralelo para escalar horizontalmente la transferencia de datos. La fpsync que viene con el paquete fpart no soporta pods de Rclone o Kubernetes, se necesita un parche para admitir estas herramientas.
Ejecute el siguiente comando para realizar la instalación en 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
-
Cree la imagen de contenedor.
La especificación de compilación de imagen de docker disponible en
rclone-rsync-image
se puede utilizar para crear la imagen de contenedor. Una vez creada la imagen, se debe cargar en un registro al que se pueda acceder desde el cluster de 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>
Se mantiene una copia de la imagen en
fra.ocir.io/fsssolutions/rclone-rsync:latest.
El directorio de ejemplo contiene algunos archivos de salida de ejemplos. -
Ejecute k-fpsync. La fpsync con parches (k-fpsync) puede particionar el sistema de archivos de origen y escalar horizontalmente la transferencia utilizando varios pods de Kubernetes. La regla anti-afinidad del pod de Kubernetes está configurada para preferir nodos que no tengan ningún pod de trabajador de transferencia en ejecución. Esto ayuda a utilizar el ancho de banda en los nodos de forma eficaz para optimizar el rendimiento. Para obtener más información, consulte Assigning Pods to Nodes.
Monte el sistema de archivos de origen en el host del operador fpart y cree un directorio compartido al que accederán todos los pods. Este es el directorio donde se guardan todos los archivos log y los archivos de partición.
El siguiente comando transfiere datos del sistema de archivos
/data/src
al cubo de OCI Object Storage rclone-2. Iniciará 2 pods a la vez para transferir la partición del sistema de archivos creada por 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
Nota: Los logs de la ejecución se mantienen en el directorio
run-ID
, en el siguiente ejemplo se encuentran en/data/fpsync/{Run-Id}/log directory
. Las salidas de ejemplo se proporcionan en el directorio de ejemplo.
(Opcional) Entornos de prueba
Las recomendaciones se realizan en función de las pruebas y las interacciones con los clientes.
Nota: Se ejecutan desde el script de copia masiva, se incluyen los resultados
os sync
ys5cmd
para proporcionar más información sobre el rendimiento. Obtenga más información sobre el uso del script de copia en bloque desde aquí: Uso de las utilidades de Python de Oracle Cloud Infrastructure Object Storage para operaciones en bloque. Para obtener más información sobre el uso deos sync
ys5cmd
, consulte Tutorial 3: Movimiento de datos a OCI Cloud Storage Services mediante OCI Object Storage Sync y S5cmd.
Entorno de Prueba 1:
1 instancia de VM VM.Standard.E4.Flex
, 1 OCPU, 1Gbps ancho de banda de red, 16 GB de memoria. Para simular la migración local a OCI, copie datos de PHX NFS a IAD.
Juegos de Datos
-
Juego de Datos 1:
Tamaño Total Recuento de Archivos Rango de tamaño de archivo 3TB 3 1TB Método De Tiempo Comando Indicadores sincronización de sistema operativo PHX de archivos/NFS a IAD de objetos 123m17.102s NA --parallel-operations-count 100
s5cmd PHX de archivos/NFS a IAD de objetos 239m20.625s copy run commands.txt
, ejecución por defecto--numworkers 256
rclone PHX de archivos/NFS a IAD de objetos 178m27.101s copy --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
Nota: Nuestras pruebas muestran que
os sync
se ejecuta más rápido para este juego de datos. -
Juego de datos 2:
Tamaño Total Recuento de Archivos Rango de tamaño de archivo 9.787 GB 20.000 1 MB Método De Tiempo Comando Indicadores s5cmd PHX de archivos/NFS a IAD de objetos 1m12.746s copy ejecución por defecto --numworkers 256
sincronización de sistema operativo PHX de archivos/NFS a IAD de objetos 2m48.742s NA --parallel-operations-count 1000
rclone PHX de archivos/NFS a IAD de objetos 1m52.886s copy --transfers=500 --oos-no-check-bucket --no-check-dest
Nota: Nuestras pruebas muestran que
s5cmd
está realizando el mejor rendimiento para este juego de datos.
Entorno de Prueba 2:
Instancias de VM: se han utilizado 2 instancias de VM para cada prueba, hemos utilizado VM.Standard.E4.Flex
con 24 OCPU, 24Gbps ancho de banda de red y 384 GB de memoria. Oracle Linux 8 se utilizó para las pruebas de Linux.
Juegos de datos utilizados en las pruebas: 14 directorios principales con los siguientes tamaños y recuentos de archivos.
Directorio de juego de datos | Tamaño | Recuento de Archivos | Tamaño de cada archivo |
---|---|---|---|
Directorio 1 | 107.658 GiB | 110.242 | 1 MiB |
Directorio 2 | 1.687 GiB | 110.569 | 15 MiB |
Directorio 3 | 222 GiB | 111 | 2 GiB |
Directorio 4 | 1.265 TiB | 1.295 | 1 GiB |
Directorio 5 | 26.359 GiB | 1.687 | 16 MiB |
Directorio 6 | 105.281 MiB | 26.952 | 4 KiB |
Directorio 7 | 29.697 MiB | 30.410 | 1 KiB |
Directorio 8 | 83.124 GiB | 340.488 | 256 KiB |
Directorio 9 | 21.662 GiB | 354.909 | 64 KiB |
Directorio 10 | 142.629 GiB | 36.514 | 4 MiB |
Directorio 11 | 452.328 MiB | 57.898 | 8 MiB |
Directorio 12 | 144 GiB | 72 | 2GiB |
Directorio 13 | 208.500 GiB | 834 | 256 MiB |
Directorio 14 | 54.688 GiB | 875 | 64 MiB |
Nota:
- Los 14 directorios se dividieron entre las 2 instancias de VM.
- Cada VM ejecutó 7 comandos/procesos, 1 para cada directorio a menos que se indique lo contrario.
Método | De | Tiempo | Comando | Indicadores/Notas |
---|---|---|---|---|
s5cmd | PHX de archivos/NFS a IAD de objetos | 54m41.814s | copy | --numworkers 74 |
sincronización de sistema operativo | PHX de archivos/NFS a IAD de objetos | 65m43.200s | NA | --parallel-operations-count 50 |
rclone | PHX de archivos/NFS a IAD de objetos | 111m59.704s | copy | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50 |
rclone | PHX de objeto a IAD de objeto | 28m55.663s | copy | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400 , el mismo comando se ejecuta en 2 VM para una simultaneidad de 800 transferencias |
Script de copia masiva de python | PHX de objeto a IAD de objeto | 25m43.715s | Por defecto | 1 máquina virtual, 50 trabajadores, 100 000 archivos en cola a la vez |
Los comandos s5cmd
y os sync
pasan bien del sistema de archivos/NFS al almacenamiento de objetos. El script de copia en bloque solo realiza transferencias de un bloque a otro y no se ha probado para la migración NFS.
Solo rclone
y el script de copia en bloque de python pueden realizar transferencias de bloque a bloque entre regiones, por lo que el resto de herramientas no se han probado. El script de copia en bloque de python funciona mejor en los datos de cubo a cubo entre regiones, pero solo es compatible con OCI Object Storage, mientras que rclone
soporta muchos backends y proveedores de nube.
Se realizaron pequeñas pruebas con rclone
para transferir datos de Microsoft Azure Blob Storage, Amazon Simple Storage Service (Amazon S3) y Google Cloud Platform Cloud Storage a OCI Object Storage a fin de verificar que las herramientas funcionan para este tipo de transferencias. Para obtener más información, consulte Migración de datos al almacenamiento de objetos en la nube mediante Rclone.
Entorno de Prueba 3:
Instancias de VM: se han utilizado 1-2 instancias de VM para cada prueba, hemos utilizado VM.Standard.E4.Flex
con 24 OCPU, 24Gbps ancho de banda de red y 384 GB de memoria. Oracle Linux 8 se utilizó para las pruebas de Linux. Todas las pruebas fueron de cubo a cubo.
Tamaño Total | Recuento de Archivos | Rango de tamaño de archivo |
---|---|---|
7.74 TiB | 1.000.000 | 30 MiB |
Método | De | Tiempo | Comando | Indicadores | Notas: | |
---|---|---|---|---|---|---|
rclone | IAD de objeto a objeto -> IAD | 18h39m11.4s | copy | --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi |
1 VM, muy lenta debido al alto recuento de archivos y la lista de llamadas al origen | |
rclone | IAD de objeto a objeto -> IAD | 55m8.431s | copy | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 máquinas virtuales, 500 transferencias por máquina virtual, lista de objetos/archivos alimentados con 1.000 archivos a la vez, evita la enumeración en el origen y el destino y mejora el rendimiento | |
Script de copia masiva de python | IAD de objeto a objeto -> IAD | 28m21.013s | NA | Por defecto | 1 máquina virtual, 50 trabajadores, 100 000 archivos en cola a la vez | |
Script de copia masiva de python | IAD de objeto a objeto -> IAD | NA | NA | Por defecto | 2 máquinas virtuales, 50 trabajadores por máquina virtual, 100 000 archivos en cola a la vez. Se recibieron 429 errores, el script se bloqueó y no se pudo completar. | |
s5cmd | IAD de objeto a objeto -> IAD | 14m10.864s | copy | Valores por defecto (256 trabajadores) | 1 Máquina virtual | NA |
s5cmd | IAD de objeto a objeto -> IAD | 7m50.013s | copy | Valores por Defecto | 2 máquinas virtuales, 256 trabajadores cada una | Se ejecuta casi la mitad del tiempo como 1 VM |
s5cmd | IAD de objeto a objeto -> IAD | 3m23.382s | copy | --numworkers 1000 |
1 VM, 1000 trabajadores | En varias pruebas, encontramos que esta era la ejecución óptima para este juego de datos con s5cmd |
rclone | IAD de objeto a objeto -> PHX | 184m36.536s | copy | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 máquinas virtuales, 500 transferencias por máquina virtual, lista de objetos/archivos alimentados con 1.000 archivos a la vez | |
Script de copia masiva de python | IAD de objeto a objeto -> PHX | 35m31.633s | NA | Por defecto | 1VM, 50 trabajadores, 100 000 archivos en cola a la vez |
El comando s5cmd
se ejecuta mejor de forma consistente para el recuento de archivos grandes y los archivos pequeños. s5cmd
está limitado porque solo puede realizar copias de cubo a cubo en el mismo arrendamiento y en la misma región.
Observe grandes mejoras en rclone
una vez que los archivos se alimentan del comando y de la ampliación a otra VM. Rclone puede funcionar más lento que otras herramientas, es la más versátil en las diversas plataformas que soporta y los tipos de migraciones que puede realizar.
La API de Python de copia masiva de OCI Object Storage solo puede utilizar la API nativa de OCI CopyObject y solo puede obtener una simultaneidad de 50 trabajadores antes de ser limitada.
Las pruebas de IAD a PHX solo se realizaron en lo que funcionó mejor en IAD a IAD y las pruebas problemáticas no se volvieron a ejecutar. s5cmd
no se ha ejecutado para IAD en PHX porque solo puede realizar copias de cubo a cubo en la misma región.
Pasos Siguientes
Vaya a los tutoriales relacionados relevantes para sus necesidades de migración. Para mover datos a los servicios de almacenamiento en la nube de OCI:
-
Con OCI Object Storage Sync y S5cmd, consulte Tutorial 3: traslado de datos a OCI Cloud Storage Services mediante OCI Object Storage Sync y S5cmd.
-
Uso de Fpsync y Rsync para migraciones de datos de sistemas de archivos, consulte Tutorial 4: Mover datos a OCI Cloud Storage Services mediante Fpsync y Rsync para migraciones de datos de sistemas de archivos.
Enlaces relacionados
-
Aspectos esenciales de la migración de datos al almacenamiento en la nube de OCI
-
Transferencia de datos entre sistemas de archivos y OCI Object Storage mediante OKE
-
Tutorial 3: Traslado de datos a OCI Cloud Storage Services mediante OCI Object Storage Sync y S5cmd
-
Anuncio del soporte de backend del proveedor de OCI Object Storage nativo en rclone
Agradecimientos
- Autores: Melinda Centeno (directora principal sénior de productos, OCI Object Storage), Vinoth Krishnamurthy (miembro principal del personal técnico, OCI File Storage), Aboo Valappil (miembro consultor del personal técnico, OCI File y Block Storage)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Move Data into OCI Cloud Storage Services using Rclone
G25566-02
Copyright ©2025, Oracle and/or its affiliates.