9 将 VLE 用于灾难恢复

将 VLE (Virtual Library Extension) 用作灾难恢复解决方案,这为执行 DR 测试以及从业务中断事件恢复提供了一种简化且无中断的方法。

系统像管理磁带库 (ACS) 一样管理 VLE。但是,由于 VLE 使用磁盘存储(而非磁带存储),且在其内容中维护 VTV 的内部库存,因此它具有实际磁带库所无法提供的功能:

  • VLE 是一款“无磁带”解决方案,可避免出现介质管理问题。

  • 数据通过使用 IP 发送给 VLE,无需通道扩展。

  • 与挂载和读取 MVC 磁带相比,VLE 可以通过使用其内部数据库在短短几秒钟内执行 MVC 审计。

本章介绍如何在简单的双站点环境中使用 VLE。但值得注意的是,该解决方案支持任意数量的站点,且每个站点支持任意数量的 VLE。此外,其中某一站点可以是仅 DR 站点,仅在 DR 测试或声明的灾难期间运行 MVS LPAR。

接下来的过程使用以下环境:其中具有 SITE1 和 SITE2 这两个站点。每个站点都有一个 VSM 和一个 VLE。在此示例中,SITE2 称为“仅 DR 站点”,但 SITE2 也可以是定义为 SITE1 镜像的生产站点。

注:

SITE2 的 VLE 缓冲区大小必须足够大,足以保存迁移的生产数据以及 DR 测试期间创建的数据。

正常的生产模式

在正常的生产过程中,策略是在 SITE1 中定义的,旨在将数据的一个副本迁移到 SITE1 的本地 VLE,并将另一个副本迁移到 SITE2 的远程 VLE。如果需要,您还可以创建其他副本,其中包括位于另一个 VLE 中的两个副本以及磁带副本。

下面显示了在 SITE1 定义的策略示例:

SMC 定义用于将 VLEPROD 的 MGMTCLAS 名称分配给带有高级限定词 "PAYROLL" 的数据集。

POLICY NAME(VLEPOL) MEDIA(VIRTUAL) MGMT(VLEMGMT) + SUBP(VIRTSCR)
TAPEREQ DSN(PAYROLL.*) POLICY(VLEPOL)

HSC POOLPARM/VOLPARM 定义用于定义生产卷:

POOLPARM TYPE(MVC)  NAME(LOCAL)  
VOLPARM VOLSER(VLL000-VLL099) 
POOLPARM TYPE(MVC)  NAME(VAULT1)
VOLPARM VOLSER(VLV000-VLV099)
POOLPARM TYPE(SCRATCH) NAME(VIRTSCR)
VOLPARM VOLSER(V00000-V99999) MEDIA(VIRTUAL)

注:

请注意,池 LOCAL 和 VAULT1 中的 MVC 分别是 SITE1 和 SITE2 VLE 中的 VMVC(虚拟 MVC),没有与之相关联的介质类型。

VTCS STORCLASMGMTCLAS 用于定义 VTCS 策略:

STOR NAME(VLE1) STORMNGR(SITE1VLE) MVCPOOL(LOCAL)
STOR NAME(VLE2) STORMNGR(SITE2VLE) MVCPOOL(VAULT1)
MGMT NAME(VLEMGMT) DELSCR(YES) MIGPOL(VLE1,VLE2)

使用以高级限定词 "PAYROLL" 开头的数据集运行作业时,SMC 使用 TAPEREQPOLICY 将 VLEPROD 的 MGMTCLAS 分配给挂载请求。VTCS 在池 LOCSCR 中选择虚拟暂存卷(范围为 V00000-V99999),并为其分配 VLEPROD MGMTCLAS。该卷卸载后,一个副本将迁移到本地 VLE (STORMNGR SITE1VLE),另一个副本则迁移到远程 VLE (STORMNGR SITE2VLE)。

使用 VLE 运行 DR 测试

在 SITE2 设置 DR 测试的过程非常简便和快速,且对 SITE1 的限制最少。

基本步骤包括:

  1. 在 SITE2 创建一个仅包含基本配置数据的新 CDS。

  2. 将 SITE1 VMVC 标记为 READONLY 以避免冲突。

  3. 在 SITE2VLE 中执行虚拟生产 MVC 的审计。此步骤使用现有的虚拟元数据填充 CDS。根据 VLE 中的 VTV 数量,此步骤可能需要几分钟到小于一小时的时间完成。

  4. 使用一系列与生产卷不重叠的 VTV 和 MVC,运行 DR 测试工作负荷。

