跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:ZFS 文件系统 Oracle Solaris 11 Information Library (简体中文) |
1. Oracle Solaris ZFS 文件系统(介绍)
3. Oracle Solaris ZFS 与传统文件系统之间的差别
7. 使用 Oracle Solaris ZFS 快照和克隆
8. 使用 ACL 和属性保护 Oracle Solaris ZFS 文件
以下各节提供了用于创建和监视 ZFS 存储池的建议做法。有关解决存储池问题的信息,请参见第 11 章。
通过最新的 Solaris 发行版和修补程序使系统保持最新
根据实际的系统工作负荷确定所需的内存大小
通过已知应用程序内存资源占用(例如,用于数据库应用程序),可以限定 ARC 的大小,这样,应用程序将不需要从 ZFS 高速缓存回收其所需的内存。
考虑重复数据删除内存要求
使用以下命令确定 ZFS 内存使用情况:
# mdb -k > ::memstat Page Summary Pages MB %Tot ------------ ---------------- ---------------- ---- Kernel 388117 1516 19% ZFS File Data 81321 317 4% Anon 29928 116 1% Exec and libs 1359 5 0% Page cache 4890 19 0% Free (cachelist) 6030 23 0% Free (freelist) 1581183 6176 76% Total 2092828 8175 Physical 2092827 8175 > $q
请考虑使用 ECC 内存以避免内存损坏。如果内存损坏而无提示,则可能会损坏数据。
执行定期备份-虽然所创建的具有 ZFS 冗余的池有助于减少因硬件故障而导致的停机时间,但是它不可避免地会受硬件故障、电源故障或断开的电缆的影响。请确保定期备份您的数据。如果数据很重要,则应该对其进行备份。提供数据副本的不同方法如下:
定期或每天创建 ZFS 快照
每周备份 ZFS 池数据。可以使用 zpool split 命令创建 ZFS 镜像存储池的精确副本。
使用企业级备份产品每月进行备份
硬件 RAID
考虑将 JBOD 模式用于存储阵列而不是硬件 RAID,以便 ZFS 可以管理存储和冗余。
使用硬件 RAID 和/或 ZFS 冗余
使用 ZFS 冗余有很多好处-对于生产环境,配置 ZFS 以便它可以修复数据不一致性。无论在底层存储设备上实施的 RAID 级别如何,均可使用 ZFS 冗余,如 RAIDZ、RAIDZ-2、RAIDZ-3、镜像。通过此类冗余,ZFS 可以搜索和修复底层存储设备或它到主机的连接上的故障。
故障转储会占用更多磁盘空间,范围通常为物理内存大小的 1/2- 3/4。
以下各节提供了一般的和较具体的池做法。
使用整个磁盘来启用磁盘写入高速缓存并使维护更轻松。在分片上创建池会增加磁盘管理和恢复工作的复杂性。
使用 ZFS 冗余以便 ZFS 可以修复数据不一致性。
创建非冗余池时,将显示以下消息:
# zpool create tank c4t1d0 c4t3d0 'tank' successfully created, but with no redundancy; failure of one device will cause loss of the pool
对于镜像池,使用镜像磁盘对
对于 RAIDZ 池,为每个 VDEV 组合 3-9 个磁盘
使用热备件以减少因硬件故障而导致的停机时间
使用大小近似的磁盘以便在各个设备之间平衡 I/O
较小的 LUN 可以扩展为大的 LUN
扩展 LUN 时请避免大小差异极大(如 128 MB 到 2 TB),以保持最佳 metaslab 大小
考虑创建一个小的根池和较大的数据池,以支持更快的系统恢复
通过使用 s* 标识符使用分片创建根池。不要使用 p* 标识符。通常,在安装系统时会创建系统的 ZFS 根池。如果要创建另一个根池或者重新创建根池,请使用类似如下内容的语法:
# zpool create rpool c0t1d0s0
或者,创建一个镜像根池。例如:
# zpool create rpool mirror c0t1d0s0 c0t2d0s0
根池必须作为镜像配置或单磁盘配置创建。不支持 RAID-Z 或条带化配置。不能使用 zpool add 命令添加其他磁盘以创建多个镜像顶层虚拟设备,但可以使用 zpool attach 命令扩展镜像虚拟设备。
根池不能有单独的日志设备。
在 AI 安装期间可以设置池属性,但是在根池上不支持 gzip 压缩算法。
通过初始安装创建了根池后,请勿对根池重命名。重命名根池可能会导致系统无法引导。
通过使用 d* 标识符使用整个的磁盘创建非根池。不要使用 p* 标识符。
ZFS 在没有任何其他卷管理软件的情况下工作最佳。
为了获得更出色的性能,请使用单个磁盘,至少也要使用仅由少数几个磁盘组成的 LUN。通过在 LUN 设置中为 ZFS 提供更大的可见性,ZFS 能够更好地进行 I/O 调度决策。
在多个控制器之间创建冗余的池配置,以减少因控制器故障而导致的停机时间。
镜像存储池-占用更多磁盘空间,但通常情况下,对于小的随机读取,性能更好。
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
RAID-Z 存储池-可以使用 3 个奇偶校验策略创建,其中奇偶校验等于 1 (raidz)、2 (raidz2) 或 3 (raidz3)。RAID-Z 配置最大限度地利用了磁盘空间,通常情况下,在以大块(128K 或更大)写入和读取数据时性能良好。
考虑一个单奇偶校验 RAID-Z (raidz) 配置,其中 2 个 VDEV 各有 3 个磁盘 (2+1)。
# zpool create rzpool raidz1 c1t0d0 c2t0d0 c3t0d0 raidz1 c1t1d0 c2t1d0 c3t1d0
RAIDZ-2 配置可提供更高的数据可用性,其性能与 RAID-Z 类似。与 RAID-Z 或双向镜像相比,RAIDZ-2 的数据丢失平均时间 (mean time to data loss, MTTDL) 要好得多。在 6 个磁盘 (4+2) 上创建双奇偶校验 RAID-Z (raidz2) 配置。
# zpool create rzpool raidz2 c0t1d0 c1t1d0 c4t1d0 c5t1d0 c6t1d0 c7t1d0 raidz2 c0t2d0 c1t2d0 c4t2d0 c5t2d0 c6t2d0 c7t2d
RAIDZ-3 配置最大限度地利用了磁盘空间并提供了极佳的可用性,因为它可以承受 3 个磁盘故障。在 9 个磁盘 (6+3) 上创建三重奇偶校验 RAID-Z (raidz3) 配置。
# zpool create rzpool raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 c8t0d0
在创建 Oracle 数据库时,请考虑以下存储池做法。
为池使用镜像池或硬件 RAID
对于随机读取工作负荷,通常不建议使用 RAID-Z 池
为数据库恢复日志创建一个具有单独日志设备的小的单独池
为归档日志创建一个小的单独池
有关更多信息,请参见以下白皮书:
http://blogs.oracle.com/storage/entry/new_white_paper_configuring_oracle
为获得最佳性能,请将池容量保持在 80% 以下
对于随机的读取/写入工作负荷,建议使用镜像池,而不是 RAID-Z 池
单独的日志设备
建议使用以提高同步写入性能
在同步写入负荷很高时,可防止在主池中写入许多日志块而产生分段
建议使用单独的高速缓存设备以改善读取性能
清理/重新同步-具有许多设备的大型 RAID-Z 池需要较长的清理和重新同步时间
池性能很差-可以使用 zpool status 命令来排除导致池性能很差的硬件问题。如果在 zpool status 命令中未揭露出问题,请使用 fmdump 命令显示硬件故障,或者使用 fmdump -eV 命令查看已存在但尚未导致已报告故障的任何硬件错误。
为获得最佳性能,请确保池容量在 80% 以下。
如果池非常满并且文件系统频繁更新(例如,在繁忙的邮件服务器上),池性能可能会降低。池处于已满状态可能会影响性能,但不会产生其他问题。如果主要工作负荷为不可改变的文件,则应将池保持在 95-96% 利用率范围内。即使将大部分静态内容保持在 95-96% 范围内,写入、读取和重新同步性能也会受到影响。
对池和文件系统空间进行监视以确保它们未满。
考虑使用 ZFS 配额和预留空间,以确保文件系统空间不超过池容量的 80%。
监视池运行状况
对于冗余池,使用 zpool status 和 fmdump 监视池,每周监视一次
对于非冗余池,使用 zpool status 和 fmdump 监视池,每周监视两次
定期运行 zpool scrub 以识别数据完整性问题。
如果使用的是使用者质量的驱动器,请考虑制定每周清理计划。
如果使用的是数据中心质量的驱动器,请考虑制定每月清理计划。
在更换设备或暂时减小池的冗余以前也应当运行清理,以确保所有设备当前都是可运转的。
监视池或设备故障-按如下说明使用 zpool status。此外,使用 fmdump 或 fmdump -eV 查看是否已出现任何设备故障或错误。
对于冗余池,使用 zpool status 和 fmdump 监视池运行状况,每周一次
对于非冗余池,使用 zpool status 和 fmdump 监视池运行状况,每两周一次
池设备状态为 UNAVAIL 或 OFFLINE-如果池设备不可用,请检查在 format 命令输出中是否列出了该设备。如果在 format 输出中未列出该设备,则它对 ZFS 将是不可见的。
如果某个池设备具有 UNAVAIL 或 OFFLINE 状态,则这通常表示该设备已出现故障、电缆已断开或者出现某个其他硬件问题,如坏的电缆或坏的控制器已导致设备无法访问。
考虑配置 smtp-notify 服务,以便在硬件组件被诊断为有故障时通知您。有关更多信息,请参见 smf(5) 和 sasinfo(1M) 的“通知参数”部分。
缺省情况下,某些通知设置为自动发送给超级用户。如果您作为超级用户在 /etc/aliases 文件中为您的用户帐户添加了一个别名,则将收到类似以下内容的电子邮件通知:
-------- Original Message -------- Subject: Fault Management Event: tardis:SMF-8000-YX Date: Wed, 21 Sep 2011 11:11:27 GMT From: No Access User <noaccess@tardis.drwho.COM> Reply-To: root@tardis.drwho.COM To: root@tardis.drwho.COM SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Sep 21 11:11:27 GMT 2011 PLATFORM: Sun-Fire-X4140, CSN: 0904QAD02C, HOSTNAME: tardis SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: d9e3469f-8d84-4a03-b8a3-d0beb178c017 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 list 命令和 zfs list 命令来确定文件系统数据占用的磁盘空间。ZFS 快照会占用磁盘空间;如果 zfs list 命令未列出它们,则它们可能暗地里占用磁盘空间。可以使用 zfs list -t 快照命令来确定快照占用的磁盘空间。