我的 Proxmox 实例中有一个 ZFS 镜像池。我试图让它以只读方式挂载到 LXC 容器(最好不提供完整的文件系统访问权限),这样我就可以主页为了监控目的,正确检测已用空间和可用空间。
其他 serverfault 问题和解答已经报告df -hT
应该能够正确报告 zfs 文件系统的使用空间(减去奇偶校验数据,可能是压缩或重复数据删除数据,但我在这里并不追求 100% 的准确度)
但对我来说,df -hT
报告的总空间为可用空间,已用空间为 128K。
root@pve:~# df -hT /nvme
Filesystem Type Size Used Avail Use% Mounted on
nvme zfs 590G 128K 590G 1% /nvme
/nvme 是顶层 zfs 数据集,不是吗?为什么这些数据集中的空间计算似乎很奇怪?
root@pve:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
nvme 309G 590G 128K /nvme
nvme/base-103-disk-0 43.4G 631G 2.19G -
nvme/nvmecheck 96K 590G 96K /mnt/nvmecheck
nvme/subvol-102-disk-0 554M 1.46G 554M /nvme/subvol-102-disk-0
nvme/subvol-105-disk-0 1.71G 2.29G 1.71G /nvme/subvol-105-disk-0
nvme/subvol-106-disk-0 625M 1.39G 625M /nvme/subvol-106-disk-0
nvme/subvol-107-disk-0 3.37G 11.6G 3.37G /nvme/subvol-107-disk-0
nvme/subvol-108-disk-0 1.18G 1.82G 1.18G /nvme/subvol-108-disk-0
nvme/subvol-109-disk-0 533M 1.48G 533M /nvme/subvol-109-disk-0
nvme/vm-100-disk-0 43.3G 624G 8.96G -
nvme/vm-101-disk-0 132G 607G 115G -
nvme/vm-104-disk-0 82.5G 661G 11.6G -
仅供参考,nvme/nvmecheck
这是我制作的一个数据集,用于了解如何计算子数据集。它的引用更奇怪。
有人能告诉我发生了什么吗?也许是 Debian 的 zfs 实现?或者是出了什么问题df
?
zpool status 警告我,我的 zpool 缺少一些功能,我可以运行 zpool upgrade,但我不确定这是否安全。我的 Proxmox 使用的是新启动工具,而不是旧版,所以这不应该是一个问题。
zfs 的USEDDS
属性可能相关,但不确定:
root@pve:~# zfs list -o space nvme
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
nvme 590G 309G 0B 128K 0B 309G
正如您在下面看到的,ZFS 有几个属性128K
可能也源于此。
root@pve:~# zfs get all nvme
NAME PROPERTY VALUE SOURCE
nvme type filesystem -
nvme creation Sat Jul 22 20:53 2023 -
nvme used 309G -
nvme available 590G -
nvme referenced 128K -
nvme compressratio 1.13x -
nvme mounted yes -
nvme quota none default
nvme reservation none default
nvme recordsize 128K default
nvme mountpoint /nvme default
nvme sharenfs off default
nvme checksum on default
nvme compression on local
nvme atime off local
nvme devices on default
nvme exec on default
nvme setuid on default
nvme readonly off default
nvme zoned off default
nvme snapdir hidden default
nvme aclmode discard default
nvme aclinherit restricted default
nvme createtxg 1 -
nvme canmount on default
nvme xattr on default
nvme copies 1 default
nvme version 5 -
nvme utf8only off -
nvme normalization none -
nvme casesensitivity sensitive -
nvme vscan off default
nvme nbmand off default
nvme sharesmb off default
nvme refquota none default
nvme refreservation none default
nvme guid [redacted] -
nvme primarycache all local
nvme secondarycache all default
nvme usedbysnapshots 0B -
nvme usedbydataset 128K -
nvme usedbychildren 309G -
nvme usedbyrefreservation 0B -
nvme logbias latency default
nvme objsetid 54 -
nvme dedup off default
nvme mlslabel none default
nvme sync standard default
nvme dnodesize legacy default
nvme refcompressratio 1.00x -
nvme written 128K -
nvme logicalused 164G -
nvme logicalreferenced 54.5K -
nvme volmode default default
nvme filesystem_limit none default
nvme snapshot_limit none default
nvme filesystem_count none default
nvme snapshot_count none default
nvme snapdev hidden default
nvme acltype off default
nvme context none default
nvme fscontext none default
nvme defcontext none default
nvme rootcontext none default
nvme relatime on default
nvme redundant_metadata all default
nvme overlay on default
nvme encryption off default
nvme keylocation none default
nvme keyformat none default
nvme pbkdf2iters 0 default
nvme special_small_blocks 0 default
我的 zpool 属性:
root@pve:~# zpool get all nvme
NAME PROPERTY VALUE SOURCE
nvme size 928G -
nvme capacity 15% -
nvme altroot - default
nvme health ONLINE -
nvme guid [redacted] -
nvme version - default
nvme bootfs - default
nvme delegation on default
nvme autoreplace off default
nvme cachefile - default
nvme failmode wait default
nvme listsnapshots off default
nvme autoexpand off default
nvme dedupratio 1.00x -
nvme free 782G -
nvme allocated 146G -
nvme readonly off -
nvme ashift 12 local
nvme comment - default
nvme expandsize - -
nvme freeing 0 -
nvme fragmentation 12% -
nvme leaked 0 -
nvme multihost off default
nvme checkpoint - -
nvme load_guid [redacted] -
nvme autotrim off default
nvme compatibility off default
nvme bcloneused 0 -
nvme bclonesaved 0 -
nvme bcloneratio 1.00x -
nvme feature@async_destroy enabled local
nvme feature@empty_bpobj active local
nvme feature@lz4_compress active local
nvme feature@multi_vdev_crash_dump enabled local
nvme feature@spacemap_histogram active local
nvme feature@enabled_txg active local
nvme feature@hole_birth active local
nvme feature@extensible_dataset active local
nvme feature@embedded_data active local
nvme feature@bookmarks enabled local
nvme feature@filesystem_limits enabled local
nvme feature@large_blocks enabled local
nvme feature@large_dnode enabled local
nvme feature@sha512 enabled local
nvme feature@skein enabled local
nvme feature@edonr enabled local
nvme feature@userobj_accounting active local
nvme feature@encryption enabled local
nvme feature@project_quota active local
nvme feature@device_removal enabled local
nvme feature@obsolete_counts enabled local
nvme feature@zpool_checkpoint enabled local
nvme feature@spacemap_v2 active local
nvme feature@allocation_classes enabled local
nvme feature@resilver_defer enabled local
nvme feature@bookmark_v2 enabled local
nvme feature@redaction_bookmarks enabled local
nvme feature@redacted_datasets enabled local
nvme feature@bookmark_written enabled local
nvme feature@log_spacemap active local
nvme feature@livelist enabled local
nvme feature@device_rebuild enabled local
nvme feature@zstd_compress enabled local
nvme feature@draid enabled local
nvme feature@zilsaxattr disabled local
nvme feature@head_errlog disabled local
nvme feature@blake3 disabled local
nvme feature@block_cloning disabled local
nvme feature@vdev_zaps_v2 disabled local
答案1
df
将报告使用了多少存储空间通过该挂载点本身,例如当前直接存储在 中的文件/nvme
(不考虑快照或保留)。似乎其中只有一些用于其他挂载点的子文件夹,因此 的使用很少128K
。
然而,该USED
列zfs list
显示了整个子树的使用情况,包括子树(和快照)。
zpool upgrade
通常是安全的;唯一的缺点是该池只能在支持全部已激活的功能,例如,您可能无法使用系统的先前快照或救援映像来打开它。