如果不确定 ZFS 如何报告文件系统和池空间记帐信息,请查看以下各节。另请查看ZFS 磁盘空间记帐。
在确定可用的池和文件系统空间方面,zpool list 和 zfs list 命令要比以前的 df 和 du 命令出色。使用传统命令,既不能轻易分辨池和文件系统空间,也不能对后代文件系统或快照使用的空间做出解释。
例如,以下根池 (rpool) 有 5.46 GB 的已分配空间和 68.5 GB 的空闲空间。
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 74G 5.46G 68.5G 7% 1.00x ONLINE -
如果通过查看各个文件系统的 USED 列来比较池空间记帐和文件系统空间记帐,则会看到 ALLOC 中报告的池空间可以用文件系统的 USED 总和来计算。例如:
# zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool 5.41G 67.4G 74.5K /rpool rpool/ROOT 3.37G 67.4G 31K legacy rpool/ROOT/solaris 3.37G 67.4G 3.07G / rpool/ROOT/solaris/var 302M 67.4G 214M /var rpool/dump 1.01G 67.5G 1000M - rpool/export 97.5K 67.4G 32K /rpool/export rpool/export/home 65.5K 67.4G 32K /rpool/export/home rpool/export/home/admin 33.5K 67.4G 33.5K /rpool/export/home/admin rpool/swap 1.03G 67.5G 1.00G -
由 zpool list 命令报告的 SIZE 值通常为池中的物理磁盘空间量,具体大小视池的冗余级别而异。请参见下面的示例。zfs list 命令列出了可供文件系统使用的可用空间,该空间等于磁盘空间减去 ZFS 池冗余元数据开销(若有)。
zfs list 命令将以下 ZFS 数据集配置视为已分配空间,但是在 zpool list 输出中没有将这些配置视为已分配空间:
ZFS 文件系统配额
ZFS 文件系统预留空间
ZFS 逻辑卷大小
以下项说明了不同池配置对 zpool list 和 zfs list 输出的影响:
非冗余存储池-当池是使用一个 136 GB 的磁盘创建时,zpool list 命令会将 SIZE 值和初始的 FREE 值报告为 136 GB。由于存在少量的池元数据开销,因此 zfs list 命令报告的初始 AVAIL 空间为 134 GB。例如:
# zpool create tank c0t6d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
镜像的存储池-当使用两个 136 GB 的磁盘创建一个池时,zpool list 命令会报告 SIZE 为 136 GB,初始 FREE 值为 136 GB。此处报告的是已压缩空间值。由于存在少量的池元数据开销,因此 zfs list 命令报告的初始 AVAIL 空间为 134 GB。例如:
# zpool create tank mirror c0t6d0 c0t7d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
RAID-Z 存储池-当 raidz2 池是使用三个 136 GB 的磁盘创建时,zpool list 命令会将 SIZE 值和初始 FREE 值均报告为 408 GB。此处报告的是已解压磁盘空间值,其中包括冗余开销,如奇偶校验信息。由于存在池冗余开销,因此 zfs list 命令报告的初始 AVAIL 空间为 133 GB。zpool list 和 zfs list 输出的 RAID-Z 池空间存在差异的原因在于,zpool list 报告的是“已解压的”池空间。
# zpool create tank raidz2 c0t6d0 c0t7d0 c0t8d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 408G 286K 408G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 73.2K 133G 20.9K /tank
有关 recordsize 更改对 RAIDZ 空间记帐的影响,请参见ZFS 磁盘空间记帐。
NFS 挂载文件系统空间-zpool list 或 zfs list 都不考虑 NFS 挂载文件系统空间。但是,本地数据文件可能会隐藏在挂载的 NFS 文件系统下。如果您的文件系统空间缺失,请确保没有在 NFS 文件系统下隐藏数据文件。