在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

解决 ZFS 空间问题

如果不确定 ZFS 如何报告文件系统和池空间记帐信息,请查看以下各节。另请查看ZFS 磁盘空间记帐

ZFS 文件系统空间报告

在确定可用的池和文件系统空间方面,zpool listzfs list 命令要比以前的 dfdu 命令出色。使用传统命令,既不能轻易分辨池和文件系统空间,也不能对后代文件系统或快照使用的空间做出解释。

例如,以下根池 (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  -

ZFS 存储池空间报告

zpool list 命令报告的 SIZE 值通常为池中的物理磁盘空间量,具体大小视池的冗余级别而异。请参见下面的示例。zfs list 命令列出了可供文件系统使用的可用空间,该空间等于磁盘空间减去 ZFS 池冗余元数据开销(若有)。

zfs list 命令将以下 ZFS 数据集配置视为已分配空间,但是在 zpool list 输出中没有将这些配置视为已分配空间:

  • ZFS 文件系统配额

  • ZFS 文件系统预留空间

  • ZFS 逻辑卷大小

以下项说明了不同池配置对 zpool listzfs 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 listzfs 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 listzfs list 都不考虑 NFS 挂载文件系统空间。但是,本地数据文件可能会隐藏在挂载的 NFS 文件系统下。如果您的文件系统空间缺失,请确保没有在 NFS 文件系统下隐藏数据文件。