如何在 GCE-VM,作業系統為 CentOS 6 裡掛載 Google Storage


進行以下步驟前,請先確認你在建立 Google Compute Engine instance 的時候,有勾選允許使用 Google API 連接其它 Google 服務。

若要在 Google Compute Engine 的 VM 裡掛載 Google Storage 的話,要使用 gcsfuse 套件。
這裡有介紹:Cloud Storage FUSE

參考來源:
GoogleCloudPlatform/gcsfuse
yum Error:rpmdb open failed

以下為 CentOS 6 安裝 gcsfuse 的方式:

下載 rpm

curl -L -O https://github.com/GoogleCloudPlatform/gcsfuse/releases/download/v0.17.0/gcsfuse-0.17.0-1.x86_64.rpm

安裝 rpm

sudo rpm --install -p gcsfuse-0.17.0-1.x86_64.rpm

如果出現了錯誤訊息 yum Error:rpmdb open failed

rpmdb: PANIC: fatal region error detected; run recovery
error: db3 error(-30974) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

處理方式:

步驟 1. 先備份套件來源 /var/lib/rpm/

mkdir /root/backups.rpm.mm_dd_yyyy/
cp -avr /var/lib/rpm/ /root/backups.rpm.mm_dd_yyyy/

步驟 2. 刪除套件來源資料,重建套件來源

rm -f /var/lib/rpm/__db*
db_verify /var/lib/rpm/Packages
rpm --rebuilddb
yum clean all

步驟 3. 更新系統

yum update

注意!!! 以上步驟做完後,重新安裝一次仍會顯示失敗。
最後是重做步驟 2,再重新啟動系統

reboot

重新啟動系統後再安裝就正常了


如何掛載:

先在本機建立一個掛載資料夾

mkdir /mnt/gstorage

用 gsutil ls 來查看 bucket 名稱

gsutil ls
gs://bucketName/

但掛載時,不需要使用 gs://,直接使用 bucket name 即可

gcsfuse bucketName /mnt/gstorage
Using mount point: /mnt/gstorage
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.

使用 df 查看

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       9.8G  3.1G  6.2G  34% /
tmpfs           296M     0  296M   0% /dev/shm
bucketName      8.0P     0  8.0P   0% /mnt/gstorage

如何卸載:

下達一般的 umount 指令即可

umount /mnt/gstorage

開機即掛載:

修改 rc.local 開機執行檔

vim /etc/rc.local

在最後一行加入

gcsfuse bucketName /mnt/gstorage

這樣以後重啟系統時就會自動掛載 storage
由於 Google Storage 是透過第3方軟體掛載,所以不是像本機掛載那樣寫在 /etc/fstab 裡面