云服务器磁盘不够用?试试OSSFS
作为云服务器用户,您是否经常遇到磁盘空间不足的困扰?每次扩容都需要停机操作,既麻烦又影响业务连续性。其实,阿里云OSS配合OSSFS工具可以完美解决这个问题!
为什么选择OSSFS?
- 无需停机扩容:即时挂载即可获得海量存储空间
- 成本更低:存储费用仅为云盘的1/5
- 使用简单:像操作本地目录一样使用OSS存储
- 多机共享:多台服务器可同时挂载同一存储桶
- 内网挂载:阿里云服务器通过内网挂载,完全免流量费用
一、ossfs简介
ossfs是一款基于FUSE的文件系统工具,允许用户将阿里云OSS存储桶挂载到本地Linux文件系统中,像操作本地文件一样操作OSS中的对象。它适合需要POSIX文件系统访问方式的场景。
二、准备工作
- 阿里云OSS存储桶(已创建)
- 具有OSS访问权限的AccessKey(AccessKey ID和AccessKey Secret)
- 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
四、配置访问密钥
- 创建密钥配置文件:
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
- 设置文件权限:
sudo chmod 640 /etc/passwd-ossfs
五、挂载OSS存储桶
- 创建本地挂载点目录:
sudo mkdir /mnt/ossfs
- 执行挂载命令:
sudo ossfs <your-bucket-name> <mount-point> -ourl=<your-oss-endpoint> -o allow_other
参数说明:
<your-bucket-name>
: 你的OSS存储桶名称<mount-point>
: 本地挂载目录(如/mnt/ossfs
)<your-oss-endpoint>
: OSS访问域名(如http://oss-cn-hangzhou.aliyuncs.com
)
示例:
sudo ossfs my-bucket /mnt/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other
- 验证挂载:
df -h
你应该能看到类似这样的输出:
ossfs 256T 0 256T 0% /mnt/ossfs
六、高级配置选项
- 使用
-oumask
设置文件权限:
sudo ossfs my-bucket /mnt/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other -oumask=007
- 启用缓存提高性能:
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
- 设置内存缓存大小(单位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
七、设置开机自动挂载
- 编辑
/etc/fstab
文件:
sudo vim /etc/fstab
- 添加以下内容:
<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
- 测试fstab配置:
sudo mount -a
- 重新挂载(如果需要):
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
九、常见问题解决
挂载失败:permission denied
- 检查
/etc/passwd-ossfs
文件权限是否为640 - 确保AccessKey正确
- 检查
写入文件失败
- 检查存储桶是否设置了正确的权限策略
- 尝试使用
-o allow_other
选项
性能问题
- 考虑启用缓存
- 对于频繁访问的文件,可以设置更大的缓存
连接超时
- 检查网络连接
- 尝试使用内网Endpoint(如
oss-cn-hangzhou-internal.aliyuncs.com
)
十、注意事项
- 某些操作(如随机写、追加写)可能会有性能问题
- 建议定期检查ossfs版本并升级到最新版
- 重要数据建议做好本地备份
本文著作权归作者 [ 老朝奉 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。