收起左侧

ZFS自动快照后smb分享需要重设

1
回复
155
查看
[ 复制链接 ]

2

主题

0

回帖

0

牛值

江湖小虾

2026-4-19 02:56:11 显示全部楼层 阅读模式

问题现象

  • SMB 挂载后,`/vol1`(RAIDZ2,6块 HDD)上的个人文件夹(Bak、Clips、Documents、Downloads、Media、stash)每天自动消失,无法通过 SMB 访问。
  • 文件本身并未丢失,在 NAS 本地文件系统上完好存在。
  • 通过飞牛管理界面重新配置「文件管理设置 → SMB → 可见文件夹范围」后,文件夹重新出现。
  • 问题每天发生,发生时间约为 00:00(午夜)。

根本原因

`share_service`(飞牛核心 SMB 配置管理服务)在每日 ZFS 快照任务触发后重新生成 SMB 配置文件,但在重新写入 `/usr/trim/var/share_service//smb.conf` 时,产生了**不完整的 JSON**,缺少 `items`、`mounted`、`appShare`、`external`、`team` 等字段。

对比:正常(FTP)vs 损坏(SMB)

**`/usr/trim/var/share_service/1000/ftp.conf`(正常)**:

`json

{

"updated": 1776528015525,

"encoding": "",

"mode": 2,

"extended": {

"teamShareMode": 2,

"mounted": [],

"appShare": [],

"external": [],

"team": []

},

"items": [[], []]

}

`

**`/usr/trim/var/share_service/1000/smb.conf`(损坏状态)**:

`json

{

"updated": 1776528015513,

"encoding": "",

"mode": 2,

"extended": {

"teamShareMode": 2

}

}

`

`items` 字段缺失时,`share_service` 不为用户的个人文件夹生成 Samba share 定义,导致这些文件夹在 SMB 连接下不可见。

触发时序(以 2026-04-19 00:00 为例)

| 时间 | 事件 |

|------|------|

| 00:00:00 | ZFS 快照任务(`trim.snapshots`)触发 |

| 00:00:15 | 磁盘 sdf、sdg 唤醒(vol2 镜像组)|

| 00:00:15 | `share_service` 重新写入 `1000.share.conf`(此时 smb.conf 已损坏)|

| 00:00:15 | 所有用户的 `smb.conf` 被截断写入(uid=1000、1001、1002 均受影响)|

| 之后 | 新的 SMB 连接找不到个人文件夹 shares;已建立的连接暂时不受影响 |

**Bug 位置**:`share_service` 在处理 ZFS 快照完成事件时,重新生成 `/usr/trim/var/share_service//smb.conf` 的逻辑中存在缺陷,导致 JSON 被截断写入(缺少 `items` 字段和 `extended` 子字段)。FTP/NFS/WebDAV 的同名配置文件写入正确,仅 SMB 受影响。

**重现条件**:

  1. 飞牛 NAS 配置了「每日 ZFS 快照」
  2. SMB「可见文件夹范围 → 我的文件」设为「全部允许」
  3. 等待每日 00:00 快照任务执行后,断开并重新连接 SMB

**建议修复**:在 `share_service` 写入 `smb.conf` 前验证 JSON 结构完整性,确保 `items` 字段始终被写入。

收藏
送赞
分享
2026-4-20 18:17:38 显示全部楼层

感谢反馈!我转给负责的同事看看。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则