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

退出打印视图

更新时间: 2014 年 12 月
 
 

显示有关 ZFS 存储池的信息

可以使用 zpool list 命令显示有关池的基本信息。

显示有关所有存储池或某个特定池的信息

不带任何参数时,zpool list 命令显示有关系统上所有池的下列信息。

# zpool list
NAME                    SIZE    ALLOC   FREE    CAP  HEALTH     ALTROOT
tank                   80.0G   22.3G   47.7G    28%  ONLINE     -
dozer                   1.2T    384G    816G    32%  ONLINE     -

此命令输出显示以下信息:

NAME

池的名称。

SIZE

池的总大小,等于所有顶层虚拟设备大小的总和。

ALLOC

分配给所有数据集和内部元数据的物理空间量。请注意,此数量与在文件系统级别报告的磁盘空间量不同。

有关确定可用文件系统空间的更多信息,请参见ZFS 磁盘空间记帐

FREE

池中未分配的空间量。

CAP (CAPACITY)

已用磁盘空间量,以总磁盘空间的百分比表示。

HEALTH

池的当前运行状况。

有关池运行状况的更多信息,请参见确定 ZFS 存储池的运行状况

ALTROOT

池的备用根(如有)。

有关备用根池的更多信息,请参见通过备用根位置使用 ZFS 池

通过指定池名称,您还可以为特定池收集统计信息。例如:

# zpool list tank
NAME                    SIZE    ALLOC   FREE    CAP   HEALTH     ALTROOT
tank                   80.0G    22.3G   47.7G    28%  ONLINE     -

可以使用 zpool list 的时间间隔和计数选项收集一定时期内的统计信息。此外,使用 –T 选项可以显示时间戳。例如:

# zpool list -T d 3 2
Tue Nov  2 10:36:11 MDT 2010
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
pool   33.8G  83.5K  33.7G     0%  1.00x  ONLINE  -
rpool  33.8G  12.2G  21.5G    36%  1.00x  ONLINE  -
Tue Nov  2 10:36:14 MDT 2010
pool   33.8G  83.5K  33.7G     0%  1.00x  ONLINE  -
rpool  33.8G  12.2G  21.5G    36%  1.00x  ONLINE  -

按物理位置显示池设备

可以使用 zpool status –l 选项显示有关池设备的物理位置的信息。当需要以物理方式移除或替换磁盘时,查看物理位置信息很有帮助。

此外,可以使用 fmadm add-alias 命令来引入磁盘别名,磁盘别名可帮助您识别磁盘在您的环境中的物理位置。例如:

# fmadm add-alias SUN-Storage-J4400.1002QCQ015 Lab10Rack5...
# zpool status -l tank
pool: tank
state: ONLINE
scan: scrub repaired 0 in 0h0m with 0 errors on Fri Aug  3 16:00:35 2012
config:

NAME                                            STATE     READ  WRITE  CKSUM
tank                                            ONLINE       0      0      0
   mirror-0                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_02/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_20/disk   ONLINE       0      0      0
   mirror-1                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_22/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_14/disk   ONLINE       0      0      0
   mirror-2                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_10/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_16/disk   ONLINE       0      0      0
   mirror-3                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_01/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_21/disk   ONLINE       0      0      0
   mirror-4                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_23/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_15/disk   ONLINE       0      0      0
   mirror-5                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_09/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_04/disk   ONLINE       0      0      0
   mirror-6                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_08/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_05/disk   ONLINE       0      0      0
   mirror-7                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_07/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_11/disk   ONLINE       0      0      0
   mirror-8                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_06/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_19/disk   ONLINE       0      0      0
   mirror-9                                     ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_00/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_13/disk   ONLINE       0      0      0
   mirror-10                                    ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_03/disk   ONLINE       0      0      0
      /dev/chassis/Lab10Rack5.../DISK_18/disk   ONLINE       0      0      0
   spares
      /dev/chassis/Lab10Rack5.../DISK_17/disk   AVAIL
      /dev/chassis/Lab10Rack5.../DISK_12/disk   AVAIL

errors: No known data errors

显示特定的存储池统计信息

可以使用 –o 选项请求特定的统计信息。使用此选项可以生成定制报告或快速列出相关信息。例如,要仅列出每个池的名称和大小,可使用以下语法:

