주:

Rclone을 사용하여 OCI 클라우드 스토리지 서비스로 데이터 이동

소개

이 자습서 시리즈는 OCI(Oracle Cloud Infrastructure) 클라우드 스토리지 서비스로 데이터를 마이그레이션하는 다양한 방법을 보여주는 네 가지 자습서 시리즈 중 튜토리얼 2입니다. 이 시리즈는 자습서 1: 마이그레이션 툴을 사용하여 데이터를 OCI 클라우드 스토리지 서비스로 이동을 검토하여 다양한 툴을 광범위하게 이해한 다음 마이그레이션 요구사항과 관련된 관련 자습서 또는 문서를 진행할 수 있도록 설정됩니다. 이 사용지침서에서는 Rclone을 사용하여 OCI 클라우드 스토리지 서비스로 데이터를 마이그레이션하는 방법을 중점적으로 다룹니다.

OCI는 고객에게 고성능 컴퓨팅 및 저렴한 클라우드 스토리지 옵션을 제공합니다. Oracle은 온디맨드 로컬, 객체, 파일, 블록 및 아카이브 스토리지를 통해 주요 스토리지 워크로드 요구 사항 및 사용 사례를 해결합니다.

OCI 클라우드 스토리지 서비스는 모든 엔터프라이즈 요구사항에 대해 빠르고 안전하며 내구성이 뛰어난 클라우드 스토리지 옵션을 제공합니다. OCI File Storage with Lustre 및 OCI Block Volumes 서비스와 같은 고성능 옵션부터 고성능 마운트 대상을 갖춘 OCI File Storage 서비스의 전담 관리 엑사바이트 규모의 파일 시스템, 내구성과 확장성이 뛰어난 OCI Object Storage까지. 오라클의 솔루션은 AI/ML 워크로드와 같은 성능 집약적 애플리케이션에서부터 엑사바이트 규모의 데이터 레이크에 이르기까지 고객의 요구를 충족할 수 있습니다.

Rclone은 클라우드 또는 클라우드 스토리지 공급업체 간에 데이터를 마이그레이션하는 오픈 소스 명령줄 유틸리티입니다. Rclone은 소스 스토리지와 대상 스토리지 간의 정기적인 동기화뿐만 아니라 일회성 마이그레이션을 수행하는 데 사용할 수 있습니다. Rclone은 오브젝트 스토리지, 파일 스토리지, 마운트된 드라이브 및 70개의 지원되는 스토리지 유형 간에 데이터를 마이그레이션할 수 있습니다. OCI Object Storage는 기본적으로 Rclone 백엔드 제공자로 지원됩니다. Rclone 프로세스를 확장 및 축소하여 매개변수 옵션을 사용하여 전송 성능을 향상시킬 수 있습니다.

마이그레이션해야 하는 데이터의 양과 새로운 OCI 스토리지 플랫폼으로 컷오버할 수 있는 다운타임을 결정합니다. 일괄 마이그레이션은 마이그레이션을 관리 가능한 증분으로 분류하는 데 적합합니다. 일괄 이전을 통해 여러 창에서 특정 애플리케이션에 대한 작동 중지 시간을 예약할 수 있습니다. 일부 고객은 2~4일 동안 일정이 잡힌 유지보수 기간을 통해 일회성 마이그레이션을 유연하게 수행할 수 있습니다. OCI FastConnect은 1G에서 400G까지의 포트 속도로 OCI와 사용자 환경 간에 전용 개인 연결을 생성하여 데이터 전송 프로세스를 가속화하는 데 사용할 수 있습니다. OCI FastConnect을 Megaport 및 ConsoleConnect과 같은 파트너 솔루션과 통합하여 데이터 센터 또는 클라우드 간 상호 연결에 대한 프라이빗 접속을 생성함으로써 다른 클라우드 공급업체의 데이터를 OCI 클라우드 스토리지 서비스로 보다 직접 이동할 수 있습니다. 자세한 내용은 FastConnect integration with Megaport Cloud Router을 참조하십시오.

대상

DevOps 엔지니어, 개발자, OCI 클라우드 스토리지 관리자 및 사용자, IT 관리자, OCI 고급 사용자 및 애플리케이션 관리자.

목표

Rclone을 사용하여 데이터를 OCI 클라우드 스토리지 서비스로 복사 및 동기화하는 방법을 확인해 보세요.

필요 조건

Rclone 및 기본 용어 개요

Rclone은 지원하는 많은 프로토콜과 클라우드 제공업체 및 구성 용이성 때문에 유용한 마이그레이션 도구입니다. 모든 유형의 데이터 세트에 적합한 범용 마이그레이션 도구입니다. Rclone은 더욱 빠른 데이터 전송을 위해 여러 노드에 걸쳐 확장하기 위해 일괄 처리로 분할할 수 있는 데이터 세트에 특히 적합합니다.

