本章重点介绍了 DIVAnet 的 DIVArchive API 支持,并提供了有关如何使用 DIVArchive API 提供 DIVAnet 特定信息的信息。本章旨在与 DIVArchive C++ API、DIVArchive Java API 或 DIVArchive Web 服务 API 文档一起使用。
DIVAnet 支持完整 DIVArchive API 命令集的一部分。有些 DIVArchive API 命令(如 EjectTape)在 DIVAnet MultiDiva 模式下会被拒绝。DIVAnet 2.0 的确支持 DIVArchive API 客户机发行版 7.3 和更低版本中的客户机连接。DIVAnet 2.0 不支持在 7.3 之后添加到 API 的任何新功能。
对 DIVAnet 服务器发出 DIVA API 调用在很大程度上与对 DIVArchive 发出调用相同。但是,存在一些差异-DIVAnet 有时会以稍微不同的方式接受熟知的 DIVA API 参数。此外,DIVAnet 返回的字段内容可能与 DIVArchive 稍有不同,或者具有不同的格式。本节重点介绍了这些差异。
DIVAnet 2.0 要求已连接的 DIVArchive 站点安装有 DIVArchive 7.3.1 或更高版本。然后 DIVArchive 站点可以独立地进行升级,而无需对 DIVAnet 升级。
本节重点介绍了涉及已归档内容的传输(或删除)的请求,包括归档、恢复、删除和复制。可以通过 DIVArchive API 调用这些命令。有些命令也可以从 DIVAnetUI 调用。有关 DIVArchive API 内每个命令的作用的更多信息,请参阅《Oracle DIVArchive C++ API Reference Manual》。
注:
在 DIVAnet MultiDiva 模式下,DIVAnet 请求通常需要几则信息,直接向 DIVArchive 发出的请求则不需要。由于所支持的功能,DIVAnet 请求通常需要其他信息。例如,可以使用 DIVAnet 中的 Copy 命令将内容从一个 DIVA 系统复制到另一个系统。DIVAnet 至少需要知道目标站点是什么。但是,DIVA API CopyToGroup 命令不包含 target site 参数。下面几节详细介绍了如何指定这样的其他信息。有关配置 DIVAnet MultiDiva 模式的更多信息,请参见配置客户机 API 端口。
表 7-1列出了受 DIVAnet 支持的 DIVArchive API 内容请求。为发出这些请求的客户机提供了相应的请求 ID,这样可以定期查询请求的状态。
| 请求 |
DIVAnet 中的行为 |
|---|---|
|
归档 |
归档到本地 DIVArchive 站点或(可选)其他选定站点。 有关更多信息,请参见归档请求。 |
|
恢复 恢复实例 |
将已归档的对象恢复到特定的 Source/Destination。特定的实例和(或)特定的站点可以用作恢复的源内容。 DIVAnet 决定它是否应该 (1) 从本地 DIVArchive 恢复对象,(2) 使用远程 DIVArchive 直接恢复对象,或者 (3) 从远程 DIVArchive 拉取对象,然后将它传输到选定的 Source/Destination。 恢复实例允许恢复特定站点上的特定实例。如果出现故障,则可以将 DIVAnet 配置为在其他站点上重试。 有关更多信息,请参见恢复请求。 |
|
部分恢复 部分恢复实例 |
以与完全恢复类似的方式部分恢复对象。可以将特定的实例(在特定站点上)用作部分文件恢复的源。 如果在远程系统上发出部分文件恢复,则该 DIVA 站点必须以与本地站点类似的方式配置为进行部分恢复。 有关更多信息,请参见 Oracle 部分文件恢复请求。 |
|
复制 (CopyToGroup) |
将内容从一个 DIVA 站点复制到另一个站点(站点间复制),或者在 DIVA 站点上创建对象的另一个实例(与在单个 DIVA 系统上发出 可以将特定的实例复制到目标站点。不支持 有关更多信息,请参见复制请求。 |
|
删除 删除实例 |
删除所有站点、特定站点中的内容,或者删除特定站点上的特定实例。如果对象在要删除的站点上已锁定,则可以将 DIVAnet 配置为在给定的时间段内重试。 有关更多信息,请参见删除请求。 |
归档请求允许调用者归档存在于特定 Source/Destination(在 DIVArchive 中配置)上的内容。DIVA API 进行安排以实现从 Source/Destination 到 DIVArchive 的传输。这与基于 Web 的云 API 不同,在后者中通过 HTTPS 直接从请求者传输内容。默认情况下,DIVAnet 归档到本地站点。
向 DIVAnet 发出的归档请求与直接向 DIVArchive 发出的请求类似,但是向目标站点名称(将在其中归档内容的 DIVArchive 站点)添加了几项。通常,DIVAnet 将归档到本地站点。但是,可以通过以下两种方式之一直接归档到其他站点:
通过在选项字段中提供 -site [sitename] 选项。一个示例为 -site diva1。
通过在归档请求中的介质参数前加上目标站点名称。例如,sitename1_TapeGroup1 表示目标站点名为 sitename1,介质为 TapeGroup1。
DIVAnet 不支持对归档命令的连续重试,但是的确支持 <BackupArchiveSite> 选项,该选项提供了主站点关闭时的备用归档站点。
恢复请求允许客户机恢复存在于归档系统中的内容。内容到达在请求中选择的特定 Source/Destination。DIVA API 安排从 DIVArchive 站点直接到 Source/Destination(如 FTP 或 CIFS 磁盘)的传输。这与基于 Web 的云 API 不同,在后者中通过 HTTPS 直接向请求者传输内容。
使用 DIVAnet 恢复内容时,调用者无需知道哪个特定的 DIVA 系统具有内容。而且,如果从一个 DIVA 站点检索内容时出现故障,则可以自动查询另一个 DIVA 站点以检索内容。
DIVAnet 支持恢复到在本地站点上可用的任何 Source/Destination。DIVAnet 将根据需要从远程站点检索内容以满足请求,最终将内容传输到目标 Source/Destination。
向 DIVAnet 发出的恢复请求与直接向 DIVArchive 发出的请求类似,但是向源站点名称(将从其恢复内容的 DIVArchive 站点)添加了几项。
-site:通常,DIVAnet 会选择要从中恢复的站点。但是,通过在请求的选项字段中提供 -site [sitename] 选项,可以尝试从特定站点恢复。如果实际上内容不在选定的站点上,则操作将失败。
实例 ID:如果需要完全控制源,则可以在恢复请求中提供实例编号。这样,您就可以选择源站点和要从其恢复的 DIVA 实例(请参见下一节)。通过执行 getObjectInfo() API 调用,提供要复制的对象的名称,可以获取此实例 ID。
在这两种情况下,都会禁用重试。
为满足恢复请求,DIVAnet 使用表 7-2中介绍的恢复方法。DIVAnet 将基于参数(如目标 Source/Destination 和源对象)来动态选择要使用的恢复工作流。为决定使用哪个站点,DIVAnet 提出了一系列问题,其中包括:
对象在本地 DIVArchive 系统上是否可用?
对象是否具有磁盘实例?
Source/Destination 是否可从远程 DIVArchive 系统访问?
Source/Destination 是否可从本地站点访问?
DIVArchive 是在源还是目标站点上运行?
在配置文件中一个站点是否优先于另一个站点?
| 方法 |
说明 |
|---|---|
|
本地 |
对象存在于本地站点上时使用。本地站点是向其发送消息的 DIVArchive 系统站点名称。本地 DIVArchive 系统也视为本地站点的一部分。 |
|
直接远程 |
DIVAnet 可以进行安排以使远程 DIVA 系统执行恢复操作。仅当在远程 DIVA 系统中也配置了目标 Source/Destination 时,它才会这样做。Source/Destination 名称必须匹配,且它们都必须引用同一服务器或磁盘(以及该磁盘上的路径,如果适用)。 如果可用,则 DIVAnet 首选此方法,而不是使用站点间复制来执行恢复。 |
|
使用站点间复制 |
如果内容不是本地的,并且如果远程 DIVA 系统无法直接恢复到目标 Source/Destination,则 DIVAnet 可以进行安排以便在两个跃点中传送内容。 首先,远程 DIVA 恢复到在远程站点和本地站点之间共享的 Source/Destination。然后,本地 DIVA 将归档对象,并最终恢复到目标 Source/Destination。这样,以后请求该内容时检索速度会快得多。 DIVAnet 不会使用此过程将内容传送到仅存在于远程 DIVA 站点上的 Source/Destination。 如果需要始终通过创建近线复制来执行远程恢复,请在工作流配置文件中将 |
|
使用站点间传输 |
在某些情况下,当 DIVAnet 无法执行直接远程恢复时,DIVAnet 将在两个跃点中传送内容(如同使用站点间复制进行恢复),但实际上并不在本地归档内容。Oracle 部分文件恢复就属于这种情况。 首先,DIVAnet 将指示源 DIVA 将内容传输到源和目标 DIVA 站点均可访问的 Source/Destination。然后本地 DIVA 站点将内容传输到目标 Source/Destination,但不将其归档。 |
DIVAnet 允许您恢复到在本地站点上可用的 Source/Destination。如果源站点和目标站点共享一个 Source/Destination 名称,则 DIVAnet 可以将内容从一个站点传输到另一个站点。DIVAnet 假定:如果 Source/Destination 存在于源站点和目标站点上,则这两个配置都将指向同一物理 Server\Device\Path。默认情况下,用户必须注意分配给站点的 Source/Destination 的名称。
如果远程 DIVA 系统无法直接恢复到目标 Source/Destination,则 DIVAnet 可以进行安排以便在两个跃点中传送内容(请参见“使用站点间传输进行恢复”)。仅当 Source/Destination 存在于本地站点上,且是特定 Source/Destination 的首选站点时,DIVAnet 才会安排此操作(请参见首选的源/目标映射)。
除了内容的完全恢复外,DIVAnet 还支持部分文件恢复。DIVAnet 确定内容所在的站点,并进行安排以执行部分恢复。
如果对象存在于远程 DIVA 系统上,且远程 DIVA 系统无法访问恢复的目标 Source/Destination,则 DIVAnet 用两步来传输内容:首先使用远程 DIVA 将内容传输到本地 DIVA(而不是传输整个对象),然后使用本地 DIVA 将内容恢复到目标 Source/Destination。
与恢复一样,可以指定实例编号或 -site 参数以便从特定的站点执行恢复,或者指定在初始站点失败时的重试次数。与恢复一样的还有,不支持恢复到同一恢复请求内的多个目标。
复制请求将从现有的实例创建已归档内容的新实例。DIVAnet 允许将内容从一个 DIVA 站点复制到另一个站点。DIVArchive API CopyToGroup 命令 (1) 将对象从一个 DIVA 站点复制到另一个站点,或者 (2) 只在单个站点上创建新实例。为了复制,DIVAnet 需要派生一些 DIVA API 中未提供的参数。表 7-3介绍了这些参数。
| 派生的属性 |
说明 |
|---|---|
|
目标站点名称 |
表示对象应该复制到的站点。 目标站点名称不作为 DIVA API 中的结构化字段存在。可通过以下两种方法之一将此传送到 DIVAnet:
如果未指定站点名称,则将假定为本地站点。-site 关键字仅对 API 发行版 7.3 或更高版本起作用。 |
|
介质 |
Media 表示用于存储所复制对象的介质的类型。DIVAnet 还允许将 DIVA 存储计划作为介质名称提供。仅当复制是站点间复制时,存储计划才起作用。 也可以在介质前加上目标站点名称,以表示目标站点名称。 如果您不确定要提供哪个介质,则可以提供 any 介质让系统选择要存储到目标站点上的哪个介质。例如,介质 diva1_any 复制到站点 diva1,但是 DIVAnet 选择该介质。DIVAnet 提供的默认值可能不适合某些用例。 如果对象已在目标站点上,并且指定了 any,则系统将仅返回成功。 |
|
源站点名称 |
通常,DIVAnet 将选择要从其复制的站点。但是,如果需要完全控制源,则可以在复制请求中提供实例编号。这将隐式允许选择源站点和要从其复制的 DIVA 实例(请参见下一节)。通过对要复制的对象执行 |
在 DIVAnet 复制请求中,如果源站点与目标站点相同,则 DIVAnet 只能向目标 DIVA 站点发出 CopyToGroup。对于站点间复制,DIVAnet 允许配置用于执行这些复制的方法。对于每个源和目标站点名称对(例如,site1 到 site2),表 7-4列出了可用的传输方法。
除了复制方法外,每个源和目标站点名称对还包含用于公共存储区的实际 Source/Destination。默认目标介质(对于 RestoreAndArchive)、选项参数(已传递到 DIVArchive)和其他参数也是可配置的。
| 类型 |
说明 |
|---|---|
|
RestoreAndArchive |
通过此选项,DIVAnet 将内容从源站点恢复到源站点和目标站点的公共 Source/Destination。然后,DIVAnet 指示目标 DIVArchive 系统归档公共存储区中的当前内容。这是使用“删除文件夹”的替代方法。 |
|
RestoreAndMonitor |
使用此方法,DIVAnet 通过首先将内容恢复到特定的目标来执行复制。然后 DIVAnet 转为监视目标 DIVArchive 系统,以确定内容在目标站点上成功归档的时间。仅当在目标站点上已成功归档内容时,请求才成功完成。 这当然依赖于将提取内容并将它归档到目标 DIVA 系统中的另一个进程或程序。在与 DIVArchive Drop Folder Monitor 软件 (DFM) 组合使用时,此选项很有用。每个 DFM 文件夹都配置为使用预先选定的介质进行归档,这表示使用 DFM 进行复制时,实际上会忽略介质参数。 |
|
Restore |
使用此方法,DIVAnet 将通过恢复到特定的目标,然后返回成功来执行复制。此方法不确认内容已成功归档到目标站点中,并且如果尝试了 "Restore Using Intersite Copy" 工作流,则很可能会导致故障。 |
如果对象的实例已存在于目标站点中所请求的介质上,则 DIVAnet Copy 命令将返回成功。在这种情况下,DIVArchive 将终止请求。
如果请求将某对象复制到该对象已存在但是没有所请求介质的站点,则 DIVAnet 将使用在请求中指定的介质在该站点上创建对象的另一个实例。此情况的例外是提供 any 作为介质时。在这种情况下,DIVAnet 将不创建另一个实例。
在 DIVAnetUI 中,有一个选项可使 DIVAnet 在复制操作时分配目标介质(使用介质 <Selected By DIVAnet>)。通过在复制请求中指定介质 any,可以完成 DIVA API 请求中相同的操作。DIVAnet 将使用其配置确定用于复制的介质(有关更多信息,请参见站点到站点的映射)。
已传递 any 且对象已存在于目标站点上时,DIVAnet 将不创建对象的另一个实例。将不采取进一步的操作,请求将成功。
DIVAnet 还支持对复制的定期重试。如果在工作流配置文件中已启用,则 DIVAnet 将重试失败的复制操作。在工作流配置文件中,可以配置 DIVAnet 重试请求的时间长度以及重试之间的等待周期。有关更多信息,请参见配置工作流配置文件。
DIVArchive 删除请求允许调用者删除已归档的对象。默认情况下,DIVAnet 删除请求将删除所有 DIVArchive 站点中的对象。DIVAnet 删除实例请求可以删除单个 DIVA 站点中的一个或所有实例。因此,实际上,DIVAnet 可以执行三种删除操作。表 7-5介绍了删除类型和它们所需的参数。
| 类型 |
派生属性 |
说明 |
|---|---|---|
|
全局删除 |
无 |
删除所有站点上的所有对象实例。 在 API 中,请求中未指定介质或实例 ID 会导致指定的对象从所有站点中删除。 |
|
实例删除 |
目标站点名称 |
删除特定站点上的单个对象实例。 在 API 中,指定实例 ID 或介质可删除特定站点中的特定对象实例。 如果指定实例 ID,则以特定站点上的特定实例为目标。传递介质或选项参数是不必要的。 如果指定了介质,则 DIVAnet 需要知道要从其删除的站点。可通过以下三种方式之一指定站点:
|
|
站点删除 |
目标站点名称 |
删除驻留在特定站点上的对象的所有实例。可通过以下三种方式之一完成此操作:
|
尝试删除已归档对象的最后一个实例(即存在于 DIVAnet 数据库中的最后一个实例)时,DIVAnet 不会允许“实例删除”成功。在这种情况下,将需要发出全局删除或站点删除请求。但请注意,站点删除将允许删除最后一个或多个实例!可以使用访问规则来阻止实际上是全局删除的实例删除或站点删除(有关更多信息,请参见配置访问规则)。
此外,如果用户直接向 DIVArchive 发出删除指令,则可能存在 DIVAnet 无法确保保留最后一个实例的时间窗口。
如果 DIVAnet 收到删除指令,且 DIVAnet 当前正在执行对象的站点间复制,则已衍生副本的 DIVAnet 请求将被取消。副本可能是复制命令的结果,也可能是执行复制以满足恢复的还原命令的结果。不会取消其他类型的 DIVAnet 请求。
如果代表 DIVAnet 请求执行 DIVArchive 请求,则 DIVArchive 将锁定对象并阻止将其删除。因此,如果在 DIVAnet 可以将删除消息发送到 DIVArchive 之前对象已锁定,则删除请求将失败。
删除失败时,DIVAnet 支持定期重试删除。如果在工作流配置文件中已启用,则 DIVAnet 将一直尝试站点(例如,要删除的实例/对象已锁定)上的删除操作。可以在 DIVAnet 内配置重试的持续时间。
表 7-6列出了与内容无关的 DIVArchive API 命令。这些命令获取有关对象或请求的信息,系统没有为其分配请求 ID。
表 7-6 与内容无关的其他受支持 DIVArchive 命令
| 请求 |
说明 |
DIVAnet 中的行为 |
|---|---|---|
|
|
取消 DIVAnet 请求。 |
-site 选项不适用于此命令。 |
|
|
使用 DIVAnet 数据库获取有关已归档对象的信息。 DIVAnet 返回所有 DIVAnet 站点上对象的所有实例。请提供对象名称和对象类别(可以将类别留空,但是如果多个对象具有相同的对象名称,则调用将失败)。DIVAnet 使用 DIVAnet 数据库返回有关已归档对象的信息。 在 |
此命令不支持 -site 选项。 |
|
|
从 DIVAnet 数据库中检索有关 DIVAnet 请求的信息。 注:Additional Information 参数具有限制。其他信息由 DIVArchive 提供,表示所处理的上一 DIVA 请求的信息。此信息不反映 DIVAnet 网络中的其他站点。 |
当 DIVAnet 收到 -site 选项不适用于此命令。 |
|
|
直接从 DIVArchive 检索有关特定归档对象内文件和文件夹的信息。 |
接受 -site 选项以查询特定的站点,或者在无站点时让 DIVAnet 选择站点(推荐)。 |
|
|
从 DIVArchive 检索有关对象和对象事件的信息。DIVAnet 直接从每个 DIVArchive 系统检索对象信息,一次一个站点,以循环方式,每个站点一个批处理。 每个批处理都包含一个 DIVA 站点中的信息。如果同一对象存在于两个站点上,则会收到该对象两次(每个站点一次),每个批处理中收到一次。 注:不保证所返回条目的顺序。如果一个 DIVA 站点已关闭,则 |
通过在介质字段前加上站点名称(由下划线 (_) 分隔),可以从一个站点检索信息。如果不希望在介质上查询,但是仍希望从一个站点检索信息,则可以在介质字段中仅提供站点名称。此命令不接受 -site 选项。 |
|
|
查询 DIVAnet 数据库以获取对象名称和类别的列表( |
DIVAnet 为此命令提供有限的支持。不支持磁带信息查询;且对并发查询数有限制。不支持 -site 选项。 |
|
|
返回所有站点中阵列名称的列表(包括构成每个阵列的磁盘),并返回当前磁盘容量。 |
在选项字段中传递的 -site 参数可以返回特定站点的信息。 |
|
|
返回所有站点中磁带组名称的列表。在组名称前加上了站点名称。 |
注:此命令没有选项字段。因此,不支持 -site 选项。 |
|
|
返回所有站点中源和目标信息的列表。 |
在返回的列表中,源或目标名称前加上了源或目标的站点名称,由下划线 (_) 分隔。 在选项字段中传递的 -site 参数可以返回特定站点的信息。 |
|
|
检索单个 DIVArchive 站点的状态(默认情况下,返回本地站点)。它不返回所有站点的全局视图。 |
在选项字段中传递的 -site 参数选择要从其收集信息的站点。例如,-site diva1 将 |
考虑到应用程序兼容性,这些命令将始终返回成功,即使 DIVAnet 不采取操作以满足它们也是如此。
更改优先级
锁定对象
解除锁定对象
链接对象
要求实例
释放实例
DIVAnet 返回与 DIVArchive 返回内容类似的状态码。但是,DIVAnet 有时会接受 DIVArchive 会立即失败的请求,因为 DIVAnet 通常在处理请求的后期才具有执行检查所需的信息。
此外,DIVAnet 将为许多命令返回 ACCESS_DENIED 状态。DIVArchive 不返回此状态。DIVAnet 将拒绝不传递访问规则检查的请求,并拒绝未在工作流配置文件中配置的消息。为达到兼容目的,API 发行版 5.8 和早期版本返回 INVALID_PARAMETER 状态而不是 ACCESS_DENIED。