Oracle Solaris ZFS 管理指南

ZFS 中的新增功能

本节概述了 ZFS 文件系统的新增功能。

分割镜像 ZFS 存储池 (zpool split)

Oracle Solaris 10 9/10 发行版:在本 Solaris 发行版中,可以使用 zpool split 命令分割镜像存储池,分离原镜像池中的一个或多个磁盘,创建另一个完全相同的池。

有关更多信息,请参见通过分割镜像 ZFS 存储池创建新池

新 ZFS 系统进程

Oracle Solaris 10 9/10 发行版:在本 Solaris 发行版中,每个 ZFS 存储池都有一个关联的进程 zpool-poolname 。此进程中的线程是用来处理与池相关的 I/O 任务的池 I/O 处理线程,如压缩和校验和等。此进程的作用是使各存储池的 CPU 利用情况具有可见性。使用 psprstat 命令可以查看有关这些进程的信息。这些进程仅在全局区域中可用。有关更多信息,请参见SDC(7)

zpool list 命令的变化

Oracle Solaris 10 9/10 发行版:在本 Solaris 发行版中, zpool list 输出已发生改变,可更好地提供空间分配信息。例如:


# zpool list tank
NAME    SIZE  ALLOC   FREE    CAP  HEALTH  ALTROOT
tank    136G  55.2G  80.8G    40%  ONLINE  -

以前的 USEDAVAIL 字段已被 ALLOCFREE 所取代。

ALLOC 字段表明分配给所有数据集和内部元数据的物理空间量。FREE 字段表明池中未分配的空间量。

有关更多信息,请参见显示有关 ZFS 存储池的信息

ZFS 存储池恢复

Oracle Solaris 10 9/10 发行版:如果底层设备变得不可用,发生电源故障,或者冗余 ZFS 配置中有超过支持数量的设备发生故障,则存储池可能受损。本发行版提供了新的命令功能来恢复受损的存储池。然而,使用此恢复功能会导致存储池出现故障前发生的最后几项事务丢失。

zpool clearzpool import 命令均支持 -F 选项,可用来恢复损坏的存储池。此外,运行 zpool statuszpool clearzpool import 命令会自动报告损坏的池,这些命令会说明如何恢复池。

有关更多信息,请参见修复 ZFS 存储池范围内的损坏

ZFS 日志设备增强功能

Oracle Solaris 10 9/10 发行版:提供下列日志设备增强功能:

三奇偶校验 RAIDZ (raidz3)

Solaris 10 9/10 发行版:在本 Solaris 发行版中,冗余 RAID-Z 配置可以具有单奇偶校验、双奇偶校验或三奇偶校验,这意味着可以分别承受一个、两个或三个设备故障,而不会丢失任何数据。您可以指定 raidz3 关键字以使用三奇偶校验 RAID-Z 配置。有关更多信息,请参见创建 RAID-Z 存储池

保持 ZFS 快照

Oracle Solaris 10 9/10 发行版:如果实施不同的原子快照策略,导致旧的快照由于不再存在于发送侧而被 zfs receive 不小心销毁,则可能需要考虑使用本 Solaris 发行版中的快照保持功能。

保持快照可以防止它被销毁。此外,该功能允许使用 zfs destroy -d 命令在快照的最后一个克隆被删除前即删除该快照。

可以保持一个快照或一组快照。例如,以下语法对 tank/home/cindys/snap@1 设置一个保持标志 keep


# zfs hold keep tank/home/cindys@snap1

有关更多信息,请参见保持 ZFS 快照

ZFS 设备替换增强功能

Oracle Solaris 10 9/10 发行版:在本 Solaris 发行版中,扩展底层设备时会提供系统事件或 sysevent。ZFS 已得到增强,可以识别这些事件,并根据扩展 LUN 的新大小调整存储池,具体取决于 autoexpand 属性的设置。可以使用 autoexpand 池属性决定在收到动态 LUN 扩展事件时是否启用或禁用自动池扩展功能。

通过这些功能可扩展 LUN,由此产生的池可以访问扩展空间,而不必导出和导入池或重新引导系统。

例如,对 tank 池启用自动 LUN 扩展功能。


