YAS3FS 安装教程:在 Amazon Linux 2023 上一键部署的完整步骤
2026/8/17 23:09:37 网站建设 项目流程

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:ListBuckets3:GetObjects3:PutObjects3:DeleteObject等操作;集群模式还需sns:Publishsqs:*相关权限,具体策略模板可参考 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.confuser_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

例如,把桶mybucketdata目录挂载到/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 busyrsync 需加--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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询