Cloud Storage FUSE

Cloud Storage FUSE 是一個開放原始碼 FUSE 轉接器,可讓您掛接 Cloud Storage 值區以當做 Lixnux 或 macOS 系統的檔案系統。還可讓應用程式透過標準檔案系統語意上傳和下載 Cloud Storage 物件。Cloud Storage FUSE 可以在連結 Cloud Storage 的任何地方執行,包括 Google Compute Engine VM 或內部部署系統1

Cloud Storage FUSE 是由 Google 開發的社區支援開放原始碼工具,以 Go 編寫並於 GitHub 託管。Cloud Storage FUSE 僅受 Apache 授權規範,不受任何其他條款或細則約束;其照原樣發布,不提供任何形式的保證。支援服務由社群提供,您可以在 Server Dault 中使用 google-cloud-platformgcsfuse 標記取得支援。請在之前的問答集中查看您的問題是否已有解答。

技術總覽

Cloud Storage FUSE 的運作原理是將物件儲存名稱轉換成檔案及目錄系統,並將物件名稱中的「/」字元解譯為目錄分隔符,這樣一來,具有相同共用前置字串的物件就會被視為同一目錄中的檔案。應用程式可以與掛接的值區 (如簡易檔案系統) 互動,提供在雲端執行且近乎無限的檔案儲存空間。

雖然 Cloud Storage FUSE 有檔案系統介面,但與後端的 NFS 或 CIFS 檔案系統不同。Cloud Storage FUSE 擁有與 Cloud Storage 相同的基本性質,保留了 Cloud Storage 在大小和匯總效能方面的擴充性,同時維持相同的延遲和單一物件效能。與其他存取方法一樣,Cloud Storage 不支援並行和鎖定作業。例如,如果有多個 Cloud Storage FUSE 用戶端要寫入同一檔案,則會寫入更新時間最新的用戶端。

要進一步瞭解如何使用 Cloud Storage FUSE 或提報問題,請前往 Google Cloud Platform GitHub 存放區。在存放區中,建議您查看 READMEsemanticsinstallingmounting 文件。

使用 Cloud Storage FUSE

如需安裝及使用 Cloud Storage FUSE 的完整詳細資料,請查看 GoogleCloudPlatform/gcsfuse GitHub 存放區。下列步驟概述如何以互動方式使用 Cloud Storage FUSE,亦即手動掛接值區。

  1. 請遵循安裝 Cloud Storage FUSE 及其依附元件的操作說明

  2. 設定 Cloud Storage FUSE 的憑證。

    Cloud Storage FUSE 會依據應用程式預設憑證自動探查到憑證:

    1. 如果是在設定 storage-full 範圍的 Google Compute Engine 執行個體中執行,則 Cloud Storage FUSE 可以使用 Compute Engine 內建的服務帳戶。詳情請參閱透過應用程式使用服務帳戶相關說明。

    2. 如果您已安裝 Google Cloud SDK 並執行 gcloud auth application-default login,則 Cloud Storage FUSE 可以使用這些憑證。

    3. 如果將 GOOGLE_APPLICATION_CREDENTIALS 環境變數設為服務帳戶的 JSON 金鑰檔案路徑,則 Cloud Storage FUSE 將使用此憑證。要進一步瞭解如何使用 Google Cloud Platform Console 建立服務帳戶的 JSON 金鑰檔案,請參閱建立服務帳戶金鑰一節。

    如果指定了多個憑證類型,請參閱應用程式預設憑證的運作方式說明,以瞭解憑證的使用順序。

  3. 建立目錄。

    $ mkdir /path/to/mount
    
  4. 使用 Google Cloud Platform Console 建立您要掛接的值區 (如果尚未存在)。

  5. 使用 Cloud Storage FUSE 掛接值區 (例如 example-bucket)。

    $ gcsfuse example-bucket /path/to/mount
    
  6. 開始使用掛接的值區。

    $ ls /path/to/mount
    

與 POSIX 檔案系統的主要區別

Cloud Storage FUSE 允許檔案型應用程式在無需重寫其 I/O 程式碼的情況下使用 Cloud Storage,讓您可以更快且更妥善地使用 Cloud Storage。如果 Cloud Storage 有適用於應用程式的效能和擴充性,只是缺少檔案系統語意,則非常適合使用 Cloud Storage FUSE。在判定 Cloud Storage FUSE 是不是適合的解決方案時,您應考慮相較於本端檔案系統的一些額外差異:

定價:Cloud Storage FUSE 存取最終是 Cloud Storage 存取。所有由 Cloud Storage FUSE 執行的資料移轉和作業均會對應於 Cloud Storage 移轉和作業,並據此收費。如需使用 Cloud Storage FUSE 之前的詳細資料,請參閱下方的定價一節

效能:Cloud Storage FUSE 的延遲時間比本機檔案系統長得多。因此,在一次讀取或寫入一個小檔案時可能會減少總處理量。使用較大的檔案及/或一次移轉多個檔案有助於增加總處理量。

  • 單獨 I/O 串流的執行速度大約和 gsutil 一樣快。
  • 延遲對 gsutil rsync 指令的影響可能會特別大,因為此指令一次讀取和寫入一個檔案。使用頂層 -m 旗標搭配此指令通常會比較快。
  • 由於第一個位元組的延遲,少量隨機讀取作業的速度會很慢 (請勿透過 Cloud Storage FUSE 執行資料庫!)
  • 隨機寫入作業的執行方式為讀取整個 blob,在本機進行編輯,然後將整個修改後的 blob 寫回 Cloud Storage。在大型檔案中執行少量寫入可以如預期運作,但速度很慢且費用昂貴。

