本文說明檔案系統轉移作業的進階設定選項,包括:
- 複製 CIFS 或 SMB 磁碟區上的資料
- 使用服務帳戶憑證
- 調整代理程式的最大記憶體
- 限制存取代理商目錄
- 透過 Kubernetes 協調代理程式
- 使用轉送 Proxy
- 複製到設有保留政策的值區
- 取得更多網路頻寬的方法
複製 CIFS 或 SMB 磁碟區上的資料
Windows 伺服器不直接支援轉移代理程式。 不過,您可以將資料掛接至 Linux 伺服器或虛擬機器 (VM),然後從 Linux 伺服器或 VM 執行代理程式,將資料複製到 Cloud Storage,藉此遷移儲存在任何符合 POSIX 標準檔案系統上的資料。
如要從 CIFS 或 SMB 磁碟區移動資料,請按照下列步驟操作:
佈建 Linux 伺服器或 VM。
如需支援的作業系統,請參閱「必要條件」。
在您佈建的 Linux 伺服器或 VM 上執行下列指令,掛接磁碟區:
sudo mount -t cifs -o username=WINDOWS-SHARE-USER,password=WINDOWS-SHARE-PASSWORD //IP-ADDRESS/SHARE-NAME /mnt
更改下列內容:
IP-ADDRESS
:CIFS 或 SMB 磁碟區所在的 Microsoft Windows 伺服器 IP 位址。SHARE-NAME
:要掛接的共用名稱。WINDOWS-SHARE-USER
:存取 CIFS 或 SMB 磁碟區的授權使用者。WINDOWS-SHARE-PASSWORD
:CIFS 或 SMB 磁碟區授權使用者的密碼。
執行下列指令,確認 CIFS 磁碟區已掛接:
findmnt -l
執行下列指令,確認執行代理程式的使用者可以列出並複製已掛接磁碟區上的檔案:
sudo -u USERNAME cp /mnt/FILE1 /mnt/FILE2
更改下列內容:
USERNAME
:將執行代理程式的使用者。FILE1
:要複製的檔案。FILE2
:要複製到的檔案名稱。
使用服務帳戶憑證
您可以使用服務帳戶憑證執行代理程式。使用服務帳戶憑證可讓您驗證轉移代理程式,不必依賴單一使用者帳戶。如要進一步瞭解帳戶類型,請參閱主體。
建立服務帳戶金鑰。詳情請參閱「建立及管理服務帳戶金鑰」。
將服務金鑰位置傳遞至代理程式建立指令:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \ --mount-directories=MOUNT_DIRECTORIES \ --creds-file=RELATIVE_PATH_TO/KEY_FILE.JSON
gcloud transfer
會自動掛接憑證檔案,因此不需要使用--mount-directories
旗標指定。
調整代理程式記憶體上限
根據預設,移轉代理程式最多會使用 8 GiB 的系統記憶體。您可以傳遞 --max-physical-mem=MAXIMUM-MEMORY
,並將 MAXIMUM-MEMORY
替換為適合您環境的值,藉此調整代理程式使用的記憶體上限。這個標記僅支援 docker run
指令。
- 記憶體下限:1 GiB
- 支援高效能上傳的記憶體下限:6 GiB
建議使用預設值 8 GiB。
下表列出 MAXIMUM-MEMORY
的可接受格式範例:
max-physical-mem 值 |
記憶體上限設定 |
---|---|
6g |
6 GB |
6gb |
6 GB |
6GiB |
6 GiB |
限制服務專員目錄存取權
能夠建立移轉工作的使用者,可以從代理程式可存取的任何檔案系統目錄擷取資料,並將資料下載至該目錄。
如果代理程式以根層級執行,並取得整個檔案系統的存取權,惡意行為者可能就能接管主機。強烈建議您僅允許代理程式存取必要目錄。
如要限制代理程式存取特定目錄,請按照下列步驟操作:
gcloud
如要指定代理程式可在檔案系統中存取的目錄,請使用 --mount-directories
標記和 gcloud transfer agents install
:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
--mount-directories=MOUNT_DIRECTORIES
如要指定多個目錄,請以半形逗號分隔各個目錄,且不得加上空格:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
--mount-directories=MOUNT_DIRECTORY_1,MOUNT_DIRECTORY_2
如果您使用 --creds-file
旗標指定憑證檔案,gcloud transfer
會自動掛接憑證檔案。與憑證檔案位於同一目錄的其他檔案不會掛接。
docker run
如要指定代理程式在執行轉移作業時可存取的目錄,請將 -v HOST_DIRECTORY:CONTAINER_DIRECTORY
傳遞至代理程式,其中:
HOST_DIRECTORY
是主機上要複製的目錄。CONTAINER_DIRECTORY
是對應至代理程式容器的目錄。
HOST_DIRECTORY
和 CONTAINER_DIRECTORY
必須相同,代理程式才能找到要複製的檔案。
使用這個選項時,請注意以下事項:
- 請勿指定
--enable-mount-directory
。 - 請勿在檔案路徑前加上
/transfer_root
。
--enable-mount-directory
選項會將整個檔案系統掛接至容器的 /transfer_root
目錄。如果指定 --enable-mount-directory
,系統就不會套用目錄限制。
您可以使用多個 -v
旗標,指定要從中複製的其他目錄。例如:
sudo docker run --ulimit memlock=64000000 -d -rm --volumes-from gcloud-config \ -v /usr/local/research:/usr/local/research \ -v /usr/local/billing:/usr/local/billing \ -v /tmp:/tmp \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --hostname=$(hostname) \ --agent-id-prefix=ID_PREFIX
如果您使用服務帳戶,請務必將憑證檔案掛接到容器中,並傳遞 --creds-file=CREDENTIAL_FILE
。例如:
sudo docker run --ulimit memlock=64000000 -d -rm \ -v HOST_DIRECTORY:CONTAINER_DIRECTORY \ -v /tmp:/tmp \ -v FULL_CREDENTIAL_FILE_PATH:FULL_CREDENTIAL_FILE_PATH \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --creds-file=CREDENTIAL_FILE \ --hostname=$(hostname) \ --agent-id-prefix=ID_PREFIX
更改下列內容:
HOST_DIRECTORY
:主機上要複製的目錄。CONTAINER_DIRECTORY
:代理程式容器內對應的目錄。FULL_CREDENTIAL_FILE_PATH
:憑證檔案的完整路徑。PROJECT_ID
:專案 ID,用於代管轉移資源的建立和計費。CREDENTIAL_FILE
:JSON 格式的服務帳戶憑證檔案。如要進一步瞭解如何產生服務帳戶憑證檔案,請參閱建立及管理服務帳戶金鑰。ID_PREFIX
:加在代理程式 ID 前的前置字串,有助於在 Google Cloud 主控台中識別代理程式或其機器。使用前置字元時,代理程式 ID 的格式為prefix + hostname + Docker container ID
。
透過 Kubernetes 協調代理程式
Docker 是 Kubernetes 支援的容器執行階段。您可以使用 Kubernetes 同時啟動及停止多個代理程式。從 Kubernetes 的角度來看,代理程式容器屬於無狀態應用程式,因此您可以按照Kubernetes 無狀態應用程式部署說明操作。
在 Cloud Interconnect 中使用私人 API 端點
如要在 Cloud Interconnect 中使用私人 API 端點,請按照下列步驟操作:
登入要執行代理程式的內部部署主機。
設定私人 Google 存取權。詳情請參閱「設定內部部署主機的私人 Google 存取權」。
確認您可以連線至 Cloud Storage API:
- 如為 Cloud Storage API,請從與移轉代理程式相同的電腦執行下列指令,測試將檔案移至 Cloud Storage bucket:
gcloud storage cp test.txt gs://MY-BUCKET
其中MY-BUCKET
是 Cloud Storage bucket 的名稱。 如果轉移作業正常運作,即表示測試成功。
- 如為 Cloud Storage API,請從與移轉代理程式相同的電腦執行下列指令,測試將檔案移至 Cloud Storage bucket:
使用轉送 Proxy
傳輸代理程式支援透過傳遞 HTTPS_PROXY
環境變數,在網路上使用轉送 Proxy。
例如:
sudo docker run -d --ulimit memlock=64000000 --rm \ --volumes-from gcloud-config \ -v /usr/local/research:/usr/local/research \ --env HTTPS_PROXY=PROXY\ gcr.io/cloud-ingest/tsop-agent:latest \ --enable-mount-directory \ --project-id=PROJECT_ID \ --hostname=$(hostname) \ --agent-id-prefix=ID_PREFIX
更改下列內容:
PROXY
:Proxy 伺服器的 HTTP 網址和通訊埠。 請務必指定 HTTP 網址 (而非 HTTPS 網址),以免在傳輸層安全標準 (TLS) 加密中造成雙重包裝要求。雙重包裝要求會阻止 Proxy 伺服器傳送有效的傳出要求。PROJECT_ID
:專案 ID,用於代管轉移資源的建立和計費。ID_PREFIX
:加在代理程式 ID 前的前置字串,有助於在 Google Cloud 主控台中識別代理程式或其機器。使用前置字元時,代理程式 ID 的格式為prefix + hostname + Docker container ID
。
複製到設有保留政策的值區
如要轉移至設有保留政策的 bucket,建議按照下列程序操作:
建立 Cloud Storage bucket,與最終 bucket 位於相同區域。確認這個暫時值區沒有資料保留政策。
如要進一步瞭解地區,請參閱「值區位置」一文。
使用 Storage 移轉服務將資料移至您建立的臨時 bucket,該 bucket 沒有保留政策。
執行值區對值區的移轉作業,將資料移轉至設有保留政策的值區。
刪除您建立的 Cloud Storage 值區,該值區用於暫時儲存資料。
取得更多網路頻寬的方法
您可以透過多種方式取得更多網路頻寬,以利檔案系統傳輸。增加網路頻寬有助於縮短移轉時間,尤其是大型資料集。
與 Google 對等互連:對等互連是指直接與 Google 互連,以支援流量交換。我們在全球各地設有直接對等互連位置。如要瞭解優點和政策,請參閱「對等互連」。
Cloud Interconnect:Cloud Interconnect 與對等互連類似,但您會使用互連網路連線至 Google。您可以選擇兩種互連:
專屬互連網路:透過專屬私人連線,直接從資料中心連線至 Google 資料中心。詳情請參閱專屬互連網路總覽。
合作夥伴互連網路:您與服務供應商合作,透過服務合作夥伴的網路建立與 Google 資料中心的連線。詳情請參閱合作夥伴互連網路總覽。
向網際網路服務供應商 (ISP) 取得頻寬:網際網路服務供應商 (ISP) 可能會提供符合你需求的頻寬。建議與對方聯絡,詢問可用的選項。