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 建议显式设置 rsize 和 wsize 为 1MB 以获得最佳性能。
卸载
sudo umount /mnt/lanbuffer
挂载参数说明
| 参数 | 说明 |
|---|---|
vers=3 | 使用 NFSv3 协议 |
tcp | 使用 TCP 传输 |
port=2049 | NFS 服务端口 |
mountport=2049 | Mount 协议端口(与 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 导出。