Rclone을 사용하여 다음을 마이그레이션할 수 있습니다.

Rclone 명령 및 플래그:

Rclone 사용 예

Rclone을 사용하여 대용량 파일 이전

Rclone은 디렉토리별로 동기화됩니다. 수만 개의 파일/오브젝트를 마이그레이션하는 경우 디렉토리/접두어가 디렉토리당 약 10,000개의 파일/오브젝트 또는 하위로 나뉘어져 있는지 확인하는 것이 중요합니다. 이는 Rclone이 너무 많은 메모리를 사용한 다음 충돌하지 않도록 하기 위한 것입니다. 많은 수의 작은 파일(100만 개 이상)을 보유한 많은 고객이 이 문제에 자주 직면하게 됩니다. 모든 파일이 단일 디렉토리에 있는 경우 먼저 나눕니다.

  1. 다음 명령을 실행하여 소스의 파일 목록을 가져옵니다.

    rclone lsf --files-only -R src:bucket | sort > src
    
  2. 분할을 사용하여 파일을 1,000-10,000행의 조각으로 나눕니다. 다음 split 명령은 파일을 1,000 조각으로 나누고 src_## 파일(예: src_00)에 넣습니다.

    split -l 1000 --numeric-suffixes src src_
    
  3. 여러 VM 인스턴스에 파일을 배포하여 데이터 전송을 확장합니다. 각 Rclone 명령은 다음과 같아야 합니다.

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

    또는 간단한 for 루프를 사용하여 split 명령에서 생성된 파일 목록을 반복할 수 있습니다. 단일 버킷에서 최대 270,000개의 파일을 테스트하는 동안 복사 시간이 40x를 개선하는 것으로 확인되었으며 마일리지가 다를 수 있습니다.

    주: 디렉토리 구조별로 또는 분할 유틸리티를 사용하여 파일을 분할하는 것은 전송을 최적화하는 중요한 방법입니다.

Rclone, OKE 및 fpart를 함께 사용하여 파일 시스템에서 OCI 오브젝트 스토리지로 데이터 이동

여러 Kubernetes 포드를 사용하여 파일 시스템과 오브젝트 스토리지 간의 데이터 전송을 확장할 수 있습니다. 병렬화는 대기 시간이 비교적 짧고 처리량이 많은 스토리지 시스템으로의 데이터 전송 속도를 높입니다. Rclone, OKE 및 fpart 파티션 디렉토리 구조를 여러 조각으로 결합하여 동일한 컴퓨트 노드 또는 여러 노드에 있는 컨테이너에서 병렬로 데이터 전송을 실행하는 접근 방식입니다. 여러 노드에서 실행하면 각 노드의 네트워크 처리량과 계산 성능이 통합됩니다.

단계를 수행합니다:

  1. 마이그레이션 소스 데이터에 액세스할 수 있고 Rclone이 설치되어 있는 fpsync 운영자 호스트가 될 호스트를 식별합니다.

  2. 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. fpsync 운영자 호스트에 대한 OCI IAM 정책을 생성하여 OKE 클러스터를 관리합니다.

    이 용도로 다음 정책을 사용할 수 있습니다. 포드를 제어하기 위한 최소 요구 사항을 충족하도록 보다 세분화된 권한을 구성할 수 있습니다.

    Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
    
  4. OKE 클러스터에 액세스할 수 있도록 kubeconfig 파일을 설정합니다. 자세한 내용은 클러스터에 대한 로컬 액세스 설정을 참조하십시오.

  5. fpart 및 fpsync를 설치하고 패치합니다. 데이터 전송을 축소하려면 Rclone 또는 rsync를 병렬로 실행하려면 fpsync 패치가 필요합니다. fpart 패키지와 함께 제공되는 fpsync는 Rclone 또는 Kubernetes 포드를 지원하지 않으며 이러한 도구를 지원하려면 패치가 필요합니다.

    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. 컨테이너 이미지를 작성합니다.

    rclone-rsync-image에서 사용할 수 있는 도커 이미지 빌드 사양을 사용하여 컨테이너 이미지를 빌드할 수 있습니다. 이미지가 빌드되면 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>
    

    이미지 복사본은 fra.ocir.io/fsssolutions/rclone-rsync:latest.에서 유지 관리됩니다. 샘플 디렉토리에는 몇 가지 예제 출력 파일이 포함되어 있습니다.

  7. k-fpsync를 실행합니다. 패치된 fpsync(k-fpsync)는 소스 파일 시스템을 분할하고 여러 Kubernetes POD를 사용하여 전송을 확장할 수 있습니다. Kubernetes Pod 반친화력 규칙은 실행 중인 전송 워커 POD가 없는 노드를 선호하도록 구성됩니다. 이를 통해 노드의 대역폭을 효과적으로 활용하여 성능을 최적화할 수 있습니다. 자세한 내용은 노드에 Pod 지정을 참조하십시오.

    fpart 운영자 호스트에 소스 파일 시스템을 마운트하고 모든 Pod에서 액세스할 공유 디렉토리를 만듭니다. 이 디렉토리는 모든 로그 파일과 분할 영역 파일이 보관되는 디렉토리입니다.

    다음 명령은 파일 시스템 /data/src에서 OCI Object Storage 버킷 rclone-2로 데이터를 전송합니다. 그것은 fpart에 의해 생성 된 파일 시스템 파티션을 전송하기 위해 한 번에 2 개의 포드를 시작합니다.

    # 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
    

    주: 실행 로그는 run-ID 디렉토리에 보관되며 다음 예에서는 /data/fpsync/{Run-Id}/log directory에 있습니다. 샘플 출력은 샘플 디렉토리에 제공됩니다.

(선택 사항) 테스트 환경

테스트 및 고객 상호 작용을 기반으로 권장 사항이 만들어집니다.

주: 성능에 대한 자세한 정보를 제공하기 위해 대량 복사 스크립트 os syncs5cmd 결과에서 실행됩니다. 여기에서 대량 복사 스크립트 사용에 대해 알아봅니다. Oracle Cloud Infrastructure Object Storage Python Utilities for Bulk Operations. os syncs5cmd 사용에 대한 자세한 내용은 자습서 3: OCI Object Storage Sync 및 S5cmd를 사용하여 데이터를 OCI Cloud Storage Services로 이동을 참조하십시오.

테스트 환경 1:

VM 인스턴스 1개 VM.Standard.E4.Flex, OCPU 1개, 네트워크 대역폭 1Gbps, 메모리 16GB. 온프레미스에서 OCI로의 마이그레이션을 시뮬레이션하기 위해 PHX NFS에서 IAD로 데이터를 복사했습니다.

데이터 집합

테스트 환경 2:

VM 인스턴스: 각 테스트에 2개의 VM 인스턴스가 사용되었으며, 24개의 OCPU, 24Gbps 네트워크 대역폭, 384GB 메모리가 포함된 VM.Standard.E4.Flex를 사용했습니다. Oracle Linux 8은 Linux 테스트에 사용되었습니다.

테스트에 사용되는 데이터 세트: 다음 파일 개수 및 크기를 사용하는 14개의 기본 디렉토리입니다.

데이터 세트 디렉토리 크기 파일 수 각 파일의 크기
디렉토리 1 107.658 GiB 110,242 1 MiB
디렉토리 2 1.687 GiB 110,569 15 MiB
디렉토리 3 222 GiB 111 2 GiB
디렉토리 4 1.265 TiB 1,295 1 GiB
디렉토리 5 26.359 GiB 1,687 16 MiB
디렉토리 6 105.281 MiB 26,952 4 KiB
디렉토리 7 29.697 MiB 30,410 1 KiB
디렉토리 8 83.124 GiB 340,488 256 KiB
디렉토리 9 21.662 GiB 354,909 64 KiB
디렉토리 10 142.629 GiB 36,514 4 MiB
디렉토리 11 452.328 MiB 57,898 8 MiB
디렉토리 12 144 GiB 72 2GiB
디렉토리 13 208.500 GiB 834 256 MiB
디렉토리 14 54.688 GiB 875 64 MiB

참고:

방법 시작: 부터 시간 명령 플래그/ 노트
s5cmd NFS/File PHX to Object IAD 54m41.814s 복사 --numworkers 74
os 동기화 NFS/File PHX to Object IAD 65m43.200s NA --parallel-operations-count 50
복제 NFS/File PHX to Object IAD 111m59.704s 복사 --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50
복제 객체 PHX와 객체 IAD 28m55.663s 복사 --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400, 800개의 전송 동시성을 위해 2개의 VM에서 동일한 명령 실행
python 대량 복사 스크립트 객체 PHX와 객체 IAD 25m43.715s 기본 VM 1개, 작업자 50명, 한 번에 대기열에 있는 파일 100,000개

s5cmdos sync 명령은 파일 시스템/NFS에서 객체 스토리지로 잘 작동합니다. 대량 복사 스크립트는 버킷 간 전송만 수행하며 NFS 마이그레이션에 대해 테스트되지 않았습니다.

