NFS 文件接口

LanBuffer 内置 NFSv3 服务器(默认端口 :2049),可将云端对象存储作为本地文件系统挂载使用。

启用 NFS 服务

lanbuffer.toml 中配置:

[servers.nfs]
addresses = ["127.0.0.1:2049"]

启动服务后,NFS 端口即可接受连接。

挂载文件系统

Linux

sudo mkdir -p /mnt/lanbuffer
sudo mount -t nfs -o vers=3,tcp,port=2049,mountport=2049,noacl,nolock 127.0.0.1:/ /mnt/lanbuffer

macOS

sudo mkdir -p /mnt/lanbuffer
sudo mount -t nfs -o vers=3,tcp,port=2049,mountport=2049,noacl,nolock,rsize=1048576,wsize=1048576 127.0.0.1:/ /mnt/lanbuffer

macOS 建议显式设置 rsizewsize 为 1MB 以获得最佳性能。

卸载

sudo umount /mnt/lanbuffer

挂载参数说明

参数说明
vers=3使用 NFSv3 协议
tcp使用 TCP 传输
port=2049NFS 服务端口
mountport=2049Mount 协议端口(与 NFS 端口相同)
noacl禁用 ACL(LanBuffer 使用 POSIX 权限)
nolock禁用 NLM 锁管理
rsize=1048576读缓冲区大小(1MB,推荐)
wsize=1048576写缓冲区大小(1MB,推荐)

文件系统特性

LanBuffer 提供完整的 POSIX 文件系统语义:

  • 文件操作 — 创建、读取、写入、删除、重命名
  • 目录操作 — 创建、删除、列出、遍历
  • 符号链接 — 创建和读取符号链接
  • 硬链接 — 支持多个硬链接指向同一文件
  • 权限管理 — uid/gid/mode,SUID/SGID 位
  • Sticky bit — 目录粘滞位支持
  • 设备节点 — 字符设备、块设备、FIFO、Socket

存储参数

参数
块大小32 KB
最大读写传输1 MB
文件名最大长度255 字节
最大文件大小可配置,默认 8 EiB
时间精度1 纳秒

只读模式

以只读模式启动,适合数据共享场景:

lanbuffer run -c config.toml --read-only

或从特定检查点启动(自动进入只读模式):

lanbuffer run -c config.toml --checkpoint my-snapshot

文件大小限制

通过配置限制文件系统总大小:

[filesystem]
max_size_gb = 100.0

超出限制后写入操作将返回 ENOSPC 错误。

使用场景

  • 数据备份 — 将文件直接写入云端对象存储,自动加密压缩
  • 共享存储 — 多台机器通过 NFS 挂载同一个存储桶
  • 开发调试 — 像操作本地文件一样操作云端数据
  • 与现有工具集成 — 任何支持文件系统的工具都可以直接使用

其他文件协议

除 NFS 外,LanBuffer 还支持:

协议默认端口配置项
9P (Plan 9):5564[servers.ninep]
NBD (网络块设备):10809[servers.nbd]

9P 配置示例

[servers.ninep]
addresses = ["127.0.0.1:5564"]
# unix_socket = "/tmp/lanbuffer.9p.sock"  # 可选 Unix Socket

NBD 配置示例

[servers.nbd]
addresses = ["127.0.0.1:10809"]
# unix_socket = "/tmp/lanbuffer.nbd.sock"  # 可选 Unix Socket

NBD 设备通过文件系统中的 /.nbd/ 目录动态发现,每个文件对应一个 NBD 导出。