# zpool set autoexpand=on tank

或者,可以在启用 autoexpand 属性的情况下创建池。


# zpool create -o autoexpand=on tank c1t13d0

autoexpand 属性的缺省设置为禁用,因此您可以决定是否要扩展 LUN。

使用 zpool online - e 命令也可以扩展 LUN。例如:


# zpool online -e tank c1t6d0

或者,在附加 LUN 或利用 zpool replace 功能使其变得可用之后,可以重置 autoexpand 属性。例如,下例利用一个 8-GB 磁盘 (c0t0d0) 创建了一个池。8-GB 磁盘被一个 16-GB 磁盘 (c1t13d0) 替换,但直到启用 autoexpand 属性之后,池大小才会扩展。


# zpool create pool c0t0d0
# zpool list
NAME   SIZE   ALLOC  FREE    CAP   HEALTH  ALTROOT
pool   8.44G  76.5K  8.44G     0%  ONLINE  -
# zpool replace pool c0t0d0 c1t13d0
# zpool list
NAME   SIZE   ALLOC  FREE    CAP   HEALTH  ALTROOT
pool   8.44G  91.5K  8.44G     0%  ONLINE  -
# zpool set autoexpand=on pool
# zpool list
NAME   SIZE   ALLOC  FREE    CAP   HEALTH  ALTROOT
pool   16.8G   91.5K  16.8G    0%  ONLINE  -

在不启用 autoexpand 属性的情况下扩展上例中的 LUN 的另一种方法是使用 zpool online - e 命令,即使该设备已经联机。例如:


# zpool create tank c0t0d0
# zpool list tank
NAME   SIZE   ALLOC  FREE    CAP   HEALTH  ALTROOT
tank   8.44G  76.5K  8.44G     0%  ONLINE  -
# zpool replace tank c0t0d0 c1t13d0
# zpool list tank
NAME   SIZE   ALLOC  FREE    CAP   HEALTH  ALTROOT
tank   8.44G  91.5K  8.44G     0%  ONLINE  -
# zpool online -e tank c1t13d0
# zpool list tank
NAME   SIZE   ALLOC  FREE    CAP   HEALTH  ALTROOT
tank   16.8G    90K  16.8G     0%  ONLINE  -

本发行版的其它设备替换增强功能包括:

有关替换设备的更多信息,请参见替换存储池中的设备

ZFS 和 Flash 安装支持

Solaris 10 10/09 发行版:在此 Solaris 发行版中,您可以设置 JumpStart 配置文件以标识 ZFS 根池的 Flash 归档文件。有关更多信息,请参见安装 ZFS 根文件系统(Oracle Solaris Flash 归档文件安装)

ZFS 用户和组配额

Solaris 10 10/09 发行版:在先前的 Solaris 发行版中,您可以将配额和预留空间应用于 ZFS 文件系统,以管理和预留磁盘空间。

在此 Solaris 发行版中,您可以根据属于特定用户或组的文件所占用的磁盘空间量来设置配额。您可以考虑在拥有大量用户或组的环境中设置用户和组配额。

可以使用 zfs userquota 属性设置用户配额。要设置组配额,请使用 zfs groupquota 属性。例如:


# zfs set userquota@user1=5G tank/data
# zfs set groupquota@staff=10G tank/staff/admins

您可以显示用户或组的当前配额设置,如下所示:


# zfs get userquota@user1 tank/data
NAME       PROPERTY         VALUE            SOURCE
tank/data  userquota@user1  5G               local
# zfs get groupquota@staff tank/staff/admins
NAME               PROPERTY          VALUE             SOURCE
tank/staff/admins  groupquota@staff  10G               local

按以下方式显示常规配额信息:


# zfs userspace tank/data
TYPE        NAME   USED  QUOTA  
POSIX User  root     3K   none  
POSIX User  user1     0    5G  

# zfs groupspace tank/staff/admins
TYPE         NAME   USED  QUOTA  
POSIX Group  root     3K   none  
POSIX Group  staff     0    10G  

您可以查看 userused@user 属性,以显示个别用户的磁盘空间使用情况。使用 groupused@ group 属性可以查看组的磁盘空间使用情况。例如:


