使用ossfs将阿里云OSS的Bucket挂载到Linux系统中
一、前提条件
已开通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)安装步骤
-
安装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
-
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
-
执行
ossfs --version
命令查看ossfs版本信息,出现如图所示提示信息,证明安装成功。
三、挂载访问
-
选择需要进行本地挂载的Bucket。
说明
避免将低频访问或已启用归档直读功能的Bucket作为挂载目标。这两种类型Bucket在接收上传文件时,可能出现两次上传请求。初次上传生成一个大小为0的占位文件,随后再次上传实际数据作为文件存储在Bucket。由于涉及的文件存储类型为低频访问或归档,即使是0字节的占位文件也会根据相应的存储类别(低频或归档)计费规则,即最少按64 KB数据量计算30天的存储费用。这可能导致用户在不知情的情况下额外承担存储费用。
-
配置账号访问信息。
将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
-
将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地域和访问域名。
-
您可以像访问本地文件系统一样读取Bucket中的对象。
-
查看Bucket中文件列表。
sudo ls -lh /tmp/ossfs
说明
元数据操作(例如*list directory*)需要远程访问OSS服务器,存在网络延迟。
-
从OSS拷贝文件到本地。
sudo cp /tmp/ossfs/bird.jpeg /root
-
从本地拷贝文件到OSS。
sudo cp /root/forest.jpeg /tmp/ossfs
将本地root目录下的forest.jpeg文件,拷贝至已挂载的Bucket中,并同步到OSS远程。
说明
如果您因意外中断了文件上传的过程且未继续完成该文件的上传,则已上传的部分会以碎片(Part)的形式存储在Bucket中。如果您不再需要这些Part,建议您通过以下方式删除,以免产生额外的存储费用。
- 手动删除Part,请参见删除碎片。
- 通过生命周期规则自动删除Part,请参见基于最后一次修改时间的生命周期规则。
-
-
如果您不希望继续挂载此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
命令,如果没有报错,则说明设置正常。