本节的其余部分详细说明如何在 DR 站点定义参数,并介绍您必须采取哪些步骤才能确保生产 VMVC 的内容不会在测试期间发生变化。

  1. 创建 DR 测试 CDS。

    1. 使用 LIBGEN/SLICREAT 过程在 SITE2 创建 CDS。请注意,即使您已在 SITE2 运行生产工作,也要创建此 CDS。新 CDS 仅包含来自 SITE1 的 DR 数据。另请注意,即使配置不包含物理磁带,您也必须在 LIBGEN 宏中至少定义一个 ACS。

    2. 运行 SET VOLPARM 实用程序为 DR 测试定义卷:

      POOLPARM TYPE(MVC)  NAME(VAULT1) 
      VOLPARM VOLSER(VLV000-VLV099)
      POOLPARM TYPE(EXTERNAL) NAME(PRODVTVS)
      VOLPARM VOLSER(V00000-V99999) MEDIA(VIRTUAL)
      POOLPARM TYPE(MVC)  NAME(DRMVC)
      VOLPARM VOLSER(VLT000-VLT099)
      POOLPARM TYPE(SCRATCH) NAME(VIRTSCR)
      VOLPARM VOLSER(VT0000-VT9999) MEDIA(VIRTUAL)
      

      请注意,前两个池定义由 SITE1 创建的、将在 SITE2 用作测试输入的卷。池类型 EXTERNAL 指示这些卷不属于暂存子池的一部分。最后两个池是将在 SITE2 用作测试输出的本地池。

    3. 定义 DR 测试要使用的 VTCS MGMTCLASSTORCLAS

      STOR NAME(DRVLE) STORMNGR(SITE2VLE) MVCPOOL(DRMVC)
      MGMT NAME(VLEMGMT) DELSCR(YES) MIGPOL(DRVLE)
      
    4. 请注意,由于 SITE2 DR 系统中的 MGMTCLAS 和暂存子池与生产策略具有相同的名称(但其定义不同),因此您现在可以对 SITE2 DR 测试使用与 SITE1 生产环境中相同的 SMC POLICYTAPEREQ 语句。

    5. 在 DR 测试 LPAR 中初启 HSC/VTCS。

  2. 将生产 MVC 标记为 READONLY

    1. 这是整个过程的关键步骤,必须同时对 SITE1 的生产 CDS 和 SITE2 的 DR 测试 CDS 执行。请注意,在生产 CDS 中将 MVC 定义为 READONLY 之后,您可以继续运行正常处理,其中包括:

      RECLAIM。自动回收不会选择处于 READONLY 状态的 MVC。

      SCRATCH。尽管 VTV 会在生产 CDS 中更新为处于暂存状态且可能会被重用,但 VLE 只读虚拟 MVC 中的副本不受影响。

      正常处理将附加到 VMVC 上的 VTV,或将其覆写。新 VTV 版本将迁移到新 VMVC,而 VLE 只读虚拟 MVC 中的副本不受影响。

      注:

      不过请注意,不能针对这些 MVC 运行 DRAIN 实用程序,因为这会删除虚拟 MVC 元数据的 VLE 副本。
    2. 使用实用程序函数 ACTMVCGN,选择生产站点中使用生产 CDS 的生产 MVC。此实用程序会生成控制语句,从而在所选 MVC 上设置 READONLY 标志。此外,它还会生成在测试完成之后禁用 READONLY 标志的控制语句。在 ACTMVCGN 控制语句中使用 ALL 关键字,可确保选择所有 MVC 进行 READONLY 处理,这样可在不影响 DR 测试的情况下对生产系统执行自动回收。此外,您还应使用 SLUSMAUD DD 语句,为测试中要使用的 VMVC 生成 AUDIT 语句。请注意,您可以根据需要在生产站点运行 ACTMVCGN 实用程序来创建生产更新,并在 DR 站点对 CDS 的镜像副本运行该实用程序来创建 DR 测试 CDS 更新。以下是运行此实用程序的 JCL 示例:

      //ACTMVCGN JOB (ACCT),'ACTMVCGN',NOTIFY=&SYSUID
      //ACTMVCG1  EXEC PGM=SLUADMIN,PARM='MIXED'
      //STEPLIB    DD DSN=hlq.SEALINK,DISP=SHR
      //SLSPRINT   DD SYSOUT=*
      //*      NOTE: CDS DD statements are optional if running at the production
      //*      site with an active HSC LPAR.
      //SLSCNTL    DD DSN=hlq.DBASEPRM,DISP=SHR
      //SLSCNTL2   DD DSN=hlq.DBASESEC,DISP=SHR
      //SLSSTBY    DD DSN=hlq.DBASESBY,DISP=SHR
      //* NOTE: MVCMAINT READONLY(ON) STATEMENTS
      //SLUSMVON   DD DSN=hlq.SLUSMVON,DISP=(NEW,CATLG,DELETE),
      //                         SPACE=(CYL,1)
      //* NOTE: MVCMAINT READONLY(OFF) STATEMENTS
      //SLUSMVOF   DD DSN=hlq.SLUSMVOF,DISP=(NEW,CATLG,DELETE),
      //                         SPACE=(CYL,1)
      //*       NOTE: AUDIT MVC(VVVVVV) STATEMENTS
      //SLUSMAUD   DD DSN=hlq.SLUSMAUD,DISP=(NEW,CATLG,DELETE),
      //                         SPACE=(CYL,1)
      //* NOTE: THE FOLLOWING SELECTS ALL "NON-EMPTY" VMVCS
      //SLSIN      DD *
       ACTMVCGN ALL MVCPOOL(VAULT1)
      /*
      
  3. 在生产站点,运行 MVCMAINT 实用程序函数,将 VMVC 标记为 READONLY

    //RDONLYON   EXEC PGM=SLUADMIN,PARM='MIXED'
    //STEPLIB    DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT   DD SYSOUT=*
    //* NOTE: EXEC MVCMAINT TO SET READONLY(ON).  Output of
    //*       ACTMVCGN utility.
    //SLSIN      DD DSN=hlq.SLUSMVON,DISP=SHR
    
  4. 在 DR 站点初启 HSC/VTCS。

  5. 使用新创建的 SITE2 CDS 以及 ACTMVCGN 实用程序的输出,在 SITE2 VLE 中运行生产 VMVC 的 MVC 审计。此步骤将填充包含 VTV 与 VMVC 之间关系的 CDS 元数据。

    //AUDIT EXEC PGM=SLUADMIN
    //STEPLIB  DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT DD SYSOUT=*
    //*     NOTE: AUDIT CONTROL STATEMENTS FROM ACTMVCGN UTILITY
    //SLSIN    DD   DSN=hlq.SLUSMAUD,DISP=SHR
    

    (可选)您可以使用 LCM 或其他选择要撤回的 VTV 的方法,将 DR 测试中要使用的 VTV 撤回到 VTSS 缓冲区。但是,由于从 VLE 缓冲区中撤回的速度相对较快,因此没有必要执行此步骤。

  6. 使用 ACTMVCGN READONLY(ON) 的输出运行 MVCMAINT 实用程序,在 DR CDS 上的 SITE2 将生产 VMVC 设置为 READONLY

    //RDONLYON   EXEC PGM=SLUADMIN,PARM='MIXED'
    //STEPLIB    DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT   DD SYSOUT=*
    //* NOTE: EXEC MVCMAINT TO SET READONLY(ON).  Output of
    //*       ACTMVCGN utility.
    //SLSIN      DD DSN=hlq.SLUSMVON,DISP=SHR
    
  7. 可选:在开始 DR 测试之前,您可能需要运行 VTVRPTMVCRPT,以验证 DR 测试 CDS 的内容。

  8. 运行 DR 测试工作负荷。

    1. 初启 SMC。如果在 MGMTCLAS 和暂存子池中使用与生产系统相同的名称,则可使用生产 TAPEREQPOLICY 语句。建议(并非强制)您对 DR 测试 TapePlex 使用不同的 TapePlex 名称。

    2. 使用 SMC 和新 HSC/VTCS CDS 运行 DR 测试工作负荷。

    3. 对于 DR 测试期间更新生产 VTV 卷,这一点并无限制。生产 VTV 中的数据可能会附加到 (DISP=MOD) 或被 (DISP=OLD) 覆写。这些更新不会影响 READONLY 生产虚拟 MVC 上 VTV 副本的内容,因此不影响数据的生产副本。

使用 VLE 运行 DR 测试之后清除

DR 测试完成后,清理的目的在于将元数据从 VTSS 和 VLE 中删除,以便下次 DR 测试不会看到此数据。请注意,DR 测试 HSC/VTCS 必须保持活动状态,直到清理完成为止。步骤包括:

  1. 运行 SCRATCH 实用程序函数,暂存测试期间通过 VTSS 和 VLE DR 测试 VMVC 创建的所有 VTV。在 DR 测试 MGMTCLAS 中指定 DELSCR(YES) 参数后,运行暂存实用程序时,将导致 VTV 同时从缓冲区和 VLE 元数据中删除。

    //SCRATCH EXEC PGM=SLUADMIN
    //STEPLIB  DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT DD SYSOUT=*
    //SLSIN    DD *
    SCRATCH VOL(VT0000-VT9999)
    

    请注意,如果已使用 DISP=MODDISP=OLD 修改任何生产 VTV,则这些 VTV 将保留在缓冲区和 VLE 中。

    通过在测试之后将 VTV 暂存在 DR 测试子池中,您可以最大程度地减少清除 VTSS 所需的时间以及测试完成后留在 VLE 中的数据量。

  2. 将 VTSS 迁移至 0。

    //MIGRTO0   EXEC PGM=SLUADMIN
    //STEPLIB  DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT DD SYSOUT=*
    //SLSIN    DD *
    MIGRATE VTSS(DRVTSS) THRESHLD(0)
    

    仅当 DR 测试的输出涉及新版本的生产 VTV 时,才需要执行此步骤。

  3. 验证 DR VTSS 现在是否为空。

    //AUDVTSS    EXEC PGM=SLUADMIN
    //STEPLIB  DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT DD SYSOUT=*
    //SLSIN    DD *
    AUDIT VTSS(DRVTSS) 
    

    请注意,如果您在 DR 测试期间修改了生产 VTV,则此数据和元数据的副本将保留在 VLE 中,供 DR 测试 MVC 池使用(VLT000-VLT099、VTV V00000-V99999)。在下次 DR 测试期间,这些 VMVC 将从磁带的逻辑起点开始写入,且其中包含的任何数据均会从 VLE 中删除。由于新的 DR 测试 CDS 不识别此数据,因此不会影响下次 DR 测试。

  4. 在生产站点,使用 ACTMVCGN 实用程序在测试开始时创建的 READONLY(OFF) 控制卡,将生产 VMVC 返回到可写状态。

    //RDONLYOF   EXEC PGM=SLUADMIN,PARM='MIXED'
    //STEPLIB    DD DSN=hlq.SEALINK,DISP=SHR
    //SLSPRINT   DD SYSOUT=*
    //* NOTE: EXEC MVCMAINT TO SET READONLY(OFF)
    //SLSIN      DD DSN=hlq.SLUSMVOF,DISP=SHR
    

使用 VLE 实现业务连续性

当 SITE1 出现故障且需要 SITE2 接管 SITE1 的工作负荷时,该过程与 DR 测试过程基本相同。

如果 SITE1 出现故障时正好在执行 DR 测试,请遵循以上过程清除 DR 测试并停止 DR 测试。

要开始在 SITE2 中运行 SITE1 的工作负荷,请遵循上述过程开始 DR 测试。当然,由于没有要更新的“生产”CDS,因此您将忽略在生产 CDS 中将生产 VMVC 标记为 READONLY 的步骤。但是,您将使用生产 CDS 的镜像副本为 VLE 中的生产 MVC 生成 MVCMAINT READONLY 控制卡。

此外,您还需要使用 DR 测试策略将正在创建的 VTV 和输出 VMVC 隔离至单独的范围中,避免出现任何可能会损坏生产数据的情况,直到验证业务连续性为止。

注:

如果针对磁带数据执行 DISP=MOD 处理的生产作业没有既定的同步点,则出现故障时可能无法预测 VTV 的内容。StorageTek 建议审核所有灾难恢复过程,确保磁带数据的同步点可预测。