收起左侧

外部导入的 ZFS 存储池(如 TrueNAS 迁移池)开机后 Web 端识别为“未挂载”,且根池

0
回复
35
查看
[ 复制链接 ]

1

主题

0

回帖

0

牛值

江湖小虾

【问题现象】

  1. 在命令行通过 zpool import 成功导入外部 ZFS 存储池(zpool),且飞牛 Web 端能识别并显示为“存储空间 2”。
  2. 系统重启(reboot)后:
    • Web 界面: “存储空间 2”显示为“未挂载”或消失。
    • 命令行 df -h 子数据集(如 /vol2/media/vol2/photos)能正常挂载,但根池(zpool -> /vol2)丢失挂载
  3. 手动执行 zfs set mountpoint=/vol2 zpool && zfs mount -a 或重新 zpool export & import 后,Web 界面立即可恢复正常。

【根本原因分析】

  1. 开机挂载抢占与并发冲突: 系统开机时,原生 Linux 的 zfs-mount 服务先于飞牛存储服务(trim_storage_manager)运行,将子数据集挂载,导致飞牛后台服务在开机扫描 /vol2 根路径锚点时判定异常。
  2. 挂载点持久化同步缺陷: 飞牛系统在接管外部导入的 ZFS 池后,未将其根挂载点(/volX)的契约关系持久化写入系统的挂载逻辑,导致重启后根池丢失。
  3. 前端/后端状态不一致: 飞牛 Web 端的“存储空间”面板强依赖根节点(如 /vol2)的挂载状态;一旦根节点未挂载(即使子数据集已在),UI 即直接判定整个存储空间离线。

【优化与修复建议】

  1. 修复开机挂载顺序: 飞牛存储服务在启动时,应自动对已登记的 ZFS 存储池强制执行一次挂载点校验与重新挂载(类似于 zfs set mountpoint=/volX <pool> && zfs mount -a)。
  2. 完善外部池导入逻辑: 在 Web 端点击“识别/导入现有存储”后,后台除了 zpool import,应自动固化该池的 mountpoint 属性与系统数据库映射,使其享受与飞牛原生创建存储池完全相同的开机挂载生命周期。
收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则