對于原來需要直接讀寫本地文件的應用程序,為了讓應用程序能在不作修改的情況下直接訪問對象存儲OSS的數據,您可以使用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系統/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 1.91.2和1.91.3版本新功能介紹中的建議,選擇合適的掛載參數。
為保障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使用過程中的常見問題請參見ossfs常見問題。