Cloud Storage FUSE with openSUSE Leap 15.5 小記
OS: openSUSE Leap 15.5 in GCP
上次寫 gcsfuse 是 2019 年 5 月, 那個時候還沒有 GA, 簡單來說 gcsfuse 就是讓 GCE 或是一般的 linux OS 可以掛載 Google Cloud Storage ( GCS )
gcsfuse
可能也是順應 AI 風潮, gcsfuse 於 2023/6/26 GA
https://github.com/GoogleCloudPlatform/gcsfuse/releases/tag/v1.0.0
AWS Mountpoint for Amazon S3 2023/8 GA
今天就是來小記一下如何在 openSUSE Leap 安裝 gcsfuse
一如往常的官網上支援的 OS 有列出 Ubuntu 18.04 以上 / Debian 10 以上 / CentOS 7 以上 / RHEL 7 以上
實際上測試 openSUSE Leap 可以使用 go 的方式安裝, 但是沒有很有效的顯示安裝的版本, 但是使用上應該沒有問題
前置作業
安裝 gcloud 以及驗證初始化, 這個部份可以直接參考官方文件 https://cloud.google.com/sdk/docs/install?hl=zh-cn
為了等等的實驗先建立 GCS Bucket
# gcloud storage buckets create --location asia-east1 gs://sakanatest20231008 gs://sakanatest20231008-2
Creating gs://sakanatest20231008/...
Bucket 的名稱請換成自己的 bucket 名稱, 這邊以 sakanatest20231008 為例
我同步建立一個 sakanatest20231008-2 的 Bucket
可以利用 --location 來指定 Region, 我這邊是實驗性質, 沒有使用預設的 us 與 Multi-region
在 buckets 裏面放一些圖片
可以到 console 觀察
安裝 gcsfuse
參考官方文件 https://cloud.google.com/storage/docs/gcsfuse-install?hl=zh-cn
透過 go install 方式來進行安裝
先安裝 fuse / git / go
# zypper install fuse git go
這邊有切換到 root 進行相關套件安裝
使用 go install 安裝
# go install github.com/googlecloudplatform/gcsfuse@master
我自己本身也不會用 go, 按照官方的安裝方式就可以裝起來
gcsfuse 的安裝目錄在 ~/go/bin 下面
# ~/go/bin/gcsfuse --version
gcsfuse version unknown (Go version go1.21.1)
這邊是實驗的關係使用 root 進行安裝
也可以將 /root/go/bin 放到路徑變數內
接下來我們來測試掛載 GCS
身份驗證的部份, 一樣有 IAM 帳號 或是使用 Service account 方式
這邊我們用 IAM 帳號的方式
# gcloud auth application-default login
這邊會被要求相關驗證許可
# gcloud auth login
這邊會被要求相關驗證許可
接下來準備掛載實驗, 先透過 gsutil 指定觀察 GCS Buckets
# gsutil ls
gs://sakanatest20231008/
gs://sakanatest20231008-2/
建立實驗掛載目錄
# mkdir /mnt/sakanatest
靜態掛載
一對一方式進行掛載
觀察資訊
# ls /mnt/sakanatest/
# ~/go/bin/gcsfuse sakanatest20231008 /mnt/sakanatest/
{"time":"08/10/2023 04:19:01.703610","severity":"INFO","msg":"Start gcsfuse/unknown (Go version go1.21.1) for app \"\" using mount point: /mnt/sakanatest/\n"}
sakanatest20231008 為要指定掛載的 GCS bucket, 請換成 YOUR_BUCKET_NAME
/mnt/sakanates 請換成 YOUR_MOUNT_POINT
觀察資訊
# ls /mnt/sakanatest/
mi.jpg
# mount
sakanatest20231008 on /mnt/sakanatest type fuse.gcsfuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)
可以觀察到 /mnt/sakanatest 就會掛載剛剛指定的 GCS
卸載 GCS
# fusermount -u /mnt/sakanatest
動態掛載
只要有存取的權限, 就可以進行掛載, 不過要指定要存取的 bucket
# ~/go/bin/gcsfuse /mnt/sakanatest/
{"time":"08/10/2023 04:26:00.773229","severity":"INFO","msg":"Start gcsfuse/unknown (Go version go1.21.1) for app \"\" using mount point: /mnt/sakanatest/\n"}
跟剛剛靜態掛載的差異就是沒有指定掛載的 bucket
觀察資訊
# ls /mnt/sakanatest/
ls: reading directory '/mnt/sakanatest/': Operation not supported
這邊會出現 Operation not supported 是因為我們用動態掛載, 沒有指定 bucket 的關係
再次嘗試
# ls /mnt/sakanatest/sakanatest20231008
mi.jpg
# ls /mnt/sakanatest/sakanatest20231008-2
erh-mi.png
嘗試複製本機檔案到 GCS
# cp opensusetaiwan.png /mnt/sakanatest/sakanatest20231008
# ls /mnt/sakanatest/sakanatest20231008
mi.jpg opensusetaiwan.png
看起來沒啥問題, 文件也有 /etc/fstab 方式, 但是因為有動態掛載的方式就先不測試了
又多了一種存取方式
~ Enjoy it
References
https://sakananote2.blogspot.com/2019/05/gcsfuse-google-cloud-storage-with.html
https://github.com/GoogleCloudPlatform/gcsfuse/releases/tag/v1.0.0
https://sakananote2.blogspot.com/2023/09/mountpoint-for-amazon-s3-with-opensuse.html
https://cloud.google.com/storage/docs/gcsfuse-install?hl=zh-cn