附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 Fpsync 和 Rsync 將資料搬移至 OCI 雲端儲存服務
簡介
這是四個教學課程系列中的教學課程 4,其中顯示各種將資料移轉至 Oracle Cloud Infrastructure (OCI) 雲端儲存服務的方式。此系列已設定完成,您可以檢閱教學課程 1:使用移轉工具將資料搬移至 OCI 雲端儲存服務,深入瞭解各種工具,然後繼續進行與您移轉需求相關的教學課程或文件。本教學課程將著重於使用 fpsync 和 rsync 將檔案系統資料移轉至 OCI File Storage。
OCI 為客戶提供高效能運算和低成本雲端儲存選項。Oracle 透過按需本機、物件、檔案、區塊和封存儲存,滿足關鍵儲存工作負載需求和使用案例。
OCI 雲端儲存服務可針對您的所有企業需求,提供快速、安全且持久的雲端儲存選項。從具有 Lustre 和 OCI Block Volumes 服務的 OCI File Storage 等高效能選項開始;從具有高效能掛接目標的 OCI File Storage 服務,可完全受管理的 EB 規模檔案系統;到高持久且可擴展的 OCI Object Storage。我們的解決方案可以滿足您的需求,範圍從 AI/ML 工作負載等效能密集型應用程式,到 EB 級資料湖。
-
fpsync 工具是平行包裝函式程序檔,依預設會使用 rsync。它也可以使用 Rclone (如教學課程 2:使用 Rclone 將資料移至 OCI 雲端儲存服務中所述)、tar、tarify 及 cpio。
-
Rsync 是一種多功能的公用程式,可以傳輸和同步遠端和本機檔案系統的檔案。
判斷需要移轉的資料量,以及可切換至新 OCI 儲存平台的停機時間。批次移轉是將移轉細分為可管理增量的好選擇。批次移轉可讓您排定不同時段間特定應用程式的停機時間。有些客戶可以靈活地在 2-4 天內透過排定的維護時段進行一次性移轉。OCI FastConnect 可用於建立 OCI 與您環境之間的專用專用連線,連接埠速度從 1G 加速至 400G,以加速資料傳輸處理作業。OCI FastConnect 可以與合作夥伴解決方案 (例如 Megaport 和 ConsoleConnect) 整合,以建立與資料中心或雲端至雲端相互連線的專用連線,將資料直接從其他雲端廠商移轉至 OCI 雲端儲存服務。如需詳細資訊,請參閱 FastConnect 與 Megaport Cloud Router 整合。
Rsync 與 Fpsync 之間的差異
-
Rsync 是一種傳統 Linux 作業系統 (OS) 公用程式,用來在相同或不同地理位置執行從一台機器到另一台機器的資料單次複製或定期同步。單一 rsync 程序對於大型資料集可能不足,無法在需要的時間內執行傳輸。Rsync 提供多個 rsync 程序的選項,每個程序都在資料集的特定子集上執行,比單一程序更快速地完成資料集傳輸。不過,根據資料集階層的複雜性,判斷有多少處理與哪些子集可能面臨挑戰的平衡。Fpsync 可以簡化此過程。Fpsync 是一個將整個資料集分割成較小區塊的協調器,並根據使用者集平行程度產生多個 rsync 處理作業。Fpsync 內部會使用 rsync 執行實際傳輸。Cpio 和 tar 選項可作為 fpsync 的基礎工具選項使用,但 rsync 為預設值。
-
Fpsync 具有工作節點選項,您可以在多個節點之間分配傳輸,而不是在單一節點之間分配。除了增加相同節點中的平行 rsync 處理作業 (擴大) 之外,您也可以增加節點數目 (擴大) 以執行增加的 rsync 處理作業數目。
適用對象
DevOps 工程師、開發人員、OCI 雲端儲存管理員和使用者、IT 管理員、OCI 超級使用者和應用程式管理員。
目標
瞭解如何使用 rsync 和 fpsync 將資料複製和同步至 OCI 雲端儲存服務:
-
瞭解如何一起使用 rsync 和 fpsync。
-
瞭解使用 fpsync 的效能優點。
必要條件
-
OCI 帳戶。
-
Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 與您本位目錄中的工作組態檔一起安裝在名為
.oci
的子目錄中。如需詳細資訊,請參閱設定組態檔。 -
建立、匯出及掛載 OCI 檔案儲存或存取已掛載於 VM 之 OCI 檔案儲存掛載目標的使用者權限。如需詳細資訊,請參閱管理檔案儲存原則。
-
您知道如何建立、管理及掛載網路連附儲存 (NAS) 和 OCI 檔案儲存。如需詳細資訊,請參閱 OCI Configuring File System Storage 和 Overview of File Storage 。
-
存取以建立及啟動 OCI Compute 執行處理,或存取 3 個系統以執行 fpsync。如需詳細資訊,請參閱建立執行處理。
-
熟悉:
-
使用 SSH、產生 SSH 金鑰以及使用 SSH 配置檔。如需詳細資訊,請參閱 Creating an SSH Key Pair on the Linux Command Line for OCI Access 。
-
檢查兩個網站或系統之間連線的基本網路工具與指令。
-
在 Mac OS、Linux、Berkeley Software Distribution (BSD) 和 Windows PowerShell、命令提示字元或 bash 上使用終端機或 Shell 介面。
-
在 Linux 系統上安裝軟體。
-
-
若要瞭解我們可以使用的移轉工具,請參閱教學課程 1:使用移轉工具將資料搬移至 OCI 雲端儲存服務。
將資料移轉至 OCI 檔案儲存
Fpsync 和 rsync 可以用來將檔案系統資料 (OCI 檔案儲存服務、OCI 區塊磁碟區服務、OCI 檔案儲存搭配 Lustre、內部部署檔案系統,以及內部部署網路檔案系統 (NFS) 移轉至其他檔案系統儲存類型 (包括 OCI 檔案儲存)。
使用 Rsync 移轉資料
-
使用 rsync 處理執行處理對執行處理的串流。
對於最多可達數十 GB 和數千個檔案的小型資料集,可以使用 rsync 執行處理至執行處理串流。在網路內使用啟用 SSH 的本機 NFS,以及在來源與目的地網路之間使用 SSH 的執行處理至執行處理串流,藉此減少兩個網路之間的 NFS 延遲。使用以下命令。
rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --ignore-errors --progress --log-file=$HOME/rsync/logs/test.log1 --quiet -e ssh /src/path/ root@<destination_instance>:/destination/path/
-
平行執行多個 rsync 處理作業。
-
您可以使用
find
和xargs
指令來執行多個 rsync 程序。find /src/path/ -maxdepth 1 | xargs -P 24 -I {} rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --log-file=<logfile_path> -quiet -e ssh {} root@<destination_instance>:/destination/path/
-
您也可以平行使用 GNU。
find /src/path/ -maxdepth 1 | parallel -P24 rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --exclude=.snapshot --ignore-errors --progress --log-file=$HOME/rsync/logs/test.log1 --quiet -e ssh {} root@<destination_instance>:/destination/path/
注意:在這兩個範例中,一次執行 24 個處理作業,系統會根據所使用執行處理的 CPU 容量選擇參數。
-
使用 Fpsync 移轉資料
fpsync 工具是 rsync 的平行包裝函式。它也可以使用 tar、tarify 和 cpio,但預設值為 rsync。
-
在您的 Linux 機器中安裝 fpsync。
- 針對 Linux 8 執行下列命令。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo yum install fpart -y
- 針對 Linux 9 執行下列命令。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm sudo yum install fpart -y
-
使用以下指令執行 fpsync 。
舉例而言:
fpsync -v -n `nproc` -o "-lptgoD -v --numeric-ids --logfile /tmp/fpsync.log1” /src/path/ root@<destination_instance>:/destination/path/
注意:如需更多 fpsync 選項和參數詳細資訊,請參閱
man fpsync
。
使用三個工作節點執行 Fpsync,將資料從內部部署檔案共用移轉至 OCI 檔案儲存服務
請依照高階步驟,使用三個工作節點執行 fpsync,將資料從內部部署檔案共用 (本機磁碟、SAN 或 NAS) 移轉至 OCI 檔案儲存服務。
下圖顯示元件架構圖。
遵循其步驟:
-
識別三個工作節點與目標節點。
識別三種可以存取以掛載來源檔案系統的本機系統。或者,您可以建立及啟動三個 OCI Compute VM 執行處理,以供測試之用。
識別現有的 OCI VM 執行處理,或建立並啟動新的 OCI VM 執行處理作為目的地節點。
-
將來源 NAS 共用掛載至三個節點。
使用
nordirplus
和nconnect=16
掛載選項,不指定其他nfs
掛載選項。例如,在 Linux 系統上執行下列掛載命令。
sudo mount -t nfs -o nordirplus,nconnect=16 10.x.x.x:/<EXPORT_PATH_NAME> /mnt/nfs-data
例如,執行下列指令以確認掛載。
mount | grep /mnt/nfs-data
注意:基於測試目的,您可以使用 OCI 檔案儲存來建立、匯出及掛載檔案系統。您可以在掛載中建立測試資料,以嘗試使用 fpsync。
-
選取要執行 fpsync 的節點,並更新
/etc/hosts
檔案。您可以選擇三個節點中的其中一個或不同的節點來執行
fpsync
命令。執行fpsync
命令的節點稱為執行程式節點。在執行 fpsync 的節點上,使用您偏好的文字編輯器,以
worker-src-1
、worker-src-2
和worker-src-3
的三個工作節點更新/etc/hosts
檔案。舉例而言:
vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.4 worker-src-1.subnet.vcn.oraclevcn.com worker-src-1 10.0.0.5 worker-src-2 10.0.0.6 worker-src-3
-
將目的地檔案系統掛載於目的地節點。
識別目的地檔案系統並將其掛載於目的地節點。或者,建立 OCI 檔案儲存並將其掛載至目的地節點。
-
確定已建立內部部署至 OCI 連線。
使用常見的網路工具 (例如
ping
、traceroute
、ssh
等) 來驗證系統、內部部署及 OCI 之間的連線。 -
在所有來源與目的地節點之間相互啟用無密碼 SSH,並驗證來源與目的地節點組之間的 SSH 連線。
識別將在執行程式節點上執行
fpsync
命令之使用者的公用 SSH 金鑰。此金鑰通常位於.ssh
目錄下的使用者本位目錄中,且通常名稱為id_rsa.pub
。使用cat
命令顯示其內容、複製金鑰,以及將它貼到工作節點上的$HOME/.ssh/authorized_keys
檔案中,將這個金鑰傳輸到所有工作節點。或者,如果啟用以密碼為基礎的 SSH,您可以使用ssh-copy-id
命令,將金鑰分送至每個工作節點和目的地節點。舉例而言:[worker-src-1 ~]$ ssh-copy-id username@worker-src-2
-
在執行程式節點中執行 fpsync 命令。
注意:只有透過工作節點透過 SSH 對目的地節點執行
rsync
命令的執行者節點才需要安裝 fpsync。舉例而言:
fpsync -v -n X -f Y -o "-lptgoD -v --numeric-ids -e ssh -C" \ -w username@worker-src-1 -w username@worker-src-2 -w username@worker-src-3 \ -d /nfs-data/fpsync_wrkr /nfs-data/fpsync_src/ opc@worker-dest:/fpsync-fs/
注意:將 X 和 Y 取代為 fpsync 選項
-n
和-f
的值。-
決定並行同步工作的值,即
-n
。- 選取
-n
值,使其等於來源中所有工作節點的cpu_cores
數目,並保留相同 CPU 和記憶體的目的地工作節點數目。 - 如果您有 3 個工作節點各有 16 個 CPU 核心,則其為 3 個工作節點乘以 16
cpu_cores
= 48。
- 選取
-
決定每個同步工作 (
-f
) 要傳輸的檔案量值。- 例如,如果您有兩個具有大型目錄和總計 110 萬個檔案的資料夾,這兩個資料夾會包含平均檔案大小為 160KB 的 ~700K 檔案。
- 每個工作節點都設定了:64GB = 6400000KB 記憶體,8 OCPU= 16
cpu_cores
,每cpu_core
的記憶體為:64000000/16 = 400000KB/cpu_core
。每個工作節點中的記憶體 = 64GB = 6400000KB。 - 計算
-f
的值,4000000KB/160 = 25000。
-
( 選擇性 ) 測試環境
若要模擬內部部署到 OCI 移轉,請使用下列資料集的 OCI 檔案儲存檔案系統 (Ashburn) 作為內部部署 NAS 共用,並使用 OCI 檔案儲存檔案系統 (Phoenix) 作為目的地。
這兩個區域都使用動態路由閘道進行遠端對等互連。
資料集目錄 | 大小 | 檔案計數 | 每個檔案的大小 |
---|---|---|---|
目錄 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 |
VM 執行處理:在阿什本和鳳凰城區域中,使用三個 16 cpu_core
、64GB 記憶體、8Gbps 頻寬 Linux9 VM 作為工作節點,以及一個 8 個 cpu_core
VM 作為執行程式節點。
下列為所有執行處理的 TCP 設定值:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.ipv4.tcp_window_scaling = 1
這兩個區域執行處理都有個別的 OCI 檔案儲存檔案系統,如使用三個工作節點執行 Fpsync,將資料從內部部署檔案共用移轉至 OCI 檔案儲存服務一節所述。
執行下列 fpsync
指令。X 和 Y 是 fpsync 選項。
fpsync -v -n X -f Y -o "-lptgoD -v --numeric-ids -e ssh -C" \
-w opc@worker-src-1 -w opc@worker-src-2 -w opc@worker-src-3 \
-d /fpsync-fs/fpsync_wrkr /fpsync-fs/x_region_fpsync_src/ opc@worker-dest:/fpsync-fs/
-
決定
-n
的值。Select the -n value to be equal to number of cpu_cores of all worker nodes in the source and keep as many as destination worker nodes of same CPU and memory. In this example, it is 3 worker nodes times 16 cpu_cores = 48.
-
決定
-f
的值。In this example, two folders are large directories. Of the total 1.1 million files, the two folders contain ~700K files with an average file size of 160KB. Memory in each worker node = 64GB = 64000000KB. Processes in each worker node = 8 OCPU = 16 cpu_cores. Memory per Process = 64000000/16 = 4000000KB/process. Now, an appropriate value for -f can be calculated as 4000000KB / 160 = 25000.
下表顯示 fpsync 為不同 X 和 Y 以及 rsync SSH 和壓縮組合完成 225 TB 和 100 萬個資料傳輸檔案所花費的時間。
fpsync 選項 | 來源和目的地工作節點上的 nfs 掛載選項 | 檔案儲存掛載目標效能類型 | Time taken - 所花時間 |
---|---|---|---|
-n 30 -f 2000 -e ssh | nconnect=16,nordirplus | 3 個標準掛接目標,1:1 對應至工作節點 | 237m28s |
-n 48 -f 5000 -e ssh -C | nconnect=16,nordirplus | 來源和目的地,每個 HPMT 40 | 163m38.887s |
-n 60 呎 20000 | nconnect=16,nordirplus | 3 個標準掛接目標,1:1 對應至工作節點 | 124m25.435s |
-n 48 -f 400000 -e ssh -C | nconnect=16,nordirplus | 3 個標準掛接目標,1:1 對應至工作節點 | 122m55.458s |
-n 100 -f 200000 -e ssh | nconnect=16,nordirplus | 3 個標準掛接目標,1:1 對應至工作節點 | 120m44s |
-n 60 -f 200000 -e ssh | 僅限 nordirplus,沒有 nconnect | 3 個標準掛接目標,1:1 對應至工作節點 | 118m41.393s |
-n 60 -f 200000 -e ssh | nconnect=16,nordirplus | 3 個標準掛接目標,1:1 對應至工作節點 | 118m3.845s |
-n 48 -f 20000 -e ssh | nconnect=16,nordirplus | 來源和目的地,每個 HPMT 40 | 113m34.011s |
-n 48 呎 200000 | nconnect=16,nordirplus | 來源和目的地,每個 HPMT 40 | 110m15.555s |
-n 48 呎 200000 | nconnect=16,nordirplus | 來源和目的地,每個 HPMT 40 | 109m3.472s |
我們可以看到任何 -n
超過 48 和 -f
超過 20000 的組合,讓區域的傳輸時間大約為 2 小時。即使具有高效能掛載目標 40 GBps,所花費的時間也大幅減少。
結果表示視要傳輸之實際資料集的大小而定,您可以為檔案系統選取多個標準或高效能掛載目標。如果來源資料集大部分是由大型檔案 (檔案大小 >= 1M) 所組成,且資料集總大小為 20TB 以上,則高效能掛載目標是一個不錯的選擇。此外,具有橫向擴展組態的標準掛載目標可以提供所需的效能以及符合成本效益。
接下來的步驟
繼續前往與您移轉需求相關的相關教學課程。若要將資料移至 OCI 雲端儲存服務:
-
使用 Rclone 時,請參閱教學課程 2:使用 Rclone 將資料搬移至 OCI 雲端儲存服務。
-
使用 OCI Object Storage Sync 和 S5cmd,請參閱教學課程 3:使用 OCI Object Storage Sync 和 S5cmd 將資料移至 OCI Cloud Storage Services 。
相關連結
認可
- 作者 - Vinoth Krishnamurthy (OCI 檔案儲存技術人員的主要成員)
其他學習資源
探索 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 Fpsync and Rsync
G25653-01
January 2025
Copyright ©2025, Oracle and/or its affiliates.