1 部署 Oracle HSM 解决方案

总的来说,Oracle Hierarchical Storage Manager and StorageTek QFS Software (Oracle HSM) 的部署是一个相当简单的过程。安装软件包,编辑几个配置文件,运行几条命令,然后挂载并使用新的文件系统。不过,Oracle HSM 还提供了各种选项和调整参数。这些额外的功能可让您解决几乎任何特殊需求。但不需要的功能也会使部署变得复杂并使生成的解决方案不尽人意。

因此,本文档旨在指导您完成严格遵守详细解决方案要求的 Oracle HSM 部署。首先介绍基本 QFS 和 Oracle HSM 文件系统的工作原理、安装和配置。这些文件系统将凭借自身满足您的所有要求,或形成更专业的解决方案的基础。在基础工作完成后,您可以转到附加功能的配置过程,以支持特定环境和专业的业务需求。您将执行以下核心任务:

  • 配置硬件和操作系统软件以满足要求。

  • 配置所需的基础 QFS 和/或 Oracle HSM 文件系统,尽可能接受默认设置。

  • 配置需求中所要求的任何附加 Oracle HSM 功能。

  • 备份您的最终配置并移交供测试和生产使用。

在整个计划和部署过程中,记住 QFS 和 Oracle HSM 的目的在于提供一个简单的 UNIX 文件系统接口,而将性能优化、数据保护和归档的复杂性隐藏起来。用户、应用程序以及管理员(大多数情况下为管理员)应该能够方便地使用在磁盘阵列和磁带库混合环境中实施的经过充分优化的 Oracle HSM 归档系统,就像它是在单一本地磁盘上实施的普通 UFS 文件系统一样。安装和配置 Oracle HSM 软件后,该软件自动以尽可能最高效、最可靠的方式管理数据和存储资源,所需的人为干预极少。文件系统和存储资源过于复杂的实施和过多的微观管理都将危害 Oracle HSM 部署的关键目标,同时通常会损害性能、容量利用率和/或数据保护。

本简介的其余部分建议介绍了 QFS 文件系统Oracle HSM 归档文件系统。对此信息有个基本了解,会使后续配置步骤的作用理解起来更加轻松。

QFS 文件系统

QFS 文件系统使您能够将完全优化的定制存储解决方案与标准 UNIX 接口相结合。在内部,它们管理物理存储设备以满足严格且通常高度专业化的性能要求。但它们作为普通 UNIX 文件系统呈现给外部用户、应用程序和操作系统。因此,您可以使用复杂的存储硬件系列满足专业的性能和数据保护要求,并且仍能保证与现有应用程序和业务流程的直接集成。

QFS 文件系统使用不可分割的 QFS 卷管理器管理其自己的物理存储。QFS 软件将标准物理存储设备组织成高度优化且与标准接口完全兼容的逻辑设备。软件封装特定功能和定制设置,以便它们仍在操作系统和应用程序中隐藏。对于后者,QFS 软件通过标准的 Solaris 设备驱动程序呈现处理 I/O 请求的逻辑系列集设备(类似单一磁盘)。这种标准符合性和可协调性的结合将 QFS 与其他 UNIX 文件系统区分开来。

本节的其余部分从 QFS 默认值和 I/O 性能调整的简短讨论开始,然后描述了核心工具,可用于控制您创建的文件系统的 I/O 行为:

QFS 默认值和 I/O 性能调整目标

磁盘 I/O(输入/输出)涉及 CPU 密集型操作系统请求和耗时的机械过程。因此 I/O 性能调整重点是最大程度地减少 I/O 相关系统开销,并且使传输指定数量的数据所需的机械工作保持绝对最少。这意味着减少每次数据传输的独立 I/O 数量(因而减少 CPU 执行的操作数量),并最大程度减少在每个独立 I/O 期间的寻道(重新定位读/写头)。因而 I/O 调整的基本目标如下:

  • 在均匀地划分为平均文件大小的块中读取和写入数据。

  • 读取和写入大型数据块。

  • 在与底层介质的 512 字节的扇区边界对齐的单元中写入块,以便磁盘控制器在写入新数据之前不必读取和修改现有数据。

  • 使小型 I/O 在高速缓存中排队等候并将较大的合并 I/O 写入磁盘。

