進階選項

本文說明檔案系統轉移作業的進階設定選項,包括:

複製 CIFS 或 SMB 磁碟區上的資料

Windows 伺服器不直接支援轉移代理程式。 不過,您可以將資料掛接至 Linux 伺服器或虛擬機器 (VM),然後從 Linux 伺服器或 VM 執行代理程式,將資料複製到 Cloud Storage,藉此遷移儲存在任何符合 POSIX 標準檔案系統上的資料。

如要從 CIFS 或 SMB 磁碟區移動資料,請按照下列步驟操作:

  1. 佈建 Linux 伺服器或 VM。

    如需支援的作業系統,請參閱「必要條件」。

  2. 在您佈建的 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 磁碟區授權使用者的密碼。
  3. 執行下列指令,確認 CIFS 磁碟區已掛接:

    findmnt -l
    
  4. 執行下列指令,確認執行代理程式的使用者可以列出並複製已掛接磁碟區上的檔案:

    sudo -u USERNAME cp /mnt/FILE1 /mnt/FILE2
    

    更改下列內容:

    • USERNAME:將執行代理程式的使用者。
    • FILE1:要複製的檔案。
    • FILE2:要複製到的檔案名稱。
  5. 安裝轉移代理程式

使用服務帳戶憑證

您可以使用服務帳戶憑證執行代理程式。使用服務帳戶憑證可讓您驗證轉移代理程式,不必依賴單一使用者帳戶。如要進一步瞭解帳戶類型,請參閱主體

  1. 建立服務帳戶金鑰。詳情請參閱「建立及管理服務帳戶金鑰」。

  2. 將服務金鑰位置傳遞至代理程式建立指令:

    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 指令。

以下是 Transfer Service for On Premises Data 代理程式的記憶體需求:
  • 記憶體下限: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_DIRECTORYCONTAINER_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 端點,請按照下列步驟操作:

  1. 登入要執行代理程式的內部部署主機。

  2. 設定私人 Google 存取權。詳情請參閱「設定內部部署主機的私人 Google 存取權」。

  3. 確認您可以連線至 Cloud Storage API:

    1. 如為 Cloud Storage API,請從與移轉代理程式相同的電腦執行下列指令,測試將檔案移至 Cloud Storage bucket: gcloud storage cp test.txt gs://MY-BUCKET 其中 MY-BUCKET 是 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,建議按照下列程序操作:

  1. 建立 Cloud Storage bucket,與最終 bucket 位於相同區域。確認這個暫時值區沒有資料保留政策。

    如要進一步瞭解地區,請參閱「值區位置」一文。

  2. 使用 Storage 移轉服務將資料移至您建立的臨時 bucket,該 bucket 沒有保留政策。

  3. 執行值區對值區的移轉作業,將資料移轉至設有保留政策的值區。

  4. 刪除您建立的 Cloud Storage 值區,該值區用於暫時儲存資料。

取得更多網路頻寬的方法

您可以透過多種方式取得更多網路頻寬,以利檔案系統傳輸。增加網路頻寬有助於縮短移轉時間,尤其是大型資料集。

  • 與 Google 對等互連:對等互連是指直接與 Google 互連,以支援流量交換。我們在全球各地設有直接對等互連位置。如要瞭解優點和政策,請參閱「對等互連」。

  • Cloud Interconnect:Cloud Interconnect 與對等互連類似,但您會使用互連網路連線至 Google。您可以選擇兩種互連

    • 專屬互連網路:透過專屬私人連線,直接從資料中心連線至 Google 資料中心。詳情請參閱專屬互連網路總覽

    • 合作夥伴互連網路:您與服務供應商合作,透過服務合作夥伴的網路建立與 Google 資料中心的連線。詳情請參閱合作夥伴互連網路總覽

  • 向網際網路服務供應商 (ISP) 取得頻寬:網際網路服務供應商 (ISP) 可能會提供符合你需求的頻寬。建議與對方聯絡,詢問可用的選項。