D 用于归档的配置指令

本附录列出了用于配置 Oracle Hierarchical Storage Manager 文件系统和相关软件操作的指令。每条指令是由一个或多个逗号分隔的字段构成的单个文本行。相关指令一起存储在 Oracle HSM 命令 (.cmd) 文件中。

本附录的其余部分提供三种主要指令的概述:

有关其他信息,请参见 Oracle HSM 手册页。

请注意,您可以从命令行配置 Oracle HSM 命令文件(如下所述),也可以使用 Oracle HSM Manager 软件配置这些命令文件。有关 Oracle HSM Manager 的信息,请参见联机帮助。

归档指令

本节提供了有关构成 archiver.cmd 文件的归档指令的用法信息。归档指令定义了用于控制以下各项的归档集:文件复制、使用的介质以及归档软件的整体行为。

有四种基本的归档指令类型:

全局指令和文件系统指令均控制文件的归档方式。但是归档程序先检验特定于文件系统的指令,然后再检验全局指令。因此,出现冲突时,文件系统指令会覆盖全局指令。同样,在文件系统指令中,列出的第一条指令会覆盖后续的所有冲突指令。

全局归档指令

全局指令用于控制归档程序的整体操作,并可用于优化所有已配置文件系统的操作。全局指令包含单独的关键字或一个关键字后跟等号 (=) 和其他数据字段。全局指令启动 archiver.cmd 文件,在文件系统指令的第一个指令处结束。

archivemeta:控制是否对元数据进行归档

archivemeta 指令控制是否对文件系统元数据进行归档。如果文件系统中的文件经常移动,且目录结构经常发生更改,则对文件系统元数据进行归档。但是,如果目录结构相当稳定,则可以禁用元数据归档,从而减少可移除介质驱动器所执行的操作。默认情况下,不会对元数据进行归档。

此指令的格式如下:

archivemeta=state

其中的 state,用于指定状态为 on 还是 off。默认设置为 off

元数据的归档过程取决于您使用的超级块是第 1 版还是第 2 版,具体如下:

  • 如果使用的是第 1 版的文件系统,归档程序会将目录、可移除的介质文件、段索引 inode 以及符号链接归档为元数据。

  • 如果使用的是第 2 版的文件系统,归档程序会将目录和段索引 inode 归档为元数据。可移除的介质文件和符号链接会存储在 inode 中,而不是存储在数据块中。归档程序不会对它们进行归档。符号链接则归档为数据。

archmax:控制归档文件的大小

archmax 指令用于指定归档 (.tar) 文件的最大大小。达到 target-size 值后,不再向归档文件添加任何用户文件。大型用户文件将写入单个归档文件中。

要更改默认值,请使用以下指令:

archmax=media target-size

其中 media附录 Amcf 手册页中定义的一种介质类型,target-size 是归档文件的最大大小。该值与介质有关。默认情况下,写入光盘的归档文件不得超过 5 MB。对于磁带,归档文件的最大默认大小为 512 MB。

将归档文件的大小设置为较大的值或较小的值都各有优缺点。例如,在使用磁带进行归档时,将 archmax 设置成较大的值,可以减少磁带机停止和启动的次数。但是,在写入较大的归档文件时,提前到达磁带末尾会浪费大量磁带空间。最佳做法是,不要将 archmax 指令设置为超过介质容量的 5%。

此外,您还可为单个归档集设置 archmax 指令。

bufsize:设置归档程序缓冲区大小

默认情况下,系统使用内存缓冲器将需要归档的文件复制到归档介质。可以使用 bufsize 指令来设置非默认的缓冲区大小和锁定缓冲区(可选)。这些操作在某些情况下可以提高性能。您可以尝试不同的 number-blocks 值。此指令的格式如下:

bufsize=media number-blocks [lock]

其中:

  • media附录 Amcf 手册页中定义的一种介质类型

  • number-blocks 是 [2-1024] 范围内的数字。默认值为 4。此值乘以该介质类型的 dev_blksize 值,计算结果即为所使用的缓冲区大小。dev_blksize 值在 defaults.conf 文件中指定。有关详细信息,请参见 defaults.conf 手册页。

  • lock 指明归档程序在创建归档副本时是否可以使用锁定的缓冲区。

    如果指定 lock,则归档程序将在 sam-arcopy 操作期间在内存中的归档缓冲区上设置文件锁定。此操作可以避免由于为每个 I/O 请求锁定和取消锁定缓冲区而造成的开销,从而减少占用系统 CPU 的时间。

    仅在配有大量内存的大型系统上,才必须指定 lock 参数。如果内存不足,则可能会导致内存用尽。只有已为需要归档的文件启用直接 I/O 时,lock参数才有效。默认情况下,不会指定 lock 参数,并且文件系统会在所有直接 I/O 缓冲区(包括用于归档的缓冲区)上设置锁定。

您可以使用归档集副本参数 -bufsize-lock 为每个归档集指定缓冲区大小和锁定。有关更多信息,请参见归档副本指令

drives:控制用于归档的驱动器数

默认情况下,归档程序使用自动化库中的所有驱动器进行归档。要限制所用驱动器的数量,请使用 drives 指令。此指令的格式如下:

drives=media-library count

其中 media-librarymcf 文件中定义的自动化库的系列集名称,count 是允许用于归档的驱动器数量。

您还可以使用归档集副本参数 -drivemax-drivemin-drives 来实现此目的。有关更多信息,请参见归档副本指令

examine:控制归档扫描

examine 指令用来设置归档程序用于标识已准备就绪进行归档的文件的 method

examine=method