# zpool list -o name,size
NAME                    SIZE
tank                   80.0G
dozer                   1.2T

列名称与显示有关所有存储池或某个特定池的信息中列出的属性相对应。

使用脚本处理 ZFS 存储池输出

zpool list 命令的缺省输出目的在于提高可读性,因此不能轻易用作 shell 脚本的一部分。为了便于在程序中使用该命令,可以使用 –H 选项以便不显示列标题,并使用制表符而不是空格分隔字段。例如,要请求系统中所有池的名称列表,可以使用以下语法:

# zpool list -Ho name
tank
dozer

以下是另一个示例:

# zpool list -H -o name,size
tank   80.0G
dozer  1.2T

显示 ZFS 存储池命令历史记录

ZFS 会自动记录成功修改池状态信息的 zfszpool 命令。使用 zpool history 命令可显示此信息。

例如,以下语法显示了根池的命令输出:

# zpool history
History for 'rpool':
2012-04-06.14:02:55 zpool create -f rpool c3t0d0s0
2012-04-06.14:02:56 zfs create -p -o mountpoint=/export rpool/export
2012-04-06.14:02:58 zfs set mountpoint=/export rpool/export
2012-04-06.14:02:58 zfs create -p rpool/export/home
2012-04-06.14:03:03 zfs create -p -V 2048m rpool/swap
2012-04-06.14:03:08 zfs set primarycache=metadata rpool/swap
2012-04-06.14:03:09 zfs create -p -V 4094m rpool/dump
2012-04-06.14:26:47 zpool set bootfs=rpool/ROOT/s11u1 rpool
2012-04-06.14:31:15 zfs set primarycache=metadata rpool/swap
2012-04-06.14:31:46 zfs create -o canmount=noauto -o mountpoint=/var/share rpool/VARSHARE
2012-04-06.15:22:33 zfs set primarycache=metadata rpool/swap
2012-04-06.16:42:48 zfs set primarycache=metadata rpool/swap
2012-04-09.16:17:24 zfs snapshot -r rpool/ROOT@yesterday
2012-04-09.16:17:54 zfs snapshot -r rpool/ROOT@now

您可以使用有关系统的类似输出来确定对错误状况进行故障排除时所执行的确切 ZFS 命令。

历史记录日志有如下特点:

  • 不能禁用日志。

  • 日志持久保存在磁盘上,这意味着系统重新引导后,将保存日志。

  • 日志作为环形缓冲区来实现。最小大小为 128 KB。最大大小为 32 MB。

  • 对于较小的池,日志最大大小的上限设置为池大小的 1%,而池大小是在创建池时确定的。

  • 日志无需任何管理,这意味着不需要调整日志大小或更改日志位置。

要确定特定存储池的命令历史记录,请使用类似以下内容的语法:

# zpool history tank
2012-01-25.16:35:32 zpool create -f tank mirror c3t1d0 c3t2d0 spare c3t3d0
2012-02-17.13:04:10 zfs create tank/test
2012-02-17.13:05:01 zfs snapshot -r tank/test@snap1

可使用 –l 选项显示长格式(包括用户名、主机名和执行操作的区域)。例如:

# zpool history -l tank
History for 'tank':
2012-01-25.16:35:32 zpool create -f tank mirror c3t1d0 c3t2d0 spare c3t3d0
[user root on tardis:global]
2012-02-17.13:04:10 zfs create tank/test [user root on tardis:global]
2012-02-17.13:05:01 zfs snapshot -r tank/test@snap1 [user root on tardis:global]

可使用 –i 选项显示可用于诊断目的的内部事件信息。例如:

# zpool history -i tank
History for 'tank':
2012-01-25.16:35:32 zpool create -f tank mirror c3t1d0 c3t2d0 spare c3t3d0
2012-01-25.16:35:32 [internal pool create txg:5] pool spa 33; zfs spa 33; zpl 5;
uts tardis 5.11 11.1 sun4v
2012-02-17.13:04:10 zfs create tank/test
2012-02-17.13:04:10 [internal property set txg:66094] $share2=2 dataset = 34
2012-02-17.13:04:31 [internal snapshot txg:66095] dataset = 56
2012-02-17.13:05:01 zfs snapshot -r tank/test@snap1
2012-02-17.13:08:00 [internal user hold txg:66102] <.send-4736-1> temp = 1 ...