星期日, 10月 08, 2023

Cloud Storage FUSE with openSUSE Leap 15.5 小記


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 


今天就是來小記一下如何在 openSUSE Leap 安裝 gcsfuse

  • 一如往常的官網上支援的 OS 有列出 Ubuntu 18.04 以上 / Debian 10 以上 / CentOS 7 以上 / RHEL 7 以上

  • 實際上測試 openSUSE Leap 可以使用 go 的方式安裝, 但是沒有很有效的顯示安裝的版本, 但是使用上應該沒有問題


前置作業


為了等等的實驗先建立 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


先安裝  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