收起左侧

飞牛 OS ZFS 存储空间容量显示异常及解决方法

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

1

主题

10

回帖

0

牛值

江湖小虾

fnOS1.0上线纪念勋章飞牛百度网盘玩家

从 TrueNAS 迁移的 ZFS 池在飞牛 OS 中容量显示错误(如显示 120MB/1TB,实际为 20TB/29TB),本文分析原因并提供解决方案。

问题现象

飞牛 OS 存储空间管理页面中,ZFS 池显示的容量与实际不符:

项目 飞牛 UI 显示 实际值
总容量 1.01 TB ❌ 29.1 TB
使用量 120.25 MB ❌ 20.1 TB
剩余 随 UI 1.01 TB

但命令行查看完全正常:

/sbin/zpool list
# NAME    SIZE  ALLOC   FREE  HEALTH
# HC320  29.1T  27.5T  1.56T  ONLINE

原因分析

数据集结构差异

从 TrueNAS 迁移过来的 ZFS 池通常有嵌套数据集结构:

HC320 (REFER=120M, USED=20.1T, AVAIL=1.01T)
  **─ HC320/HC (USED=20.1T, REFER=20.1T) ← 实际数据都在这里

飞牛 OS 的存储管理 UI 读取的是**根数据集(HC320)**的以下字段:

  • 总容量 = AVAIL(1.01TB)
  • 已使用 = REFER(120MB)

但实际上:

  • 根数据集 HC320REFER 仅为 120M(自身挂载点占用的元数据)
  • 全部 20.1TB 数据存储在子数据集 HC320/HC
  • ZFS 的 AVAIL 是整池的可用空间,与根数据集本身无关

这是飞牛 OS 对嵌套数据集(从 TrueNAS 迁移的场景)兼容性不足导致的 UI 显示问题。

还是希望官方支持,这样就无需迁移了

解决方法

方法一:设置 Quota(临时,不影响数据)

让根数据集的总容量显示看起来正常:

sudo /sbin/zfs set quota=29T HC320

设置后 zfs list 会有配额信息,但飞牛 UI 的已使用量仍读取 REFER 字段,不会完全修复。

方法二:数据提升到根数据集(彻底解决)

将子数据集 HC320/HC 的数据直接放到根数据集 HC320 下:

# 1. 停用占用 /vol2 的服务
# 2. 查看子数据集挂载点
/sbin/zfs get mountpoint HC320/HC

3. 将子数据集改为 legacy 挂载

sudo /sbin/zfs set mountpoint=legacy HC320/HC

4. 创建一个临时挂载点

mkdir -p /tmp/migrate sudo mount -t zfs HC320/HC /tmp/migrate

5. 将数据复制到根数据集的挂载点(/vol2)

sudo rsync -av /tmp/migrate/ /vol2/

6. 验证数据完整性

ls /vol2

确认所有数据都在

7. 清理临时挂载

sudo umount /tmp/migrate

8. 删除子数据集

sudo /sbin/zfs destroy HC320/HC

code

code

code

code

code

code

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本版积分规则