# zfs get userused@user1 tank/staff
NAME        PROPERTY        VALUE           SOURCE
tank/staff  userused@user1  213M            local
# zfs get groupused@staff tank/staff
NAME        PROPERTY         VALUE            SOURCE
tank/staff  groupused@staff  213M             local

有关设置用户配额的更多信息,请参见设置 ZFS 配额和预留空间

针对执行权限的 ZFS ACL Passthrough 继承

Solaris 10 10/09 发行版:在先前的 Solaris 发行版中,您可以应用 ACL 继承,以便使用 06640666 权限创建所有文件。在此发行版中,如果要将文件创建模式中的执行位选择性包括在继承的 ACL 中,您可以设置 aclinherit 模式以将执行权限传递给继承的 ACL。

如果在 ZFS 数据集上启用了 aclinherit=passthrough-x,则可以为从 ccgcc 编译器工具生成的输出文件添加执行权限。如果继承的 ACL 不包括执行权限,则只有使用 chmod 命令更改文件的权限后才能执行由编译器生成的可执行输出。

有关更多信息,请参见示例 8–12

ZFS 属性增强功能

Solaris 10 10/09 和 Oracle Solaris 10 9/10:在这些发行版中添加了以下 ZFS 文件系统增强功能。

ZFS 日志设备恢复

Solaris 10 10/09 发行版:在此发行版中,ZFS 使用 zpool status 命令确定意图日志故障。故障管理架构 (Fault Management Architecture, FMA) 也会报告这些错误。ZFS 和 FMA 都介绍如何从意图日志 (intent log) 故障中恢复。

例如,如果系统在将同步写操作提交给具有单独日志设备的池之前突然关闭,您将会看到类似以下内容的信息:


# zpool status -x
  pool: pool
 state: FAULTED
status: One or more of the intent logs could not be read.
        Waiting for adminstrator intervention to fix the faulted pool.
action: Either restore the affected device(s) and run 'zpool online',
        or ignore the intent log records by running 'zpool clear'.
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        FAULTED      0     0     0 bad intent log
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
        logs        FAULTED      0     0     0 bad intent log
          c0t5d0    UNAVAIL      0     0     0 cannot open

您可以通过以下方式解决日志设备故障:

要从此错误中恢复而不更换故障日志设备,可以使用 zpool clear 命令清除该错误。在这种情况下,池将在降级模式下运行,并且日志记录将被写入到主池,直到更换单独的日志设备。

请考虑使用镜像日志设备来避免日志设备故障情形。

在 ZFS 存储池中使用高速缓存设备

Solaris 10 10/09 发行版:在此发行版中,当您创建池时,您可以指定高速缓存设备,以用于缓存存储池数据。

高速缓存设备在主内存和磁盘之间提供了一个进行高速缓存的附加层。使用高速缓存设备,可以最大程度地提高大多数静态内容的随机读取工作的性能。

创建池时,可以指定一个或多个高速缓存设备。例如:


# zpool create pool mirror c0t2d0 c0t4d0 cache c0t0d0
# zpool status pool
  pool: pool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
        cache
          c0t0d0    ONLINE       0     0     0

errors: No known data errors

添加高速缓存设备之后,这些设备中将逐渐填充来自主内存的内容。填充设备可能需要一个小时以上的时间,具体取决于高速缓存设备的大小。可以通过按以下方式使用 zpool iostat 命令来监视容量和读取操作:


# zpool iostat -v pool 5

创建池后,可以在池中添加高速缓存设备或从池中删除高速缓存设备。

有关更多信息,请参见使用高速缓存设备创建 ZFS 存储池示例 4–4

ZFS 环境中的区域迁移

Solaris 10 5/09 发行版:此发行版扩展了使用 Oracle Solaris Live Upgrade 在 ZFS 环境中迁移区域的支持。有关更多信息,请参见使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低Solaris 10 5/09)

有关此发行版的已知问题列表,请参见《Solaris 5 10/09 发行说明》。

ZFS 安装和引导支持