rclone 및 python 대량 복사 스크립트만 여러 영역에서 버킷 간 전송을 수행할 수 있으므로 다른 도구가 테스트되지 않았습니다. python 대량 복사 스크립트는 리전 간 버킷 간 데이터에서 성능이 더 뛰어나지만 rclone는 많은 백엔드 및 클라우드 제공업체를 지원하는 반면 OCI Object Storage와만 호환됩니다.

소규모 테스트 실행은 rclone를 사용하여 Microsoft Azure Blob Storage, Amazon Simple Storage Service(Amazon S3) 및 Google Cloud Platform Cloud Storage에서 OCI Object Storage로 데이터를 전송하여 이러한 유형의 전송에 대해 도구가 작동하는지 확인했습니다. 자세한 내용은 Rclone을 사용하여 클라우드 내 오브젝트 스토리지로 데이터 이동을 참조하십시오.

테스트 환경 3:

VM 인스턴스: 각 테스트에 1-2개의 VM 인스턴스가 사용되었으며, 24개의 OCPU, 24Gbps 네트워크 대역폭, 384GB 메모리를 갖춘 VM.Standard.E4.Flex를 사용했습니다. Oracle Linux 8은 Linux 테스트에 사용되었습니다. 모든 테스트는 버킷 간 테스트였습니다.

총 크기 파일 수 파일 크기 범위
7.74 TiB 1,000,000 30 MiB
방법 시작: 부터 시간 명령 플래그 참고  
복제 객체 간 IAD -> IAD 18h39m11.4s 복사 --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi VM 1개, 파일 수가 많고 소스 호출 나열으로 인해 속도가 매우 느림  
복제 객체 간 IAD -> IAD 55m8.431s 복사 --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> VM 2개, VM당 500개 전송, 객체/파일 목록으로 한 번에 1,000개 파일 제공, 소스 및 대상 상장 방지 및 성능 향상  
python 대량 복사 스크립트 객체 간 IAD -> IAD 28m21.013s NA 기본 VM 1개, 작업자 50명, 한 번에 대기열에 있는 파일 100,000개  
python 대량 복사 스크립트 객체 간 IAD -> IAD NA NA 기본 VM 2개, VM당 작업자 50명, 한 번에 대기열에 있는 파일 100,000개 429 오류 수신, 스크립트가 중단되어 완료할 수 없음  
s5cmd 객체 간 IAD -> IAD 14m10.864s 복사 기본값(256명 근로자) 1 VM NA
s5cmd 객체 간 IAD -> IAD 7m50.013s 복사 기본값 VM 2개, VM당 작업자 256명 VM 1개로 절반 시간 실행
s5cmd 객체 간 IAD -> IAD 3m23.382s 복사 --numworkers 1000 VM 1개, 작업자 1,000명 여러 테스트에서 s5cmd를 사용하여 이 데이터 세트에 대한 최적의 실행임을 발견했습니다.
복제 객체 간 IAD -> PHX 184m36.536s 복사 --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> VM 2개, VM당 500개 전송, 객체/파일 목록으로 한 번에 1,000개 파일 제공  
python 대량 복사 스크립트 객체 간 IAD -> PHX 35m31.633s NA 기본 1VM, 작업자 50명, 한 번에 대기열에 있는 파일 100,000개  

s5cmd 명령은 대용량 파일 수 및 작은 파일에 대해 일관되게 실행되었습니다. s5cmd는 동일한 테넌시 및 동일한 리전 내에서만 버킷 간 복사를 수행할 수 있으므로 제한됩니다.

파일이 명령에 제공되고 다른 VM으로 확장되면 rclone가 크게 향상됩니다. Rclone은 다른 도구보다 느리게 실행될 수 있으며, 지원하는 다양한 플랫폼과 수행할 수 있는 마이그레이션 유형에서 가장 다양합니다.

OCI Object Storage Bulk Copy Python API는 OCI Native CopyObject API만 사용할 수 있으며 제한되기 전에 최대 50명의 작업자를 동시에 이용할 수 있습니다.

IAD에서 PHX에 대한 테스트는 IAD에서 IAD에 가장 잘 작동하는 것에 대해서만 수행되었으며 문제가 있는 테스트는 다시 실행되지 않았습니다. IAD에서 PHX로의 s5cmd는 동일한 지역 내에서 버킷 간 복사만 수행할 수 있으므로 실행되지 않았습니다.

다음 단계

마이그레이션 요구 사항과 관련된 자습서로 이동합니다. OCI 클라우드 스토리지 서비스로 데이터를 이동하려면 다음을 수행합니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.