最近學習了使用如何使用天翼雲對象存儲掛載,通過FUSE實現對將對象存儲掛載進用戶的空間文件系統。
用戶空間文件系統(Filesystem in Userspace,簡稱FUSE)是一個面向類Unix計算機操作系統的軟件接口,它使無特權的用戶能夠無需編輯內核代碼而創建自己的文件系統。當前Linux通過內核模塊對此進行支持。一些文件系統如ZFS、glusterfs和lustre使用FUSE實現。Linux用於支持用戶空間文件系統的內核模塊名叫FUSE,FUSE一詞有時特指Linux下的用戶空間文件系統。Linux從2.6.14版本開始通過FUSE模塊支持在用戶空間實現文件系統。
這裏我們關注的是如何掛載OOS,對於在雲上創建OOS一筆帶過,介紹主要流程和掛載思路,並分別介紹兩種自動掛載方案。
一、天翼雲OOS掛載主要流程
1、在天翼雲oos中創建容器桶,創建accesskey,記錄下容器名(桶名稱)、endpoint、ak及sk信息
2、由於目前不是所有區域都支持oos,默認endpoint指向貴州節點(oos-cn.ctyunapi.cn)
其他地域的endpoint列表如下。
地區 | OOS API Endpoint |
北京2 | oos-bj2.ctyunapi.cn |
內蒙 | oos-nm2.ctyunapi.cn |
長沙 | oos-hncs.ctyunapi.cn |
西安 | oos-snxa.ctyunapi.cn |
杭州 | oos-hz.ctyunapi.cn |
江蘇 | oos-js.ctyunapi.cn |
廣州 | oos-gz.ctyunapi.cn |
北京 | oos-hq-bj.ctyunapi.cn |
上海 | oos-hq-sh.ctyunapi.cn |
3、進入客戶主機系統安裝fuse、編譯安裝環境及git
4、通過git克隆s3fs-fuse到本地編譯安裝
5、嘗試手工掛載判斷前面的桶名、endpoint、ak、sk等信息是否有誤
6、設置自動掛載,兩種方式(/etc/rc.local或/etc/fstab)
二、下載安裝s3fs-fuse到本地的詳細命令
yum install -y automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
./autogen.sh && ./configure && make && make install
第一行安裝系統所需的編譯環境與fuse支持,第二行通過git克隆s3fs-fuse的源碼到本地目錄,第三行進入本地克隆好的目錄,第四行通過四條組合命令完成本地編譯安裝。
還有一種非常簡單的安裝方式,通過yum安裝
yum install epel-release && yum install s3fs-fuse -y
一條命令搞定s3fs-fuse的安裝。
三、瞭解s3fs-fuse的關鍵信息
s3fs允許Linux和macOS通過FUSE掛載S3存儲桶。s3fs保留文件的本機對象格式,與Amazon S3,Google Cloud Storage和其他基於S3的對象存儲兼容,天翼雲的對象存儲就是兼容S3的。
s3fs密碼文件的默認位置:
- 使用用戶主目錄中的.passwd-s3fs文件(即$ {HOME} /。passwd-s3fs)
- 使用系統範圍的/ etc / passwd-s3fs文件
在文件中輸入您的憑據${HOME}/.passwd-s3fs
並設置僅所有者權限:
echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
chmod 600 ${HOME}/.passwd-s3fs
比如當前你使用root用戶登陸,就在/root/下建立一個密碼文件/root/.passwd-s3fs即可,文件採用純文本形式,格式是ak:sk
四、手工掛載命令
桶名:mybucket
endpoint:oos-cn.ctyunapi.cn
ak:2d19d9ef0904a4d5accb
sk:94fd08d6517d43393117ae9ba93da8eb452df431
第一步生成用戶認證文件
echo "2d19d9ef0904a4d5accb:94fd08d6517d43393117ae9ba93da8eb452df431" > /root/.password-s3fs && chmod 600 /root/.password-s3fs
第二步生成掛載目錄
mkdir /home/bucket
第三步完成命令行掛載
s3fs mybucket /home/bucket -o passwd_file=/root/.passwd-s3fs -o url=http://oos-cn.ctyunapi.cn -o allow_other
五、自動掛載兩種方式
1、將掛載命令行加入/etc/rc.local實現開機自動掛載
echo "s3fs mybucket /home/bucket -o passwd_file=/root/.passwd-s3fs -o url=http://oos-cn.ctyunapi.cn" >> /etc/rc.local
注意檢查/etc/rc.local必須要有可執行權限。
2、利用/etc/fstab實現磁盤自動掛載
第一步編輯/etc/fstab,最後一行加入下面命令
s3fs#mybucket /home/bucket fuse _netdev,allow_other,use_path_request_style,url=http://oos-cn.ctyunapi.cn/ 0 0
第二步掛載
mount -a
六、debug掛載信息
s3fs mybucket /path/to/mountpoint -o passwd_file=${HOME}/.passwd-s3fs -o dbglevel=info -f -o curldbg
七、s3fs參數使用說明
-o allow_other
本參數用於設置掛載目錄可以被任意登陸服務器的用戶使用,且可以將該掛載目錄用於創建NFS/SMB共享。
-o umask=0
本參數用於設置掛載掛載後資源的訪問權限,確保掛載後所有用戶能夠對掛載目錄下資源具有訪問權限。umask與chmod配套,當設置umask=0時對於文件權限爲777,若需要設置權限爲755則設置umask=022,以此類推配置所需權限
-o max_write
本參數用於設置vfs的上傳塊大小,默認值爲4096,可將該數值設置爲fuse所支持的最大值128k(即設置-o max_write=131072),以提升性能。
-o use_cache
使用內存作爲緩存目錄,而非本地磁盤作爲cache將提升文件讀寫性能,即將該值設置爲-o use_cache=/dev/shm。如果系統內存使用較高則建議另外掛載一個SSD盤作爲緩存目錄
-o enable_noobj_cache
使用本參數後,將減少s3fs發送的列舉桶的請求,從而提升性能。
-o big writes
開啓本參數後,內核會進行IO合併,對於大塊讀寫,提升性能。
-o sigv2
缺省值爲採用V4鑑權,使用V2鑑權效率更高,兼容性更好。
-o del_cache
文件使用完成後及時清理緩存中的數據。