其中 method 是以下指令之一:

  • noscan(默认值),用于指定连续归档。在执行初次扫描后,仅当目录内容发生更改以及需要进行归档时,才会对其进行扫描。但不对目录和 inode 信息进行扫描。这种归档方法的性能要好于扫描归档,尤其是当文件系统中文件的数量大于 1,000,000 时。

  • scan,用于指定扫描归档。在初次扫描文件系统指令之后,始终会扫描 inode。

  • scandirs 指定扫描归档。始终会扫描指令。不扫描 inode 信息。

    归档程序不扫描设置了 no_archive 属性的指令。因此您可以通过在包含不发生更改的文件的指令上设置该属性来减少扫描时间。

  • scaninodes 指定扫描归档。始终会扫描 inode。不对目录信息进行扫描。

interval:指定归档时间间隔

归档程序定期检查所有已启用归档的已挂载文件系统的状态。检查时间由归档时间间隔控制。归档时间间隔是指对每一个文件系统执行扫描操作的时间间隔。要更改归档时间间隔,请使用 interval 指令。

仅当未设置连续归档且未指定 startagestartsizestartcount 参数时,interval 指令才启动完全扫描。如果已设置连续归档 (examine=noscan),则 interval 指令将用作默认的 startage 值。此指令的格式如下:

interval=time

其中的 time,用于指定对文件系统执行扫描操作的所希望时间间隔。默认情况下,time 以秒计,其值为 600,即 10 分钟。可以指定不同的时间单位,如分钟或小时。

如果归档程序接收到 samu 实用程序的 arrun 命令,则将会立即开始扫描所有文件系统。如果 archiver.cmd 文件中还指定了 examine=scan 指令,则会在发出 arrunarscan 后进行扫描。

如果为文件系统设置了 hwm_archive 挂载选项,则可以自动缩短归档时间间隔。归档程序在文件系统利用率超过上限时开始进行扫描。high=percent 挂载选项用于设置文件系统空间占用的上限。

有关指定归档时间间隔的更多信息,请参见 archiver.cmdmount_samfs 手册页。

logfile:指定归档程序日志文件

归档程序可以生成一个日志文件,其中包含每一个归档、重新归档或取消归档的文件的有关信息。日志文件连续地记录归档操作。默认情况下不启用归档程序日志文件。要指定日志文件,请使用 logfile 指令。此指令的格式如下:

logfile=pathname

其中的 pathname 用于指定日志文件的绝对路径和名称。此外,还可以为单个文件系统设置 logfile 指令。

归档程序日志文件对于恢复已损坏或丢失的文件系统至关重要,对于监视和分析也非常有价值。因此,您应启用归档程序日志并对其进行备份。有关更多信息,请参见《Oracle Hierarchical Storage Manager and StorageTek QFS Software 安装和配置指南》。

notify:重命名事件通知脚本

notify 指令用于设置归档程序的事件通知脚本文件的名称。此指令的格式如下:

notify=filename

其中的 filename,用于指定包含归档程序事件通知脚本的文件名称,或指定该文件的完整路径。默认文件名为 /etc/opt/SUNWsamfs/scripts/archiver.sh

归档程序执行此脚本,来根据特定站点的要求处理各种事件。通过对第一个参数使用以下关键字之一来调用该脚本:emergalertcriterrwarningnoticeinfodebug

其他参数在默认脚本中加以说明。有关更多信息,请参见 archiver.sh 手册页。

ovflmin:控制卷溢出

如果启用卷溢出功能,归档程序可创建存储在多个卷上的归档文件。如果文件大小超出指定的最小大小,归档程序会将此文件的剩余部分写入该同一类型的另一个卷上。写入至每一个卷的文件部分称为片段sls 命令将列出归档副本,显示该文件在每个卷上的每一个片段。

归档程序通过 ovflmin 指令来控制卷溢出功能。默认情况下,归档程序会禁用卷溢出功能。要启用卷溢出功能,请在 archiver.cmd 文件中使用 ovflmin 指令。此指令的格式如下:

ovflmin = media minimum-file-size

其中 media附录 Amcf 手册页中定义的一种介质类型,minimum-file-size 是应触发卷溢出的最小文件大小。此外,您还可为单个归档集设置 ovflmin 指令。

请慎用卷溢出功能,在评估其所产生的影响后,再使用该功能。对于跨多个卷的文件,灾难恢复和回收会比较困难。卷溢出文件不会生成校验和。有关如何使用校验和的更多信息,请参见 ssum 手册页。

scanlist_squash:控制扫描列表合并

scanlist_squash 参数用于控制扫描列表合并。默认设置为 off。此参数可以是全局参数,也可以是特定于文件系统的参数。

当为 on 时,该指令合并目录树中子目录的扫描列表,以便归档程序从公共父目录向下进行递归扫描。如果文件系统中有许多文件和子目录已发生更改,则扫描列表合并可能会极大地降低归档性能。

setarchdone:控制 archdone 标志的设置

setarchdone 全局指令控制是否在从不归档的文件上设置 archdone 标志。此指令的格式如下:

setarchdone=state

其中的 state,用于指定状态为 on 还是 off。如果将 examine 指令设置为 scandirsnoscan,则默认值为 off

archdone 标志告知归档过程忽略标记的文件。通常,创建某个文件的所有指定副本后,归档过程会设置 archdone 标志,以便后续归档操作跳过该文件,除非以后对其进行修改。

但是在将 setarchdone 设置为 on 时,归档过程会标识并标记不符合任何归档条件从而从不归档的未归档文件。尽管这可以减少将来的归档开销,但文件评估会立即增加开销并且可能对性能产生不利影响。

wait:延迟归档程序启动

wait 指令会促使归档程序等待来自 samcmd 命令、samu 接口或 Oracle HSM Manager 的启动信号。此指令的格式如下:

wait

默认情况下,归档程序会在 sam-fsd 初始化命令运行时自动启动。

此外,还可以为单个文件系统设置 wait 指令。

文件系统指令

文件系统指令用于定义特定文件系统的归档行为:

fs:指定文件系统

每条 fs=file-system-name 指令都会引入一系列仅适用于给定文件系统 file-system-name 的归档指令。此指令的格式如下:

fs=file-system-name

其中 file-system-namemcf 文件中定义的文件系统名称。

fs= 指令后面出现的常规指令和归档集关联指令仅应用于指定的文件系统。

copy-number [archive-age]:指定文件系统元数据的多个副本

文件系统元数据包括文件系统中的路径名。如果需要多个元数据副本,可在 archiver.cmd 文件中放置副本定义,其位置是紧跟 fs= 指令之后。

copy-number [archive-age]

其中时间采用一个或多个由一个整数和一个时间单位组成的组合来表示。单位包括 s(秒)、m(分钟)、h(小时)、d(日)、w(周)和 y(年)。如果指令经常发生更改,则指定多个元数据副本可能会导致文件系统过于频繁地挂载元数据磁带卷。因此,默认情况下,Oracle HSM 仅创建一个元数据副本。

在示例中,fs=samma1 文件系统的元数据副本 1 在 4 小时 (4h) 后生成,副本 2 在十二小时 (12h) 后生成:

# General Directives
archivemeta = off
examine = noscan
# Archive Set Assignments
fs = samma1
1 4h
2 12h

intervallogfilescanlist 作为文件系统指令

有几个指令既可以指定为适用于所有文件系统的全局指令,也可以指定为专用于某一文件系统的指令。以下各节对这些指令进行了说明:

archive-set-name:归档集分配指令

归档集分配指令指定要一起归档的文件。您可以使用下面介绍的各种选择条件非常精准地指定文件。但是,除非绝对必要,否则最好不要这样做。通常,配置的归档集数量应尽可能最少而范围应尽可能最广。归档集会独占使用一组归档介质。因此,如果按照非常严格的分配条件定义大量的归档集,会导致介质利用率低、系统开销高以及性能降低。在极端情况下,尽管库中仍有足够的容量,作业也可能会由于缺少可用介质而失败。

每一个归档集分配指令均采用以下格式:

archive-set-name path [-access interval [-nftv]] [-after date-time] [-minsize size] [-maxsize size] [-user username] [-group groupname] [-name regex]

其中:

  • archive-set-name 是管理员为归档集定义的名称。

    这些名称最多可包含 29 个字符,可以是大写和/或小写字母 [A-Za-z]、数字 [0-9] 以及下划线 (_) 的任意组合,只要第一个字符为字母即可。不能包含其他任何字符(包括空格),不能将 Oracle HSM 特殊归档集 no_archiveall 的名称用于您自己的归档集。

  • path 指定文件系统中从其开始进行归档的子目录相对于挂载点的路径。系统会归档起始目录及其子目录中的所有文件。要包含文件系统中的所有文件,请使用句点 (.)。不允许在路径的开头使用斜杠 (/)。

  • -access 将重新归档在 interval 指定的时间内未访问的文件,其中 interval 是一个整数,后跟以下单位之一:s(秒)、m(分钟)、h(小时)、d(日)、w(周)和 y(年)。

    通过此参数可以安排将很少使用的文件从成本较高的介质重新归档到成本较低的介质。软件将验证文件的访问和修改时间,以确保这些时间大于或等于文件的创建时间,且小于或等于文件的检查时间。-nftv(no file time validation,非文件时间验证)参数会禁用此验证。

  • -after 仅归档在 date-time 之后创建或修改的文件,其中 date-time 是一个表达式,格式为:YYYY-MM-DD [hh:mm:ss] [Z],其中 YYYYMMDDhhmmss 均为整数,分别表示年、月、日、小时、分钟和秒。可选的 Z 参数用于将时区设置为国际协调时间 (Coordinated Universal Time, UTC)。默认值为 00:00:00 和本地时间。

  • -minsize-maxsize 仅归档那些超出或未达到指定的 size 的文件,其中 size 是一个整数,后跟以下单位之一:b(字节)、k(千字节)、M(兆字节)、G(千兆字节)、T(兆兆字节)、P(千兆兆字节)、E(艾字节)。

  • -user username-group groupname 仅归档属于指定的用户和/或组的文件。

  • -name 归档路径和文件名与正则表达式 regex 所定义的模式匹配的所有文件。

归档副本指令

默认情况下,当归档集中文件的归档时限为四分钟时,归档程序将为这些文件编写一个归档副本。要更改默认行为,请使用归档副本指令。归档副本指令必须紧跟在与它们相关的归档集分配指令的后面。

归档副本指令以 copy-number1234 开头。数字后面是一个或多个用于指定该副本归档特征的参数。每一个归档副本指令均采用以下格式:

copy-number [archive-age] [-release [attribute] [-norelease][-stage[attribute] [unarchive-age]

其中:

  • 可选的 archive-age 参数是新的或修改后的文件在能够进行归档之前必须在磁盘高速缓存中经历的时间。archive-age 应指定为一个或多个由一个整数和一个时间单位组成的组合,其中单位包括 s(秒)、m(分钟)、h(小时)、d(日)、w(周)和 y(年)。默认值为 4m(4 分钟)。

  • 可选的 -release 参数用于在创建归档副本之后立即清除 Oracle HSM 释放程序软件以释放文件所使用的磁盘空间。可选的 release 属性-a-n-d-a关联回写)属性要求软件在访问已从归档集中释放的任一文件时回写所有这些文件。-n 属性要求软件直接从归档介质进行读取而从不回写文件。-d 属性用于重置默认回写行为。

  • 在创建 -norelease 所标记的所有副本之前,可选的 -norelease 参数不会清除 Oracle HSM 释放程序软件以释放文件使用的磁盘空间。

  • -release -norelease 一起使用时,要求 Oracle HSM 软件在创建 -release -norelease 所标记的所有副本之后立即释放文件所使用的磁盘空间。Oracle HSM 不会等待释放程序进程运行。

  • 可选的 -stage 参数属性-a-c copy-number-f-I-i input_file-w-n-p-V-x-r-d,其中:

    -a 要求软件在访问归档集中的任一文件时回写所有这些文件。

    -c copy-number 要求软件根据指定的副本编号进行回写。

    -n 要求软件直接从归档介质进行读取而从不回写文件。

    -w 要求软件等待每个文件成功完成回写后再继续(与 -d-n 一起使用时无效)。

    -d 用于重置默认回写行为。

  • unarchive-age 参数指定文件的归档副本在将其取消归档来释放介质空间以供重用之前在归档中所用的时间。时间表示为一个或多个由一个整数和一个时间单位组成的组合,其中单位包括 s(秒)、m(分钟)、h(小时)、d(日)、w(周)和 y(年)。

以下示例包括归档集 allsamma1 的两条副本指令。第一条指令直到副本 1 达到 5 分钟 (5m) 的归档时限时才会释放该副本。第二条指令直到副本 2 达到 1 小时 (1h) 的归档时限时才会释放该副本,并在副本 2 达到 7 年 6 个月 (7y6m) 的取消归档时限时取消归档该副本。

# Archive Set Assignments
fs = samma1
logfile = /var/adm/samma1.archive.log
allsamma1 .
    1 -norelease 5m
    2 -norelease 1h 7y6m 

副本参数

副本参数定义如何创建归档集所指定的副本。archiver.cmd 文件的归档集副本参数部分以 params 指令开头,以 endparams 指令结尾:

params
allsets -sort path -offline_copy stageahead
allfiles.1 -startage 10m -startsize 10M -drives 10 -archmax 1G
allfiles.2 -startage 1h -startsize 1G -drives 2 -archmax 10G -reserve set
endparams

每个副本参数均采用以下格式:

archive-set-name[.copy-number][R] [-startage time] [-startcount count] [-startsize size] [-archmax maximum-size] [-bufsize=number-blocks] [-drivemax maximum-size] [-drivemin minimum-size] [-drives number] [-fillvsns] [-lock] [-offline_copy method] [-sort criterion] [-rsort criterion] [-recycle_dataquantity size] [-recycle_hwm percent] [-recycle_ignore] [-recycle_mailaddr mail-address] [-recycle_mingainpercentage] [-recycle_vsncountcount ] [-recycle_minobs percentage] [-unarchagetime_ref] [-tapenonstop] [-reserve keyword ] [-priority multiplier ranking] 

其中:

  • archive-set-name文件系统指令中的归档集分配指令或特殊指令 allsets(该指令会对所有定义的归档集应用指定的副本参数)所定义的归档集的名称。请先为 allsets 设置参数,再为各个归档集指定参数。否则,各个归档集的参数会覆盖为 allsets 指定的值,从而使其失去作用。

  • .copy-number 将指定的副本参数的应用范围限定为 copy-number 所指定的归档副本,其中 copy-number 为 [1-4] 范围内的一个整数,可选的 R 将参数的应用范围限定为重新归档的副本。

  • -startage time 指定将第一个文件添加到归档请求时与实际开始归档时之间的时间间隔。time 应指定为一个或多个由一个整数和一个时间单位组成的组合,其中单位包括 s(秒)、m(分钟)、h(小时)、d(日)、w(周)和 y(年)。默认值为 2h(二小时)。

  • -startcount count 指定一个归档请求中的最小文件个数。当等待归档的文件个数达到此阈值时,便开始进行归档。默认情况下,不设置 count

  • -startsize size 指定一个归档请求的最小大小(以字节为单位)。当等待归档的文件总大小达到此阈值时,便开始进行归档。默认情况下,不设置 size

  • -archmax 将归档文件的大小限定为不大于 maximum-size,其中 maximum-size 取决于介质。对于磁带,归档文件的最大默认大小为 512 MB。写入光盘的归档文件不能超过 5 MB。

    有关同名的全局归档指令的说明,请参见archmax:控制归档文件的大小

  • -bufsize= media-type number-blocks 将存放归档文件(将其写出到归档介质时)的缓冲区的大小设置为 number-blocks*dev_blksize,其中 number-blocks 为缓冲的磁带块数,是 [2-32] 范围内的一个整数,dev_blksizedefaults.conf 文件中为该介质类型指定的块大小。默认值为 4

  • -drivemax 将使用一个驱动器归档的数据量限定为不大于 maximum-size MB,其中 maximum-size 是一个整数。默认情况下,不指定 maximum-size

    使用 -drives 参数指定多个驱动器时,限制写入任意一个驱动器的数据量可以改善驱动器使用情况,这有助于平衡工作负载以及提高驱动器的整体利用率。

  • -drivemin minimum-size 将使用一个驱动器归档的数据量限定为至少 minimum-size MB,其中 minimum-size 是一个整数。默认为 -archmax 的值(如果指定)或 defaults.conf 文件中为该介质类型列出的值。

    对写入一个驱动器的数据量设置较低的限制可提高驱动器利用率和效率。设置的 minimum-size 应足够大,以便传输时间远远超过装入、定位和卸载介质所需的时间。指定 -drivemin 后,仅当数据传输足够大时才使用多个驱动器。

  • -drives number 将用于归档的驱动器数量限定为最多 number,其中 number 是一个整数。默认值为 1

    设置较高的最大驱动器数可以在归档集包含大型文件或大量文件时提高性能。如果可用的不同驱动器以不同的速度运行,则指定多个驱动器还可以平衡这些差异并提高归档效率。

  • -fillvsns 强制归档进程使用可较完整地填充归档介质卷的小型归档文件。

    默认情况下,归档程序会选择一个包含足够多空间的卷以容纳归档副本中的所有文件。这样生成的大型归档文件可能无法纳入多数磁带上的剩余容量。由此导致介质的整体利用率较低。-fillvsns 参数可解决此问题,但代价是更多的介质挂载、定位操作和卸载,所有这些操作都会降低归档和回写性能。

  • -lock 会在使用直接 I/O 创建归档副本时强制使用锁定的缓冲区。锁定的缓冲区可阻止对缓冲区进行分页并提高直接 I/O 性能。

    如果在可用内存有限的系统上指定 -lock 参数,则可能导致内存用尽。默认情况下,不强制使用锁定的缓冲区,而由文件系统保留对归档缓冲区的控制权。

  • -offline_copy method 指定在已从磁盘高速缓存中释放文件的情况下如何创建归档副本。指定的 method 可以为 directstageaheadstageallnone

    只要创建了一个归档副本,即可释放文件,因此其余副本必须通过脱机副本进行创建。通过指定的 -offline_copy 方法可以定制复制过程,使其符合可用驱动器的数量以及磁盘高速缓存中可用的空间量。

    direct 使用两个驱动器将文件直接从脱机卷复制到归档卷。要确保有足够的缓冲区空间,请在使用此方法时增大 stage_n_window 挂载选项所设置的值。

    stageahead 在将某归档文件写入目标位置的同时,回写下一个归档文件。

    stageall 在进行归档之前使用一个驱动器将所有文件回写到磁盘高速缓存。使用此方法时,请确保磁盘高速缓存足以容纳这些文件。

    none(默认值)在将文件复制到归档卷之前会根据需要将其回写到磁盘高速缓存。

  • -sort 在归档文件之前按 criterion 对其进行排序,其中 criterionageprioritysizenone

    age 指定按修改时间进行排序(从最早到最近)。

    path(默认值)指定按全路径名进行排序,因此会在归档介质中将相同目录中的文件保存在一起。

    priority 指定按归档优先级进行排序(从最高到最低)。

    size 按文件大小进行排序(从最小到最大)。

    none 指定不对文件进行排序,而是按照它们在文件系统中出现的顺序进行归档。

  • -rsort criterioncriterion 对文件进行排序,与 -sort 类似,但排序方向相反。

  • -recycle_dataquantity size 将回收程序计划重新归档的数据量限定为 size 字节,其中 size 是一个整数。

    当回收程序需要排出有效归档文件的归档卷时,它会计划重新归档。请注意,选择进行回收的卷的实际数量可能还取决于 -recycle_vsncount 参数。默认值为 1073741824(1 GB)。

  • -recycle_hwm percent 设置用于启动可移除介质回收的最大介质利用率百分比(上限,即 hwm)。对于磁盘介质,将忽略此参数(请参见下面的 -recycle_minobs)。默认值为 95

  • -recycle_ignore 阻止实际回收归档集中的任何介质,同时允许回收进程正常运行。用于测试。

  • -recycle_mailaddr mail-address 将信息性回收程序消息定向至 mail-address。默认情况下,不发送邮件。

  • -recycle_mingain 限定在那些增加的空闲空间至少可达到指定的 percentage 的卷中选择进行回收的卷。默认值为 50

  • -recycle_vsncount 将回收程序计划进行重新归档的卷的数量限定为 count。请注意,选择进行回收的卷的实际数量可能还取决于 -recycle_dataquantity 参数。对于磁盘介质,将忽略此参数。默认值为 1

  • -recycle_minobs 设置磁盘中归档文件中的过时文件的 percentage,该值会触发对有效文件的重新归档以及对原始 tar 文件的最终删除。对于可移除介质,将忽略此参数(请参见上面的 -recycle_hwm)。默认值为 50

  • -unarchage 将用于计算取消归档时限的参考时间设置为 time_ref,其中 time_refaccess(文件访问时间,默认值)或 modify(修改时间)。

  • -tapenonstop 在归档文件末尾写入一个磁带标记和一个文件结束 (end-of-file, EOF) 标签,但并不关闭可移除介质文件。这可以加速多个归档文件的传输,但在将整个归档集完全写入磁带之前不能卸载盒式磁带。默认情况下,Oracle HSM 软件会通过在归档文件结尾的文件结束标签后面写入两个额外的磁带标记来关闭磁带文件。

  • -reserve keyword 会保留一个可移除介质卷以供指定的归档集独占使用。如果某卷最先用于存放归档集中的文件,则软件会为该卷分配一个唯一的保留名称,其依据为指定的一个或多个关键字:fsset 和/或以下关键字之一:dir(目录)、usergroup

    fs 将在保留名称中包括文件系统名:arset.1 -reserve fs

    set 将在保留名称中包括归档集分配指令中的归档集名称:all -reserve set

    dir 将在保留名称中包括归档集分配指令中指定的目录路径的前 31 个字符。

    user 将包括与归档文件关联的用户名:arset.1 -reserve user

    group 将包括与归档文件关联的组:arset.1 -reserve group

    在某些情况下,按集保留卷会比较方便。但请注意,从本质上来说其效率要低于允许软件选择介质时的效率。保留卷时,系统必须更为频繁地挂载、卸载和定位磁带,这会增大开销而降低性能。非常严格的保留方案会导致可用介质的利用率较低,在极端情况下,还可能由于缺少可用介质而导致归档失败。

  • -priority multiplier ranking 与上面列出的 sort priority 参数一起使用时可更改文件的归档优先级。ranking 为 [(-3.400000000E+38)-3.400000000E+38](-3.402823466x1038 至 3.402823466x1038)范围内的一个实数,multiplier 是要针对其更改相关 ranking 的归档特征,从以下列表中进行选择:agearchive_immediatearchive_overflowarchive_loadedcopiescopy1copy2copy3copy4offlinequeuewaitre-archivereqreleasesizestage_loadedstage_overflow

    有关属性的更多信息,请参见 archiverarchiver.cmd 手册页。

卷序列号 (Volume Serial Number, VSN) 池指令

archiver.cmd 文件的 VSN 池部分定义了可在卷序列号 (Volume Serial Number, VSN) 关联指令中指定为一个单位的已命名归档介质卷集合。

此部分以 vsnpools 指令开始,以 endvsnpools 指令或 archiver.cmd 文件的结尾结束。定义 VSN 池的语法如下:

vsn-pool-name media-type volume-specification

其中:

  • vsn-pool-name 是您分配给池的名称。

  • media-type附录 Amcf 手册页中列出的双字符 Oracle HSM 介质类型标识符之一。

  • volume-specification 是一个以空格分隔的列表,其中含有一个或多个用于匹配卷序列号的正则表达式。有关正则表达式语法的详细信息,请参见 Solaris regcmp 手册页。

以下示例定义了四个 VSN 池:users_pooldata_poolproj_poolscratch_pool。临时池是指当 VSN 关联中的特定卷或另一个 VSN 池消耗殆尽时,系统临时使用的一组卷。如果这三个特定池中有一个池的卷已消耗殆尽,归档程序将选择临时池 VSN。

vsnpools
users_pool li ˆVOL2[0-9][0-9]
data_pool li ˆVOL3.*
scratch_pool li ˆVOL4[0-9][0-9]
proj_pool li ˆVOL[56].*
endvsnpools

卷序列号 (Volume Serial Number, VSN) 关联指令

archiver.cmd 文件的 VSN 关联部分用于为归档集分配归档介质卷。此部分以 vsns 指令开始,以 endvsns 指令结束。

卷分配指令采用以下格式:

archive-set-name.copy-number [media-type volume-specification] [-pool vsn-pool-name]

其中:

  • archive-set-name 是归档集分配指令分配给要与指定卷关联的归档集的名称。

  • copy-number 是归档副本指令分配给要与指定卷关联的副本的编号。它为 [1-4] 范围内的一个整数。

  • media-type附录 Amcf 手册页中列出的双字符 Oracle HSM 介质类型标识符之一。

  • volume-specification 是一个以空格分隔的列表,其中含有一个或多个用于匹配卷序列号的正则表达式。有关正则表达式语法的详细信息,请参见 Solaris regcmp 手册页。

  • -pool vsn-pool-name 是一个先前指定的已命名归档介质卷集合,该集合可作为一个单位进行指定。请参见卷序列号 (Volume Serial Number, VSN) 池指令

以下示例说明了将介质与两行 VSN 指定内容关联的各种方法。

vsns
archiveset.1 lt VSN001 VSN002 VSN003 VSN004 VSN005
archiveset.2 lt VSN0[6-9] VSN10
archiveset.3 -pool data_pool
endvsns

回写指令

回写是将文件数据从近线或离线存储设备复制回在线存储设备的过程。

回写程序在 samd 守护进程运行时启动。回写程序具有以下默认行为:

  • 回写程序尝试使用库中的所有驱动器。

  • 回写缓冲区的大小由介质类型决定,并且不锁定回写缓冲区。

  • 不写日志文件。

  • 一次最多可以激活 1000 个回写请求。

可以通过在 /etc/opt/SUNWsamfs/stager.cmd 文件中插入指令为站点定制回写程序的操作。

当应用程序需要脱机文件时,系统会将其归档副本回写到磁盘高速缓存,除非该文件归档时使用了 -n从不回写)选项。要使文件立即可供应用程序使用,读取操作在回写操作之后立即进行跟踪,这样在整个文件回写完毕之前就可以开始进行访问。

回写错误包括介质错误、介质不可用、自动化库不可用以及其他错误。返回回写错误时,如果存在文件副本并有用来读取归档副本的介质的设备,则 Oracle HSM 软件将尝试找到下一个可用的文件副本。

stager.cmd 文件

stager.cmd 文件中,指定要覆盖默认行为的指令。您可以对回写程序进行配置,以便立即回写文件、从不回写文件、回写部分文件以及指定其他回写操作。例如,指定 never-stage 属性对访问大型文件中小型记录的应用程序有益,因为不必联机回写文件即可从归档介质直接访问数据。

本节将介绍回写程序指令。有关回写程序指令的其他信息,请参见 stager.cmd 手册页。如果您使用的是 Oracle HSM Manager 软件,则可以通过 "File System Summary"(文件系统摘要)页或 "File System Details"(文件系统详细信息)页来控制回写。您可以浏览文件系统并查看各个文件的状态,可以使用过滤器查看某些文件并选择要回写的特定文件。可以选择从哪个副本回写,也可以让系统选择该副本。

以下示例显示了设置所有可能指令后的 stager.cmd 文件。

drives=dog 1
bufsize=od 8 lock
logfile=/var/adm/stage.log
maxactive=500

drives:指定进行回写的驱动器数量

默认情况下,回写程序在回写文件时使用所有可用的驱动器。如果回写程序使所有驱动器处于繁忙状态,则会影响归档程序的活动。drives 指令用于指定回写程序可用的驱动器数量。此指令的格式如下:

