使用ossfs将阿里云OSS的Bucket挂载到Linux系统中

Linux
image-20250116225118239

一、前提条件

已开通OSS服务并创建OSS Bucket。

二、软件包安装

(1)下载地址

以下列表中提供了常用系统的安装包,如果您的系统版本不在以下列表中,请通过源码安装。

Linux发行版 下载
Ubuntu 22.04 (x64) ossfs_1.91.4_ubuntu22.04_amd64.deb
Ubuntu 20.04 (x64) ossfs_1.91.4_ubuntu20.04_amd64.deb
Ubuntu 18.04 (x64) ossfs_1.91.4_ubuntu18.04_amd64.deb
Ubuntu 16.04 (x64) ossfs_1.91.4_ubuntu16.04_amd64.deb
Ubuntu 14.04 (x64) ossfs_1.91.4_ubuntu14.04_amd64.deb
CentOS 8.0 (x64) ossfs_1.91.4_centos8.0_x86_64.rpm
CentOS 7.0 (x64) ossfs_1.91.4_centos7.0_x86_64.rpm
Anolis8/Alibaba Cloud Linux 3 ossfs_1.91.4_alinux3_x86_64.rpm
Anolis7/Alibaba Cloud Linux 2 ossfs_1.91.4_alinux2_x86_64.rpm

(2)安装步骤

  1. 安装ossfs。

    重要:

    在使用命令下载软件包时,软件包的URL地址需按照特定格式填写。例如,若要下载CentOS 7.0(x64)版本的软件包,其格式应为:https://gosspublic.alicdn.com/ossfs/**系统软件包版本**。具体示例如下

    sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.4_centos7.0_x86_64.rpm

    以Ubuntu 16.04 (x64)版本为例,依次执行以下命令安装ossfs。

    sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.4_ubuntu16.04_amd64.deb
    sudo apt-get update
    sudo apt-get install gdebi-core
    sudo gdebi ossfs_1.91.4_ubuntu16.04_amd64.deb

    以CentOS 7.0(x64)版本为例,安装命令如下。

    sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.4_centos7.0_x86_64.rpm
    sudo yum install ossfs_1.91.4_centos7.0_x86_64.rpm
  2. ossfs通过查询/etc/mime.types中的内容来设置文件的Content-Type,如果您希望上传文件的Content-Type和文件扩展名匹配,您需要添加mime.types文件。

    如果您不添加mime.types文件,ossfs默认将上传文件的Content-Type设置为application/octet-stream。

    您可以通过以下命令添加 mime.types 文件。

    CentOS系统/Anolis系统/Alibaba Cloud Linux系统:

    您可以通过以下命令添加mime.types文件。

    sudo yum install mailcap

    Ubuntu系统:

    您可以通过以下命令添加mime.types文件。

    sudo apt-get install mime-support
  3. 执行ossfs --version命令查看ossfs版本信息,出现如图所示提示信息,证明安装成功。

    image

三、挂载访问

  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 :: > /etc/passwd-ossfs'
    ### root 用户可使用以下命令:###
    # echo :: > /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   -o url=

    将杭州地域名称为bucket-test的Bucket挂载到/tmp/ossfs目录下的示例如下:

    sudo mkdir /tmp/ossfs
    sudo ossfs bucket-test /tmp/ossfs -o url=http://oss-cn-hangzhou-internal.aliyuncs.com
    
    ## 开启TLS后使用https
    sudo ossfs bucket-test /tmp/ossfs -o url=https://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. 查看Bucket中文件列表。

      sudo ls -lh /tmp/ossfs

      image

      说明

      元数据操作(例如*list directory*)需要远程访问OSS服务器,存在网络延迟。

    2. 从OSS拷贝文件到本地。

      sudo cp /tmp/ossfs/bird.jpeg /root
    3. 从本地拷贝文件到OSS。

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

      将本地root目录下的forest.jpeg文件,拷贝至已挂载的Bucket中,并同步到OSS远程。

      image

      说明

      如果您因意外中断了文件上传的过程且未继续完成该文件的上传,则已上传的部分会以碎片(Part)的形式存储在Bucket中。如果您不再需要这些Part,建议您通过以下方式删除,以免产生额外的存储费用。

  5. 如果您不希望继续挂载此Bucket,您可以执行以下命令将其卸载。

    sudo fusermount -u /tmp/ossfs

四、常见问题

1.ossfs挂载命令执行后,没有报错,但是查看挂载没有成功

[root@iZuf6at4ih6u7fs7j1den2Z ~]# ossfs parish1 /root/oss -o url=https://parish1.oss-cn-beijing.aliyuncs.com
[root@iZuf6at4ih6u7fs7j1den2Z ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           1.8G  468K  1.8G   1% /run
tmpfs           1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/vda3        40G  3.4G   37G   9% /
/dev/vda2       100M  7.3M   93M   8% /boot/efi
tmpfs           363M     0  363M   0% /run/user/0
[root@iZuf6at4ih6u7fs7j1den2Z ~]#

权限问题:请确保您有足够的权限访问和操作OSS存储。您可以尝试使用chown命令更改挂载点的所有者和所属组,例如:

[root@iZuf6at4ih6u7fs7j1den2Z ~]# chown -R your_username:your_groupname /root/oss/parish1

2.开机自动挂载

在/etc/fstab中加入下面的命令

ossfs#your_bucket_name     your_mount_point     fuse _netdev,url=your_url,allow_other     0 0

保存/etc/fstab文件。执行mount -a命令,如果没有报错,则说明设置正常。