附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 Rclone 將資料搬移至 OCI 雲端儲存服務
簡介
這是四個教學課程系列中的教學課程 2,示範將資料移轉至 Oracle Cloud Infrastructure (OCI) 雲端儲存服務的各種方式。此系列已設定完成,您可以檢閱教學課程 1:使用移轉工具將資料搬移至 OCI 雲端儲存服務,深入瞭解各種工具,然後繼續進行與您移轉需求相關的教學課程或文件。本教學課程將著重於使用 Rclone 將資料移轉至 OCI 雲端儲存服務。
OCI 為客戶提供高效能運算和低成本雲端儲存選項。Oracle 透過按需本機、物件、檔案、區塊和封存儲存,滿足關鍵儲存工作負載需求和使用案例。
OCI 雲端儲存服務可針對您的所有企業需求,提供快速、安全且持久的雲端儲存選項。從具有 Lustre 和 OCI Block Volumes 服務的 OCI File Storage 等高效能選項開始;從具有高效能掛接目標的 OCI File Storage 服務,可完全受管理的 EB 規模檔案系統;到高持久且可擴展的 OCI Object Storage。我們的解決方案可以滿足您的需求,範圍從 AI/ML 工作負載等效能密集型應用程式,到 EB 級資料湖。
Rclone 是開放原始碼的命令行公用程式,可將資料移轉至雲端,或移轉至雲端儲存體廠商之間。Rclone 可以用來進行一次性移轉,也可以在來源儲存與目的地儲存之間定期同步。Rclone 可以將資料遷移到物件儲存、檔案儲存、掛載的磁碟機,以及 70 種支援的儲存類型之間。原生支援 OCI Object Storage 作為 Rclone 後端提供者。您可以將 Rclone 處理作業縱向擴展並橫向擴展,以使用參數選項提升傳輸效能。
判斷需要移轉的資料量,以及可切換至新 OCI 儲存平台的停機時間。批次移轉是將移轉細分為可管理增量的好選擇。批次移轉可讓您排定不同時段間特定應用程式的停機時間。有些客戶可以靈活地在 2-4 天內透過排定的維護時段進行一次性移轉。OCI FastConnect 可用於建立 OCI 與您環境之間的專用專用連線,連接埠速度從 1G 加速至 400G,以加速資料傳輸處理作業。OCI FastConnect 可以與合作夥伴解決方案 (例如 Megaport 和 ConsoleConnect) 整合,以建立與資料中心或雲端至雲端相互連線的專用連線,將資料直接從其他雲端廠商移轉至 OCI 雲端儲存服務。如需詳細資訊,請參閱 FastConnect 與 Megaport Cloud Router 整合。
適用對象
DevOps 工程師、開發人員、OCI 雲端儲存管理員和使用者、IT 管理員、OCI 超級使用者和應用程式管理員。
目標
瞭解如何使用 Rclone 將資料複製並同步至 OCI 雲端儲存服務。
-
使用 Rclone 將檔案系統資料 (本機、NAS、雲端代管) 移轉至 OCI 物件儲存。
-
將資料從另一個雲端物件或 Blob 儲存體移轉至 OCI 物件儲存體。
-
在 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 上使用 Rclone,將資料從 OCI File Storage 移轉至 OCI Object Storage。
必要條件
-
OCI 帳戶。
-
OCI 上的虛擬機器 (VM) 執行處理可部署移轉工具或可部署及使用移轉工具的系統。
-
Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 與您本位目錄中的工作組態檔一起安裝在名為
.oci
的子目錄中。如需詳細資訊,請參閱設定組態檔。 -
存取 OCI 物件儲存的儲存桶。
-
OCI 中使用 OCI 物件儲存的使用者權限,可存取管理儲存桶和物件,或管理至少 1 個儲存桶或區間的物件系列。如需詳細資訊,請參閱通用原則和原則參照。
-
建立、匯出及掛載 OCI 檔案儲存的使用者權限,或是存取已經掛載在 VM 上的 OCI 檔案儲存掛載目標,或者使用另一個 NFS 掛載或本機檔案系統來複製資料。如需詳細資訊,請參閱管理檔案儲存原則。
-
熟悉在 Mac OS、Linux、Berkeley Software Distribution (BSD) 或 Windows PowerShell、命令提示字元或 bash 上使用終端機 / 殼層介面。
-
熟悉在 Linux 系統上安裝軟體,並熟悉 Kubernetes。
-
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 的基本知識,並與動態群組中的 Ubuntu 主機搭配使用動態群組。如需詳細資訊,請參閱管理動態群組。
-
請檢閱將資料搬移至 OCI 雲端儲存的移轉基本要點,以安裝 Rclone 和其他移轉工具。
-
若要瞭解我們可以使用的移轉工具,請參閱教學課程 1:使用移轉工具將資料搬移至 OCI 雲端儲存服務。
Rclone 和基本術語總覽
Rclone 是一個有用的移轉工具,因為它支援許多協定和雲端提供者,並且易於設定組態。它是適用於任何類型資料集的良好一般用途移轉工具。Rclone 特別適用於可分割成批次的資料集,以橫跨節點橫向擴展,以加快資料傳輸速度。
Rclone 可用於遷移:
-
將檔案系統資料 (OCI 檔案儲存、OCI 區塊儲存、具備 Lustre 的 OCI 檔案儲存、內部部署檔案系統及內部部署 NFS) 檔案至其他檔案系統儲存類型,以及至 / 至物件儲存 (包括 OCI 物件儲存)。
-
從支援的雲端提供者到 OCI Object Storage 的物件儲存。
Rclone 命令與旗標:
-
瞭解 Rclone 效能
Rclone 是一種非常好的一般用途工具,可在檔案系統資料、其他雲端提供者和 OCI 雲端儲存服務之間同步或複製檔案。效能將取決於您可以縱向擴展和橫向擴展的程度。建議您使用移轉集範例來對移轉系統執行各種測試,以判斷何時達到網路頻寬的臨界值。
例如,您的來源儲存桶有 10 個資料夾 / 前置碼,每個資料夾的前置碼大約為 1 TB。您可以跨 2 個 VM 的大型 CPU/RAM 容量分割移轉,並從兩個 VM 平行觸發多個 Rclone 複製處理作業。視每個資料夾的拓樸和運算能力而定,可以調整 Rclone 參數以提升傳輸速度。
您可以從在 2 個 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 效能。我們的測試包括 2 個平行執行 Rclone 傳輸以橫向擴展的 VM。如果您有較大的資料集,您可能想要使用多達 4 台機器,甚至使用裸機 (BM) 執行處理。
-
-
Rclone 複製與同步指令
-
Rclone copy 命令會將來源檔案或物件複製到目的地。它會略過來源和目標上相同的檔案,依大小和修改時間或 md5sum 進行測試。copy 命令不會從目標刪除檔案,
-
Rclone sync 命令會將來源與目的地同步,同時略過相同的檔案。將會修改目的地以符合來源,這表示不符合來源的檔案將會被刪除。
注意:請小心使用同步,只有在您要讓目的地看起來與來源完全相同時才使用。當您只想要將新檔案複製到目的地時,請使用 copy 指令。
-
-
使用右方 Rclone 命令列旗標
有數個 Rclone 命令行旗標可與 Rclone 搭配使用,以影響資料移轉的速度。請務必瞭解部分旗標如何運作以取得最佳的資料傳輸傳輸量。
-
--no-traverse
:這僅適用於 copy 命令,請勿穿過目標檔案系統。此旗標可節省時間,因為它不會在目標上進行清單來決定要複製哪些檔案。它會一次檢查一個檔案,以確定是否需要複製檔案。一對一檔案似乎很慢,但當有非常少的檔案 / 物件要複製到已經存在許多檔案的目的地時,速度可能會更快。 -
--no-check-dest
:這僅適用於 copy 命令,不會檢查或列出目的地檔案,以判斷需要複製或移動哪些檔案,進而將 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" 錯誤,應該先降低 2 的檢查程式數量,直到達到 10 為止。如果降低檢查程式不夠,您也必須降低傳輸的數目。
-
--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 檔案儲存來源執行 Rclone 複製至 OCI 物件儲存目的地的範例。
rclone copy /src/path oci:bucket-name
-
從 OCI 物件儲存來源執行 Rclone 複製到本機檔案系統或 OCI 檔案儲存目的地的範例。
rclone copy oci:bucket-name /src/path
-
從 S3 來源執行 Rclone 複製到 OCI 物件儲存目的地的範例。
rclone copy s3:s3-bucket-name oci:bucket-name
注意:從 AWS 移轉並使用伺服器端加密搭配 KMS 時,請確定 rclone 已設定
server_side_encryption = aws:kms
,以避免發生總和檢查錯誤。如需詳細資訊,請參閱 Rclone S3 KMS 和 Rclone S3 configuration
注意:同步命令的格式基本上會相同,只要以同步取代複本即可。
-
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 在具有 100 Gbps NIC 的 3 部 BM 機器上進行橫向擴展,使用混合大小的資料集搭配多部上傳 (含 PB 資料、儲存桶非空白) 和 OCI 物件儲存服務的 OCI 檔案儲存服務。
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 迴圈來重複利用分割命令產生的檔案清單。在單一貯體中測試約 270,000 個檔案時,發現複製時間改善了 40x,您的里程可能不同。
注意:按目錄結構或使用分割公用程式分割檔案是最佳化傳輸的重要方式。
使用 Rclone、OKE 並一起將資料從檔案系統搬移至 OCI 物件儲存
您可以使用多個 Kubernetes Pod 在檔案系統與物件儲存之間橫向擴展資料傳輸。平行化可加快將資料傳輸到相對較高延遲且傳輸量的儲存系統。將 Rclone、OKE 以及 fpartition 目錄結構結合成多個區塊的途徑,並在相同運算節點或跨多個節點的容器上以平行方式執行資料傳輸。跨多個節點執行,可彙總每個節點的網路傳輸量和運算能力。
-
檔案系統分割器 (Fpart) 是可用來分割目錄結構的工具。它可以呼叫具有檔案系統分割區的 rsync、tar 和 Rclone 等工具,使其平行執行,並且彼此獨立。我們將與 Rclone 搭配使用。
-
fpsync 是使用 fpart 以平行方式執行傳輸工具 (rsync、Rclone) 的包裝函式命令檔。
fpsync
命令是從 fpsync 運算子主機執行。fpsync 工具也提供使用個別工作節點的選項。修改後的 fpsync 支援 Rclone 和 Kubernetes Pod。 -
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 叢集。
下列原則可用於此用途。您可以設定更精細的權限,以達到控制 Pod 的最低需求。
Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
-
設定
kubeconfig
檔案以存取 OKE 叢集。如需詳細資訊,請參閱設定叢集的本機存取。 -
安裝並修正 fpart 與 fpsync。需要 fpsync 修補程式,才能平行執行 Rclone 或 rsync,以橫向擴展資料傳輸。隨附於 fpart 套裝軟體的 fpsync 不支援 Rclone 或 Kubernetes pod,因此需要修補程式才能支援這些工具。
請執行下列指令以在 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
中提供的 docker 映像檔組建規格可用來建置容器映像檔。建立映像檔之後,應上傳至可從 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 指定給節點。
在 fpart 操作員主機上掛載來源檔案系統,並建立所有 Pod 將被存取的共用目錄。這是保留所有日誌檔和分割區檔案的目錄。
下列命令會將資料從檔案系統
/data/src
傳輸至 OCI 物件儲存的儲存桶 rclone-2。它一次會啟動 2 個 Pod,以傳輸由 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
注意:執行的日誌會保留在
run-ID
目錄中,在下列範例中,它們位於/data/fpsync/{Run-Id}/log directory
中。範例目錄提供範例輸出。
( 選擇性 ) 測試環境
建議是根據測試和客戶互動進行。
注意:從大量複製命令檔執行時,會包括
os sync
和s5cmd
結果,以提供效能的詳細資訊。從此處瞭解如何使用大量複製命令檔:使用 Oracle Cloud Infrastructure Object Storage Python Utilities 進行大量作業。如需有關使用os sync
和s5cmd
的詳細資訊,請參閱教學課程 3:使用 OCI Object Storage Sync 和 S5cmd 將資料移至 OCI Cloud Storage Services 。
測試環境 1:
1 個 VM 執行處理 VM.Standard.E4.Flex
、1 個 OCPU、1Gbps 網路頻寬、16GB 的記憶體。模擬內部部署至 OCI 的移轉,將資料從 PHX NFS 複製到 IAD。
資料集
-
資料集 1:
總大小 檔案計數 檔案大小範圍 3TB 3 1TB 方法 目的來源 Time 命令 旗標 os 同步 NFS/ 檔案 PHX 至物件 IAD 123m17.102s 無 --parallel-operations-count 100
s5cmd NFS/ 檔案 PHX 至物件 IAD 239m20.625s copy run commands.txt
,預設執行--numworkers 256
rclone NFS/ 檔案 PHX 至物件 IAD 178m27.101s copy --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
注意:我們的測試顯示
os sync
對此資料集執行速度最快。 -
資料集 2:
總大小 檔案計數 檔案大小範圍 9.787GB 20,000 1MB 方法 目的來源 Time 命令 旗標 s5cmd NFS/ 檔案 PHX 至物件 IAD 1m12.746s copy 預設執行 --numworkers 256
os 同步 NFS/ 檔案 PHX 至物件 IAD 2m48.742s 無 --parallel-operations-count 1000
rclone NFS/ 檔案 PHX 至物件 IAD 1m52.886s copy --transfers=500 --oos-no-check-bucket --no-check-dest
注意:我們的測試顯示
s5cmd
對此資料集執行最佳效果。
測試環境 2:
VM 執行處理:每次測試使用 2 個 VM 執行處理,使用 VM.Standard.E4.Flex
搭配 24 個 OCPU、24Gbps 網路頻寬、384GB 的記憶體。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 |
注意:
- 已在 2 個 VM 執行處理之間分割 14 個目錄。
- 每個 VM 會執行 7 個指令 / 程序,每個目錄各有 1 個,除非另有說明。
方法 | 目的來源 | Time | 命令 | 旗標 / 備註 |
---|---|---|---|---|
s5cmd | NFS/ 檔案 PHX 至物件 IAD | 54m41.814s | copy | --numworkers 74 |
os 同步 | NFS/ 檔案 PHX 至物件 IAD | 65m43.200s | 無 | --parallel-operations-count 50 |
rclone | NFS/ 檔案 PHX 至物件 IAD | 111m59.704s | copy | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50 |
rclone | 物件 PHX 至物件 IAD | 28m55.663s | copy | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400 ,在 2 個 VM 之間執行相同的命令,並行執行 800 個傳輸 |
python 大量複製命令檔 | 物件 PHX 至物件 IAD | 25m43.715s | Default | 一次排入 1 個 VM、50 個工作節點、100,000 個檔案 |
s5cmd
和 os sync
指令在檔案系統 /NFS 到物件儲存之間做得很好。大量複製命令檔只會執行儲存桶到儲存桶的傳輸,不會對 NFS 移轉進行測試。
只有 rclone
和 python 大量複製指令碼能夠跨區域執行分組對分組傳輸,因此不會對其他工具進行測試。python 大量複製命令檔在跨區域儲存桶至儲存桶資料上效能較佳,但僅與 OCI Object Storage 相容,rclone
支援許多後端和雲端提供者。
小型測試執行是使用 rclone
將資料從 Microsoft Azure Blob 儲存體、Amazon Simple Storage Service (Amazon S3) 和 Google Cloud Platform Cloud Storage 傳輸至 OCI Object Storage,以驗證這些傳輸類型的工具有效。如需詳細資訊,請參閱使用 Rclone 將資料移至雲端的物件儲存。
測試環境 3:
VM 執行處理:每次測試都使用 1-2 個 VM 執行處理,使用 VM.Standard.E4.Flex
搭配 24 個 OCPU、24Gbps 網路頻寬、384GB 的記憶體。Oracle Linux 8 已用於 Linux 測試。所有測試都是從儲存桶到儲存桶。
總大小 | 檔案計數 | 檔案大小範圍 |
---|---|---|
7.74 TiB | 1,000,000 | 30 MiB |
方法 | 目的來源 | Time | 命令 | 旗標 | 備註 | |
---|---|---|---|---|---|---|
rclone | 物件對物件 IAD -> IAD | 18h39m11.4s | copy | --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi |
1 個 VM,由於檔案計數過高且列出對來源的呼叫,因此速度非常慢 | |
rclone | 物件對物件 IAD -> IAD | 55m8.431s | copy | --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 | 無 | Default | 一次排入 1 個 VM、50 個工作節點、100,000 個檔案 | |
python 大量複製命令檔 | 物件對物件 IAD -> IAD | 無 | 無 | Default | 每一 VM 有 2 個 VM、50 個工作節點、100,000 個檔案一次排入佇列。收到 429 個錯誤,指令碼當機且無法完成 | |
s5cmd | 物件對物件 IAD -> IAD | 14m10.864s | copy | 預設值 (256 個職工) | 1 VM | 無 |
s5cmd | 物件對物件 IAD -> IAD | 7m50.013s | copy | 預設值 | 2 個 VM,每個 VM 256 個工作者 | 以 1 個 VM 的縮短一半時間執行 |
s5cmd | 物件對物件 IAD -> IAD | 3m23.382s | copy | --numworkers 1000 |
1 個 VM,1000 個工作節點 | 在多個測試中,我們發現這是此資料集與 s5cmd 的最佳執行 |
rclone | 物件對物件 IAD -> PHX | 184m36.536s | copy | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
每一 VM 有 2 個 VM 的傳輸,每一 VM 的物件 / 檔案清單一次饋送 1,000 個檔案 | |
python 大量複製命令檔 | 物件對物件 IAD -> PHX | 35m31.633s | 無 | Default | 一次排入 1VM、50 個工作節點、100,000 個檔案 |
s5cmd
指令的執行效能始終如一,適用於大型檔案計數和小型檔案。s5cmd
有限,因為它只能在相同租用戶和相同區域內執行儲存桶對儲存桶的複製。
請注意,將檔案饋送至命令以及從擴展至其他 VM 後,對 rclone
的高改進。Rclone 的執行速度可能比其他工具慢,它是它支援的各種平台和可執行的移轉類型最多。
OCI Object Storage 大量複製 Python API 只能使用 OCI 原生 CopyObject API,而且在節流之前,最多只能取得 50 個工作者的並行。
IAD 至 PHX 的測試僅針對 IAD 至 IAD 的最佳工作進行,且未重新執行有問題的測試。s5cmd
不適用於 IAD 至 PHX,因為它只能在相同區域內進行儲存桶至儲存桶的複製。
接下來的步驟
繼續前往與您移轉需求相關的相關教學課程。若要將資料移至 OCI 雲端儲存服務:
-
使用 OCI Object Storage Sync 和 S5cmd,請參閱教學課程 3:使用 OCI Object Storage Sync 和 S5cmd 將資料移至 OCI Cloud Storage Services 。
-
使用 Fpsync 和 Rsync 進行檔案系統資料移轉,請參閱教學課程 4:使用 Fpsync 和 Rsync for File System Data Migrations 將資料移至 OCI Cloud Storage Services 。
相關連結
認可
- 作者 - Melinda Centeno (OCI Object Storage 資深首席產品經理)、Vinoth Krishnamurthy (OCI File Storage 技術人員的主要成員)、Aboo Valappil (技術人員諮詢成員、OCI File and Block Storage)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Move Data into OCI Cloud Storage Services using Rclone
G25574-02
Copyright ©2025, Oracle and/or its affiliates.