YAS3FS 安装教程:在 Amazon Linux 2023 上一键部署的完整步骤
【免费下载链接】yas3fsYAS3FS (Yet Another S3-backed File System) is a Filesystem in Userspace (FUSE) interface to Amazon S3. It was inspired by s3fs but rewritten from scratch to implement a distributed cache synchronized by Amazon SNS notifications. A web console is provided to easily monitor the nodes of a cluster.项目地址: https://gitcode.com/gh_mirrors/ya/yas3fs
YAS3FS(Yet Another S3-backed File System)是一款基于 FUSE 的 S3 文件系统挂载工具,它能把 Amazon S3 桶直接挂载成 Linux 本地文件夹,让应用像读写本地磁盘一样使用对象存储。本教程将带你完成 Amazon Linux 2023 上 YAS3FS 安装的每一步,从系统依赖、虚拟环境到 S3 桶挂载,全程无需编译源码,真正做到一键部署。
YAS3FS 是什么?为什么值得在 Amazon Linux 2023 上安装
YAS3FS 由 AWS 布道师 Danilo Poccia 开发,灵感来自 s3fs,但从零重写,实现了由 Amazon SNS 通知同步的分布式缓存,适合在多个 EC2 节点间构建"共享文件系统"集群。它的核心优势包括:
- 📂 将 S3 桶(或桶内指定路径)挂载为本地目录,普通命令即可操作
- ⚡ 小文件走内存缓存、大文件走磁盘缓存,读速更快
- 🚀 大文件支持并行分段上传/下载,流式场景下可边下边读
- 🔔 通过 SNS/SQS 通知让集群内所有节点缓存自动失效,保持一致
- 🖥️ 提供 Web 控制台(YAS3FS Console)监控集群各节点状态
- 🔑 支持 IAM 角色、环境变量凭证,还可生成带签名的文件 URL
在 Amazon Linux 2023 上安装 YAS3FS 非常简单:官方已把完整安装流程整理进 README.md,本文则将其拆解为可直接照做的分步教程。
YAS3FS 安装前的准备工作:S3 桶、SNS 主题与 IAM 权限
动手安装之前,请先确认以下前置条件,避免装完才发现用不了:
| 准备项 | 说明 | 是否必须 |
|---|---|---|
| AWS 账号与区域 | 在目标区域(如 us-east-1)创建 S3 桶 | ✅ 必须 |
| AWS 凭证 | 配置AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量,或使用 EC2 IAM 角色 | ✅ 必须 |
| SNS 主题 | 多节点集群才需要,记录完整 Topic ARN | ⚠️ 集群必选 |
| IAM 权限 | 至少包含 S3 的读写权限;集群还需 SNS/SQS 权限 | ✅ 必须 |
💡 提示:桶内的初始路径无需预先创建,YAS3FS 首次挂载时会自动创建。如果桶主要用作文件仓库而非文件系统,可以加
--no-metadata参数跳过元数据写入。
IAM 角色至少要授权s3:ListBucket、s3:GetObject、s3:PutObject、s3:DeleteObject等操作;集群模式还需sns:Publish、sqs:*相关权限,具体策略模板可参考 README.md 中的 IAM Policy 段落。
Amazon Linux 2023 一键安装 YAS3FS 的完整步骤
官方已为 Amazon Linux 2023 定制了优化过的安装路径,关键点是:系统自带的 Python 3.9 与最新的 Python 3.12 都不可用于 YAS3FS 虚拟环境,必须使用Python 3.11(因为 YAS3FS 依赖 boto 2.x,不兼容 Python 3.12)。
第一步:安装系统依赖包
先通过 dnf 一键安装 FUSE、git 与 Python 3.11:
sudo dnf -y install fuse fuse-libs git python3.11 python3.11-pip第二步:创建 Python 3.11 虚拟环境
YAS3FS 的推荐安装位置是/opt/yas3fs,用专用虚拟环境隔离依赖:
sudo /usr/bin/python3.11 -m venv /opt/yas3fs sudo /opt/yas3fs/bin/python -m pip install --upgrade pip setuptools wheel⚠️ 如果你之前用 Python 3.9 或 3.12 创建过
/opt/yas3fs,请先卸载所有挂载中的 YAS3FS 卷,再用 Python 3.11 重建虚拟环境。
第三步:获取源码并安装 YAS3FS
⚠️ 注意:PyPI 上已不支持直接按名称安装 yas3fs,必须通过 git clone 源码后安装:
sudo mkdir -p /opt/yas3fs/src sudo git clone https://gitcode.com/gh_mirrors/ya/yas3fs /opt/yas3fs/src/yas3fs sudo /opt/yas3fs/bin/python -m pip install /opt/yas3fs/src/yas3fs安装完成后清理源码目录,并确认命令可用:
sudo rm -rf /opt/yas3fs/src /opt/yas3fs/bin/yas3fs -h # 查看全部可用参数第四步:启用 FUSE 的 user_allow_other 选项
为了让普通用户也能挂载,需要取消/etc/fuse.conf中user_allow_other的注释:
sudo sed -i'' 's/^# *user_allow_other/user_allow_other/' /etc/fuse.conf到这里,YAS3FS 安装已经全部完成,前后大约只需 2~3 分钟!🎉
快速挂载 S3 桶:单节点部署方法
安装完成后,创建本地挂载点并执行挂载命令即可:
mkdir LOCAL-PATH /opt/yas3fs/bin/yas3fs s3://BUCKET/PATH LOCAL-PATH例如,把桶mybucket的data目录挂载到/mnt/s3data:
mkdir -p /mnt/s3data /opt/yas3fs/bin/yas3fs s3://mybucket/data /mnt/s3data挂载成功后,/mnt/s3data下的读写操作会透明地映射到 S3。YAS3FS 会使用 S3 用户元数据持久化文件系统的 attr/xattr 信息。
多节点集群部署:SNS 同步的配置步骤
如果多台 EC2 需要访问同一个桶并保持缓存一致,就需要 SNS 通知。前提是已创建好 SNS 主题并记下 Topic ARN:
mkdir LOCAL-PATH /opt/yas3fs/bin/yas3fs s3://BUCKET/PATH LOCAL-PATH --topic TOPIC-ARN --new-queue--new-queue会为当前节点自动创建临时 SQS 队列监听 SNS 通知,卸载时自动删除,适合 Auto Scaling 场景下快速扩缩容。若 EC2 安全组允许,也可改用--ec2-hostname --port N通过 HTTP 端点接收通知。
开机自动挂载 S3 桶:fstab 配置方法
想让 EC2 重启后 S3 桶自动挂载,可以借助项目自带的 mount 辅助脚本。Amazon Linux 2023 使用 contrib/mount.yas3fs.amzn1,CentOS 6 则用 contrib/mount.yas3fs.centos6。安装脚本:
sudo cp contrib/mount.yas3fs.amzn1 /usr/local/sbin/mount.yas3fs sudo chmod +x /usr/local/sbin/mount.yas3fs sudo ln -sf /usr/local/sbin/mount.yas3fs /sbin/mount.yas3fs然后参考 contrib/fstab.snippet 的格式,在/etc/fstab中添加一行并修改桶名、挂载点与 Topic ARN:
yas3fs#mybucket /mnt/mybucket yas3fs _netdev,allow_other,default_permissions,topic=arn:aws:sns:us-east-1:0000000000:mybucket,yas3fslog,yas3fsdebug 0 0保存后执行mount /mnt/mybucket即可测试 fstab 配置是否生效。
主机重启时优雅卸载:避免数据丢失的保障
直接关机可能导致 S3 挂载卷被强制卸载,官方专门提供了优雅卸载方案。在 Amazon Linux 2023 上执行:
sudo cp contrib/unmount-yas3fs.init.d /usr/local/sbin/unmount-yas3fs sudo chmod +x /usr/local/sbin/unmount-yas3fs sudo cp contrib/fstab-decode.py /usr/local/sbin/fstab-decode.py sudo chmod +x /usr/local/sbin/fstab-decode.py sudo cp contrib/unmount-yas3fs.service /etc/systemd/system/unmount-yas3fs.service sudo systemctl daemon-reload sudo systemctl enable --now unmount-yas3fs.service该 systemd 服务(contrib/unmount-yas3fs.service)会在关机前自动调用卸载脚本,确保缓存数据完整落盘。普通手动卸载则使用:
fusermount -u LOCAL-PATH # 或 umount LOCAL-PATH验证安装与常见问题排查
首次挂载强烈建议用调试模式前台运行,方便直接看到错误信息:
/opt/yas3fs/bin/yas3fs -df s3://BUCKET/PATH LOCAL-PATH一切正常后按Ctrl+C中断,再以默认后台模式启动即可。挂载成功后可用以下命令验证:
df -h | grep LOCAL-PATH # 查看挂载点 echo "test" > LOCAL-PATH/a.txt && cat LOCAL-PATH/a.txt # 读写测试| 常见问题 | 解决方法 |
|---|---|
报错fuse: device not found | 检查fuse内核模块是否加载:modprobe fuse |
| 权限不足无法挂载 | 确认已启用user_allow_other并重读/etc/fuse.conf |
| 新区域连接失败 | 使用--s3-use-sigv4配合--s3-endpoint指定签名版本 4 |
| 与 rsync 配合报 S3 busy | rsync 需加--inplace参数 |
总结:从安装到挂载只需十分钟
通过本教程,你已在 Amazon Linux 2023 上完成了 YAS3FS 安装、单机挂载、集群同步与自动挂载的全部配置。YAS3FS 用纯 Python 实现(核心逻辑在 yas3fs/fuse.py,依赖定义见 setup.py),维护成本低,是 EC2 集群共享 S3 数据的实用之选。建议先在测试环境用-df模式跑通全流程,再平滑迁移到生产环境。祝你的 S3 挂载之旅顺利!🚀
【免费下载链接】yas3fsYAS3FS (Yet Another S3-backed File System) is a Filesystem in Userspace (FUSE) interface to Amazon S3. It was inspired by s3fs but rewritten from scratch to implement a distributed cache synchronized by Amazon SNS notifications. A web console is provided to easily monitor the nodes of a cluster.项目地址: https://gitcode.com/gh_mirrors/ya/yas3fs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考