本节介绍本发行版中新增的数据管理功能。使用这些功能,可在设计上进行扩展,提供无限容量以适应未来增长;使用这些功能还可以提高数据完整性。
另请参见通过在可信路径中运行来配置不可变区域。
zpool remove 命令可用于移除顶层数据设备。移除顶层数据设备会将该设备中的数据迁移到池中的其余数据设备。zpool status 命令报告移除操作的进度,直到重新同步操作完成。
有关移除顶层数据设备的信息,请参见 Oracle Solaris ZFS Device Removal(Oracle Solaris ZFS 设备移除)、Managing ZFS File Systems in Oracle Solaris 11.4 中的 Removing Devices From a Storage Pool,以及 zpool(8) 手册页。
缺省情况下,ZFS 池清理在后台每隔 30 天运行一次,其运行优先级会自动调整。清理优先级在缺省情况下较低,但在系统空闲时会自动提高。清理优先级会基于指定的清理间隔、进度和系统负载进行调整。上次成功清理的开始时间由 zpool status 命令报告。
可以通过设置 scrubinterval 属性定制池清理计划(包括禁用它)。有关 scrubinterval 和 lastscrub 属性的信息,请参见Managing ZFS File Systems in Oracle Solaris 11.4 中的 Scheduled Data Scrubbing,以及 zpool(8) 手册页。
通过 reflink() 和 reflinkat() 函数,可以使用底层 ZFS 技术快速复制文件。reflink() 函数创建包含现有文件内容的新文件,而不读取或写入底层数据块。现有文件和要创建的文件必须在同一个 ZFS 池中。
有关更多信息,请参见 reflink(3C) 手册页。
cp 命令的 –z 选项(快速复制)使用 reflink。请参见 cp(1) 手册页。
在 Oracle Solaris 11.4 中,可以通过使用原始 ZFS send 流来优化压缩文件系统的 ZFS send 流传输并降低网络传输流量。
在先前的发行版中,压缩 ZFS 文件系统的 send 流是在传输时首次解压缩,之后,会对块进行重新压缩,但前提是在接收端启用了压缩。在 Oracle Solaris 11.4 发行版中,避免使用这两个步骤,因为流中的压缩文件系统块仍保持压缩状态。使用此优化还降低网络传输流量。可以通过使用新的 zfs send –w 选项在原始模式下发送 ZFS send 流来优化该流。启用这个新选项将允许 send 流对原始块的存在性进行编码,以便接收系统在不压缩原始块的情况下处理原始块。
例如,要在启用了压缩的情况下创建 ZFS 文件系统,使用和不使用 –w 选项发送快照流,并查看所得到的流大小:
# zfs create compression=on pond/cdata # cp -r somefiles /pond/data # zfs snapshot pond/cdata@snap1 # zfs get compressratio pond/cdata@snap1 NAME PROPERTY VALUE SOURCE pond/cdata@snap1 compressratio 1.79x - # zfs send pond/cdata@snap1 > /tmp/stream # zfs send -w compress pond/cdata@snap1 > /tmp/cstream # ls -lh /tmp/*stream* -rw-r--r-- 1 root root 126M Feb 15 14:35 /tmp/cstream -rw-r--r-- 1 root root 219M Feb 15 14:35 /tmp/stream
运行先前版本 Oracle Solaris 的系统无法接收此类流,而且将生成错误消息。
有关更多信息,请参见在 Oracle Solaris 12 中管理 ZFS 文件系统。
在 Oracle Solaris 11.4 中,如果网络传输中断或者出现错误,则 ZFS send 流可以在其断开的位置重新启动。
使用 ZFS send 和 receive 在系统之间传输 ZFS 快照,可以方便地复制以前遇到下列问题的 ZFS 文件系统数据:
ZFS send 操作可能会花数小时或数天才能完成。在这段时间内,send 操作可能会由于网络中断或系统故障而中断。
如果 send 操作无法完成,那么,即使它几乎完成,也必须从头开始重新启动。
ZFS send 操作可能无法在中断之间的时间段内传输大型流。
只有在处理完整个流之后,ZFS recv 操作才能检测和报告传输错误。
本 Oracle Solaris 11.4 发行版为 ZFS send 流提供了一种使用以下新选项在中断点处恢复的方式:
zfs receive –C-将接收检查点写入 stdout。
zfs send –C-从 stdin 读取接收检查点。
zfs send –s (nocheck)-禁用新的线上格式。
zfs list –I (state)-以递归方式显示不完整的数据集,因为不完整的数据集在缺省情况下不显示。
有关更多信息,请参见在 Oracle Solaris 12 中管理 ZFS 文件系统。
Oracle Solaris 11.4 发行版提供了限制 ZFS 文件系统对磁盘读写的功能。可以通过设置 readlimit 和 writelimit 属性(以每秒字节数为单位),针对 ZFS 文件系统启用 read 或 write 限制。使用这些功能可以允许您在多租户环境中优化 ZFS I/O 资源。
添加了 defaultwritelimit 和 defaultreadlimit 属性,以增强对大量 ZFS 文件系统的管理能力。如果设置了 defaultwritelimit 和 defaultreadlimit 属性,则所有的后续文件系统都继承所分配的值。如果将缺省的 read 或 write 限制应用于 ZFS 文件系统,则它将仅应用于后续文件系统,而不应用于文件系统本身。为了提供有关文件系统上有效限制的视图,添加了只读的 effectivereadlimit 和 effectivewritelimit 属性。报告的有效限制是父文件系统与所指示的文件系统之间任意一点上的最低数据限制。
例如,将按如下方式设置 read 和 write 限制:
# zfs set writelimit=500mb pond/apps/web # zfs set readlimit=200mb pond/apps/logdata
以下示例说明如何显示 read 和 write 限制:
# zfs get -r writelimit,readlimit pond/apps NAME PROPERTY VALUE SOURCE pond/apps writelimit default default pond/apps readlimit default default pond/apps/logdata writelimit default default pond/apps/logdata readlimit 200M local pond/apps/web writelimit 500M local pond/apps/web readlimit default default pond/apps/web/tier1 writelimit default default pond/apps/web/tier1 readlimit default default
可以按如下方式显示有效的写入限制:
# zfs get effectivewritelimit pond/apps/web NAME PROPERTY VALUE SOURCE pond/apps/web effectivewritelimit 500M local
有关更多信息,请参见在 Oracle Solaris 12 中管理 ZFS 文件系统。
Oracle Solaris 11.4 发行版使用增强功能提供改进的 ZFS 影子迁移操作,从而改善在监视迁移错误和控制进行中迁移时的可见性。引入了下面的新选项:
shadowstat –E 和 –e-提供这两个选项的目的在于监视所有迁移或单个迁移的迁移错误。
shadowadm-控制进行中的迁移。
例如,可以标识多个迁移操作的影子迁移错误:
# shadowstat EST BYTES BYTES ELAPSED DATASET XFRD LEFT ERRORS TIME tank/logarchive 16.4M 195M 1 00:01:20 pond/dbarchive 4.49M 248M - 00:00:51 tank/logarchive 16.6M 194M 1 00:01:21 pond/dbarchive 4.66M 248M - 00:00:52 tank/logarchive 16.7M 194M 1 00:01:22 pond/dbarchive 4.80M 248M - 00:00:53 tank/logarchive 17.1M 194M 1 00:01:23 pond/dbarchive 5.00M 248M - 00:00:54 tank/logarchive 17.3M 194M 1 00:01:24 pond/dbarchive 5.16M 247M - 00:00:55
可以按如下方式标识特定的迁移错误:
# shadowstat -E tank/logarchive: PATH ERROR e-dir/socket Operation not supported pond/dbarchive: No errors encountered.
例如,要在无法迁移已打开的套接字时取消迁移:
# shadowadm cancel tank/logarchive
有关更多信息,请参见在 Oracle Solaris 12 中管理 ZFS 文件系统。
在 Oracle Solaris 11.4 中,在通过 NFS 和服务器消息块 (Server Message Block, SMB) 协议共享 ZFS 文件系统时,新的 ZFS ACL 功能有助于提供更好的体验。为 aclinherit 属性引入了新的继承值,该值允许使用传承语义但会使用在 open、create 或 mkdir 系统调用中请求的值覆盖在继承的 owner@、group@ 和 everyone@ ACE 中设置的权限。设置后,任何可继承的 ACE 都会保留其继承位。此行为非常重要,允许 SMB 和 NFS 共享按照自然方式继承 ACL。新值称为 passthrough-mode-preserve。不会对 aclmode 属性进行任何更改,但是 chmod 操作会相对于 aclinherit 属性考虑继承行为。特别是,它会在 chmod 操作期间保留继承位。
有关更多信息,请参见在 Oracle Solaris 12 中管理 ZFS 文件系统。
Oracle Solaris 11.4 包括服务器对 NFS 版本 4.1 的支持。该协议提供了以下新增功能和注意事项:
Exactly Once 语义 (Exactly Once Semantics, EOS)-为 NFS 版本 4.1 协议提供可靠的重复请求高速缓存。这个重复请求高速缓存保证非幂等请求(如删除请求)仅执行一次,即使在发生瞬间网络故障和重新传送时也是如此。此功能消除了 NFS 版本 3 和 NFS 版本 4 的长期问题。
reclaim_complete-这是一个新增的协议功能,允许服务器在重新启动后快速恢复 NFS 服务。与 NFS 版本 4 不同,用户无需等待特定的时间段(即宽限期)即可返回到服务。使用 reclaim_complete,服务器可以在所有客户机均恢复之后结束宽限期。此功能对于高可用性环境尤其重要。
计划的无宽限恢复 (Planned GRACE-less Recovery, PGR)-允许 Oracle Solaris NFS 版本 4 或 NFS 版本 4.1 服务器在 NFS 服务重新启动或系统正常重新引导之后保留 NFS 版本 4 状态,以便 NFS 版本 4 服务器不进入用来恢复 NFS 版本 4 状态的宽限期。优势在于 NFS 客户机应用程序可以避免在 NFS 服务重新启动和正常系统重新引导之后可能导致 90 秒的数据停机时间。
考虑下面的互操作性问题:
Oracle Solaris NFS 版本 4.1 既支持 Linux 客户机又支持 VMware。但是,在服务器上应当针对 Linux 客户机禁用委托。
在针对 Linux 客户机使用委托时,锁定和状态中恢复存在已知问题。
# sharectl set -p server_delegation=off nfs
在服务器上,可以按如下方式禁用 NFS 版本 4.1 支持:
# sharectl set -p server_versmax=4.0 nfs
有关更多信息,请参见在 Oracle Solaris 12 中管理网络文件系统。
如果使用 NFS 版本 3 挂载文件系统,而且 TCP 是选定的传输机制,则初始挂载设置也将使用 TCP 作为传输机制。在先前的 Oracle Solaris 发行版中,UDP 将用于挂载设置,TCP 将仅在建立了挂载之后使用。
如果您通过防火墙允许 NFS 挂载,则此功能可能会允许您简化防火墙配置。
此功能还允许您在阻止 UDP 通信的站点使用 NFS 版本 3。
有关更多信息,请参见在 Oracle Solaris 12 中管理网络文件系统和 mount_nfs(8) 手册页。
tmpfs 文件系统支持扩展系统属性。请参见 tmpfs(4FS) 和 fgetattr(3C) 手册页。
Oracle Solaris 11.4 在 Oracle Solaris SMB 服务器中提供 SMB 3.1.1 协议支持,该服务器包括下面的 SMB 功能:
连续可用的共享-此功能允许 Oracle Solaris SMB 服务器使共享在服务器崩溃或重新引导时连续可用。
多通道-此功能允许 Oracle Solaris SMB 文件服务器上的每个 SMB 会话使用多个网络连接,以提高吞吐量和容错能力。
加密-此功能允许 Oracle Solaris SMB 服务器加密客户机和服务器之间的 SMB 网络通信。SMB 加密保护 SMB 会话并抵御篡改和窃听攻击。
有关更多信息,请参见Managing SMB File Sharing and Windows Interoperability in Oracle Solaris 11.4,以及 smbstat(8) 手册页。