Solaris 10 10/08 发行版:此发行版提供了安装并引导 ZFS 根文件系统的功能。您可以使用初始安装选项或 JumpStart 功能来安装 ZFS 根文件系统。或者,可以使用 Oracle Solaris Live Upgrade 功能将 UFS 根文件系统迁移到 ZFS 根文件系统。此外,还提供了对交换和转储设备的 ZFS 支持。有关更多信息,请参见第 5 章

有关此发行版的已知问题列表,请转至以下网站:

http://hub.opensolaris.org/bin/view/Community+Group+zfs/boot

另请参见 Solaris 10 10/08 发行说明。

在不取消挂载的情况下回滚数据集

Solaris 10 10/08 发行版:此发行版提供了无需事先取消挂载数据集便可进行回滚的功能。因此,不再需要使用 zfs rollback -f 选项来强制进行卸载操作。-f 选项不再受支持且将被忽略(如果指定)。

zfs send 命令的增强

Solaris 10 10/08 发行版:此发行版包括对 zfs send 命令的以下增强。现在您可以使用此命令执行以下任务:

有关更多信息,请参见发送和接收复杂的 ZFS 快照流

仅限于文件系统数据的 ZFS 配额和预留空间

Solaris 10 10/08 发行版:除了现有的 ZFS 配额和预留空间功能以外,此发行版还在磁盘空间记帐中包括不包含后代(如快照和克隆)的数据集配额和预留空间。

例如,您可以为 studentA 设置一个 10 GB 的 refquota 限制,即设置一个 10 GB 的引用磁盘空间硬限制。为增加灵活性,可以设置一个允许您管理 studentA 的快照的 20 GB 配额。


# zfs set refquota=10g tank/studentA
# zfs set quota=20g tank/studentA

有关更多信息,请参见设置 ZFS 配额和预留空间

ZFS 存储池属性

Solaris 10 10/08 发行版:ZFS 存储池属性是在早期发行版中引入的。本发行版提供两个属性:cachefilefailmode

下面说明本发行版提供的新存储池属性:

ZFS 命令历史记录增强 (zpool history)

Solaris 10 10/08 发行版zpool history 命令已得到增强,可以提供以下新增功能:

有关使用 zpool history 命令的更多信息,请参见解决 ZFS 问题

升级 ZFS 文集系统 (zfs upgrade)

Solaris 10 10/08 发行版zfs upgrade 命令包括在此发行版中,用于提供对现有文件系统的未来 ZFS 文件系统增强。ZFS 存储池具有类似的升级功能,可为现有存储池提供池增强功能。

例如:


# zfs upgrade
This system is currently running ZFS filesystem version 3.

All filesystems are formatted with the current version.

注 –

对于已升级的文件系统和通过 zfs send 命令从这些已升级文件系统创建的所有流,无法在运行较早软件发行版的系统上进行访问。


ZFS 委托管理

Solaris 10 10/08 发行版:在此发行版中,您可以授予更为细化的权限,以允许非特权用户执行 ZFS 管理任务。

您可以使用 zfs allowzfs unallow 命令来委托和删除权限。

您可以使用池的 delegation 属性修改委托管理功能。例如:


# zpool get delegation users
NAME  PROPERTY    VALUE       SOURCE
users  delegation  on          default
# zpool set delegation=off users
# zpool get delegation users
NAME  PROPERTY    VALUE       SOURCE
users  delegation  off         local

缺省情况下,delegation 属性处于启用状态。

有关更多信息,请参见第 9 章zfs(1M)

设置单独的 ZFS 日志设备

Solaris 10 10/08 发行版:为了满足同步事务的 POSIX 要求,提供了 ZFS 意图日志 (ZFS intent log, ZIL)。例如,数据库通常要求其事务在从系统调用中返回时应该在稳定的存储设备上。NFS 和其他应用程序也可以使用 fsync() 来确保数据的稳定性。缺省情况下,ZIL 是通过主存储池中的块分配的。在此 Solaris 发行版中,您可以决定是否要继续从主存储池或从单独的日志设备中分配 ZIL 块。通过在 ZFS 存储池中使用单独的意图日志设备(如使用 NVRAM 或专用磁盘)可能会获得更佳的性能。

ZFS 意图日志的日志设备与数据库日志文件无关。

