教程笔记

使用ossfs挂载阿里云OSS到Linux服务器

云服务器磁盘不够用?试试OSSFS

作为云服务器用户,您是否经常遇到磁盘空间不足的困扰?每次扩容都需要停机操作,既麻烦又影响业务连续性。其实,阿里云OSS配合OSSFS工具可以完美解决这个问题!

为什么选择OSSFS?

一、ossfs简介

ossfs是一款基于FUSE的文件系统工具,允许用户将阿里云OSS存储桶挂载到本地Linux文件系统中,像操作本地文件一样操作OSS中的对象。它适合需要POSIX文件系统访问方式的场景。

二、准备工作

  1. 阿里云OSS存储桶(已创建)
  2. 具有OSS访问权限的AccessKey(AccessKey ID和AccessKey Secret)
  3. Linux服务器(推荐CentOS 7+或Ubuntu 16.04+)

三、安装ossfs

对于CentOS/RHEL系统

# 下载ossfs安装包
sudo wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm

# 安装依赖
sudo yum install -y fuse

# 安装ossfs
sudo rpm -ivh ossfs_1.80.6_centos7.0_x86_64.rpm

# 验证安装
ossfs --version

对于Ubuntu/Debian系统

# 下载ossfs安装包
sudo wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_ubuntu16.04_amd64.deb

# 安装
sudo apt-get update
sudo apt-get install -y fuse
sudo dpkg -i ossfs_1.80.6_ubuntu16.04_amd64.deb

# 验证安装
ossfs --version

四、配置访问密钥

  1. 创建密钥配置文件:
echo <your-bucket-name>:<your-access-key-id>:<your-access-key-secret> | sudo tee /etc/passwd-ossfs

例如:

echo my-bucket:LTAI5t1234567890:abcdefghijklmnopqrstuvwxyz1234567890 | sudo tee /etc/passwd-ossfs
  1. 设置文件权限:
sudo chmod 640 /etc/passwd-ossfs

五、挂载OSS存储桶

  1. 创建本地挂载点目录:
sudo mkdir /mnt/ossfs
  1. 执行挂载命令:
sudo ossfs <your-bucket-name> <mount-point> -ourl=<your-oss-endpoint> -o allow_other

参数说明:

示例:

sudo ossfs my-bucket /mnt/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other
  1. 验证挂载:
df -h

你应该能看到类似这样的输出:

ossfs      256T     0  256T   0% /mnt/ossfs

六、高级配置选项

  1. 使用-oumask设置文件权限:
sudo ossfs my-bucket /mnt/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other -oumask=007
  1. 启用缓存提高性能:
sudo mkdir /tmp/ossfs_cache
sudo ossfs my-bucket /mnt/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other -ouse_cache=/tmp/ossfs_cache
  1. 设置内存缓存大小(单位MB):
sudo ossfs my-bucket /mnt/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other -ouse_cache=/tmp/ossfs_cache -omax_stat_cache_size=1000 -oensure_diskfree=1024

七、设置开机自动挂载

  1. 编辑/etc/fstab文件:
sudo vim /etc/fstab
  1. 添加以下内容:
<your-bucket-name> <mount-point> fuse.ossfs _netdev,url=<your-oss-endpoint>,allow_other 0 0

示例:

my-bucket /mnt/ossfs fuse.ossfs _netdev,url=http://oss-cn-hangzhou.aliyuncs.com,allow_other 0 0
  1. 测试fstab配置:
sudo mount -a
  1. 重新挂载(如果需要):
sudo mount -a
sudo systemctl daemon-reload
sudo systemctl restart local-fs.target

八、卸载OSS存储桶

sudo umount /mnt/ossfs

如果遇到"device is busy"错误,可以使用强制卸载:

sudo fusermount -u /mnt/ossfs

九、常见问题解决

  1. 挂载失败:permission denied

    • 检查/etc/passwd-ossfs文件权限是否为640
    • 确保AccessKey正确
  2. 写入文件失败

    • 检查存储桶是否设置了正确的权限策略
    • 尝试使用-o allow_other选项
  3. 性能问题

    • 考虑启用缓存
    • 对于频繁访问的文件,可以设置更大的缓存
  4. 连接超时

    • 检查网络连接
    • 尝试使用内网Endpoint(如oss-cn-hangzhou-internal.aliyuncs.com

十、注意事项

  1. 某些操作(如随机写、追加写)可能会有性能问题
  2. 建议定期检查ossfs版本并升级到最新版
  3. 重要数据建议做好本地备份
本文著作权归作者 [ 老朝奉 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。

发表留言