Proxmox中ZFS顶层数据集df命令显示已用空间为128K而非实际值的问题排查求助
Proxmox中ZFS顶层数据集df命令显示已用空间为128K而非实际值的问题排查求助
我在Proxmox实例里搭了一个ZFS镜像池,现在想把它以只读权限挂载到LXC容器里(尽量不要给完整文件系统权限),这样Homepage就能正常监测它的已用和剩余空间。
之前看其他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数据集吧?为什么这些数据集的空间计算会这么奇怪?
我用zfs list查看了数据集情况:
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是我专门创建的测试数据集,用来观察子数据集的空间计算方式,它的REFER值看起来更反常。
有没有大佬能帮我分析下这是怎么回事?会不会是Debian的ZFS实现有问题?还是df命令本身的逻辑导致的?
另外zpool status提醒我当前zpool有缺失的特性,可以运行zpool upgrade升级,但我不确定这么做是否安全。我的Proxmox用的是新引导工具,不是legacy模式,理论上应该没问题?
我感觉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可能就是df显示值的来源:
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
备注:内容来源于stack exchange,提问作者Drakonas
相关产品推荐
相关产品推荐