drives=library count

其中:

  • library 是磁带库的系列集名称(与其在 mcf 文件中显示的名称一致)。

  • count 是使用的最大驱动器数。默认情况下,此数量与在 mcf 文件中为该库配置的驱动器数量相同。

以下示例指定 dog 系列集的库中只有一个驱动器用于回写文件:

drives = dog 1

bufsize:设置回写缓冲区大小

默认情况下,要回写的文件先被读取到缓冲区的内存中,然后再从归档介质恢复到磁盘高速缓存。使用 bufsize 指令可指定缓冲区大小,还可以选择锁定缓冲区。这些操作可以改善性能。您可以尝试各种 number-blocks 值。该指令的格式如下:

bufsize= media-type number-blocks [lock]

其中:

  • media-type附录 Amcf 手册页中列出的双字符 Oracle HSM 介质类型标识符之一。

  • number-blocks 为 [2-8192] 范围内的一个整数。此值将与 defaults.conf 文件中指定的 media-type_blksize 值相乘。为 number-blocks 指定的数值越大,所使用的内存就越多。默认值为 16

  • lock 在每个回写操作期间强制使用锁定的缓冲区。这可以避免由于为每个 I/O 请求锁定和取消锁定回写缓冲区而产生的开销,并且可以提高性能。如果在可用内存有限的系统上指定 lock 参数,则可能导致内存用尽。默认情况下,不强制使用锁定的缓冲区,而由文件系统保留对归档缓冲区的控制权。

    只有已为回写的文件启用直接 I/O 时,lock 参数才有效。有关启用直接 I/O 的更多信息,请参见 setfasam_setfamount_samfs 手册页。