创建存储池时或创建存储池以后,您可以设置 ZFS 日志设备。有关设置日志设备的示例,请参见使用日志设备创建 ZFS 存储池向存储池中添加设备

可以将日志设备附加到现有日志设备,以创建镜像日志设备。此操作等同于在未镜像的存储池中附加设备。

确定设置 ZFS 日志设备是否适合您的环境时,请考虑以下几点:

创建中间 ZFS 数据集

Solaris 10 10/08 发行版:您可以在 -zfs createzfs clonezfs rename 命令中使用 p 选项快速创建不存在的中间数据集(如果尚不存在)。

在以下示例中,ZFS 数据集 (users/area51) 在 datab 存储池中创建。


# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT
datab                       106K  16.5G    18K  /datab
# zfs create -p -o compression=on datab/users/area51

如果中间数据集在创建操作过程中已经存在,该操作会成功完成。

指定的属性应用到目标数据集,而不是中间数据集。例如:


# zfs get mountpoint,compression datab/users/area51
NAME                PROPERTY     VALUE                SOURCE
datab/users/area51  mountpoint   /datab/users/area51  default
datab/users/area51  compression  on                   local

中间数据集是使用缺省挂载点创建的。所有其他属性对中间数据集都是禁用的。例如:


# zfs get mountpoint,compression datab/users
NAME         PROPERTY     VALUE         SOURCE
datab/users  mountpoint   /datab/users  default
datab/users  compression  off           default

有关更多信息,请参见 zfs(1M)

ZFS 热插拔增强功能

Solaris 10 10/08 发行版:在此发行版中,ZFS 能够更有效地响应被移除的设备,现在可以自动识别插入的设备。

有关更多信息,请参见 zpool(1M)

以递归方式重命名 ZFS 快照 (zfs rename -r)

Solaris 10 10/08 发行版:您可以使用 zfs rename -r 命令以递归方式重命名所有的后代 ZFS 快照。例如:

首先创建一组 ZFS 文件系统的快照。


# zfs snapshot -r users/home@today
# zfs list
NAME                     USED  AVAIL  REFER  MOUNTPOINT
users                    216K  16.5G    20K  /users
users/home                76K  16.5G    22K  /users/home
users/home@today            0      -    22K  -
users/home/markm          18K  16.5G    18K  /users/home/markm
users/home/markm@today      0      -    18K  -
users/home/marks          18K  16.5G    18K  /users/home/marks
users/home/marks@today      0      -    18K  -
users/home/neil           18K  16.5G    18K  /users/home/neil
users/home/neil@today       0      -    18K  -

然后在第二天重命名快照。


# zfs rename -r users/home@today @yesterday
# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
users                        216K  16.5G    20K  /users
users/home                    76K  16.5G    22K  /users/home
users/home@yesterday            0      -    22K  -
users/home/markm              18K  16.5G    18K  /users/home/markm
users/home/markm@yesterday      0      -    18K  -
users/home/marks              18K  16.5G    18K  /users/home/marks
users/home/marks@yesterday      0      -    18K  -
users/home/neil               18K  16.5G    18K  /users/home/neil
users/home/neil@yesterday       0      -    18K  -

快照是唯一可以递归方式重命名的数据集类型。

有关快照的更多信息,请参见ZFS 快照概述以及介绍如何创建滚动快照的以下博客条目:

http://blogs.sun.com/mmusante/entry/rolling_snapshots_made_easy

gzip 压缩可用于 ZFS

Solaris 10 10/08 发行版:在此 Solaris 发行版中,除了 lzjb 压缩以外,还可以对 ZFS 文件系统设置 gzip 压缩。可以将压缩指定为 gzipgzip-N,其中 N 的范围是 1 至 9。例如:


# zfs create -o compression=gzip users/home/snapshots
# zfs get compression users/home/snapshots
NAME                  PROPERTY     VALUE            SOURCE
users/home/snapshots  compression  gzip             local
# zfs create -o compression=gzip-9 users/home/oldfiles
# zfs get compression users/home/oldfiles
NAME                  PROPERTY     VALUE           SOURCE
users/home/oldfiles   compression  gzip-9          local

