對於原來需要直接讀寫本地檔案的應用程式,為了讓應用程式能在不作修改的情況下直接存取Object Storage Service的資料,您可以使用ossfs將OSS的Bucket掛載到Linux系統中,並將其映射到本地目錄,從而能夠像處理本地檔案那樣直接操作OSS中的資料,實現檔案分享權限設定。
前提條件
安裝
安裝ossfs。
Ubuntu系統
以Ubuntu 16.04 (x64)版本為例,依次執行以下命令安裝ossfs。
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_ubuntu16.04_amd64.deb sudo apt-get update sudo apt-get install gdebi-core sudo gdebi ossfs_1.91.3_ubuntu16.04_amd64.deb
CentOS系統/Anolis系統
以CentOS 7.0(x64)版本為例,安裝命令如下:
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_centos7.0_x86_64.rpm sudo yum install ossfs_1.91.3_centos7.0_x86_64.rpm
對於使用yum安裝rpm包的用戶端,如果用戶端節點網路環境特殊,無法直接使用yum下載依賴包。您可以在網路正常的、相同版本作業系統的節點上,使用yum下載依賴包並拷貝到網路特殊的節點。例如,ossfs需要依賴fuse 2.8.4以上版本,可使用如下命令,下載yum源中最新的fuse到本地:
sudo yum install --downloadonly --downloaddir=./ fuse
重要如果需要下載其他依賴包,請將fuse換成對應包的名稱。
ossfs通過查詢/etc/mime.types中的內容來設定檔案的Content-Type,如果您希望上傳檔案的Content-Type和副檔名匹配,您需要添加mime.types檔案。
如果您不添加mime.types檔案,ossfs預設將上傳檔案的Content-Type設定為application/octet-stream。
您可以通過以下命令添加 mime.types 檔案。
Ubuntu系統
您可以通過以下命令添加mime.types檔案。
sudo apt-get install mime-support
CentOS系統/Anolis系統
您可以通過以下命令添加mime.types檔案。
sudo yum install mailcap
掛載訪問
選擇需要進行本地掛載的Bucket。
說明避免將低頻訪問或已啟用歸檔直讀功能的Bucket作為掛載目標。這兩種類型Bucket在接收上傳檔案時,可能出現兩次上傳請求。初次上傳產生一個大小為0的佔位檔案,隨後再次上傳實際資料作為檔案儲存體在Bucket。由於涉及的檔案儲存體類型為低頻訪問或歸檔,即使是0位元組的佔位檔案也會根據相應的儲存類別(低頻或歸檔)計費規則,即最少按64 KB資料量計算30天的儲存費用。這可能導致使用者在不知情的情況下額外承擔儲存費用。
配置帳號訪問資訊。
將Bucket名稱以及具有該Bucket存取權限的RAM使用者的AccessKey ID和AccessKey Secret資訊存放在/etc/passwd-ossfs檔案中,並設定檔案的許可權為640。
sudo sh -c 'echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs' ### root 使用者可使用以下命令:### # echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs sudo chmod 640 /etc/passwd-ossfs
BucketName、yourAccessKeyId、yourAccessKeySecret請按需替換為您實際的Bucket名稱、AccessKey ID和AccessKey Secret,例如:
sudo sh -c 'echo bucket-test:LTAI************:MOk8x0y9hx******************** > /etc/passwd-ossfs' sudo chmod 640 /etc/passwd-ossfs
將Bucket掛載到指定目錄。
說明為保障ossfs掛載後的讀寫效能,建議參考ossfs版本新功能介紹中的建議,選擇合適的掛載參數。
為保障ossfs掛載後的資料訪問安全,建議參考進階配置,正確配置帳號資訊和存取權限。
sudo ossfs <BucketName> <mountfolder> -o url=<Endpoint>
將杭州地區名稱為
bucket-test
的Bucket掛載到/tmp/ossfs
目錄下的樣本如下:sudo mkdir /tmp/ossfs sudo ossfs bucket-test /tmp/ossfs -o url=http://oss-cn-hangzhou-internal.aliyuncs.com
重要為降低讀取資料產生的流量費用,建議您通過阿里雲ECS部署ossfs,並通過-o url指定內網Endpoint的形式訪問目標Bucket(內網Endpoint樣本值為http://oss-cn-hangzhou-internal.aliyuncs.com)。使用內網Endpoint的前提是ECS必須和目標Bucket處於相同地區。有關OSS內網網域名稱的更多資訊,請參見OSS訪問網域名稱、資料中心、開放連接埠。
您可以像訪問本地檔案系統一樣讀取Bucket中的對象。
查看檔案清單。
sudo ls -lh /tmp/ossfs
說明中繼資料操作(例如list directory)需要遠端存取OSS伺服器,存在網路延遲。
拷貝檔案。
sudo cp /tmp/ossfs/bird.jpeg /root
將OSS中的
bird.jpeg
拷貝到/root
目錄中。新增檔案。
sudo cp /root/forest.jpeg /tmp/ossfs
即可將原生
forest.jpeg
添加到掛載目錄,並同步到OSS遠程。說明如果您因意外中斷了檔案上傳的過程且未繼續完成該檔案的上傳,則已上傳的部分會以片段(Part)的形式儲存在Bucket中。如果您不再需要這些Part,建議您通過以下方式刪除,以免產生額外的儲存費用。
手動刪除Part,請參見刪除片段。
通過生命週期規則自動刪除Part,請參見基於最後一次修改時間的生命週期規則。
如果您不希望繼續掛載此Bucket,您可以將其卸載。
sudo fusermount -u /tmp/ossfs
相關文檔
更多關於ossfs掛載配置的內容請參見進階配置。
更多關於ossfs命令的參數選項請參見ossfs掛載選項說明。
ossfs使用過程中的常見問題請參見ossfs常見問題。