Cloud Storage FUSE 中的檔案快取

本文將概略介紹 Cloud Storage FUSE 檔案快取,並說明如何設定及使用檔案快取。

Cloud Storage FUSE 檔案快取是用戶端讀取快取,可從您選擇的較快速快取儲存空間提供重複的檔案讀取作業,進而提升讀取作業的效能。啟用檔案快取後,Cloud Storage FUSE 會在本機儲存常用檔案的副本,以便後續直接從快取提供讀取作業,進而縮短延遲時間並提升處理量。

檔案快取的好處

檔案快取具有下列優點:

  • 提升小型和隨機 I/O 的效能:檔案快取功能可直接從快取媒體提供讀取作業,進而縮短延遲時間並提升總處理量。從快取提供服務時,小型隨機 I/O 作業的速度會顯著提升。

  • 自動啟用並行下載:啟用檔案快取時,Cloud Storage FUSE 2.12 以上版本會自動啟用並行下載。平行下載會使用多個工作站,以檔案快取目錄做為預先擷取緩衝區,平行下載檔案,模型載入速度最多可提升九倍。建議您在單一執行緒讀取情境中使用平行下載,載入大型檔案,例如模型服務和檢查點還原。

  • 使用現有容量:檔案快取可使用快取目錄的現有佈建機器容量,無須支付額外儲存空間費用。這包括與 Cloud GPU 機型 (例如 a2-ultragpua3-highgpu) 搭配使用的本機 SSD、永久磁碟 (每個 VM 使用的開機磁碟) 或記憶體內 /tmpfs

  • 費用較低:快取命中時,系統會在本機提供內容,不會產生 Cloud Storage 作業或網路費用。

  • 降低 AI 和機器學習訓練的總持有成本:檔案快取功能可加快資料載入速度,進而提高 Cloud GPU 和 Cloud TPU 的使用率,縮短訓練時間,並為人工智慧和機器學習 (AI/ML) 訓練工作負載提供更高的價格效能比。

平行下載

平行下載功能會使用多個工作站,平行下載檔案的多個部分,並將檔案快取目錄做為預先擷取緩衝區,藉此提升讀取效能。如果讀取作業會載入大型檔案 (例如模型服務、檢查點還原,以及大型物件訓練),建議使用平行下載。

啟用並行下載檔案快取的用途包括:

用途類型 說明
訓練 如果要存取的資料會多次讀取,請啟用檔案快取功能, 無論是多次讀取相同檔案,還是讀取相同檔案的不同位移量,都適用這項功能。 如果資料集大於檔案快取,檔案快取應維持停用狀態,並改用下列其中一種方法:
提供模型權重和檢查點讀取作業 啟用檔案快取和平行下載功能,即可使用平行下載功能,載入大型檔案的速度會比不使用檔案快取和平行下載功能時快得多。

注意事項

  • 檔案快取存留時間 (TTL):如果檔案快取項目尚未根據 TTL 過期,且檔案位於快取中,則對該檔案的讀取作業會從本機用戶端快取提供服務,而不會向 Cloud Storage 發出任何要求。

  • 檔案快取項目到期:如果檔案快取項目已過期,系統會先向 Cloud Storage 發出 GET 檔案屬性呼叫。如果檔案遺失,或是屬性或內容有所變更,系統會擷取新內容。如果屬性只是失效,但內容仍有效 (表示物件產生作業未變更),則只有在屬性呼叫確認內容有效後,系統才會從快取提供內容。這兩項作業都會造成網路延遲。

  • 檔案快取失效:當 Cloud Storage FUSE 用戶端修改快取檔案或其屬性時,該用戶端的快取項目會立即失效,以確保一致性。不過,存取同一檔案的其他用戶端會繼續讀取快取版本,直到個別 TTL 設定導致失效為止。

  • 檔案大小和可用容量:讀取的檔案必須符合檔案快取目錄的可用容量,而可用容量可使用 --file-cache-max-size-mb 選項file-cache:max-size-mb 欄位控制。

  • 快取逐出:系統會根據最近最少使用的 (LRU) 演算法,逐出快取的中繼資料和資料,並在達到為每個 --file-cache-max-size-mb 限制設定的空間門檻時開始執行。如果項目是根據 TTL 到期,系統會先對 Cloud Storage 進行 GET 中繼資料呼叫,因此會受到網路延遲影響。由於資料和中繼資料是分開管理,因此您可能會遇到一個實體遭到逐出或失效,但另一個實體沒有。

  • 快取持續性:卸載及重新啟動時,Cloud Storage FUSE 快取不會保留。如果是檔案快取,雖然從快取提供檔案所需的中繼資料項目會在卸載和重新啟動時遭到清除,但檔案目錄中可能仍有檔案快取中的資料。建議您在卸載或重新啟動後,刪除檔案快取目錄中的資料。

  • 隨機和部分讀取管理:當第一個檔案讀取作業從檔案開頭 (位移 0) 開始時,即使您只讀取一小部分範圍,Cloud Storage FUSE 檔案快取也會擷取並將整個檔案載入快取。這樣一來,後續從同一物件隨機或部分讀取資料時,系統就能直接從快取提供服務。

    根據預設,從任何其他位移讀取資料不會觸發非同步完整檔案擷取作業。如要變更這項行為,讓 Cloud Storage FUSE 在初始隨機讀取時將檔案擷取至快取,請將 --file-cache-cache-file-for-range-read 選項或 file-cache:cache-file-for-range-read 欄位設為 true

    如果對同一個物件執行許多不同的隨機或部分讀取作業,建議啟用這項屬性。

  • 資料安全性:啟用快取時,Cloud Storage FUSE 會使用您透過 --cache-dir 選項或 cache-dir 欄位指定的快取目錄,做為快取的基礎目錄,以加密格式保存 Cloud Storage bucket 中的檔案。任何有權存取這個快取目錄的使用者或程序,都能存取這些檔案。建議您限制這個目錄的存取權。

  • 直接或多次存取檔案快取:使用 Cloud Storage FUSE 以外的程序存取或修改快取目錄中的檔案,可能會導致資料損毀。Cloud Storage FUSE 快取是專為每個 Cloud Storage FUSE 執行程序而設,在相同或不同機器上執行的不同 Cloud Storage FUSE 程序之間,不會共用快取。因此,我們不建議不同 Cloud Storage FUSE 程序使用相同的快取目錄。

  • 在同一部機器上執行多個 Cloud Storage FUSE 程序:如需在同一部機器上執行多個 Cloud Storage FUSE 程序,每個 Cloud Storage FUSE 程序都應取得專屬的快取目錄,或使用下列其中一種方法,確保資料不會損毀:

    • 使用共用快取掛接所有 buckets:使用動態掛接,在單一程序中掛接您有權存取的所有 buckets,並使用共用快取。詳情請參閱「Cloud Storage FUSE 動態掛接」。

    • 在特定 bucket 上啟用快取:使用靜態掛接,只在指定的 bucket 上啟用快取。詳情請參閱「Cloud Storage FUSE 靜態掛接」。

    • 僅快取特定資料夾或目錄:掛接並快取特定 bucket 層級的資料夾,而非掛接整個 bucket。詳情請參閱「掛接值區內的目錄」。

事前準備

檔案快取需要目錄路徑,才能快取檔案。您可以在現有檔案系統上建立新目錄,也可以在佈建的儲存空間上建立新檔案系統。如要佈建新的儲存空間,請按照下列操作說明建立新的檔案系統:

  1. 如要瞭解 Google Cloud Hyperdisk,請參閱建立新的 Google Cloud Hyperdisk 磁碟區

  2. 如果是永久磁碟,請參閱「建立新的永久磁碟磁碟區」。

  3. 如要瞭解本機 SSD,請參閱「將本機 SSD 新增至 VM」一文。

  4. 如要瞭解記憶體內 RAM 磁碟,請參閱「建立記憶體內 RAM 磁碟」。

啟用及設定檔案快取行為

  1. 選取要啟用及設定檔案快取的方法,可透過下列任一方式操作:

  2. 請使用下列任一方法指定要使用的快取目錄。這樣一來,您就能為非 Google Kubernetes Engine 部署啟用檔案快取:

    如果您使用 Google Kubernetes Engine 部署作業,並搭配 Google Kubernetes Engine 適用的 Cloud Storage FUSE CSI 驅動程式,請指定下列其中一種方法:

  3. 選用:如果系統未自動啟用平行下載功能,請使用下列其中一種方法將 true 設為 ,啟用平行下載功能:

  4. 調整下列其中一個選項,即可限制 Cloud Storage FUSE 快取在掛接目錄中可使用的總容量。指定快取目錄時,系統會自動將這些選項設為 -1 值:

    你也可以指定 MiB 或 GiB 的值,限制快取大小。

  5. 選用:略過快取項目的 TTL 到期時間,並使用下列其中一種方法和設定 -1 值,從快取提供檔案中繼資料 (如有):

    預設值為 60 秒,值為 -1 則表示不設上限。您也可以根據需求指定較高的值。建議您將 ttl-secs 值設為工作負載允許的最高值。如要進一步瞭解快取項目的 TTL,請參閱「注意事項」。

  6. 選用:啟用檔案快取功能,讓檔案的第一個讀取作業從 offset 0 以外的位置開始時,也能非同步將整個檔案載入快取,這樣後續從同一檔案讀取不同位移時,也能從快取提供服務。使用下列其中一種方法,並將選項設為 true

  7. 選用:設定狀態快取和型別快取。如要進一步瞭解 stat 和型別快取,請參閱型別快取總覽stat 快取總覽

  8. 執行工作負載前,請先在已掛接的值區中手動執行 ls -R 指令,預先填入中繼資料,確保類型快取會在第一次讀取前,以更快速的批次方法填入資料。如要進一步瞭解如何提升首次讀取效能,請參閱「提升首次讀取效能」。

啟用檔案快取後,系統會自動在 Cloud Storage FUSE 2.12 以上版本啟用平行下載功能。如果您使用的是舊版 Cloud Storage FUSE,請將 enable-parallel-downloads 選項設為 true,啟用平行下載。

設定平行下載的支援屬性

您可以使用 Cloud Storage FUSE CLI 或 Cloud Storage FUSE 設定檔,選擇性地為平行下載設定下列支援屬性:

房源說明 gcsfuse選項 設定檔欄位
每個檔案可產生的工作站數量上限,用於將物件從 Cloud Storage 下載至檔案快取。 --file-cache-parallel-downloads-per-file file-cache:parallel-downloads-per-file
所有檔案下載工作在任何時間點可產生的工作站數量上限。預設值為機器上 CPU 核心數的兩倍。如要指定沒有限制,請輸入 `-1` 值。 --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
每個工作站將物件下載至檔案快取時,向 Cloud Storage 發出的讀取要求大小 (以 MiB 為單位)。請注意,只有在讀取的檔案達到指定大小時,才會觸發平行下載。 --file-cache-download-chunk-size-mb file-cache:download-chunk-size-mb

停用平行下載

如要停用平行下載,請將下列其中一項設為 false

  • gcsfuse 個選項:--file-cache-enable-parallel-downloads
  • 設定檔欄位:file-cache:enable-parallel-downloads

後續步驟