檔案系統轉移作業的最佳做法

本頁說明檔案系統移轉作業的最佳做法。

效能最佳做法

以下是確保轉移作業成效良好的最佳做法:

  • 充分發揮移轉代理程式的效能。

  • 轉移大型資料語料庫 (通常至少 100 GB),藉此評估成效。

    Storage 移轉服務是經過處理量最佳化的大規模服務,因此在極小測試資料集上的效能,不代表在正式環境中大型資料集上的效能。

  • 個別來源資料夾的檔案數量上限為 100 萬個。如果目錄包含數百萬個檔案,可能會拖慢整個移轉作業。

  • 在不同的虛擬機器 (VM) 中執行代理程式,更有效地調度資源用量。

  • 確認代理程式機器上的網路介面大小符合您所需的讀取/寫入頻寬。

    舉例來說,如果您打算充分利用 20 Gbps 廣域網路 (WAN),代理程式機器的網路介面必須支援 20 Gbps,才能從網路檔案系統讀取資料,並支援另外 20 Gbps,才能將資料移轉至 Cloud Storage,或總頻寬為 40 Gbps。

  • 監控代理程式機器的 CPU、記憶體和網路,確保機器不會因其他工作負載而過載,因為這可能會對效能造成負面影響。如需建議的記憶體和 CPU 數據,請參閱代理程式硬體需求。

多部分上傳

如果您的移轉作業是從 POSIX 檔案系統移至 Cloud Storage,或是在 POSIX 檔案系統之間進行,建議啟用多部分上傳。多部分上傳功能可將大型檔案 (>1 GiB) 分割成較小的部分,並平行上傳這些部分,最多可將包含大型檔案的移轉作業速度提升 300%。

HDFS 和 S3 相容檔案系統不支援多部分上傳。

啟用多部分上傳功能

如要啟用多部分上傳功能,請按照下列步驟操作:

  • 您必須將必要權限授予授權移轉代理程式的帳戶,無論是使用者帳戶或服務帳戶。

  • 目的地或中繼 bucket 不得設有保留政策或物件保留。

啟用後,Storage 移轉服務會在可能加快移轉速度時,自動使用多部分上傳功能。

設定多部分物件生命週期規則

您可以使用 Cloud Storage 物件生命週期管理功能,取消未完成的分塊上傳作業,並刪除相關聯的部分。請參閱 Cloud Storage 說明文件中的「取消未完成的多部分上傳」。

建議將 age 值設為 7 天。

停用多部分上傳功能

如要停用多部分上傳功能,請使用 docker run 重新安裝移轉代理程式,並傳遞 --enable-multipart=false:

sudo docker run --ulimit memlock=64000000 -d --rm \
-v /usr/local/research:/usr/local/research \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT_ID \
--agent-pool=AGENT_POOL \
--creds-file=CREDENTIAL_FILE \
--hostname=$(hostname) \
--enable-multipart=false

更改下列內容:

  • PROJECT_ID 指定託管移轉作業的專案 ID。
  • CREDENTIAL_FILE:如果移轉代理程式使用服務帳戶進行驗證,請指定 JSON 格式服務帳戶憑證檔案的路徑。

或者,您也可以從授權轉移代理程式的帳戶 (使用者帳戶或服務帳戶) 撤銷必要權限。

盡可能提高移轉代理程式效能

轉移效能會受到下列變數影響:

  • 檔案系統功能。

  • 底層硬體限制。

    硬碟媒體類型、輸入/輸出匯流排和區域網路 (LAN) 連線能力都會影響效能。

  • WAN 處理量和使用率。

    如果 WAN 速度較慢或使用率偏高,效能就會降低。

  • 檔案特徵。

    舉例來說,由於網路負擔,許多大型檔案的網路總處理量高於許多小型檔案。

由於這些變數,我們無法預測實際效能,也無法提供最佳的代理程式使用數量。

我們建議您至少使用三個代理程式,並盡可能分散在不同機器上,確保移轉作業具備容錯能力。您可以在轉移作業執行期間新增轉移代理程式,動態提升效能。

如要觀察新增代理程式的影響,並選擇最適合您環境的代理程式數量,請按照下列步驟操作:

  1. 啟動大型移轉作業,執行時間至少 1 小時。例如,啟動包含至少 10 萬個檔案、總大小至少 100 GB 的移轉作業。

  2. 使用 Cloud Monitoring 觀察整體代理程式處理量。

  3. 等待處理量趨於穩定,並判斷是否受限於 WAN 容量或頻寬上限。

  4. 如果 WAN 容量尚未飽和,且未達到所需的傳輸限制,請新增其他代理。額外的代理程式會自動提高移轉處理量。等待約 3 分鐘,讓 Cloud Monitoring 中的處理量穩定下來。

重複步驟 3 和 4,一次新增一個代理,直到達到所需限制。只要有可用的運算、檔案系統和網路資源,每個代理程式集區最多可同時執行 100 個代理程式。

如果傳出頻寬在達到所需限制前就已飽和,您可以採取下列任一做法:

如果新增代理程式後,處理量並未增加,且 WAN 尚未飽和,請調查檔案系統處理量。在極少數情況下,檔案系統處理量會達到飽和,導致無法提高傳輸效能。

命名代理

命名代理時,建議您採取下列做法:

  • 請務必在代理程式中加入主機名稱。這有助於找出代理程式執行的機器。建議您將 --hostname=$(hostname) 傳遞至 Docker run 指令。

  • 選擇代理前置字元配置,以便在監控和基礎架構組織中識別代理。例如:

    • 如果您有三個獨立的移轉專案,建議在代理程式中加入團隊名稱。例如 logistics。

    • 如果您為兩個不同的資料中心執行兩個不同的移轉專案,建議您在代理程式前置字串中加入資料中心名稱。例如 omaha。