주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
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을 사용하여 파일 시스템 데이터(로컬, NAS, 클라우드 호스팅)를 OCI Object Storage로 마이그레이션할 수 있습니다.
-
다른 클라우드 객체 또는 Blob 스토리지의 데이터를 OCI Object Storage로 마이그레이션합니다.
-
Oracle Cloud Infrastructure Kubernetes Engine(OKE)에서 Rclone을 사용하여 OCI File Storage에서 OCI Object Storage로 데이터를 마이그레이션합니다.
필요 조건
-
OCI 계정입니다.
-
OCI의 가상 머신(VM) 인스턴스는 마이그레이션 도구를 배포하고 사용할 수 있는 마이그레이션 도구 또는 시스템을 배포합니다.
-
.oci
이라는 하위 디렉토리의 홈 디렉토리에 작업 구성 파일과 함께 설치된 OCI CLI(Oracle Cloud Infrastructure 명령행 인터페이스)입니다. 자세한 내용은 Setting up the Configuration File을 참조하십시오. -
OCI Object Storage 버킷에 액세스합니다.
-
OCI Object Storage를 사용할 수 있는 사용자 권한, 버킷 및 객체를 관리할 수 있는 액세스 권한 또는 하나 이상의 버킷 또는 컴파트먼트에 대한 객체 제품군을 관리할 수 있는 액세스 권한이 있습니다. 자세한 내용은 공통 정책 및 정책 참조를 참조하십시오.
-
OCI File Storage를 생성, 익스포트 및 마운트하거나, VM에 이미 마운트된 OCI File Storage 마운트 대상에 액세스하거나, 데이터 복사에 사용할 다른 NFS 마운트 또는 로컬 파일 시스템에 액세스할 수 있는 사용자 권한입니다. 자세한 내용은 파일 스토리지 정책 관리를 참조하십시오.
-
Mac OS, Linux, Berkeley 소프트웨어 배포판(BSD) 또는 Windows PowerShell, 명령 프롬프트 또는 bash에서 터미널/셸 인터페이스 사용에 대한 기본적인 이해
-
Linux 시스템에 소프트웨어를 설치하는 데 익숙하며 Kubernetes에 대한 경험이나 이해가 있습니다.
-
Oracle Cloud Infrastructure Identity and Access Management(OCI IAM)에 대한 기본 지식과 동적 그룹의 Ubuntu 호스트를 사용한 동적 그룹 작업. 자세한 내용은 동적 그룹 관리를 참조하십시오.
-
Rclone 및 기타 마이그레이션 도구를 설치하려면 OCI Cloud Storage로의 데이터 이전을 위한 마이그레이션 필수 자료를 검토하세요.
-
사용할 수 있는 마이그레이션 툴을 알아보려면 자습서 1: 마이그레이션 툴을 사용하여 데이터를 OCI 클라우드 스토리지 서비스로 이동을 참조하십시오.
Rclone 및 기본 용어 개요
Rclone은 지원하는 많은 프로토콜과 클라우드 제공업체 및 구성 용이성 때문에 유용한 마이그레이션 도구입니다. 모든 유형의 데이터 세트에 적합한 범용 마이그레이션 도구입니다. Rclone은 더욱 빠른 데이터 전송을 위해 여러 노드에 걸쳐 확장하기 위해 일괄 처리로 분할할 수 있는 데이터 세트에 특히 적합합니다.
Rclone을 사용하여 다음을 마이그레이션할 수 있습니다.
-
다른 파일 시스템 스토리지 유형 및 객체 스토리지(OCI Object Storage 포함) 간 파일 시스템 데이터(OCI File Storage, OCI Block Storage, OCI File Storage with Lustre, 온프레미스 파일 시스템 및 온프레미스 NFS 포함)
-
지원되는 클라우드 제공업체에서 OCI Object Storage로 또는 OCI Object Storage로부터의 객체 스토리지.
Rclone 명령 및 플래그:
-
Rclone 성능 이해
Rclone은 파일 시스템 데이터, 기타 클라우드 제공업체 및 OCI 클라우드 스토리지 서비스 간에 파일을 동기화하거나 복사하는 데 적합한 범용 도구입니다. 성능은 확장 및 확장이 가능한 정도에 따라 달라집니다. 네트워크 대역폭 임계값에 도달한 시기를 확인하려면 샘플 마이그레이션 세트를 사용하여 마이그레이션 시스템에서 다양한 테스트를 실행하는 것이 좋습니다.
예를 들어 소스 버킷에는 각각 약 1TB의 폴더/접두어가 10개 있습니다. 대규모 CPU/RAM 용량의 2개 VM에 마이그레이션을 분할하고 두 VM에서 병렬로 여러 Rclone 복사 프로세스를 트리거할 수 있습니다. 각 폴더의 토폴로지 및 컴퓨팅 용량에 따라 Rclone 매개변수를 조정하여 전송 속도를 향상시킬 수 있습니다.
두 VM에서 다음 명령을 실행한 후 각 VM에서 NIC가 포화 상태가 될 때까지 전송 수 및 검사기 수를 조정할 수 있습니다.
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
-
CPU, 메모리 및 네트워크 대역폭이 더 많은 시스템 또는 VM 인스턴스는 더 많은 파일 전송 및 검사기를 병렬로 실행할 수 있습니다. 리소스가 많은 시스템으로 확장하면 성능이 더 빨라집니다.
-
구조를 기반으로 데이터를 다양한 배치로 분할할 수 있는 경우 여러 시스템 또는 VM 인스턴스에서 Rclone을 실행하여 확장할 수도 있습니다.
Rclone 성능을 향상시키려면 확장 및 축소가 권장됩니다. 테스트에는 Rclone 전송을 병렬로 실행하여 확장할 수 있는 2개의 VM이 포함되었습니다. 데이터 집합이 클 경우 최대 4대의 시스템을 사용하거나 BM(베어 메탈) 인스턴스를 사용할 수도 있습니다.
-
-
Rclone 복사 및 동기화 명령
-
Rclone copy 명령은 소스 파일 또는 객체를 대상에 복사합니다. 소스와 대상에서 동일한 파일을 건너뛰고 크기와 수정 시간 또는 md5sum으로 테스트합니다. 복사 명령은 대상에서 파일을 삭제하지 않습니다.
-
Rclone sync 명령은 소스와 대상을 동기화하고 동일한 파일도 건너뜁니다. 소스와 일치하도록 대상이 수정됩니다. 즉, 소스와 일치하지 않는 파일이 삭제됩니다.
주: 동기화를 주의해서 사용하고 대상이 소스와 똑같이 보이도록 하려는 경우에만 사용하십시오. 새 파일을 대상으로 복사하려는 경우 복사 명령을 사용합니다.
-
-
오른쪽 Rclone 명령행 플래그 사용
Rclone과 함께 사용할 수 있는 Rclone 명령줄 플래그는 데이터 마이그레이션 속도에 영향을 줍니다. 이러한 플래그 중 일부가 어떻게 작동하여 최상의 데이터 전송 처리량을 확보하는지 이해하는 것이 중요합니다.
-
--no-traverse
: 복사 명령에서만 작동하며 대상 파일 시스템을 통과하지 않습니다. 이 플래그는 복사할 파일을 결정하기 위해 대상에서 목록을 수행하지 않으므로 시간을 절약합니다. 한 번에 하나씩 파일을 검사하여 복사해야 하는지 확인합니다. 하나씩 느리게 보일 수 있지만 이미 많은 파일이 있는 대상으로 복사할 파일/객체 수가 매우 적을 때 더 빠를 수 있습니다. -
--no-check-dest
: 복사 명령에서만 작동하며 대상 파일을 확인하거나 나열하여 API 호출을 최소화하는 복사 또는 이동이 필요한 항목을 결정하지 않습니다. 파일은 항상 전송됩니다. 대상에 있는 항목에 관계없이 또는 대상이 비어 있음을 알고 있는 경우 소스의 모든 항목이 복사되도록 하려면 이 명령을 사용합니다.주:
no-traverse
또는no-check-dest
명령을 사용하면 많은 사용자가 필요하지 않은 명령행에 둘 다 넣습니다.- 대상이 비어 있거나 대상에 관계없이 소스에서 대상으로 모든 파일을 복사하려면
no-check-dest
를 사용합니다. - 마이그레이션해야 하는 매우 큰 파일이 몇 개 있는 경우
no-traverse
를 사용하여 소스에 복사하기 전에 각 파일이 대상에 최신인지 확인합니다. 이렇게 하면 목록 API 호출 및 대상에 복사된 데이터 양이 절약될 수 있습니다.
- 대상이 비어 있거나 대상에 관계없이 소스에서 대상으로 모든 파일을 복사하려면
-
--ignore-checksum
: 이로 인해 전송 속도가 빨라지지만 Rclone은 전송 중 데이터 손상을 검사하지 않습니다. -
--oos-disable-checksum
: 객체 메타데이터와 함께 MD5 체크섬을 저장하지 마십시오. Rclone은 업로드하기 전에 데이터의 MD5 체크섬을 계산하여 객체 메타데이터에 추가합니다. 이는 데이터 무결성에 매우 적합하지만 큰 파일이 업로드 프로세스를 시작하기 전에 지연이 발생합니다. -
--transfers <int>
: 병렬로 실행할 파일 전송 수입니다(기본값 4). rclone을 실행 중인 시스템의 크기에 따라 이 숫자의 크기를 조정합니다. 호스트의 최대 전송 속도에 도달할 때까지 테스트 실행을 수행하고 정수를 늘릴 수 있습니다. 우리는 당신이 수락가능한 성과를 얻을 때까지 이 수를 시험하고 올리는 것을 진짜로 추천합니다, 우리는 고객이 원하는 성과를 얻기 위하여 64-3000 사이에서 이 수를 올리는 것을 보았습니다. -
--checkers <int>
: 병렬로 실행할 검사 수입니다(기본값 8). 병렬로 실행할 파일 검사기의 양입니다. 서버 상태를 비우고 대상에 문제를 일으킬 수 있으므로 주의하십시오. 메모리가 매우 큰 시스템이 있는 경우 이 숫자를 2씩 늘립니다. 테스트 환경에서 좋은 결과로 이 설정을 테스트한 최대 수는 64개이며 일반적으로 8-10개로 충분합니다. 체커는 전송 번호의 25-50 %에서 어디에나있을 수 있습니다; 전송 번호가 높을 때이 숫자는 25 %에 가까운 경향이 있습니다.주: Rclone 전송 및 검사기를 실행하는 여러 호스트로 스케일 아웃할 때 429 "TooManyRequests" 오류가 발생할 수 있습니다. 이렇게 하려면 먼저 10에 도달할 때까지 검사기 양을 2씩 증분하여 낮춰야 합니다. 검사기를 낮추는 것만으로는 충분하지 않을 경우 전송 횟수도 낮춰야 합니다.
-
--progress
: 전송 중 진행률이 표시됩니다. -
--fast-list
: 사용 가능한 경우 순환 목록을 사용하고, 메모리를 더 많이 사용하지만 트랜잭션/API 호출을 더 적게 사용합니다. 중첩 디렉토리에 적당한 수의 파일이 있을 때 사용하는 것이 좋습니다.no-traverse
또는no-check-dest
는 반대 플래그이므로 사용하지 마십시오. copy 또는 sync 명령과 함께 사용할 수 있습니다. -
--oos-no-check-bucket
: 버킷이 존재하고 Rclone이 수행하는 트랜잭션 수를 줄이고 Rclone이 버킷이 존재한다고 가정하고 해당 버킷으로 데이터를 이동하기 시작하도록 설정할 때 이 옵션을 사용합니다. -
--oos-upload-cutoff
: 이 크기보다 큰 파일은 조각으로 업로드되고 기본값은 200MiB입니다. -
--oos-chunk-size
: 업로드 차단 설정보다 큰 파일 또는 알 수 없는 크기의 파일을 업로드하는 경우 이 조각 크기를 사용하여 다중 부분 업로드로 업로드됩니다. Rclone은 알려진 크기의 큰 파일을 업로드할 때 조각 크기를 자동으로 늘려 10,000 조각 제한 미만으로 유지합니다. 기본값은 5MiB입니다. -
--oos-upload-concurrency <int>
: 멀티파트 업로드에 사용되며 동시에 업로드되는 청크 수입니다. 고속 링크를 통해 소수의 대용량 파일을 업로드하고 있으며 이러한 업로드에서 대역폭을 완전히 활용하지 못하는 경우 이 값을 늘리면 전송 속도가 빨라질 수 있습니다. 대역폭 사용량을 향상시키기 위해 대역폭을 사용하지 않을 경우 기본값은 8입니다.주: 다중 부분 업로드는
--transfers <int>
,--oos-upload-concurrency <int>
및--oos-chunk-size
매개변수를 사용할 때 추가 메모리를 사용합니다. 단일 파트 업로드는 추가 메모리를 사용하지 않습니다. 이러한 매개변수를 설정할 때 네트워크 대기 시간, 대기 시간이 많을수록 단일 파트 업로드가 더 빨라집니다.
-
-
OCI 오브젝트 스토리지에 대한 Rclone 구성 파일 예
[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
-
기본 Rclone 명령 형식
rclone <flags> <command> <source> <dest>
-
로컬 파일 시스템 소스 또는 OCI File Storage 소스에서 OCI Object Storage 대상으로 Rclone 복사본을 실행하는 예제입니다.
rclone copy /src/path oci:bucket-name
-
OCI Object Storage 소스에서 로컬 파일 시스템 또는 OCI File Storage 대상으로 Rclone 복사본을 실행하는 예제입니다.
rclone copy oci:bucket-name /src/path
-
S3 소스에서 OCI Object Storage 대상으로 Rclone 복사본을 실행하는 예제입니다.
rclone copy s3:s3-bucket-name oci:bucket-name
주: AWS에서 이전하고 KMS에서 서버측 암호화를 사용하는 경우 체크섬 오류를 방지하려면 rclone이
server_side_encryption = aws:kms
로 구성되어 있는지 확인하십시오. 자세한 내용은 Rclone S3 KMS 및 Rclone S3 configuration을 참조하십시오.
주: sync 명령의 형식은 기본적으로 동일하며 단순히 복사본을 sync로 바꿉니다.
-
Rclone 사용 예
-
예 1: Rclone을 사용하여 이미 파일 또는 객체 수가 많은 데이터를 포함하고 있는 대상으로 복사된 작은 수의 작은 파일을 마이그레이션합니다.
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
예 2: 다중 파트 업로드를 통해 더 적은 수의 대용량 파일을 사용하여 복제합니다.
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>
주: 이는
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
및--checkers
옵션의 시작점이며, 데이터 이전을 위해 사용 중인 시스템에서 사용 가능한 파일/객체 크기, 메모리 및 리소스에 따라 조정해야 합니다. 데이터를 최적으로 마이그레이션할 수 있는 충분한 대역폭 사용량을 확보할 때까지 조정합니다. 시스템이 매우 작은 경우 리소스를 절약하기 위해 이러한 숫자를 아래로 조정해야 할 수 있습니다. -
예제: 3 Rclone을 사용하여 100Gbps NIC의 BM 머신 3개, 페타바이트의 데이터를 사용한 다중 파트 업로드와 데이터 세트 혼합 크기, 버킷이 비어 있지 않음, OCI File Storage 서비스를 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
사용된 추가 플래그:
--stats-one-line
: 한 행에 통계를 맞춥니다.--max-stats-group
: 메모리에 유지할 최대 통계 그룹 수(최대 오래된 값)가 폐기됩니다(기본값 1000).--oos-attempt-resume-upload
: 객체에 대해 이전에 시작된 다중 부분 업로드를 재개하려고 시도합니다.--oos-leave-parts-on-error
: 실패 시 업로드 중단을 호출하지 않도록 하여 성공적으로 업로드된 모든 부분을 수동 복구용으로 남겨둡니다.
Rclone을 사용하여 대용량 파일 이전
Rclone은 디렉토리별로 동기화됩니다. 수만 개의 파일/오브젝트를 마이그레이션하는 경우 디렉토리/접두어가 디렉토리당 약 10,000개의 파일/오브젝트 또는 하위로 나뉘어져 있는지 확인하는 것이 중요합니다. 이는 Rclone이 너무 많은 메모리를 사용한 다음 충돌하지 않도록 하기 위한 것입니다. 많은 수의 작은 파일(100만 개 이상)을 보유한 많은 고객이 이 문제에 자주 직면하게 됩니다. 모든 파일이 단일 디렉토리에 있는 경우 먼저 나눕니다.
-
다음 명령을 실행하여 소스의 파일 목록을 가져옵니다.
rclone lsf --files-only -R src:bucket | sort > src
-
분할을 사용하여 파일을 1,000-10,000행의 조각으로 나눕니다. 다음 split 명령은 파일을 1,000 조각으로 나누고
src_##
파일(예:src_00
)에 넣습니다.split -l 1000 --numeric-suffixes src src_
-
여러 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 파티션 디렉토리 구조를 여러 조각으로 결합하여 동일한 컴퓨트 노드 또는 여러 노드에 있는 컨테이너에서 병렬로 데이터 전송을 실행하는 접근 방식입니다. 여러 노드에서 실행하면 각 노드의 네트워크 처리량과 계산 성능이 통합됩니다.
-
Fpart(파일 시스템 분할자)는 디렉토리 구조를 분할하는 데 사용할 수 있는 도구입니다. 파일 시스템 파티션을 사용하여 rsync, tar 및 Rclone 같은 도구를 호출하여 서로 독립적으로 병렬로 실행할 수 있습니다. 우리는 Rclone에 fpart를 사용할 것입니다.
-
fpsync는 fpart를 사용하여 전송 도구(rsync, Rclone)를 병렬로 실행하는 래퍼 스크립트입니다.
fpsync
명령은 fpsync 운영자 호스트에서 실행됩니다. fpsync 도구에는 별도의 워커 노드를 사용할 수 있는 옵션도 있습니다. 수정된 fpsync는 Rclone 및 Kubernetes 포드를 지원합니다. -
kubectl은 Kubernetes 작업을 관리합니다.
단계를 수행합니다:
-
마이그레이션 소스 데이터에 액세스할 수 있고 Rclone이 설치되어 있는 fpsync 운영자 호스트가 될 호스트를 식별합니다.
-
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
-
fpsync 운영자 호스트에 대한 OCI IAM 정책을 생성하여 OKE 클러스터를 관리합니다.
이 용도로 다음 정책을 사용할 수 있습니다. 포드를 제어하기 위한 최소 요구 사항을 충족하도록 보다 세분화된 권한을 구성할 수 있습니다.
Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
-
OKE 클러스터에 액세스할 수 있도록
kubeconfig
파일을 설정합니다. 자세한 내용은 클러스터에 대한 로컬 액세스 설정을 참조하십시오. -
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
-
컨테이너 이미지를 작성합니다.
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.
에서 유지 관리됩니다. 샘플 디렉토리에는 몇 가지 예제 출력 파일이 포함되어 있습니다. -
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 sync
및s5cmd
결과에서 실행됩니다. 여기에서 대량 복사 스크립트 사용에 대해 알아봅니다. Oracle Cloud Infrastructure Object Storage Python Utilities for Bulk Operations.os sync
및s5cmd
사용에 대한 자세한 내용은 자습서 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로 데이터를 복사했습니다.
데이터 집합
-
데이터 집합 1:
총 크기 파일 수 파일 크기 범위 3TB 3 1TB 방법 시작: 부터 시간 명령 플래그 os 동기화 NFS/File PHX to Object IAD 123m17.102s NA --parallel-operations-count 100
s5cmd NFS/File PHX to Object IAD 239m20.625s 복사 run commands.txt
, 기본 실행--numworkers 256
복제 NFS/File PHX to Object IAD 178m27.101s 복사 --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
참고: 테스트 결과
os sync
가 이 데이터 세트에서 가장 빠르게 실행되었습니다. -
데이터 집합 2:
총 크기 파일 수 파일 크기 범위 9.787GB 20,000 1MB 방법 시작: 부터 시간 명령 플래그 s5cmd NFS/File PHX to Object IAD 1m12.746s 복사 기본 실행 --numworkers 256
os 동기화 NFS/File PHX to Object IAD 2m48.742s NA --parallel-operations-count 1000
복제 NFS/File PHX to Object IAD 1m52.886s 복사 --transfers=500 --oos-no-check-bucket --no-check-dest
참고: 테스트 결과
s5cmd
가 이 데이터 세트에 가장 적합한 성능을 발휘했습니다.
테스트 환경 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 |
참고:
- 14개의 디렉토리가 2개의 VM 인스턴스 간에 분할되었습니다.
- 각 VM은 별도로 언급하지 않는 한 각 디렉토리에 대해 7개의 명령/프로세스, 1개를 실행했습니다.
방법 | 시작: 부터 | 시간 | 명령 | 플래그/ 노트 |
---|---|---|---|---|
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개 |
s5cmd
및 os 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 클라우드 스토리지 서비스로 데이터를 이동하려면 다음을 수행합니다.
-
OCI Object Storage Sync 및 S5cmd는 자습서 3: OCI Object Storage Sync 및 S5cmd를 사용하여 데이터를 OCI Cloud Storage Services로 이동을 참조하십시오.
-
파일 시스템 데이터 마이그레이션을 위해 Fpsync 및 Rsync를 사용하여 자습서 4: 파일 시스템 데이터 마이그레이션을 위해 Fpsync 및 Rsync를 사용하여 데이터를 OCI 클라우드 스토리지 서비스로 이동을 참조하십시오.
관련 링크
-
자습서 3: OCI Object Storage Sync 및 S5cmd를 사용하여 OCI 클라우드 스토리지 서비스로 데이터 이동
-
자습서 4: 파일 시스템 데이터 마이그레이션을 위해 Fpsync 및 Rsync를 사용하여 데이터를 OCI 클라우드 스토리지 서비스로 이동
확인
- Authors - Melinda Centeno(OCI Object Storage 수석 제품 관리자), Vinoth Krishnamurthy(기술 직원 수석 멤버, OCI File Storage), Aboo Valappil(기술 직원 상담원, OCI File 및 Block Storage)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Move Data into OCI Cloud Storage Services using Rclone
G25571-02
Copyright ©2025, Oracle and/or its affiliates.