下节概述了 ZFS 文件系统中的新增功能。
ZFS 和 Flash 安装支持-在 Solaris 10 10/09 发行版中,您可以设置一个 JumpStart 配置文件来确定 ZFS 根池的 Flash 归档文件。有关更多信息,请参见《Solaris ZFS 管理指南》。
设置 ZFS 用户和组配额-在以前的 Solaris 发行版中,您可以对 ZFS 文件系统应用配额来管理和保留空间。在本 Solaris 发行版中,您可以针对属于特定的用户或组的文件所占用的空间设置配额。在具有大量用户或组的环境中,您可以考虑设置用户和组配额。您可以使用 zfs userspace 和 zfs groupspace 属性设置用户或组配额,如下所示:
# 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 ACL pass through 继承-在以前的 Solaris 发行版中,您可以应用 ACL 继承,以便创建文件时这些文件均具有 0664 或 0666 权限。在本发行版中,如果要选择将文件创建模式中的执行位包含到继承的 ACL 中,则可以使用执行权限的 pass through 继承。
如果在 ZFS 数据集上启用了 aclinherit=passthrough-x,则可以针对通过 cc 或 gcc 工具生成的输出文件包含执行权限。如果继承的 ACL 不包括执行权限,则只有使用 chmod 命令更改文件的权限后才能执行由编译器生成的可执行输出。
在 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 |
有关如何确定您的环境是否适合使用高速缓存设备的信息,请参见《Solaris ZFS 管理指南》。
ZFS 属性增强功能-Solaris 10 10/09 发行版提供以下 ZFS 属性增强功能:
您可以在创建池时设置 ZFS 文件系统属性。在以下示例中,在创建池时创建的 ZFS 文件系统上启用了压缩。
# zpool create -O compression=on pool mirror c0t1d0 c0t2d0 |
您可以在 ZFS 文件系统上设置两个高速缓存属性,可以利用这两个属性来控制在主高速缓存 (ARC) 或二级高速缓存 (L2ARC) 中高速缓存的内容。高速缓存属性设置如下所示:
primarycache-用于控制在 ARC 中高速缓存的内容。
secondarycache-用于控制在 L2ARC 中高速缓存的内容。
您可以对现有文件系统设置这些属性,也可以在创建文件系统时进行设置。例如:
# zfs set primarycache=metadata tank/datab # zfs create -o primarycache=metadata tank/newdatab |
对某些数据集环境而言,不高速缓存用户数据可能会带来一些好处。您需要确定您的环境是否适合设置高速缓存属性。
有关更多信息,请参见《Solaris ZFS 管理指南》。
您可以使用空间使用量属性确定克隆、文件系统和卷的空间使用量,但不能确定快照的空间使用量。这些属性如下所示:
usedbychildren-用于确定此数据集的子数据集使用的空间量,如果销毁此数据集的所有子数据集,将释放此空间。此属性的缩写为 usedchild。
usedbydataset-用于确定此数据集本身使用的空间量,如果在销毁所有快照并删除所有 refreservation 后销毁数据集,将释放此空间。此属性的缩写为 usedds。
usedbyrefreservation-用于确定此数据集上的 refreservation 集使用的空间量,如果删除 refreservation,将释放此空间。此属性的缩写为 usedrefreserv。
usedbysnapshots-用于确定此数据集的快照使用的空间量。特别地,此空间量是销毁此数据集的所有快照后将释放的空间量。请注意,此空间量不是快照的 used 属性的简单总和,因为空间可被多个快照共享。此属性的缩写为 usedsnap。
这些新的属性将 used 属性的值分解为各种占用空间的元素。特别地,used 属性的值分解如下:
used property = usedbychildren + usedbydataset + usedbyrefreservation + usedbysnapshots |
您可以使用 zfs list -o space 命令查看这些属性。例如:
# zfs list -o space NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD pool 33.2G 72K 0 21K 0 51K rpool 27.0G 6.27G 20.5K 97K 0 6.27G rpool/ROOT 27.0G 4.73G 0 21K 0 4.73G rpool/ROOT/zfsBE 27.0G 4.73G 97.5M 4.63G 0 0 rpool/dump 27.0G 1.00G 16K 1.00G 0 0 rpool/export 27.0G 60K 16K 23K 0 21K rpool/export/home 27.0G 21K 0 21K 0 0 rpool/swap 27.5G 553M 0 41.5M 512M 0 |
在本发行版中,在 zfs list 输出中省略了快照。listsnaps 池属性控制是否通过 zfs list 命令显示快照信息。如果您使用 zfs list -t snapshots 命令,将显示快照信息。缺省值为 off,这意味着缺省情况下不显示快照信息。
ZFS 日志设备恢复-在 Solaris 10 10/09 发行版中,ZFS 通过 zpool status 命令指出意图日志 (intent log) 故障。FMA 也报告这些错误。ZFS 和 FMA 都介绍如何从意图日志 (intent log) 故障中恢复。
例如,如果在同步写入操作被提交到具有单独的日志设备的池之前系统突然关闭,您将会在 zpool status 输出中看到意图日志相关错误消息。有关解决日志设备故障的信息,请参见《Solaris ZFS 管理指南》。
使用 ZFS ACL 集-在 Solaris 10 10/09 发行版中,可按组应用 NFSv4 样式的 ACL,而不是单独应用不同的 ACL 权限。提供了以下 ACL 集:
full_set = 所有权限
modify_set = 除 write_acl 和 write_owner 外的所有权限
read_set = read_data、read_attributes、read_xattr 和 read_acl
write_set = write_data、append_data、write_attributes 和 write_xattr
这些 ACL 集是预定义的,不能修改。
有关这些改进和变化的更多信息,请参见《Solaris ZFS 管理指南》。
有关相关 ZFS 功能的信息,请参见以下新增功能小节: