附註:

使用 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 和基本術語總覽

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 迴圈來重複利用分割命令產生的檔案清單。在單一貯體中測試約 270,000 個檔案時,發現複製時間改善了 40x,您的里程可能不同。

    注意:按目錄結構或使用分割公用程式分割檔案是最佳化傳輸的重要方式。

使用 Rclone、OKE 並一起將資料從檔案系統搬移至 OCI 物件儲存

您可以使用多個 Kubernetes Pod 在檔案系統與物件儲存之間橫向擴展資料傳輸。平行化可加快將資料傳輸到相對較高延遲且傳輸量的儲存系統。將 Rclone、OKE 以及 fpartition 目錄結構結合成多個區塊的途徑,並在相同運算節點或跨多個節點的容器上以平行方式執行資料傳輸。跨多個節點執行,可彙總每個節點的網路傳輸量和運算能力。

遵循其步驟:

  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 叢集。

    下列原則可用於此用途。您可以設定更精細的權限,以達到控制 Pod 的最低需求。

    Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
    
  4. 設定 kubeconfig 檔案以存取 OKE 叢集。如需詳細資訊,請參閱設定叢集的本機存取

  5. 安裝並修正 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
    
  6. 建立容器映像檔。

    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. 中維護範例目錄包含一些範例輸出檔案。

  7. 執行 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 syncs5cmd 結果,以提供效能的詳細資訊。從此處瞭解如何使用大量複製命令檔:使用 Oracle Cloud Infrastructure Object Storage Python Utilities 進行大量作業。如需有關使用 os syncs5cmd 的詳細資訊,請參閱教學課程 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。

資料集

測試環境 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

注意:

方法 目的來源 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 個檔案

s5cmdos 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 雲端儲存服務:

認可

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center