有关设置 ZFS 属性的更多信息,请参见设置 ZFS 属性

存储 ZFS 用户数据的多个副本

Solaris 10 10/08 发行版:作为一项可靠性功能,ZFS 文件系统元数据将跨不同的磁盘多次自动存储(如有可能)。此功能称为重复块 (ditto blocks)

在此 Solaris 发行版中,可以使用 zfs set copies 命令指定用户数据的多个副本也按文件系统进行存储。例如:


# zfs set copies=2 users/home
# zfs get copies users/home
NAME        PROPERTY  VALUE       SOURCE
users/home  copies    2           local

可用的值为 1、2 或 3。缺省值为 1。除了任何池级别的冗余以外,这些副本还用于诸如镜像或 RAID-Z 之类的配置中。

存储 ZFS 用户数据的多个副本的优点如下:


注 –

根据存储池中重复块 (ditto blocks) 的分配,可能会将多个副本置于单个磁盘上。某个后续的满载磁盘故障可能会导致所有重复块 (ditto blocks) 都不可用。


无意中创建了非冗余池时以及需要设置数据保留策略时,可能会考虑使用重复块 (ditto blocks)。

有关在具有单磁盘池或多磁盘池的系统上存储多个副本可能对整体数据保护的影响程度的详细说明,请参见以下博客:

http://blogs.sun.com/relling/entry/zfs_copies_and_data_protection

有关设置 ZFS 属性的更多信息,请参见设置 ZFS 属性

改进的 zpool status 输出

Solaris 10 8/07 发行版:您可以使用 zpool status -v 命令来显示包含持久性错误的文件的列表。以前,必须使用 find -inum 命令从显示的 inode 列表中识别文件名。

有关显示包含持久性错误的文件列表的更多信息,请参见修复损坏的文件或目录

ZFS 和 Solaris iSCSI 改进

Solaris 10 8/07 发行版:在此 Solaris 发行版中,可以通过对 ZFS 卷设置 shareiscsi 属性将 ZFS 卷创建为 Solaris iSCSI 目标设备。此方法是快速设置 Solaris iSCSI 目标的便捷途径。例如:


# zfs create -V 2g tank/volumes/v2
# zfs set shareiscsi=on tank/volumes/v2
# iscsitadm list target
Target: tank/volumes/v2
    iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a
    Connections: 0

创建 iSCSI 目标后,可以设置 iSCSI 启动器。有关设置 Solaris iSCSI 启动器的信息,请参见《系统管理指南:设备和文件系统》中的第 15  章 “配置 Solaris iSCSI 启动器(任务)”

有关将 ZFS 卷作为 iSCSI 目标来管理的更多信息,请参见使用 ZFS 卷作为 Solaris iSCSI 目标

ZFS 命令历史记录 (zpool history)

Solaris 10 8/07 发行版:在此 Solaris 发行版中,ZFS 会自动记录成功修改池状态信息的 zfszpool 命令。例如:


# zpool history
History for 'newpool':
2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0
2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0
2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0
2007-04-25.11:38:09 zfs create newpool/user1
2007-04-25.11:38:15 zfs destroy newpool/user1

History for 'tank':
2007-04-25.11:46:28 zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0

借助此功能,您或 Oracle 技术支持人员可以准确找出为排除错误情形而执行的 ZFS 命令。

可以使用 zpool history 命令标识特定存储池。例如:


# zpool history newpool
History for 'newpool':
2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0
2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0
2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0
2007-04-25.11:38:09 zfs create newpool/user1
2007-04-25.11:38:15 zfs destroy newpool/user1

在此 Solaris 发行版中,zpool history 命令不记录 user-IDhostnamezone-name。但是,从 Solaris 10 10/08 发行版开始记录此信息。有关更多信息,请参见ZFS 命令历史记录增强 (zpool history)

有关 ZFS 问题故障排除的更多信息,请参见解决 ZFS 问题

ZFS 属性改进

ZFS xattr 属性

Solaris 10 8/07 发行版:您可以使用 xattr 属性为特定的 ZFS 文件系统禁用或启用扩展属性。缺省值为 on。有关 ZFS 属性的说明,请参见ZFS 属性介绍

