遷移至 NFS Azure 檔案共用
本文說明從 Linux 檔案伺服器遷移至 NFS Azure 檔案共用 (僅限 FileStorage 帳戶種類的進階檔案共用) 的基本層面。 我們也會比較開放原始碼檔案複製工具 fpsync 和 rsync,以了解其將資料複製到 Azure 檔案共用時的效能。
注意
Azure 檔案儲存體不支援 NFS 存取控制清單 (ACL)。
適用於
檔案共用類型 | SMB | NFS |
---|---|---|
標準檔案共用 (GPv2)、LRS/ZRS | ||
標準檔案共用 (GPv2)、GRS/GZRS | ||
進階檔案共用 (FileStorage)、LRS/ZRS |
必要條件
您必須將至少一個 NFS Azure 檔案共用掛接至 Linux 虛擬機 (VM)。 若要進行此操作,請參閱建立 NFS Azure 檔案共用,並將其掛接在 Linux VM 上。 為了使用多個 TCP 連線,建議您使用 nconnect 掛接共用。 如需詳細資訊,請參閱改善 NFS Azure 檔案共用效能。
移轉工具
許多開放原始碼工具皆可將資料傳輸至 NFS 檔案共用。 然而,面對明顯注重效能考量的分散式檔案系統,這些工具的效率不一定高於內部部署的設置。 在分散式檔案系統中,每個網路呼叫都必須來回可能不在本機的伺服器。 因此,網路呼叫所需時間最佳化的關鍵,在於網路必須以最佳效能與效率實現資料傳輸。
使用 fpsync vs. rsync
開放原始碼檔案複製工具 rsync 雖為單執行緒,但功能多樣, 可在本機複製、來回遠端殼層另一個主機進行複製,或來回遠端 rsync 精靈進行複製。 它提供許多選項,且能靈活指定要複製的一組檔案。 然而,fpsync 為多執行緒應用程式,因此具備一些優勢,包括能夠平行執行 rsync 作業。
在本文中,我們使用 fpsync 將資料從 Linux 檔案伺服器遷移至 NFS Azure 檔案共用。
複製資料時,fpsync 會使用 rsync (預設)、cpio或 tar 工具。 它會計算來源目錄的子集 src_dir/
並繁衍同步處理作業,將其同步至目的地目錄 dst_dir/
。 它會即時執行同步處理作業,同時編製檔案系統,因此能高效遷移大型檔案系統,並複製內含多個檔案的龐大資料集,非常實用。
注意
Fpsync 只會同步目錄內容,而非來源目錄本身。 fpsync 有別於 rsync,會在來源目錄上強制執行最終的「/」,這表示在同步處理之後,目標目錄內不會出現以來源目錄為名稱的子目錄。
安裝 fpart
若要使用 fpsync,您必須安裝 fpart 檔案系統分割器。 在您選擇的 Linux 發行版本上安裝 fpart。 安裝後,/usr/bin/
底下應會出現 fpsync。
將資料從來源複製到目的地
確認您的目的地 (目標) Azure 檔案共用已掛接至 Linux VM。 請參閱必要條件。
若要進行完整遷移,資料複製將經過三個階段:
- 基準複製:目的地上沒有資料時,從來源複製到目的地。 以基準複製而言,建議使用 fpsync 搭配 cpio 作為複製工具。
- 增量複製:僅將來源增加的變更複製到目的地。 以增量同步處理而言,建議使用 fpsync 搭配 rsync 作為複製工具。 這可能必須執行一次以上,才能擷取所有變更。
- 最終傳遞:必須透過最終傳遞,將來源沒有的檔案從目的地中刪除。
使用 fpsync 複製資料,始終會運用此命令的部分版本:
fpsync -m <specify copy tool - rsync/cpio/tar> -n <parallel transfers> <absolute source path> <absolute destination path>
基準複製
以基準複製而言,請使用 fpsync 搭配 cpio。
fpsync -m cpio -n <parallel transfers> <absolute source path> <absolute destination path>
如需詳細資訊,請參閱 Cpio 和 Tar 支援。
增量複製
以增量同步處理而言,請使用 fpsync 搭配預設複製工具 (rsync)。 為了擷取所有變更,建議您執行一次以上。
fpsync -n <parallel transfers> <absolute source path> <absolute destination path>
預設 fpsync 預設會指定下列 rsync 選項:-lptgoD -v --numeric-ids
。 您可將 -o option
新增至 fpsync 命令,藉此指定其他 rsync 選項。
最終傳遞
經過數次增量同步處理後,您必須執行最終傳遞,將來源上不存在的檔案從目的地刪除。 您可運用 rsync --delete
手動執行此操作,將多餘檔案從 /data/dst/
目錄刪除,或使用 fpsync 搭配 -E 選項。 如需詳細資訊,請參閱最終傳遞。
運用不同資料集比較 rsync 和 fpsync
本節運用不同資料集,比較 rsync 和 fpsync 效能。
資料集和設定
下表呈現我們運用不同資料集,比較在各個工作負載下複製工具的效能。
設定編號 | 複製類型 | 檔案計數 | 目錄計數 | 檔案大小 | 總大小 |
---|---|---|---|---|---|
1.1 | 基準複製 | 100 萬 | 1 | 0-32 KiB | 18 GiB |
1.2 | 增量 (差異變更) | 100 萬 | 1 | 0-32 KiB | 18 GiB |
2 | 基準複製 | 191,345 | 3,906 | 0-32 KiB | 3 GiB |
3 | 基準複製 | 5,000 | 1 | 10 MiB | 50 GiB |
本測試在 Azure Standard_D8s_v3 VM 上執行,其具有 8 個 vCPU、32 GiB 記憶體及超過 1 TiB 的磁碟空間,可儲存龐大資料集。 我們在目標設定的 NFS Azure 檔案共用,佈建 1 TiB 以上的大小。
實驗和結果:rsync vs. fpsync
依據上述設定的實驗,我們發現 fpsync 搭配 64 個執行緒效能最佳,針對與 nconnect=8
掛接的 Azure NFS 檔案共用,則是 rsync 搭配 16 執行緒 cpio。 實際結果隨您的設定和資料集而異。
注意
Azure 檔案儲存體輸送量可能遠高於下表呈現數據。 為求簡潔,部分實驗刻意以較小的資料集進行。
設定 1
我們針對包含 100 萬個小型檔案的單一目錄 (共計 18 GiB) 執行基準複製和增量複製的測試。
從來源到目的地的基準複製結果如下。
增量複製 (差異變更) 結果如下。
設定 2
我們針對 3,906 個目錄內 191,345 個小型檔案 (大小共計 3 GiB) 執行基準複製,結果如下。
設定 3
我們針對單一目錄內 5,000 個大型檔案 (各 10 GiB,大小共計 50 GiB) 執行基準複製,結果如下。
結果的摘要
遷移至 NFS Azure 檔案共用時,使用 fpsync 等多執行緒應用程式的輸送量和 IOPS,高於 rsync 等單執行緒複製工具。 我們的測試顯示:
- 資料在目錄內平均分散有助平行執行遷移流程,進而提升效能。
- 複製資料的檔案若較大,則效能較佳;反之則較差。
下表摘要呈現結果:
設定編號 | 檔案計數 | 目錄計數 | 檔案大小 | 總大小 | rsync 持續時間 | rsync 輸送量 | fpsync 持續時間 | fpsync 輸送量 | 輸送量增幅 |
---|---|---|---|---|---|---|---|---|---|
1.1 (基準) | 100 萬 | 1 | 0-32 KiB | 18 GiB | 837.06 分鐘 | 0.33 MiB/秒 | 228.16 分鐘 | 1.20 MiB/秒 | 267% |
1.2 (增量) | 100 萬 | 1 | 0-32 KiB | 18 GiB | 84.02 分鐘 | 3.25 MiB/秒 | 7.5 分鐘 | 36.41 MiB/秒 | 1,020% |
2 (基準) | 191,345 | 3,906 | 0-32 KiB | 3 GiB | 191.86 分鐘 | 0.27 MiB/秒 | 8.47 分鐘 | 6.04 MiB/秒 | 2,164% |
3 (基準) | 5,000 | 1 | 10 MiB | 50 GiB | 8.12 分鐘 | 105.04 MiB/秒 | 2.76 分鐘 | 308.90 MiB/秒 | 194% |
協力廠商資訊免責聲明
本文所述的開放原始碼工具為知名第三方解決方案。 這些工具並非由 Microsoft 直接或間接開發、擁有或支援。 客戶有責任檢閱第三方文件中提供的軟體授權和支援聲明。