Oracle HSM 默认设置为大部分通用文件系统的一系列典型应用程序和使用模式提供了最佳整体性能。但在必要时,您可调整默认行为以更好地与您的应用程序生成的 I/O 类型相匹配。可以指定最少连续读取或写入的大小。可以优化在设备上存储文件的方法。可以从针对通用性或高性能优化的文件系统之间进行选择。

磁盘分配单元和逻辑设备类型

文件系统按统一大小的块分配磁盘存储。此大小即磁盘分配单元 (disk allocation unit, DAU),将确定每个 I/O 操作使用的最小连续空间量(无论写入多少数据量)以及在传输指定大小的文件时所需的 I/O 操作最小数量。如果块大小与文件的平均大小相比太大,则将浪费磁盘空间。如果块大小太小,则每次文件传输将需要更多 I/O 操作,这将损害性能。因此,在文件大小为基本块大小的偶数倍时,I/O 性能和存储效率最高。

出于这个原因,QFS 软件支持各种可配置 DAU 大小。创建 QFS 文件系统时,首先确定需要访问和存储的数据文件的平均大小。然后指定最均匀地划分为平均文件大小的 DAU。

首先选择最适合您的数据的 QFS 设备类型。有三种类型:

  • md 设备

  • mr 设备

  • gXXX 分散读写组设备(其中 XXX 是范围 [0-127] 内的整数。

当文件系统将主要包含小文件或包含混合大小文件时,通常 md 设备是最佳选择。md 设备类型使用灵活的双重分配方案。将文件写入设备时,文件系统将对前八次写入使用 4 KB 的小 DAU。接下来,它使用 163264 KB 的用户选择的大 DAU 写入任何剩余数据。小文件因而将写入合适的小型块,而大文件将写入针对其平均大小定制的大型块。

当文件系统将主要包含大文件和/或大小一致的文件时,mr 设备可能是更好的选择。mr 设备类型使用在范围 [8-65528] KB 中可按 8 KB 增量调整的 DAU。文件将写入非常接近平均文件大小的大型统一块,因此将最大程度降低读取/修改/写入开销并最大程度地提高性能。

分散读写组是均被视为单一逻辑设备的多达 128 个设备的聚合。类似于 mr 设备类型,分散读写组使用在范围 [8-65528] KB 中可按 8 KB 增量调整的 DAU。文件系统按每个磁盘一个 DAU 的方式,将数据并行写入分散读写组成员。因此聚合写入可能非常大。这使分散读写组在必须处理极大数据文件的应用程序中可能非常有用。

文件分配方法

默认情况下,非共享 QFS 文件系统使用分散读写分配,而共享文件系统使用循环分配。但您可在必要时更改分配。每种方法在一些情况下具有优势。

分散读写分配

指定分散读写分配之后,文件系统将在所有可用设备上并行分配空间。文件系统将数据文件分段并将一个段写入每个设备。每个段的大小由分散读写宽度(每个设备写入的 DAU 数)乘以系列集中的设备数量确定。设备可以是 md 磁盘设备、mr 磁盘设备或分散读写组。

分散读写一般会提高性能,因为文件系统并发读取而不是顺序读取多个文件段。单个设备上将并行出现多个 I/O 操作,从而减少每个设备的寻道开销。

不过,一次写入多个文件时,分散读写分配会产生高得多的寻道。过多寻道可能会导致性能严重降级,因此,如果您打算进行多个文件的同步 I/O,应考虑循环分配。

循环分配

指定循环分配之后,文件系统将连续分配存储空间,一次一个文件,并且一次一个设备。文件系统将文件写入具有可用空间的第一个设备。如果文件大于设备上剩余的空间,则文件系统会将超过的大小写入下一个具有可用空间的设备。对于之后的每个文件,文件系统将移至下一个可用设备并重复此过程。当使用完最后一个可用设备时,文件系统将重新开始使用第一个设备。设备可以是 md 磁盘设备、mr 磁盘设备或分散读写组。

当应用程序同步执行多个文件的 I/O 时,循环分配可提高性能。此外,它对于共享 QFS 文件系统是默认设置(有关共享文件系统的更多信息,请参见使用 Oracle HSM 软件从多台主机访问文件系统mount_samfs 手册页)。

存储分配和集成卷管理

与仅为一个设备或设备的一部分寻址的 UNIX 文件系统不同,QFS 文件系统执行其自己的卷管理。每个文件系统在内部处理提供物理存储的设备之间的关系,然后作为单一系列集 向操作系统提供存储。I/O 请求是通过标准 Solaris 设备驱动程序接口发出的,这与任何 UNIX 文件系统相同。

文件系统类型

有两种类型的 QFS 文件系统。每种文件系统有其自身的优势:

通用 ms 文件系统

QFS ms 文件系统实施起来最简单,非常适合大多数常见用途。这些文件系统将文件系统元数据与文件数据一起存储在相同的双重分配 md 磁盘设备上。该方法可简化硬件配置并能满足大多数需求。

高性能 ma 文件系统

QFS ma 文件系统可以提高严苛的应用中的数据传输速率。这些文件系统在专用设备上分开存储元数据和数据。元数据保存在 mm 设备上,而数据保存在一组 md 磁盘设备、mr 磁盘设备或分散读写组上。因此,元数据更新不会与用户和应用程序 I/O 竞争,并且设备配置无需适应两种不同种类的 I/O 工作负荷。例如,您可以将元数据放置在 RAID-10 镜像磁盘上以实现高冗余和快速读取,并将数据保存在空间效率更高的 RAID-5 磁盘阵列上。

Oracle HSM 归档文件系统

归档文件系统将一个或多个 QFS mams 类型的文件系统与归档存储和 Oracle Hierarchical Storage Manager 软件组合在一起。Oracle HSM 软件将文件从文件系统的磁盘高速缓存复制到辅助磁盘存储和/或可移除介质中。该软件将副本作为文件系统不可分割的一部分进行管理。因此,文件系统将提供连续数据保护以及灵活有效地存储超大文件的能力,这些文件存储在磁盘或固态介质上的开销会非常昂贵。

正确配置的 Oracle HSM 文件系统将在不需要独立备份应用程序的情况下提供连续数据保护。该软件在文件创建或更改时按照用户定义的策略中的指定自动复制文件数据。在混用磁盘和磁带介质的情况下,使用本地和远程资源可以保留多达四个副本。文件系统元数据将记录文件和所有副本的位置。软件将提供一系列快速查找副本的工具。因此,丢失或损坏的文件可从归档中轻松恢复。备份副本将使用符合 POSIX 标准的 tar(磁带归档)标准格式保留,这还使您能够在即使 Oracle HSM 软件不可用的情况下恢复数据。Oracle HSM 通过动态检测 I/O 错误并从此类错误恢复,随时保持文件系统元数据的一致性。因此,您可以恢复文件系统而无需执行耗时的完整性检查,这在存储成千上万个文件和 PB 级数据时是需要特别注意的事项。如果文件系统元数据存储在单独的设备上,并且仅涉及到数据存储磁盘,则在将替换磁盘配置为文件系统时,会执行完全恢复。当用户请求位于失败磁盘上的文件时,Oracle HSM 会自动将磁带中的备份副本回写到替换磁盘。如果元数据也丢失了,则管理员可使用 samfsrestore 命令从 samfsdump 备份文件恢复它。在恢复元数据后,文件可在用户请求它们时重新从磁带中恢复。由于文件仅在请求时才恢复到磁盘,因此恢复过程将有效使用网络带宽并且对正常操作的影响极小。

这种在高性能的主磁盘或固态介质和低成本、高密度的辅助磁盘、磁带或光盘介质上同步管理文件的能力,使得 Oracle HSM 文件系统非常适合经济地存储非常大和/或很少使用的文件。非常大、连续访问的数据文件(例如卫星图像和视频文件)可专门存储在磁带上。当用户或应用程序访问文件时,文件系统会自动将文件回写到磁盘或直接从磁带将其读入内存中,这取决于所选文件配置。对于主要出于历史记录或符合性目的而保留的记录,可以使用与文件生命周期的某个指定时间的用户访问模式和成本限制最一致的介质,按分层结构方式进行存储。最初,当用户仍偶尔访问某个文件时,可以将其归档在低成本的辅助磁盘设备上。随着需求减少,您可以仅在磁带或光盘介质上保留副本。但是,例如,当用户需要数据来响应法律取证或法规流程时,文件系统可自动将所需材料回写到延迟最小的主磁盘上,就像它一直在这里。出于法律和法规目的,Oracle HSM 文件系统可启用 WORM。启用 WORM 的文件系统支持默认的和可定制的文件保留期、数据和路径的不可更改性以及 WORM 设置的子目录继承性。可使用手动和/或自动介质验证来监视长期数据完整性。

管理和维护归档文件系统有四个基本的 Oracle HSM 过程:

归档

归档过程将文件从文件系统复制到保留用来存储活动文件副本的归档介质。归档介质可以包括可移除介质卷,如盒式磁带和/或一个或多个位于磁盘或固态存储设备上的文件系统。归档文件副本可以为活动文件、长期保留的不活动文件或这两种文件的某些组合提供备份冗余。

在 Oracle HSM 归档文件系统中,活动的联机文件、归档副本和关联存储资源将构成一个逻辑资源,即归档集。归档文件系统中的每个活动文件均完全属于一个归档集。每个归档集可包括每个文件的多达四个归档副本以及控制该归档集的归档过程的策略。

归档过程由 UNIX 守护进程(服务)sam-archiverd 管理。此守护进程计划归档活动并调用执行所需任务的进程 archiversam-arfindsam-arcopy

archiver 进程读取可编辑配置文件 archiver.cmd 中的归档策略,并按规定设置剩余归档进程。此文件中的指令控制归档过程的常规行为,按文件系统定义归档集并且指定制作的副本数量以及用于每个副本的归档介质。

接下来,sam-archiverd 守护进程将为当前挂载的每个文件系统启动 sam-arfind 进程。sam-arfind 进程将扫描其为新文件、已修改文件、已重命名文件以及要重新归档或取消归档的文件分配的文件系统。默认情况下,此进程将不断扫描文件和目录的更改,因为这将提供最佳的整体性能。但是,例如,如果您必须维持与较旧 StorageTek Storage Archive Manager 实现的兼容性,则可编辑 archiver.cmd 文件中的归档集规则,以使用多种方法之一来计划扫描(有关详细信息,请参见 sam-archiverd 手册页)。

在它标识候选文件之后,sam-arfind 将标识定义文件的归档策略的归档集。sam-arfind 进程会通过将文件的属性与每个归档集定义的选择条件进行比较来标识归档集。这些条件可包括下列一个或多个文件属性:

  • 文件的目录路径以及(可选)与一个或多个候选文件名匹配的正则表达式

  • 与一个或多个候选文件的所有者匹配的指定用户名

  • 与文件的关联组匹配的指定组名称

  • 小于或等于候选文件大小的指定最小文件大小

  • 大于或等于候选文件大小的指定最大文件大小。

在它找到正确的归档集和对应的归档参数之后,sam-arfind 将检查文件的归档时限等于还是超出归档集指定的阈值。文件的归档时限是自文件创建、上次修改(默认值)或上次访问以来经过的秒数。如果归档时限满足策略中指定的时限条件,则 sam-arfind 会将文件添加到归档集的归档请求队列并为其分配优先级。优先级基于归档集中指定的规则和已存在的归档副本数量、文件大小、任何未解决的操作员请求以及任何其他依赖归档副本创建的操作等因素。

sam-arfind 标识需要归档的文件之后,将对它们按优先级排序,然后将它们添加到每个归档集的归档请求,它会将请求返回给 sam-archiverd 守护进程。守护进程将编写每个归档请求。它会将数据文件安排到按大小排列的归档文件中,以便有效利用介质,并将文件有效地写入可移除介质,以后再从可移除介质中重新调用。此守护进程将接受任何文件排序参数或您在 archiver.cmd 文件中设置的介质限制(有关详细信息,请参见 archiver.cmd 手册页)。但请注意,限制软件自由选择介质的能力通常会降低性能和介质利用率。在组装归档文件之后,sam-archiverd 将对归档请求按优先级排序,以便复制进程可通过最少的挂载操作传输最多的文件(有关详细信息,请参见 sam-archiverd 手册页的调度部分)。sam-archiverd 将调度复制操作,以便在任何指定时间,它们需要的设备数量不超过归档集策略和/或机械装置磁带库允许的最大数量。

在调度归档请求之后,sam-archiverd 将为调度的每个归档请求和驱动器调用 sam-arcopy 进程的实例。然后,sam-arcopy 实例会将数据文件复制到归档介质上的归档文件,更新归档文件系统的元数据以反映新副本的存在并更新归档日志。

sam-arcopy 进程退出时,sam-archiverd 守护进程将检查归档请求是否存在由高速缓存磁盘的读取错误、可移除介质卷的写入错误以及已打开、已修改或已删除文件导致的错误或疏忽。如果任何文件尚未归档,则 sam-archiverd 将重新编写归档请求。

sam-arfindsam-arcopy 进程可以使用 syslog 工具和 archiver.sh 创建归档活动、警告和信息性消息的连续记录。生成的归档程序日志包含有价值的诊断和历史信息,包括每个归档文件每个副本的位置和处理的详细记录。因此,在灾难恢复过程中,通常可以使用归档日志恢复丢失的数据文件,否则这些文件是不可恢复的(有关详细信息,请参见客户文档库中的《Oracle Hierarchical Storage Manager and StorageTek QFS Software 文件系统恢复指南》)。文件系统管理员在 archiver.cmd 文件中使用 logfile= 指令启用归档程序日志记录并定义日志文件。有关日志文件的更多信息,请参见 archiver.cmd 手册页。

回写

回写过程将文件数据从归档存储中复制回主磁盘高速缓存中。当应用程序尝试访问脱机文件(当前在主存储中不可用的文件)时,会有一个归档副本将自动回写到(复制回)主磁盘。然后,应用程序可快速访问此文件,即使尚未将完整的数据写回到磁盘中也是如此,因为读取操作可紧随在回写操作之后执行。如果出现介质错误或如果特定介质卷不可用,则回写过程将使用第一个可用设备自动装入下一可用副本(如果有)。这样,回写过程使得归档存储对用户和应用程序是透明的。所有文件看起来似乎在磁盘上一直可用。

默认回写行为适合大多数文件系统。不过,您可以通过在配置文件 /etc/opt/SUNWsamfs/stager.cmd 中插入或修改指令来更改默认行为,您还可以从命令行按照每个目录或每个文件覆盖这些指令。例如,要访问大文件中的小型记录,您可选择直接从归档介质访问数据,而不回写文件。或者,您可以只要在一组相关文件中的任一文件回写时就对该组文件进行回写(使用关联回写功能)。有关详细信息,请参见 stagestager.cmd 手册页。

释放

释放过程将通过删除当前未在使用的以前归档文件的联机副本,来释放主磁盘高速缓存空间。在文件复制到归档介质(例如磁盘归档或磁带卷)之后,可在应用程序访问文件时对它进行回写。因此当其他文件需要空间时,无需将它保留在磁盘高速缓存中。释放操作通过从磁盘高速缓存中删除不需要的副本,来确保主高速缓存存储始终可供新创建和当前所用的文件使用,即使文件系统在主存储容量未有任何相应增加的情况下发生增长也是如此。

当高速缓存利用率超出上限并持续在下限(您在挂载归档文件系统时设置的两个可配置阈值)之上时,会自动执行释放操作。上限可确保始终提供足够的空闲空间,而下限可确保始终在高速缓存中提供合理数量的文件并且介质挂载操作因而保持必要的最低数量。上限值的典型值为 80%,下限值的典型值为 70%。

使用默认行为的按水位标志释放适合大多数文件系统。不过,您可以通过在配置文件 /etc/opt/SUNWsamfs/releaser.cmd 中修改或添加指令来更改默认行为,您还可以从命令行按照每个目录或每个文件覆盖这些指令。例如,您可以部分释放按顺序访问的大文件,这样应用程序首先读取始终保留在磁盘上的文件部分,而文件的其余部分将从归档介质中回写。有关详细信息,请参见 releasereleaser.cmd 手册页。

回收

通过删除不再使用的归档副本,回收过程可释放归档介质上的空间。当用户修改文件后,与文件的较旧版本关联的归档副本最终将会过期。回收程序将标识保留最大比例的已过期归档副本的介质卷。如果过期文件存储在归档磁盘卷上,则回收程序进程将删除它们。如果这些文件位于可移除介质(如磁带卷)上,则回收程序会将保留在目标卷上的任何未过期的副本重新归档至其他介质。然后,回收程序调用可编辑的脚本 /etc/opt/SUNWsamfs/scripts/recycler.sh,以便为回收的卷重新设置标签,将其从库中导出,或执行用户定义的其他某些操作。

默认情况下,回收过程不会自动运行。您可以配置 Solaris crontab 文件,以便在合适的时间运行回收过程。您也可以根据需要使用命令 /opt/SUNWsamfs/sbin/sam-recycler 从命令行运行回收过程。要修改默认回收参数,请编辑文件 /etc/opt/SUNWsamfs/archiver.cmd 或创建单独的 /etc/opt/SUNWsamfs/recycler.cmd 文件。有关详细信息,请参见相应的手册页。