本文介紹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角色訪問
在云服務器ECS上,您還可以通過實例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