本頁說明檔案系統轉移的最佳做法。
效能最佳做法
以下是確保轉移作業順利進行的最佳做法:
如要評估效能,請轉移大型資料集,通常至少要有 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 不得設有保留政策或物件保留設定。
啟用後,儲存空間移轉服務會在可能加快移轉速度時,自動使用多部分上傳功能。
設定多部分物件生命週期規則
您可以使用 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 小時。舉例來說,開始轉移至少 10 萬個檔案,且總大小至少為 100 GB。
等待總處理量趨於穩定,並判斷您是否受到 WAN 容量或頻寬上限的限制。
如果 WAN 容量尚未飽和,且尚未達到所需傳輸上限,請新增其他代理程式。額外代理程式會自動提高移轉總處理量。等待約 3 分鐘,讓 Cloud Monitoring 中的輸送量穩定下來。
重複步驟 3 和 4,一次新增一位服務專員,直到達到所需上限為止。只要有可用的運算、檔案系統和網路資源,每個代理程式集區最多可同時執行 100 個代理程式。
如果在達到所需限制前,輸出頻寬已飽和,您可以採取下列任一做法:
如果已新增代理程式,但總處理量並未增加,且 WAN 未達飽和,請調查檔案系統總處理量。在極少數情況下,檔案系統輸送量會達到飽和,導致您無法提高傳輸效能。
命名代理程式
為代理程式命名時,建議您採取下列做法:
請務必在代理程式中加入主機名稱。這有助於找出代理程式執行的機器。建議您將
--hostname=$(hostname)傳遞至 Dockerrun指令。選擇代理程式前置字元配置,協助您在監控和基礎架構組織的環境中識別代理程式。例如:
如果您有三個不同的轉移專案,不妨在代理程式中加入團隊名稱。例如
logistics。如果您要為兩個不同的資料中心執行兩個不同的轉移專案,建議在代理程式前置字元中加入資料中心名稱。例如
omaha。