本文介紹ossfs的一些配置操作,您可以通過本文瞭解如何更好的使用ossfs。
前提條件
已安裝ossfs,安裝步驟請參見安裝ossfs。
配置帳號資訊
通過ossfs訪問OSS儲存空間時,需要配置帳號資訊,即AccessKey ID和AccessKey Secret。這些帳號資訊需要按照特定的格式寫到帳號設定檔中。當掛載OSS Bucket時,會從這個帳號設定檔上擷取帳號資訊,格式為$bucket_name:$access_key_id:$access_key_secret
。
關於如何建立AccessKey ID和AccessKey Secret,請參見建立AccessKey。
帳號設定檔的預設路徑為/etc/passwd-ossfs,您也可以通過-opasswd_file=passwd-path選項指定設定檔。兩者的區別在於:預設路徑的許可權可以是640,其他路徑下的設定檔許可權必須是600。
同一個帳號設定檔中可以儲存多條帳號資訊,一條記錄一行。ossfs會根據掛載的儲存空間名稱匹配到正確的帳號上。
配置樣本:
### 1.將帳號資訊儲存到帳號資訊設定檔/etc/passwd-ossfs下,並設定檔案許可權為640 echo bucket-test-1:AAAI************:AAA8x************************* > /etc/passwd-ossfs echo bucket-test-2:BBBI************:BBB8x************************* >> /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs ### 2.建立掛載目錄,將杭州地區名稱為bucket-test-1、bucket-test-2的bucket分別掛載到/tmp/ossfs-1、/tmp/ossfs-2目錄下 mkdir /tmp/ossfs-1 mkdir /tmp/ossfs-2 ossfs bucket-test-1 /tmp/ossfs-1 -ourl=http://oss-cn-hangzhou.aliyuncs.com ossfs bucket-test-2 /tmp/ossfs-2 -ourl=http://oss-cn-hangzhou.aliyuncs.com
當需要同時掛載多個 OSS 儲存空間時,您可以選擇以下兩種方式管理帳號設定檔: 1.單個設定檔:將所有儲存空間的配置資訊寫入同一個帳號設定檔中。 2.多個設定檔:將不同的帳號資訊分別寫入不同的帳號設定檔,並通過
-opasswd_file=xxx
選項來載入相應的設定檔。配置樣本:
## 將帳號資訊儲存到帳號資訊設定檔/etc/passwd-ossfs-3下,並設定檔案許可權為600 echo bucket-test-3:CCCIbZcdVCmQ****:CCC8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs-3 chmod 600 /etc/passwd-ossfs-3 ##建立掛載目錄,將杭州地區名稱為bucket-test-3的bucket掛載到/tmp/ossfs-3目錄下 mkdir /tmp/ossfs-3 ossfs bucket-test-3 /tmp/ossfs-3 -ourl=http://oss-cn-hangzhou.aliyuncs.com -opasswd_file=/etc/passwd-ossfs-3 ## 將帳號資訊儲存到帳號資訊設定檔/etc/passwd-ossfs-4下,並設定檔案許可權為600 echo bucket-test-4:DDDIbZcdVCmQ****:DDD8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs-4 chmod 600 /etc/passwd-ossfs-4 ##建立掛載目錄,將杭州地區名稱為bucket-test-4的bucket掛載到/tmp/ossfs-4目錄下 mkdir /tmp/ossfs-4 ossfs bucket-test-4 /tmp/ossfs-4 -ourl=http://oss-cn-hangzhou.aliyuncs.com -opasswd_file=/etc/passwd-ossfs-4
使用執行個體RAM角色訪問
在Elastic Compute Service上,您還可以通過執行個體RAM角色的方式掛載ossfs。執行個體RAM角色允許您將一個角色關聯到雲端服務器執行個體,在執行個體內部基於臨時憑證STS訪問OSS。臨時憑證由系統自動產生和更新,應用程式可以使用指定的執行個體中繼資料URL擷取臨時憑證,無需特別管理。藉助RAM角色,您既能確保AccessKey的安全性,又能實現許可權的精細化控制和管理。關於執行個體 RAM 角色的更多詳情,請參見執行個體RAM角色。
下面以角色名稱為EcsRamRoleOssTest的RAM角色為例,來說明如何通過執行個體RAM角色掛載ossfs。
建立名為EcsRamRoleOssTest的執行個體RAM角色。
配置步驟請參見執行個體RAM角色。
為執行個體RAM角色授予訪問OSS存取權限。
為執行個體授予RAM角色。
配置步驟請參見執行個體RAM角色。
通過執行個體中繼資料URL掛載ossfs。
說明使用執行個體中繼資料URL掛載ossfs,目前僅支援普通模式訪問。關於中繼資料訪問模式介紹,請參見中繼資料服務器訪問模式。
登入ECS執行個體。
使用ossfs掛載OSS Bucket,並增加-oram_role選項。
以下樣本用於將華東1(杭州)地區下的Bucket1儲存空間掛載到/tmp/ossfs目錄。其中
100.100.100.200
為阿里雲ECS執行個體中繼資料服務的預設IP地址。ossfs bucket1 /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -oram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/EcsRamRoleOssTest
配置存取權限
ossfs掛載的目錄存取權限預設為掛載點的所有者,即執行掛載命令的使用者,其他使用者無法訪問。如果要修改預設的使用權限設定,例如允許其他使用者或使用者組訪問掛載點,則您可以在使用ossfs掛載OSS儲存空間時根據要求的權限配置相應參數,做到期望的使用權限設定。
參數 | 說明 |
uid | 設定檔案夾屬於某個使用者時填寫的使用者uid。 |
gid | 設定檔案夾屬於某個使用者時填寫的使用者gid。 |
umask | 用來設定掛載點下檔案和目錄的許可權掩碼。例如需要設定掛載點下檔案的許可權為770,則增加-oumask=007;需要設定掛載點下檔案的許可權700,則增加-oumask=077。 |
配置樣本:
允許所有使用者訪問,即許可權為777。
ossfs bucket_name mount_point -ourl=endpoint -oallow_other
設定掛載點下的檔案和目錄許可權,只允許同組使用者訪問,即許可權為770。
ossfs bucket_name mount_point -ourl=endpoint -oumask=007
掛載時指定為其他使用者和組,同時只允許同組的使用者訪問,即許可權為770。
以www使用者為例說明,先通過id命令擷取使用者的uid和gid資訊,之後在掛載時指定uid和gid參數。
id www uid=1000(www) gid=1000(web) groups=1000(web) ossfs bucket_name mount_point -ourl=endpoint -oallow_other -ouid=1000 -ogid=1000 -oumask=007
掛載指定檔案目錄
ossfs除了可以把整個儲存空間掛載到本地檔案系統外,還可以通過設定首碼將儲存空間下的某個檔案目錄掛載到本地檔案系統。命令格式如下:
ossfs bucket:/prefix mount_point -ourl=endpoint
通過這種方式掛載時,需要確儲存儲空間中存在${prefix}/對象。您可以通過ossutil的stat(查看Bucket和Object資訊)命令查詢該對象是否存在。
以下樣本用於將華東1(杭州)地區下bucket-ossfs-test儲存空間中的folder目錄掛載到/tmp/ossfs-folder下。
ossfs bucket-ossfs-test:/folder /tmp/ossfs-folder -ourl=http://oss-cn-hangzhou.aliyuncs.com
開機自動掛載目錄
將Bucket名稱、AccessKeyID、AccessKeySecret等資訊寫入/etc/passwd-ossfs檔案,並將檔案許可權修改為640。
配置步驟請參見安裝ossfs。
設定開機自動掛載。
說明此處僅提供常見版本的設定開機自動掛載ossfs的樣本。對於其他未涉及的版本,請自行參考平台相關文檔設定開機自動掛載。
Ubuntu 14.04及以上、CentOS 6.5及以上系統通過fstab自動掛載
在/etc/fstab中加入如下命令:
ossfs#bucket_name mount_point fuse _netdev,url=url,allow_other 0 0
參數配置說明如下:
參數
說明
bucket_name
表示要掛載的OSS儲存空間的名稱,請將
bucket_name
替換為您實際的OSS儲存空間名稱。mount_point
表示要掛載OSS儲存空間的本地目錄,請將
mount_point
替換為您所需的目錄路徑。url=url
表示OSS端點的URL,請將
url
替換為您實際的OSS端點URL。0 0
檔案系統的選項。
儲存/etc/fstab檔案。執行mount -a命令,如果沒有報錯,則說明設定正常。
上一步執行完成後,Ubuntu 14.04就能自動掛載了。CentOS 6.5還需要執行如下命令:
chkconfig netfs on
CentOS 7.0及以上的系統通過開機自動啟動指令碼進行掛載
在/etc/init.d/目錄下建立檔案ossfs,將模板檔案中的內容拷貝到這個新檔案中。並將其中的your_xxx內容改成您自己的資訊。
為建立立的ossfs指令碼賦予可執行許可權:
chmod a+x /etc/init.d/ossfs
命令執行完成後,您可以嘗試執行該指令碼,如果指令檔內容無誤,那麼此時OSS中的Bucket已經掛載到您指定的目錄下了。
把ossfs啟動指令碼作為其他服務,開機自動啟動:
chkconfig ossfs on
執行上述步驟後,ossfs就可以開機自動掛載了。
使用Supervisor啟動ossfs
以下操作步驟中的檔案安裝路徑以具有sudo許可權的使用者user1為例,實際安裝路徑以您的作業環境為準。
執行以下命令安裝supervisor。
CentOS
sudo yum install supervisor
Ubuntu
sudo apt-get install supervisor
建立ossfs的啟動指令碼。
執行以下命令建立start_ossfs.sh檔案。
mkdir /home/user1/ossfs_scripts
寫入啟動指令碼。
vi /home/user1/ossfs_scripts/start_ossfs.sh
start_ossfs.sh檔案內容樣本如下。
# 卸載 fusermount -u /mnt/ossfs # 重新掛載,必須要增加-f參數運行ossfs,讓ossfs在前台運行。 exec ossfs bucket_name mount_point -ourl=endpoint -f
編輯supervisord.conf檔案。
Centos
sudo vi /etc/supervisord.conf
Ubuntu
sudo vi /etc/supervisor/supervisord.conf
在檔案最後加入以下內容。
[program:ossfs] command=bash /home/user1/ossfs_scripts/start_ossfs.sh logfile=/var/log/ossfs.log log_stdout=true log_stderr=true logfile_maxbytes=1MB logfile_backups=10
執行以下命令運行Supervisor。
supervisord
確認Supervisor運行正常。
執行以下命令查看Supervisor進程。
ps aux | grep supervisor
執行以下命令查看ossfs進程。
ps aux | grep ossfs
返回結果如下。其中2044、2452等為ossfs進程ID。
執行以下命令關閉ossfs進程。
重要請勿使用killall命令。如果您使用killall命令關閉進程,將發送SIGTERM,導致進程正常退出,Supervisor不再去重新運行ossfs。
kill -9 進程ID
關閉ossfs進程後,Supervisor將重啟ossfs進程。
執行以下命令查看ossfs進程。
ps aux | grep ossfs
開啟調試日誌
在使用ossfs的過程中,可能會遇到一些問題。這個時候需要開啟調試日誌,通過日誌資訊分析和定位問題。您可以通過如下方式開啟調試日誌:
在掛載目錄時增加-d -odbglevel=debug選項,ossfs會把日誌寫入系統日誌中。
CentOS系統
日誌儲存在/var/log/messages中。
Ubuntu系統
日誌儲存在/var/log/syslog中。
在掛載目錄時使用-d -odbglevel=debug -f選項,ossfs會在前台運行,並把日誌輸出到螢幕上。
卸載已掛載的檔案系統
您可以使用umount [掛載點路徑]
命令,卸載已掛載到本地的OSS檔案系統。例如,要卸載掛載在/tmp/ossfs
的檔案系統。
umount /tmp/ossfs