logfile:指定回写日志文件

可以请求 Oracle HSM 软件收集文件回写事件信息,并将此信息写入日志文件中。默认情况下,不写入任何日志文件。logfile 指令用于指定回写程序可在其中写入记录信息的日志文件。回写程序在日志文件中写入一行或多行有关每个已回写文件的信息。该行中包括文件名、回写日期和时间以及卷序列号 (volume serial number, VSN) 等信息。该指令的格式如下:

logfile=filename [event-list]

其中 filename 是日志文件的全路径名,event-list 是要记录的事件类型的列表(以空格分隔):

  • all 记录所有回写事件。

  • start 记录文件开始回写的时间。

  • finish(默认值)记录文件回写结束时间。

  • cancel(默认值)记录操作员取消回写操作的时间。

  • error(默认值)记录回写错误。

以下指令会在 /var/adm/ 目录中创建一条回写日志:

logfile=/var/adm/stage.log

回写程序日志条目采用以下格式:

status date time media-type volume position.offset inode filesize filename copy user group requestor equipment-number validation

其中:

  • status 为:S(开始)、C(已取消)、E(出错)、F(已完成)。

  • date 是采用以下格式的日期:yyyy/mm/dd,其中 yyyy 是表示年份的四位数字,mm 是表示月份的两位数字,dd 是表示一月中某一天的两位数字。

  • time 是采用以下格式的时间:hh:mm:ss,其中 hhmmss 分别是表示小时、分钟和秒的两位数字。

  • media-type附录 Amcf 手册页中列出的双字符 Oracle HSM 介质类型标识符之一。

  • volume 是存放要回写的文件的介质的卷序列号 (volume serial number, VSN)。

  • position.offset 是一对以点分隔的十六进制数字,表示归档 (tar) 文件在卷中的起始位置以及回写文件相对于归档文件起始位置的偏移量。

  • inode 是回写文件的 inode 编号和生成号,以点分隔。

  • filesize 是回写文件的大小。

  • filename 是已回写文件的名称。

  • copy 是包含回写文件的副本的归档副本编号。

  • user 是拥有该文件的用户。

  • group 是拥有该文件的组。

  • requestor 是请求该文件的组。

  • equipment-numbermcf 文件中为从其回写文件的驱动器定义的设备序号。

  • validation 指明是要验证 (V) 回写文件还是不验证 (-)。

以下示例显示了一个典型回写程序日志的一部分:

S 2014/02/16 14:06:27 dk disk01 e.76d 2557.1759 1743132 /sam1/testdir0/filebu 1 root other root 0 -
F 2014/02/16 14:06:27 dk disk01 e.76d 2557.1759 1743132 /sam1/testdir0/filebu 1 root other root 0 -
S 2014/02/16 14:06:27 dk disk02 4.a68 1218.1387 519464 /sam1/testdir1/fileaq 1 root other root 0 -
S 2014/02/16 14:06:43 dk disk01 13.ba5 3179.41 750880 /sam1/testdir0/filecl 1 root other root 0 -
F 2014/02/16 14:06:43 dk disk01 13.ba5 3179.41 750880 /sam1/testdir0/filecl 1 root other root 0 -

maxactive:指定回写请求的数量

可以使用 maxactive 指令指定一次可激活的回写请求的数量。该指令的格式如下:

maxactive=number

其中 number 为 [1-500000] 范围内的一个整数。默认值为 4000

以下示例指定可以同时存在于队列中的回写请求数量不超过 500 个:

maxactive=500

copysel:指定回写期间的副本选择顺序。

回写指令 copysel 针对每个文件系统设置回写程序副本选择顺序。

copysel=selection-order

其中 selection-order 是以冒号分隔的副本编号列表(按先后顺序)。默认选择顺序为 1:2:3:4

有关更多信息,请参见 stager.cmd 手册页。以下示例显示的 stager.cmd 文件为文件系统 samfs1samfs2 设置了非默认的副本选择顺序:

logfile = /var/opt/SUNWsamfs/log/stager
drives = hp30 1
fs = samfs1
copysel = 4:3:2:1
fs = samfs2
copysel = 3:1:4:2

预览请求指令

当一个 Oracle HSM 进程请求一个当前未装入驱动器的可移除介质卷时,系统会将该请求添加到预览队列。默认情况下,系统按先进先出 (First In First Out, FIFO) 的顺序执行已排队的请求。不过,您可以通过编辑文件 /etc/opt/SUNWsamfs/preview.cmd 来覆盖默认行为。Oracle HSM 磁带库控制守护进程 (sam-amld) 在开始使用这些指令时会对其进行读取,直至该守护进程停止。不能动态更改队列优先级。

有两种类型的指令:

  • 全局指令位于文件顶部,适用于所有文件系统。

  • 文件系统指令采用 fs=directive 格式并特定于各个文件系统

以下各节介绍了如何编辑 preview.cmd 文件,以控制预览队列:

全局指令

以下全部是全局指令:

vsn_priority:调整卷优先级

vsn_priority 指令可提高卷 (VSN) 的优先级,通过指定的值将卷标记为高优先级卷。指令采用以下形式:

vsn_priority=value

其中 value 是一个实数。默认值为 1000.0

您可以使用以下命令为卷设置高优先级标志:

chmed +p media-type.volume-serial-number

