Solaris 10 10/08 发行版中添加了以下系统管理功能和增强功能。
下节概述了 ZFS 文件系统中的新增功能。有关这些新增功能的更多信息,请参见《Solaris ZFS 管理指南》。
ZFS 安装和引导支持-从 Solaris 10 10/08 发行版开始,您可以安装和引导 ZFS 根文件系统。初始安装选项或 JumpStart 功能可用于安装 ZFS 根文件系统。您可以使用 Solaris Live Upgrade 功能将 UFS 根文件系统迁移到 ZFS 根文件系统。此外,还提供了对交换和转储设备的 ZFS 支持。
在不卸载的情况下回滚 ZFS 数据集-从 Solaris 10 10/08 发行版开始,您可以在不事先卸载数据集的情况下回滚数据集。此功能意味着不再需要使用 zfs rollback -f 选项来强制进行卸载操作。-f 选项不再受支持,且将被忽略(如果指定)。
对 zfs send 命令的增强-Solaris 10 10/08 发行版包含对 zfs send 命令的以下增强:
您可以将所有增量流从某个快照发送至一个累积快照。例如:
# zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K - # zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@combo |
此语法说明如何将 fs@snapA 到 fs@snapD 之间的所有增量快照发送到 fs@combo。
您可以从原始快照发送增量流以创建克隆。原始快照必须已存在于接收方之上才能接受增量流。例如:
# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I . . # zfs receive -F pool/clone < /snaps/fsclonesnap-I |
您可以将所有后代文件系统的复制流发送到已命名的快照。接收后,所有属性、快照、后代文件系统和克隆都将被保留。例如:
# zfs send -R pool/fs@snap > snaps/fs-R |
您可以发送增量复制流。
zfs send -R -[iI] @snapA pool/fs@snapD |
有关扩展示例,请参见《Solaris ZFS 管理指南》。
仅限于文件系统数据的 ZFS 配额和预留空间-从 Solaris 10 10/08 发行版开始,会提供数据集配额和预留空间,且不将后代(如快照和克隆)纳入空间消耗计帐。现有的 ZFS 配额和预留空间功能保留与以前的 Solaris 发行版中相同。
refquota 属性限制数据集可消耗的空间量。此属性对可以使用的空间量强制实施硬限制。此硬限制不包括后代(如快照和克隆)所使用的空间。
refreservation 属性设置为数据集(不包括其后代)保留的最小空间量。
例如,您可以为 studentA 设置一个 10 GB 的 refquota,即设置一个 10 GB 的引用空间硬限制。为增加灵活性,可以设置一个 20 GB 配额,以允许您管理 studentA 的快照。
# zfs set refquota=10g tank/studentA # zfs set quota=20g tank/studentA |
ZFS 存储池属性-Solaris 10 10/08 发行版中提供了新的 ZFS 存储池属性信息。
显示所有池属性-您可以使用 zpool get all pool 命令来显示所有的池属性信息。例如:
# zpool get all users NAME PROPERTY VALUE SOURCE users size 16.8G - users used 194K - users available 16.7G - users capacity 0% - users altroot - default users health ONLINE - users guid 14526624140147884971 - users version 10 default users bootfs - default users delegation on default users autoreplace off default users cachefile - default users failmode wait default |
cachefile 属性-此发行版提供 cachefile 属性,该属性用于控制在何处高速缓存池配置信息。系统引导时会自动导入高速缓存中的所有池。但是,安装和群集环境可能需要将此信息高速缓存到不同的位置,以便不会自动导入池。
您可以将此属性设置为在不同的位置高速缓存池配置,以后可以使用 zpool import -c 命令导入该配置。对于大多数 ZFS 配置,不会使用此属性。
cachefile 属性不是持久性的,未存储在磁盘上。此属性替换了以前的 Solaris 发行版中的 temporary 属性,后者用于指明不应高速缓存池信息。
failmode 属性-此发行版提供 failmode 属性,用于确定因缺少设备连接或池中的所有设备出现故障而发生灾难性池故障时的行为。可以将 failmode 属性设置为以下值:wait、continue 或 panic。缺省值为 wait,表示必须重新连接设备或更换出现故障的设备并使用 zpool clear 命令清除错误。
failmode 属性的设置方式与其他可设置的 ZFS 属性类似,可以在创建池前或创建池后进行设置。例如:
# zpool set failmode=continue tank # zpool get failmode tank NAME PROPERTY VALUE SOURCE tank failmode continue local |
# zpool create -o failmode=continue users mirror c0t1d0 c1t1d0 |
ZFS 命令历史记录增强 ( zpool history)-从 Solaris 10 10/08 发行版开始,zpool history 命令提供以下新增功能:
显示 ZFS 文件系统事件信息。例如:
# zpool history users History for 'users': 2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 2008-07-10.09:43:48 zfs create users/home 2008-07-10.09:43:56 zfs create users/home/markm 2008-07-10.09:44:02 zfs create users/home/marks 2008-07-10.09:44:19 zfs snapshot -r users/home@yesterday |
用于显示长格式的 -l 选项,此格式包括用户名、主机名以及从中执行操作的区域。例如:
# zpool history -l users History for 'users': 2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 [user root on corona:global] 2008-07-10.09:43:13 zfs create users/marks [user root on corona:global] 2008-07-10.09:43:44 zfs destroy users/marks [user root on corona:global] 2008-07-10.09:43:48 zfs create users/home [user root on corona:global] 2008-07-10.09:43:56 zfs create users/home/markm [user root on corona:global] 2008-07-10.09:44:02 zfs create users/home/marks [user root on corona:global] 2008-07-11.10:44:19 zfs snapshot -r users/home@yesterday [user root on corona:global] |
用于显示内部事件信息的 -i 选项,这些信息可用于进行诊断。例如:
# zpool history -i users History for 'users': 2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 2008-07-10.09:43:13 [internal create txg:6] dataset = 21 2008-07-10.09:43:13 zfs create users/marks 2008-07-10.09:43:48 [internal create txg:12] dataset = 27 2008-07-10.09:43:48 zfs create users/home 2008-07-10.09:43:55 [internal create txg:14] dataset = 33 2008-07-10.09:43:56 zfs create users/home/markm 2008-07-10.09:44:02 [internal create txg:16] dataset = 39 2008-07-10.09:44:02 zfs create users/home/marks 2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 42 2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 44 2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 46 2008-07-10.09:44:19 zfs snapshot -r users/home@yesterday |
升级 ZFS 文件系统 ( zfs upgrade)-从 Solaris 10 10/08 发行版开始,您可以使用 zfs upgrade 命令升级现有的 ZFS 文件系统,使其具备新的文件系统增强功能。ZFS 存储池具有类似的升级功能,可为现有存储池提供池增强功能。
例如:
# zfs upgrade This system is currently running ZFS filesystem version 2. The following filesystems are out of date, and can be upgraded. After being upgraded, these filesystems (and any 'zfs send' streams generated from subsequent snapshots) will no longer be accessible by older software versions. VER FILESYSTEM --- ------------ 1 datab 1 datab/users 1 datab/users/area51 |
对于已升级的文件系统和通过 zfs send 命令从这些已升级文件系统创建的所有流,无法在运行较早软件发行版的系统上进行访问。
ZFS 委托管理-从 Solaris 10 10/08 发行版开始,您可以将执行 ZFS 管理任务的细化权限委托给非特权用户。
您可以使用 zfs allow 和 zfs 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 属性处于启用状态。
设置单独的 ZFS 日志记录设备-为满足同步事务的 POSIX 要求而提供了 ZFS 意图日志 (ZFS intent log, ZIL)。例如,数据库通常要求其事务在从系统调用中返回时应该在稳定的存储设备上。NFS 和其他应用程序也可以使用 fsync() 来确保数据的稳定性。缺省情况下,ZIL 是通过主存储池中的块分配的。但是,通过在 ZFS 存储池中使用单独的 ZIL 设备(例如使用 NVRAM 或专用磁盘),可能会在 Solaris 10 10/08 发行版中获得更佳性能。
ZIL 的日志设备与数据库日志文件无关。
您可以在创建存储池时或在创建存储池后设置 ZFS 日志记录设备。有关设置日志设备的示例,请参见《Solaris ZFS 管理指南》。
创建中间 ZFS 数据集-从 Solaris 10 10/08 发行版开始,您可以在 zfs create、zfs clone 和 zfs rename 命令中使用 -p 选项来快速创建不存在的中间数据集(如果尚不存在)。
例如,在 datab 存储池中创建 ZFS 数据集 (users/area51)。
# 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 replace 命令。
autoreplace 属性可控制自动设备替换。如果设置为 off,则必须由管理员使用 zpool replace 命令启动设备替换。如果设置为 on,则会自动对在先前属于池的设备的同一物理位置处找到的任何新设备进行格式化和替换。缺省行为为 off。
如果在系统运行期间设备被物理移除,则在移除设备或热备件时,会提供存储池状态 REMOVED。热备用设备(如果有)会替换移除的设备。
如果设备被移除后又重新插入,该设备将联机。如果重新插入设备时热备件处于激活状态,则热备件将在联机操作完成时被移除。
在移除或插入设备时自动检测依赖于硬件,而且并非在所有平台上都受支持。例如,USB 设备会在插入时自动进行配置。但是,您可能必须使用 cfgadm -c configure 命令来配置 SATA 驱动器。
系统会定期检查热备件,以确保它们处于联机状态并可供使用。
有关更多信息,请参见 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 使用 GZIP 压缩-从 Solaris 10 10/08 发行版开始,除了 lzjb 压缩以外,您还可以对 ZFS 文件系统设置 gzip 压缩。可以将压缩指定为 gzip(缺省值),也可以指定为 gzip-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 文件系统可以跨不同磁盘多次自动存储元数据(如有可能)。此功能称为重复块 (ditto blocks)。从 Solaris 10 10/08 发行版开始,可以使用 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 之类的配置中。
有关使用此属性的更多信息,请参见《Solaris ZFS 管理指南》。
以下功能是在以前的 Solaris OS 发行版中引入的:
ZFS 命令历史记录 (zpool history)-在 Solaris 10 8/07 发行版中,ZFS 会自动记录成功修改池状态信息的 zfs 和 zpool 命令。借助此功能,您或 Sun 技术支持人员可以准确找出为排除错误情形而执行的 ZFS 命令。
改进的存储池状态信息 (zpool status)-在 Solaris 10 8/07 发行版中,可以使用 zpool status -v 命令显示具有持久性错误的文件的列表。以前,必须使用 find -inum 命令从显示的 inode 列表中识别文件名。
ZFS 和 Solaris iSCSI 改进-在 Solaris 10 8/07 发行版中,可以通过对 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 目标进行管理的更多信息,请参见《Solaris ZFS 管理指南》。
ZFS 属性改进
ZFS xattr 属性-在 Solaris 10 8/07 发行版中,可以使用 xattr 属性为特定的 ZFS 文件系统禁用或启用扩展属性。缺省值为 on。
ZFS canmount 属性-在 Solaris 10 8/07 发行版中,可以使用 canmount 属性指定是否可以通过 zfs mount 命令挂载数据集。
ZFS 用户属性-在 Solaris 10 8/07 发行版中,ZFS 不但支持可导出内部统计信息或控制 ZFS 文件系统行为的标准本机属性,而且支持用户属性。用户属性对 ZFS 行为没有影响,但可通过用户环境中有意义的信息来注释数据集。
创建 ZFS 文件系统时设置属性-在 Solaris 10 8/07 发行版中,除了在创建文件系统之后设置属性外,还可以在创建文件系统时设置属性。
以下示例演示了等效的语法:
# 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 发行版中,可以使用多种形式的 zfs get 命令来显示有关所有数据集的信息(如果未指定数据集)。在以前的发行版中,使用 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 发行版中,可以在 zfs receive 命令中使用新的 -F 选项,强制文件系统回滚到执行接收操作之前的最新快照。如果在发生回滚和启动接收操作之间的时间内修改了文件系统,可能需要使用此选项。
递归 ZFS 快照-在 Solaris 10 11/06 发行版中,可以使用递归快照。使用 zfs snapshot 命令创建文件系统快照时,可以使用 -r 选项为所有后续文件系统递归创建快照。此外,在销毁快照时,还可使用 -r 选项递归销毁所有后续快照。
双奇偶校验 RAID-Z (raidz2)-在 Solaris 10 11/06 发行版中,复制的 RAID-Z 配置现在可以采用单奇偶校验或双奇偶校验。这意味着,可以分别承受一个或两个设备故障,而不会丢失任何数据。可以为双奇偶校验 RAID-Z 配置指定 raidz2 关键字。或者,可以指定 raidz 或 raidz1 关键字以使用单奇偶校验 RAID-Z 配置。
ZFS 存储池设备的热备件-从 Solaris 10 11/06 发行版开始,可以使用 ZFS 热备件功能来标识磁盘,这些磁盘可用于替换一个或多个存储池中出现故障的设备。指定一个设备作为热备件,意味着如果池中的某一活动设备发生故障,热备件将自动替换该故障设备。或者,也可以用热备件手动替换存储池中的设备。
使用 ZFS 克隆替换 ZFS 文件系统 (zfs promote)-在 Solaris 10 11/06 发行版中,借助 zfs promote 命令,您可以使用现有 ZFS 文件系统的克隆替换该文件系统。当您要在备用版本的文件系统上运行测试而后使其成为活动文件系统时,此功能将很有帮助。
ZFS 和区域改进-在 Solaris 10 11/06 发行版中,对 ZFS 和区域的交互进行了改进。在安装了区域的 Solaris 系统中,可以使用 zoneadm clone 功能在系统上将数据从现有源 ZFS zonepath 复制到目标 ZFS zonepath。不能使用 ZFS 克隆功能来克隆非全局区域。必须使用 zoneadm clone 命令。有关更多信息,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》。
升级 ZFS 存储池 (zpool upgrade)-从 Solaris 10 6/06 发行版开始,可以通过 zpool upgrade 命令将存储池升级到较新的版本,以便利用最新的功能。此外,zpool status 命令已经修改,可在池运行较早的版本时发出通知。
清除设备错误-从 Solaris 10 6/06 发行版开始,可以使用 zpool clear 命令清除与某个设备或池相关的错误计数。以前,错误计数是在使用 zpool online 命令使池中的设备联机时清除的。
恢复已销毁的池-在 Solaris 10 6/06 发行版中,借助 zpool import -D 命令,您可以恢复以前使用 zpool destroy 命令销毁的池。
重命名了 ZFS 备份和恢复命令-在 Solaris 10 6/06 发行版中,zfs backup 和 zfs restore 命令已重命名为 zfs send 和 zfs receive,以便更准确地描述其功能。这些命令的功能是保存和恢复 ZFS 数据流表示。
紧凑 NFSv4 ACL 格式-从 Solaris 10 6/06 发行版开始,有三种 NFSv4 ACL 格式可供使用:详细格式、位置格式和紧凑格式。新增的紧凑和位置 ACL 格式可用于设置和显示 ACL。可以使用 chmod 命令设置所有三种 ACL 格式。可以使用 ls -V 命令显示紧凑 ACL 格式和位置 ACL 格式,使用 ls -v 命令显示详细 ACL 格式。
临时使设备脱机-从 Solaris 10 6/06 发行版开始,可以使用 zpool offline -t 命令临时使设备脱机。重新引导系统时,该设备将自动返回到 ONLINE 状态。
ZFS 与 Fault Manager 集成-从 Solaris 10 6/06 发行版开始,提供了一个 ZFS 诊断引擎,该引擎可诊断并报告池故障和设备故障。此外,还可报告与池或设备故障相关的校验和、I/O 和设备错误。诊断错误信息会写入到控制台和 /var/adm/messages 文件中。另外,还可使用 zpool status 命令显示有关从已报告错误中恢复的详细信息。
有关这些改进和变化的更多信息,请参见《Solaris ZFS 管理指南》。
有关相关 ZFS 功能的信息,请参见以下新增功能小节:
以下 Solaris 安装工具已在 Solaris 10 10/08 发行版中得到增强,可以支持 ZFS 文件系统:
Solaris 交互式文本安装程序,用于安装 UFS 或 ZFS 根文件系统。在 Solaris 10 10/08 发行版中,缺省文件系统仍为 UFS。
自定义 JumpStart 功能,用于设置配置文件,以创建 ZFS 存储池并指定可引导的 ZFS 文件系统。
使用 SolarisTM Live Upgrade 功能将 UFS 根文件系统迁移到 ZFS 根文件系统。lucreate 和 luactivate 命令已得到增强,可支持 ZFS 池和文件系统。lustatus 和 ludelete 命令的工作方式与在以前的 Solaris 发行版中一样。
通过在安装期间选择两个磁盘来设置镜像 ZFS 根池。或者,可以通过在安装后附加或添加其他磁盘来创建镜像 ZFS 根池。
在 ZFS 根池中的 ZFS 卷上自动创建交换和转储设备。
有关更多信息,请参见《Solaris ZFS 管理指南》。
对于以前的 Solaris 10 发行版,请参见 Solaris 安装工具对于 ZFS 文件系统的以下有限支持:
自定义 JumpStart-JumpStart 配置文件中不能包含 ZFS 文件系统。但是,您可以从 ZFS 存储池运行以下脚本来设置安装服务器或安装客户机:
setup_install_server
add_install_server
add_install_client
Live Upgrade-保留初始引导环境并跨 ZFS 存储池传输至新的环境中。当前,不能将 ZFS 用作可引导根文件系统,因此现有 ZFS 文件系统不会复制到引导环境中。
Solaris 初始安装-在初始安装过程中不能识别 ZFS 文件系统。但是,如果未指定任何包含安装时所要使用的 ZFS 存储池的磁盘设备,您应该能够在安装后通过使用 zpool import 命令恢复存储池。有关更多信息,请参见 zpool(1M) 手册页。
与大多数重新安装情形一样,您应该先备份 ZFS 文件,再使用初始安装选项继续执行安装操作。
Solaris 升级-将保留 ZFS 文件系统和存储池。
SunVTSTM 7.0 Patch Set 3 沿用传统的三层体系结构模型,该模型包括一个基于浏览器的用户界面、一个基于 JavaTM 技术的中间服务器和一个诊断代理。SunVTS Patch Set 3 具有以下增强功能:
磁盘和网络测试提供设备选择和取消选择功能。
基于浏览器的 UI 和 TTY UI 提供对逻辑测试 (logical test, LT) 选项中的复选框的支持。
fputest 和高速缓存测试已针对 x86 平台得以增强。
disktest 已更新,且不对文件系统分区执行任何写入测试。
有关 SunVTS 的更多信息,请访问 http://docs.sun.com/app/docs/prod/test.validate。
从 Solaris 10 10/08 发行版开始,显示旋转计数(旋转次数)的 DTrace lockstat 探测器现在会返回旋转时间(以纳秒为单位)。lockstat 提供器接口和 lockstat 命令选项未更改。