ZFS canmount 属性

Solaris 10 8/07 发行版:借助新的 canmount 属性,您可以指定是否可以使用 zfs mount 命令挂载数据集。有关更多信息,请参见canmount 属性

ZFS 用户属性

Solaris 10 8/07 发行版:除了可用来导出内部统计信息或控制 ZFS 文件系统行为的标准本机属性外,ZFS 还支持用户属性。用户属性对 ZFS 行为没有影响,但可通过用户环境中有意义的信息来注释数据集。

有关更多信息,请参见ZFS 用户属性

在创建 ZFS 文件系统时设置属性

Solaris 10 8/07 发行版:在此 Solaris 发行版中,您可以在创建文件系统时设置属性,而不仅仅是在创建文件系统之后。

以下示例演示了等效的语法:


# zfs create tank/home
# zfs set mountpoint=/export/zfs tank/home
# zfs set sharenfs=on tank/home
# zfs set compression=on tank/home

# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home

显示所有 ZFS 文件系统信息

Solaris 10 8/07 发行版:在此 Solaris 发行版中,您可以使用各种形式的 zfs get 命令来显示有关所有数据集的信息(如果未指定数据集或指定 all)。在早期发行版中,使用 zfs get 命令无法获取所有数据集信息。

例如:


# zfs get -s local all
tank/home               atime          off                    local
tank/home/bonwick       atime          off                    local
tank/home/marks         quota          50G                    local

zfs receive -F 选项

Solaris 10 8/07 发行版:在此 Solaris 发行版中,您可以在 -zfs receive 命令中使用新的 F 选项,强制文件系统回滚到启动接收之前的最近快照。如果文件系统在回滚发生后、启动接收前发生了修改,则可能需要使用该选项。

有关更多信息,请参见接收 ZFS 快照

递归 ZFS 快照

Solaris 10 11/06 发行版:使用 zfs snapshot 命令创建文件系统快照时,可以使用 -r 选项为所有后代文件系统递归创建快照。此外,销毁快照时,可以使用 -r 选项以递归方式销毁所有后代快照。

递归 ZFS 快照可作为一个原子操作快速创建。要么一起创建快照(一次创建所有快照),要么不创建任何快照。这种操作的优点是始终在一个一致的时间捕获快照数据,即使跨后代文件系统也是如此。

有关更多信息,请参见创建和销毁 ZFS 快照

双奇偶校验 RAID-Z (raidz2)

Solaris 10 11/06 发行版:现在,冗余 RAID-Z 配置可以具有单奇偶校验或双奇偶校验配置,这意味着可以分别承受一个或两个设备故障,而不会丢失任何数据。可以为双奇偶校验 RAID-Z 配置指定 raidz2 关键字。还可以为单奇偶校验 RAID-Z 配置指定 raidzraidz1 关键字。

有关更多信息,请参见创建 RAID-Z 存储池zpool(1M)

ZFS 存储池设备的热备件

Solaris 10 11/06 发行版:借助 ZFS 热备件功能,可以确定可用来替换在一个或多个存储池中发生故障或出现错误的设备的磁盘。指定一个设备作为热备件,意味着如果池中的某一活动设备发生故障,热备件将自动替换该故障设备。或者,也可以用热备件手动替换存储池中的设备。

有关更多信息,请参见在存储池中指定热备件zpool(1M)

使用 ZFS 克隆替换 ZFS 文件系统 (zfs promote)

Solaris 10 11/06 发行版:借助 zfs promote 命令,可以使用现有 ZFS 文件系统的克隆来替换该文件系统。如果您希望在某个文件系统的替换版本上运行测试,然后将替换版本变为活动的文件系统,则此功能会很有用。

有关更多信息,请参见使用 ZFS 克隆替换 ZFS 文件系统zfs(1M)

升级 ZFS 存储池 (zpool upgrade)

Solaris 10 6/06 发行版:通过使用 zpool upgrade 命令,可以将存储池升级到更新的 ZFS 版本,以利用最新功能。此外,zpool status 命令已经修改,可在池运行较早版本的 ZFS 时发出通知。