其中 media-type附录 Amcf 手册页中列出的双字符 Oracle HSM 介质类型之一,其中 volume-serial-number 是字母数字字符串,用于唯一标识磁带库中的高优先级卷。有关完整信息,请参见 chmed 手册页。

age_priority:针对在队列中的等待时间调整优先级

age_priority 指令可根据请求在队列中所用时间更改指定的相对优先级,例如,为防止较旧的请求不停地被优先级较高的新请求抢先。该指令指定一个乘数来更改在队列中所用时间的相对权重。它采用以下形式:

age_priority=weighting-factor

其中 weighting-factor 是一个大于、小于或等于 1.0 的实数,其中:

  • 如果值大于 1.0,则在计算聚合优先级时会增加为在队列中所用时间指定的权重。

  • 如果值小于 1.0,则在计算总优先级时会减少为在队列中所用时间指定的权重。

  • 如果值等于 1.0,则不会更改为在队列中所用时间指定的相对权重。

默认值为 1.0

全局和/或特定于文件系统的指令

以下指令既可全局应用,也可以按每个文件系统应用:

hwm_priority:在磁盘高速缓存几乎填满时调整优先级

hwm_priority 指令可在文件系统利用率超出上限(hwm,释放程序进程启动并开始回收在归档介质中存在副本的文件所占用的磁盘空间的点)时调整为归档请求指定的相对于回写请求的相对权重。在这种情况下,通过增大为归档指定的相对权重,释放进程可释放更多的空间以用于回写归档副本和新文件。指令采用以下形式:

hwm_priority=weighting-factor

其中 weighting-factor 是一个实数。默认值为 0.0

lwm_priority:在磁盘高速缓存几乎为空时调整优先级

lwm_priority 指令可在文件系统利用率降至低于下限(lwm,释放程序进程停止的点)时调整为归档请求指定的相对于回写请求的相对权重。在这种情况下,通过减小为归档指定的相对权重(从而增大回写请求的优先级),可在磁盘高速缓存中放置更多的文件、降低对介质挂载的需求并提高文件系统性能。指令采用以下形式:

lwm_priority=weighting-factor

其中 weighting-factor 是一个实数。默认值为 0.0

lhwm_priority:根据磁盘高速缓存的填充情况调整优先级

hlwm_priority 指令在磁盘高速缓存填满且高速缓存利用率介于下限 (lwm) 和上限 (hwm) 之间时,调整为归档请求指定的相对于回写请求的相对权重。在这种情况下,通过增大为归档指定的相对权重,释放进程可释放更多的空间以用于回写归档副本和新文件。
指令采用以下形式:

lhwm_priority=weighting-factor

其中 weighting-factor 是一个实数。默认值为 0.0

hlwm_priority:根据磁盘高速缓存为空的程度调整优先级

hlwm_priority 指令在磁盘高速缓存将要为空且高速缓存利用率介于上限 (hwm) 和下限 (lwm) 之间时,调整为归档请求指定的相对于回写请求的相对权重。在这种情况下,通过减小为归档指定的相对权重(从而增大回写请求的优先级),可在磁盘高速缓存中放置更多的文件、降低对介质挂载的需求并提高文件系统性能。指令采用以下形式:

hlwm_priority=weighting-factor

其中 weighting-factor 是一个实数。默认值为 0.0

preview.cmd 文件样例

任何给定介质挂载请求的聚合优先级均根据以下公式使用由所有权重因子设置的值进行确定:

priority = vsn_priority + wm_priority + (age_priority * time-waiting-in-queue)

其中 wm_priority 是当前生效的水位标志优先级(hwm_prioritylwm_priorityhlwm_prioritylhwm_priority),time-waiting-in-queue 是卷请求已排队等待的秒数。有关优先级计算的详尽说明,请参见 preview.cmd 手册页的 PRIORITY CALCULATION(优先级计算)部分。

在特殊情况下(对数据的访问至关重要时或可移除介质驱动器供不应求时),通过 preview.cmd 文件中的指令,可更好地将文件系统活动与操作要求和可用资源进行匹配。preview.cmd 文件中的设置不影响所存储数据的完整性,因此,您可以自由地尝试,直到找到归档请求与回写请求之间的合适平衡。

基于以下任一或全部原因,您可能需要调整默认的优先级计算:

  • 确保先处理回写请求再处理归档请求,以便使文件在用户和应用程序访问时可用。

  • 确保归档请求在文件系统将要充满时获得最高优先级

下面的 preview.cmd 文件样例用于处理上面重点介绍的情况:

# Use default weighting value for vsn_priority:
vsn_priority=1000.0
age_priority = 1.0
# Insure that staging requests are processed before archive requests:
lwm_priority = -200.0
lhwm_priority = -200.0
hlwm_priority = -200.0
# Insure that archive requests gain top priority when a file system is about to fill up:
hwm_priority = 500.0

lwm_prioritylhwm_priorityhlwm_priority 的权重值设为负值可确保只要磁盘高速缓存中有可用空间,回写请求就优先于归档请求,这样,在请求数据时便始终可进行访问。如果队列中已经有多个请求的等待时间达到了 100 秒,且文件系统低于下限,则:

  • 优先级卷的归档挂载请求的聚合优先级为 1000+(-200)+(1x100)=900

  • 优先级卷的回写挂载请求的聚合优先级为 1000+0+(1x100)=1100

  • 非优先卷的回写挂载请求的聚合优先级为 0+0+(1x100)=100

但是,当磁盘高速缓存接近填满时,归档请求必须优先。如果在文件系统即将填满时归档的文件过少,则没有空间可用于回写已归档的文件或容纳新文件。如果队列中已经有多个请求的等待时间达到了 100 秒,且文件系统高于上限,则:

  • 优先级卷的归档挂载请求的聚合优先级为 1000+500+(1x100)=1600

  • 优先级卷的回写挂载请求的聚合优先级为 1000+0+(1x100)=1100

  • 非优先卷的回写挂载请求的聚合优先级为 0+0+(1x100)=100