中繼資料:Cloud Storage FUSE 在上傳至 Cloud Storage 時不會將中繼資料與檔案一起移轉。這表示如果您想要使用 Cloud Storage FUSE 做為上傳工具,將無法像使用其他上傳方法那樣設定內容類型和 acls 之類的中繼資料。如果中繼資料屬性很重要,請考慮使用 gsutilJSON APIGoogle Cloud Platform Console

  • 例外情況是 Cloud Storage FUSE 確實儲存了 mtime 和 symlink 目標。

並行:多個寫入器沒有檔案的並行作業控制權。如果有多個寫入器嘗試替換檔案,則最後一次寫入會成功,所有之前的寫入均會遺失;後續的覆寫作業不會有任何合併、版本控制或使用者通知。

連結:Cloud Storage FUSE 不支援硬連結。

語意:部分語意不完全是傳統檔案系統中的語意。這裡提供例外清單。例如,不支援前次存取時間之類的中繼資料,且部分中繼資料作業 (如目錄重新命名) 並不是整體性作業。

存取權:檔案授權由 Cloud Storage 權限管理。POSIX 樣式的存取權控管沒有作用。

可用性:在 Cloud Storage 之類的分散式系統中有時會發生暫時性錯誤,導致可用性低於 100%。建議依據部分指數輪詢準則重試。

本機儲存:新增或修改後的物件將完整儲存在本機暫存檔案中,直到物件關閉或同步處理為止。處理大型檔案時,請確定您有足夠的本機儲存容量可以儲存檔案的暫時性副本,尤其是在使用 Google Compute Engine 執行個體時。詳情請參閱 Readme 說明文件

目錄:根據預設,只有已明確定義的目錄 (亦即目錄為 Cloud Storage 中的自有物件) 才會出現在檔案系統中。隱性目錄 (亦即只是其他檔案或目錄的路徑名稱中的一部分) 預設為不顯示。如果檔案的路徑名稱含有隱性目錄,則不會出現在整體目錄的樹狀結構中 (因為含有這些檔案的隱性目錄不會顯示在畫面上)。可以使用標記來變更此行為。詳情請參閱 semantics 說明文件

Cloud Storage FUSE 產生的費用

Cloud Storage FUSE 可以免費使用,但與任何其他 Cloud Storage 介面一樣,進出 Cloud Storage 所產生的儲存空間、中繼資料和網路 I/O 均須付費。為了避免出現意外情況,您應估算 Cloud Storage FUSE 的用量如何轉換成 Cloud Storage 費用。例如,如果您是使用 Cloud Storage FUSE 來儲存記錄檔案,且系統會同時主動清除數百甚或數千台電腦中的記錄,則可能很快產生費用。

您應瞭解與使用 Cloud Storage FUSE 有關的下列費用種類:

  • 一般物件操作 (建立、刪除及列出) 產生的費用說明,請參閱 Cloud Storage 定價頁面的作業一節。

  • Nearline Storage 和 Coldline Storage 物件的費用與擷取和提早刪除相關。請參閱 Cloud Storage 定價頁面中的擷取與提前刪除一節。

  • 網路輸出,以及地區和多地區位置之間的資料移轉均會產生費用。請參閱 Cloud Storage 定價頁面的網路一節。

費用明細範例

要瞭解如何將 Cloud Storage FUSE 的用量轉換成 Cloud Storage 費用,請考慮下列指令順序及其相關的 JSON API 作業。您可使用 --debug_gcs 旗標以顯示關於操作的資訊。

指令 JSON API 作業
gcsfuse --debug_gcs example-bucket mp Objects.list (用來檢查憑證)
cd mp 不適用
ls mp Objects.list("")
mkdir subdir Objects.get("subdir")
Objects.get("subdir/") Objects.insert("subdir/")
cp ~/local.txt subdir/ Objects.get("subdir/local.txt")
Objects.get("subdir/local.txt/")Objects.insert("subdir/local.txt"),用來建立空物件Objects.insert("subdir/local.txt"),寫入完成後關閉時執行
rm -rf subdir Objects.list("subdir/")
Objects.list("subdir/") Objects.delete("subdir/local.txt") Objects.list("subdir/") Objects.delete("subdir/")

使用 JSON API 的作業費用,我們可以計算 8 個類別 A 作業、4 個類別 B 作業和 2 個免費作業,共計 14 個作業的費用。儲存 local.txt 檔案也會產生費用。如果您在建立檔案後立即刪除,則該費用可以忽略不計。針對這 12 個計費作業,則這一連串的指令費用是 $0.000084 美元。

1 Linux 核心版本 3.10 以上支援 Cloud Storage FUSE。如要檢查您的核心版本,可以使用 uname -a

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Storage
需要協助嗎?請前往我們的支援網頁