星期日, 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


星期五, 9月 29, 2023

Mountpoint for Amazon S3 with openSUSE Leap 15.5 小記

 


Mountpoint for Amazon S3 with openSUSE Leap 15.5 小記


OS: openSUSE Leap 15.5 on GCP


今天要來實作 Mountpoint for Amazon S3  安裝與掛載於 openSUSE Leap 15.5


這次的 OS 我使用 openSUSE Leap 15.5 on GCP


Mountpoint for Amazon S3 套件安裝的部份, 可以參考官方文件


可以顯見的是, openSUSE Leap Linux 沒有在 RPM 支援的 linux 清單內, 如果用上述的 RPM 來進行安裝, 可能會遇到下列的錯誤訊息



Problem: nothing provides 'fuse-libs' needed by the to be installed mount-s3-1.0.1-1.x86_64

 Solution 1: do not install mount-s3-1.0.1-1.x86_64

 Solution 2: break mount-s3-1.0.1-1.x86_64 by ignoring some of its dependencies



但是不要擔心 openSUSE Leap 15.5 使用 Other Linux distributions 方法 - 安裝OK


下載相關檔案

# wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.tar.gz


建立相關目錄

# mkdir -p  /opt/aws/mountpoint-s3


解壓縮到剛剛建立的目錄

# tar  -C  /opt/aws/mountpoint-s3  -xzf  ./mount-s3.tar.gz


因為是實驗的關係, 先用 export 將這個路徑放到指令的路徑變數

# export  PATH=$PATH:/opt/aws/mountpoint-s3/bin


測試指令並檢查版本

# mount-s3  --version


mount-s3 1.0.2


驗證的部份與 AWS CLI  相關設定一樣

 

下載與安裝 AWS CLI

# curl  "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"  -o  "awscliv2.zip" 


# unzip  awscliv2.zip 


# ./aws/install


You can now run: /usr/local/bin/aws --version


進行相關設定

# /usr/local/bin/aws  configure  --profile default


AWS Access Key ID [None]: YOUR_KEY_ID

AWS Secret Access Key [None]: YOUR_ACCESS_KEY

Default region name [None]: YOUR_WORK_REGION

Default output format [None]:


  • 這邊請填入該帳號的 AKSK, 然後選常用的 Region

  • 會在 ~/.aws/credentials 與 ~/.aws/config 建立相關設定


測試相關指令

使用剛剛裝的 aws cli 列出目前 S3 的目錄


# /usr/local/bin/aws  s3  ls  --profile  default


2022-11-08 01:45:58 sakana-cloudtrail-logs-20210714


建立掛載目錄

# mkdir  /mnt/s3-mount-test


沒有掛載前先觀察資訊

# ls  /mnt/s3-mount-test/


使用 mount-s3 指令進行掛載 AWS S3

# mount-s3  sakana-cloudtrail-logs-20210714  /mnt/s3-mount-test/  --profile  default --allow-delete


bucket sakana-cloudtrail-logs-20210714 is mounted at /mnt/s3-mount-test/


  • 加上 --allow-delete 之後才可以刪除檔案


觀察相關資訊

# ls  /mnt/s3-mount-test/


AWSLogs


# mount


mountpoint-s3 on /mnt/s3-mount-test type fuse (rw,nosuid,nodev,noatime,user_id=0,group_id=0,default_permissions)


進行相關測試


# mkdir  /mnt/s3-mount-test/sakanatest


# ls  /mnt/s3-mount-test/


AWSLogs  sakanatest


我仿照 Blog 上面的作法, 到高速公路局的網站截了一些路況圖


透過 cp 指令把他複製到我們掛載的目錄

# cp  /home/sakanamax/2023-09-29\ 10-5*  /mnt/s3-mount-test/sakanatest/


觀察資訊

# ls  /mnt/s3-mount-test/sakanatest


2023-09-29 10-51-29 的螢幕擷圖.png  2023-09-29 10-52-06 的螢幕擷圖.png  2023-09-29 10-52-41 的螢幕擷圖.png

2023-09-29 10-51-48 的螢幕擷圖.png  2023-09-29 10-52-21 的螢幕擷圖.png


觀察 AWS S3 console



果然有同步


# cd  /mnt/s3-mount-test/sakanatest/


# ffmpeg  -framerate  10  -pattern_type  glob  -i  "*.png"  sakana.gif


  • ffmpeg 指令可以透過 #zypper install ffmpeg 安裝


以下是我得到的結果 :)


最後來解決重開機掛載的問題, 解法就是用 Service 的方式來做


# vi   /etc/systemd/system/mount.service


[Unit]

Description=Mountpoint for Amazon S3 mount

Wants=network.target

AssertPathIsDirectory=/mnt/s3-mount-test


[Service]

Type=forking

User=root

Group=root

ExecStart=/opt/aws/mountpoint-s3/bin/mount-s3  sakana-cloudtrail-logs-20210714   /mnt/s3-mount-test --profile default --allow-delete

ExecStop=/usr/bin/fusermount  -u  /mnt/s3-mount-test


[Install]

WantedBy=default.target


  • 這邊要注意掛載路徑

  • 然後安裝方法不同 mount-s3 的路徑也會不同

  • user / group 要找時間 Lab


進行測試

# umount  /mnt/s3-mount-test


起動服務

# systemctl  start  mount.service 


觀察資訊

# systemctl  status  mount.service 


● mount.service - Mountpoint for Amazon S3 mount

     Loaded: loaded (/etc/systemd/system/mount.service; disabled; vendor preset: disabled)

     Active: active (running) since Fri 2023-09-29 03:15:42 UTC; 9s ago


接下來設定開機啟動服務即可

# systemctl  enable  mount.service 


Created symlink /etc/systemd/system/default.target.wants/mount.service → /etc/systemd/system/mount.service.


# systemctl  is-enabled  mount.service 


enabled


又多學一招


~ enjoy it


Reference: