nfs
NFS(Network File System)是 Unix / 类 Unix 系统中常用的文件共享协议。你可以先在 Linux 服务器挂载 JuiceFS,再将 JuiceFS 挂载点(或子目录)通过 NFS 共享出去。
挂载 JuiceFS
先准备一台 Linux 主机作为 NFS 服务端,然后参考快速上手创建并认证 JuiceFS 文件系统。
对于云服务 / 企业版,挂载命令使用文件系统名称(而不是社区版 META-URL 风格):
# 首次挂载前先认证
juicefs auth $VOL_NAME --token $TOKEN --access-key $ACCESS_KEY --secret-key $SECRET_KEY
# 私有部署需要额外指定控制台地址
# juicefs auth $VOL_NAME --token $TOKEN --access-key $ACCESS_KEY --secret-key $SECRET_KEY --console-url http://<console-ip>:8080
# 挂载 JuiceFS,供 NFS 导出
sudo juicefs mount $VOL_NAME /mnt/myjfs --update-fstab --sort-dir
对于 NFS 场景,建议开启 --sort-dir。部分 NFS 服务(如 nfsd)会按分页方式读取 readdir 结果,而 JuiceFS 默认不保证目录项顺序。开启 --sort-dir 可以让目录遍历顺序更稳定。
第 1 步:安装 NFS
在服务端和客户端都安装 NFS 相关软件包。
服务端安装
# Debian / Ubuntu
sudo apt install -y nfs-kernel-server
# RHEL / CentOS / Rocky / AlmaLinux
sudo yum install -y nfs-utils
客户端安装
# Debian / Ubuntu
sudo apt install -y nfs-common
# RHEL / CentOS / Rocky / AlmaLinux
sudo yum install -y nfs-utils
第 2 步:创建共享
假设 JuiceFS 挂载点是 /mnt/myjfs,准备将 /mnt/myjfs/media 作为共享目录。
在 /etc/exports 中添加:
/etc/exports
"/mnt/myjfs/media" *(rw,sync,no_subtree_check,fsid=1)
NFS 共享语法:
<Share Path> <Allowed IPs>(options)
例如,仅允许 192.168.1.0/24 挂载,且避免 root 挤压:
/etc/exports
"/mnt/myjfs/media" 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash,fsid=1)
应用配置并启动服务:
sudo exportfs -rav
# Debian / Ubuntu
sudo systemctl enable --now nfs-kernel-server
# RHEL / CentOS / Rocky / AlmaLinux
sudo systemctl enable --now nfs-server
在客户端验证:
# 查看服务端导出的目录
showmount -e <NFS-SERVER-IP>
# Linux 客户端挂载示例
sudo mount -t nfs -o vers=4 <NFS-SERVER-IP>:/mnt/myjfs/media /mnt/media
共享选项说明
rw:读写权限;只读用ro。sync与async:sync需等待服务端确认写入成功,async可提前返回,性能更高。no_subtree_check:关闭子目录检查,通常能提升兼容性。no_root_squash:取消 root 挤压,不再把客户端 root 映射为低权限用户;有安全风险,需谨慎使用。fsid:NFS 文件系统标识符;在 NFSv4 下应为不同导出文件系统分配唯一编号。
async 与 sync 模式的选择
sync 能提升可靠性,但通常会降低写入性能。对于 JuiceFS 场景,网络时延会进一步放大这类性能影响。
大多数 JuiceFS + NFS 场景建议使用 async。如果业务必须使用 sync,建议为 JuiceFS 配置高性能本地缓存盘,并启用 writeback 写缓存模式。


