Skip to main content

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
  • syncasyncsync 需等待服务端确认写入成功,async 可提前返回,性能更高。
  • no_subtree_check:关闭子目录检查,通常能提升兼容性。
  • no_root_squash:取消 root 挤压,不再把客户端 root 映射为低权限用户;有安全风险,需谨慎使用。
  • fsid:NFS 文件系统标识符;在 NFSv4 下应为不同导出文件系统分配唯一编号。

async 与 sync 模式的选择

sync 能提升可靠性,但通常会降低写入性能。对于 JuiceFS 场景,网络时延会进一步放大这类性能影响。

大多数 JuiceFS + NFS 场景建议使用 async。如果业务必须使用 sync,建议为 JuiceFS 配置高性能本地缓存盘,并启用 writeback 写缓存模式。