我将彻底重新措辞这个问题,因为几个月后它仍然是一个悬而未决的生产问题。
我有一个基于 FreeBSD 7.3-RELEASE-p1 的 FreeNAS 0.7.2 盒子,在 RAIDz1 中运行 ZFS 和 4x1TB SATA 驱动器。
在创建和删除 1TB 稀疏文件后,我似乎丢失了 1TB 的可用空间。这是几个月前发生的事。
下表列出了当前的情况。
command actual expected ok/not ok
du -c 1.47TB used 1.47TB used ok
zfs list used 2.48TB used 1.47TB not ok
avail 206GB avail 1.2TB not ok
zpool list size 3.64TB size 3.64TB ok
used 3.31TB used 1.95TB not ok
avail 334GB avail 1.69TB not ok
Windows right Disk size 2.67TB Disk size 2.67TB ok
click disk, Used 2.47TB Used 1.47 not ok
properties free 206GB free 1.2TB not ok
Windows select total file size total file size
all files, 1.48TB 1.48TB ok
right click,
properties
- 池中任何地方均无快照
- 压缩已关闭
- 重复数据删除已关闭
- ZFS 池版本为 13
- ZFS FS 版本为 3
- 使用 FreeNAS 的“嵌入式”版本
- 文件是使用 dd 使用 /dev/zero 作为输入创建的,使用 rm 删除的,全部以 root 身份执行
- 文件确实已被删除
- Windows 可以通过 SMB 查看文件夹
- Windows 版本是 7
- 不确定如何确定下面回答者所建议的错误是否已在我使用的 FreeBSD 中的 ZFS 池和 FS 版本中得到解决
问任何你想问的问题,我可以从任何地方得到有关盒子的外壳。
非常感谢任何建议或想法。汤姆
答案1
解决方案最终通过 zfs-discuss 邮件列表找到 -这个帖子。
看起来输出zfs list -t snapshot
在某个时候发生了变化,并且有一个隐藏的快照消耗了额外的空间:
There was a change where snapshots are no longer shown by default.
This can be configured back to the old behaviour setting the zpool
"listsnapshots" property to "on"
Otherwise, you need to use the "-t snapshot" list.
But, a much better method of tracking this down is to use:
zfs list -o space
That will show the accounting for all dataset objects.
-- richard
认为即使过了这么久,也值得在这里发布它并将其标记为答案。
答案2
listsnapshots
是一个属性,它仅控制默认输出是否zfs list
显示快照。它不“启用或禁用快照”。
要列出包括快照在内的所有内容,请使用以下命令:
zfs list -t all
要仅列出快照,请使用以下命令:
zfs list -t snapshot
编辑:你可能遇到过这个 ZFS 错误。要确认此错误是否是原因,请使用非稀疏文件重试。此错误应该只发生在大型稀疏文件中,例如由mkfile
或通过从 复制而创建的文件/dev/zero
。
这个错误已经在 Solaris 中修复,但它可能仍然存在于您正在使用的 FreeBSD 版本中。
答案3
BE 之间有一个增量文件。用于beadm list
检查您是否有 BE。当您删除前一个 BE 时,它应该将增量数据合并/提交到磁盘并释放隐藏空间。只有在销毁标记为相同日期的整套子 BE 后,您才可能看到空间。
答案4
在我的计算机上,磁盘使用情况统计信息通常需要大约 15 秒才能更新。也许你只是没有足够的耐心。