有关更多信息,请参见升级 ZFS 存储池zpool(1M)

如果要在包含来自先前 Solaris 发行版的池的系统上使用 ZFS 管理控制台,请确保在使用控制台之前先升级池。要确定池是否需要升级,请使用 zpool status 命令。有关 ZFS 管理控制台的信息,请参见基于 Web 的 ZFS 管理

ZFS 备份和恢复命令已重命名

Solaris 10 6/06 发行版:在此 Solaris 发行版中,zfs backupzfs restore 命令已分别重命名为 zfs sendzfs receive,以便更准确地描述其功能。这些命令发送和接收 ZFS 数据流表示。

有关这些命令的更多信息,请参见发送和接收 ZFS 数据

恢复已销毁的存储池

Solaris 10 6/06 发行版:此发行版中包括 zpool import -D 命令,通过该命令可以恢复以前使用 zpool destroy 命令销毁的池。

有关更多信息,请参见恢复已销毁的 ZFS 存储池

集成 ZFS 与 Fault Manager

Solaris 10 6/06 发行版:此发行版包括 ZFS 诊断引擎,该诊断引擎可诊断和报告池故障和设备故障。另外,还可与池或设备的故障关联的校验和 I/O 设备和池错误。

该诊断引擎不包括校验和以及 I/O 错误的预测性分析,也不包括基于故障分析的主动操作。

如果发生 ZFS 故障,您可能会看到类似以下的消息:


SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major
EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010
PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo
SOURCE: zfs-diagnosis, REV: 1.0
EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8
DESC: A ZFS device failed.  Refer to http://sun.com/msg/ZFS-8000-D3 for more information.
AUTO-RESPONSE: No automated response will occur.
IMPACT: Fault tolerance of the pool may be compromised.
REC-ACTION: Run 'zpool status -x' and replace the bad device.

通过查看建议的操作(位于 zpool status 命令中的具体指令之后),可快速确定和解决故障问题。

有关从所报告的 ZFS 问题中恢复的示例,请参见解决缺少设备的问题

zpool clear 命令

Solaris 10 6/06 发行版:此发行版包括 zpool clear 命令,该命令用于清除与设备或池关联的错误计数。以前,错误计数是在使用 zpool online 命令使池中的设备联机时清除的。有关更多信息,请参见清除存储池设备错误 和·zpool(1M)

紧凑 NFSv4 ACL 格式

Solaris 10 6/06 发行版:在此发行版中,您可以用两种格式设置和显示 NFSv4 ACL:详细和缩写。可以使用 chmod 命令设置任一种 ACL 格式。可以使用 ls - V 命令显示缩写 ACL 格式。可以使用 ls - v 命令显示详细 ACL 格式。

有关更多信息,请参见以缩写格式设置和显示 ZFS 文件的 ACLchmod(1)ls(1)

文件系统监视工具 (fsstat)

Solaris 10 6/06 发行版fsstat 是一个新的文件系统监视工具,可用于报告文件系统操作。可按挂载点或文件系统类型来报告活动。以下示例显示常规的 ZFS 文件系统活动:


$ fsstat zfs
 new  name   name  attr  attr lookup rddir  read read  write write
 file remov  chng   get   set    ops   ops   ops bytes   ops bytes
7.82M 5.92M 2.76M 1.02G 3.32M  5.60G 87.0M  363M 1.86T 20.9M  251G zfs

有关更多信息,请参见 fsstat(1M)

基于 Web 的 ZFS 管理

Solaris 10 6/06 发行版:ZFS 管理控制台是一个基于 Web 的 ZFS 管理工具,允许您执行以下管理任务:

通过安全 Web 浏览器访问以下网址,可以访问 ZFS 管理控制台:


https://system-name:6789/zfs

如果键入了适当的 URL 但无法访问 ZFS 管理控制台,则表明可能未启动服务器。要启动服务器,请运行以下命令:


# /usr/sbin/smcwebserver start

如果希望服务器在系统引导时自动启动,请运行以下命令:


# /usr/sbin/smcwebserver enable

注 –

不能使用 Solaris Management Console (smc) 管理 ZFS 存储池或文件系统。