全部產品
Search
文件中心

Object Storage Service:使用ossfs將OSS的Bucket掛載到Linux系統中

更新時間:Oct 15, 2024

對於原來需要直接讀寫本地檔案的應用程式,為了讓應用程式能在不作修改的情況下直接存取Object Storage Service的資料,您可以使用ossfs將OSS的Bucket掛載到Linux系統中,並將其映射到本地目錄,從而能夠像處理本地檔案那樣直接操作OSS中的資料,實現檔案分享權限設定。

前提條件

開通OSS服務建立OSS Bucket

安裝

  1. 安裝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換成對應包的名稱。

  2. 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

掛載訪問

  1. 選擇需要進行本地掛載的Bucket。

    說明

    避免將低頻訪問或已啟用歸檔直讀功能的Bucket作為掛載目標。這兩種類型Bucket在接收上傳檔案時,可能出現兩次上傳請求。初次上傳產生一個大小為0的佔位檔案,隨後再次上傳實際資料作為檔案儲存體在Bucket。由於涉及的檔案儲存體類型為低頻訪問或歸檔,即使是0位元組的佔位檔案也會根據相應的儲存類別(低頻或歸檔)計費規則,即最少按64 KB資料量計算30天的儲存費用。這可能導致使用者在不知情的情況下額外承擔儲存費用。

  2. 配置帳號訪問資訊。

    將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
  3. 將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訪問網域名稱、資料中心、開放連接埠

  4. 您可以像訪問本地檔案系統一樣讀取Bucket中的對象。

    1. 查看檔案清單。

      sudo ls -lh /tmp/ossfs

      image

      說明

      中繼資料操作(例如list directory)需要遠端存取OSS伺服器,存在網路延遲。

    2. 拷貝檔案。

      sudo cp /tmp/ossfs/bird.jpeg /root

      將OSS中的bird.jpeg拷貝到/root目錄中。

    3. 新增檔案。

      sudo cp /root/forest.jpeg /tmp/ossfs

      即可將原生forest.jpeg添加到掛載目錄,並同步到OSS遠程。

      image

      說明

      如果您因意外中斷了檔案上傳的過程且未繼續完成該檔案的上傳,則已上傳的部分會以片段(Part)的形式儲存在Bucket中。如果您不再需要這些Part,建議您通過以下方式刪除,以免產生額外的儲存費用。

  5. 如果您不希望繼續掛載此Bucket,您可以將其卸載。

    sudo fusermount -u /tmp/ossfs

相關文檔