本文件說明檔案系統轉移作業的進階設定選項,包括:
- 複製 CIFS 或 SMB 磁碟區的資料
- 使用服務帳戶憑證
- 調整代理程式記憶體上限
- 限制服務專員目錄存取權
- 透過 Kubernetes 協調代理程式
- 使用轉送 Proxy
- 複製至設有保留政策的值區
- 取得更多網路頻寬的選項
複製 CIFS 或 SMB 磁碟區中的資料
Windows 伺服器不直接支援轉移代理程式。不過,您可以將儲存在任何符合 POSIX 規範的檔案系統上的資料,掛載至 Linux 伺服器或虛擬機器 (VM),然後從 Linux 伺服器或 VM 執行代理程式,將資料複製到 Cloud Storage。
如要從 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
替換為符合環境的值,藉此調整代理程式使用的最大記憶體,以便配合環境。
- 記憶體容量下限:1 GiB
- 支援高效上傳功能的記憶體容量下限:6 GiB
建議您使用預設的 8 GiB。
下表列出 MAXIMUM-MEMORY
可接受的格式範例:
max-physical-mem 值 |
記憶體上限設定 |
---|---|
6g |
6 GB |
6gb |
6 GB |
6GiB |
6 GiB |
限制服務專員目錄存取權
能夠建立移轉工作的使用者,可以從代理程式可存取的任何檔案系統目錄擷取資料,並將資料下載至該目錄。
如果代理程式以 root 身分執行,並且獲得整個檔案系統的存取權,惡意行為者可能會接管主機。強烈建議您只允許服務機器人存取必要的目錄。
如要限制服務帳戶存取特定目錄,請按照下列步驟操作:
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 值區:
gcloud storage cp test.txt gs://MY-BUCKET
其中MY-BUCKET
是 Cloud Storage 值區的名稱。 如果轉移作業順利完成,則表示測試成功。
- 針對 Cloud Storage API,請從與轉移代理相同的電腦執行下列指令,測試將檔案移至 Cloud Storage 值區:
使用轉送 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
。
複製至設有保留政策的值區
如要轉移至設有保留政策的值區,建議您採取下列程序:
在最終值區所在的區域建立 Cloud Storage 值區。確認這個暫時值區沒有資料保留政策。
如要進一步瞭解地區,請參閱「值區位置」。
使用 Storage 移轉服務,將資料轉移至您建立的暫時值區,且不設定保留政策。
執行值區間移轉,將資料傳輸至設有保留政策的值區。
刪除您建立的 Cloud Storage 值區,以便暫時儲存資料。
取得更多網路頻寬的選項
您可以透過多種方式,為檔案系統轉移作業取得更多網路頻寬。增加網路頻寬有助於縮短轉移時間,尤其是大型資料集。
與 Google 對等互連:對等互連是指直接與 Google 互連,以便交換流量。我們在全球設有直接對等互連地點。如要瞭解優點和政策,請參閱「Peering」。
Cloud Interconnect:Cloud Interconnect 與對等連線類似,但您會使用互連網路連線至 Google。可選擇的互連選項有兩種:
專屬互連網路:透過私人專屬連線,直接從資料中心連線至 Google 資料中心。詳情請參閱「專屬互連網路總覽」。
合作夥伴互連網路:您與服務供應商合作,透過服務合作夥伴的網路建立連線,連線至 Google 資料中心。詳情請參閱合作夥伴互連網路總覽。
向網際網路服務供應商 (ISP) 取得頻寬:網際網路服務供應商 (ISP) 可能可以提供更多頻寬來滿足您的需求。建議您與他們聯絡,瞭解他們提供哪些選項。