准备用于文件恢复的 StorageZones Controller

警告:

ShareFile 恢复功能不会自动备份您的持久存储位置。您负责选择备份实用程序并每 1 至 7 天运行一次。

准备文件恢复的方式取决于数据的存储位置:

  • 受支持的第三方存储系统 — 如果您使用带有 StorageZones Controller 的第三方存储系统,则第三方存储是冗余的,不需要本地备份。但是,请注意,删除文件的 ShareFile 用户可以在短时间内从回收站恢复该文件。45 天后,无法从 ShareFile 回收站恢复文件。恢复期之后,文件将从区域中删除,因此从冗余第三方存储中删除。如果恢复时间不够,请考虑以下解决方案之一:
    • 增加文件保留在 ShareFile 回收站中的时间量。要执行此操作,请更改 C:\inetpub\wwwroot\Citrix\StorageCenter\SCFileCleanSvc\FileDeleteService.exe.config 中的周期设置的值有关详细信息,请参阅自定义存储缓存操作。请记住,增加保留时间也会增加所需的第三方存储量。
    • 每七天创建一次 StorageZone 文件的本地备份,并为备份确定适当的保留策略。
  • 本地存储 — 如果将本地维护的共享用于私有数据存储,则负责备份本地 StorageZones Controller 本地文件存储和注册表项。ShareFile 存档 ShareFile 云中驻留的相应文件元数据 3 年。 重要提示:为了防止数据丢失,您必须拍摄 StorageZones Controller 服务器的快照 备份其配置,并备份本地文件存储。

如本主题所述,准备用于文件恢复的 StorageZones Controller 后,您可以使用 ShareFile 管理员控制台执行以下操作:

  • 浏览特定日期和时间的 ShareFile Data 记录的存储区域,然后标记要还原的任何文件和文件夹。ShareFile 将标记的项目添加到恢复队列。然后,您运行恢复脚本以将文件从备份还原到持久存储位置。

    有关详细信息,请参阅从 ShareFile 数据备份中恢复文件和文件夹

  • 当您无法从本地存储恢复数据时,将存储在 ShareFile 云上的元数据与本地存储进行协调。ShareFile 协调功能将在指定日期和时间内不再位于存储区域中的文件的元数据从 ShareFile 云中永久删除。

    有关更多信息,请参阅将 ShareFile 云与存储区域协调

必备条件

  • Windows Server 2012 R2 或 Windows Server 2008 R2
  • Windows PowerShell(32 位和 64 位版本)必须支持 .NET 4 运行时程序集。有关详细信息,请参阅中的 “PowerShell 脚本和命令”存储区 Controller 系统要求

  • PsExec.exe - PsExec 允许您使用网络服务帐户启动 PowerShell。您还可以使用 PsExec 计划恢复任务。从 http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx 下载 PsExec.exe 并按照该页面上的安装说明进行操作。

用于灾难恢复的文件摘要

位于 C:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster 恢复中的以下文件用于灾难恢复。

文件名称 说明
DoRecovery.ps1 Windows 任务计划程序执行的 PowerShell 脚本来处理恢复过程。此文件存储文件备份和存储位置。
Recovery.psm1 用于处理恢复队列操作的 PowerShell 模块。
recovery.log 存储恢复过程输出的日志文件。
recoveryerror.log 在恢复过程中存储错误的日志文件。
LitJson.dll 一个 .NET 库,用于处理从 JSON(JavaScript 对象表示法)字符串的转换。

设置备份文件夹

在备份服务器上,创建将备份永久存储文件夹的文件夹。

ShareFile Data 文件备份的存储区域应遵循与 StorageZones Controller 永久存储相同的布局。

如果备份位置不遵循与 StorageZones Controller 持久存储相同的布局,则必须在恢复过程中执行额外步骤,将文件从备份位置复制到您在恢复 PowerShell 脚本中指定的位置。

存储布局

备份布局

\\\PrimaryStorageIP
  \StorageLocation
   \persistentstorage
    \sf-us-1
     \a024f83e-b147-437e-9f28-e7d03634af42
      \fi3d85dc_1d6c_49b0_8faa_1f36ef3d83b5
       \fi7d5cbb_93c8_43f0_a664_74f27e72bc83
        \fi47cd7e_64c4_47be_beb7_1207c93c1270

\\\BackupStorageIP
 \BackupLocation
  \persistentstorage
   \sf-us-1
    \a024f83e-b147-437e-9f28-e7d03634af42
     \fi3d85dc_1d6c_49b0_8faa_1f36ef3d83b5
      \fi7d5cbb_93c8_43f0_a664_74f27e72bc83
       \fi47cd7e_64c4_47be_beb7_1207c93c1270

重要:

ShareFile 恢复功能不会自动备份您的持久存储位置。您负责选择备份实用程序并每 1 至 7 天运行一次。

创建灾难恢复队列

此一次性设置是必需的。以下命令示例使用默认 StorageZones Controller 安装文件夹。

  1. 在 StorageZones Controller 上,以管理员身份运行 PowerShell。

  2. 此过程中使用的 PowerShell 脚本未签名,因此您可能需要更改 PowerShell 执行策略。

    1. 确定您的 PowerShell 执行策略是否允许您运行本地未签名脚本:PS C:\ > 获取执行策略

      例如,远程签名、不受限制或绕过策略允许您运行未签名的脚本。

    2. 要更改您的 PowerShell 执行策略,请执行 PS C:\>Set-ExecutionPolicy RemoteSigned

  3. 要验证 PowerShell 是否具有正确的 CLRVersion,请键入:

    可用于支付的美元

    CLRVersion 的值必须为 4.0 或更高,才能使 PowerShell 能够在脚本中加载 .NET 程序集。如果不是,请更改它适用于 Windows PowerShell 32 位和 64 位版本,如下所示:

    1. 以管理员身份运行记事本。

    2. 创建包含以下内容的文件。

          <?xml version="1.0"?>
          <configuration>
              <startup useLegacyV2RuntimeActivationPolicy="true">
                  <supportedRuntime version="v4.0.30319"/>
                  <supportedRuntime version="v2.0.50727"/>
              </startup>
          </configuration>
      
    3. 选择 “文件” > “另存为”,将文件命名为 powershell.exe.config,并将其保存到以下位置:

      C:\Windows\System32\WindowsPowerShell\v1.0

      C:\Windows\SysWOW64\WindowsPowerShell\v1.0

    4. 关闭 PowerShell 窗口,以管理员身份打开一个新窗口,然后键入 $psversionable 以验证 CLRversion 是否正确。

  4. 关闭 PowerShell 窗口并使用 PsExec.exe 启动 PowerShell,如下所示:

    1. 以管理员身份打开命令提示符窗口。

    2. 导航到 PsExec.exe 的位置并输入:

      PsExec.exe -i -u “NT AUTHORITY\NetworkService” C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell

    3. 单击同意接受 PsExec.exe 许可协议。

  5. 导航到 StorageZones Controller 安装文件夹中的灾难恢复工具文件夹:

    cd ‘C:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery’

  6. 导入恢复 .PSM1 模块:

    Import-Module .\Recovery.psm1

  7. 要创建恢复队列,请输入:新的 SCQuue 名称恢复操作恢复

    该命令的输出包括创建的队列的名称。例如:Queue 92736b5d-1cff-4760-92c8-d8b04dc92cb2 created

    要查看新文件夹,请打开文件浏览器并导航至:

    服务器(您的 主存储位置)队列。您将看到“队列”文件夹,例如 92736b5d-1cff-4760-92c8-d8b04dc92cb2。

  8. 为您的位置自定义恢复 PowerShell 脚本,如下一节所述。

为您的位置自定义恢复 PowerShell 脚本

由任务计划程序执行 DoRecory.ps1 PowerShell 脚本以处理恢复过程。此文件包括您必须为站点指定的文件备份和存储位置。

  1. 在 StorageZones Controller 上,导航到恢复 PowerShell 脚本:

    C:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery\DoRecovery.ps1

  2. 按如下方式编辑脚本:

    a. 将 $backupRoot 参数设置为指向备份位置的 UNC 路径。例如:$backupRoot = “\\10.10.10.11\(YourBackupLocation)\persistentstorage”

    b. 将$storageRoot 参数设置为指向 StorageZones Controller 持久存储的 UNC 路径。例如:$storageRoot = “\\10.10.10.10\StorageLocation\persistentstorage”

测试恢复过程

  1. 创建一个测试文件并将其上载到 ShareFile。

  2. 一个小时左右后,验证该文件是否显示在持久存储中(在为 $backupRoot 指定的路径中)。

  3. 从 ShareFile 中删除该文件:在 ShareFile 管理员工具中,单击 回收站,选择该文件,然后单击 “ 永久删除”。

  4. 从持久存储中删除文件。

    此步骤重新创建 ShareFile 将在删除文件 45 天后执行的操作。

  5. 在 ShareFile 管理员工具中,转到 管理 > 存储区域,单击该区域,然后单击 恢复文件

  6. 在 “ 恢复日期 ” 文本框中单击,然后选择文件被删除之前和上载之后的日期和时间。

    此时将显示指定日期和时间的存储区域的文件列表。

  7. 选中该文件的复选框。

  8. 选择要包含已还原文件的文件夹,然后单击 “ 还原”。

    该文件将添加到备份队列,并准备好恢复。成功恢复文件后,屏幕会更改以显示现在包含已恢复文件的文件夹。

  9. 要恢复文件,请执行以下操作:

    a. 以管理员身份打开命令提示符窗口。

    b. 导航到 PsExec.exe 的位置,然后键入:

    ```
    PsExec.exe -i -u "NT AUTHORITY\NetworkService" C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell
    ```
    

    c. 在 PowerShell 窗口中,导航至:

    光盘 C:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery

    d. 运行恢复脚本:

    .\DoRecovery.ps1

    PowerShell 窗口将包含消息 “项目恢复”。该文件将添加到持久存储位置。

  10. 从 ShareFile 网站下载还原的文件。

相关的 PowerShell 命令

以下 PowerShell 命令支持灾难恢复。

  • 获取恢复待处理的文件编码

    获取恢复所需的文件 ID 列表。对于语法和参数,请使用以下命令:

    获取帮助-获取恢复待处理文件-全部

  • Set-RecoveryQueueItemsStatus

    为恢复队列中的所有项目或指定项目设置状态。这将覆盖队列中的现有恢复状态。对于语法和参数,请使用以下命令:

    Get-Help Set-RecoveryQueueItemsStatus -full

创建和计划恢复任务

如果需要计划恢复任务,请按照以下步骤操作。

  1. 启动 Windows 任务计划程序,然后在 “ 作” 窗格中单击 “ 创建任务 ”。
  2. 在 “常 规” 选项 卡上:

    a. 键入任务的有意义的名称。

    b. 在 “ 安全选项” 下,单击 “ 更改用户或组”,然后指定要运行任务的用户,网络服务或具有对存储位置写入权限的命名用户。

    c. 从 “ 配置为 ” 菜单中,选择要运行任务的服务器的操作系统。

  3. 要创建触发器,请在 “ 触发器 ” 选项卡上单击 “ 建”。
  4. 对于 “ 开始任务”,选择 “ 在计划”,然后指定计划。
  5. 要创建操作,请在 “ 操作 ” 选项卡上单击 “ 建”。

    a. 对于 “ 作”,选择 “ 启动程序” 并指定程序的完整路径。例如:C:\Windows\System32\cmd.exe

    b. 对于 添加参数, 键入:/c “c:\windows\syswow64\WindowsPowerShell\v1.0\PowerShell.exe -File .\DoRecovery.ps1” >> .\recovery.log 2>>.\recoveryerror.log

    c. 对于 “ 开始”,请在 StorageZones Controller 安装位置中指定灾难恢复文件夹。例如: c:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery

删除服务默认期限

从 StorageZone 控制器 4.0 起,删除服务计时器将设置为 45 天。45 天的默认期限将覆盖以前的任何设置。要修改默认期间,请编辑 C:\inetpub\wwwroot\Citrix\StorageCenter\SCFileCleanSvc 下的 FileDeleteService.exe.config。

<!--No. of days to keep data blob in active storage after deletion-->

<add key="Period" value="45"/>

修改升级后的删除服务默认期限

在某些升级方案中,DeletePeriod 值将设置为空在“FileDeleteService.exe.config”。设置为 null 时,删除期间将默认为 45 天,即从 ShareFile 中删除的文件之前的默认天数从物理存储中删除。

要修改 StorageZones Controller 上的删除周期,请在以下位置编辑 FileDeleteService.exe.config 文件:C:\inetpub\wwwroot\Citrix\StorageCenter\SCFileCleanSvc\FileDeleteService.exe.config

在对 StorageZones Controller 进行干净安装后,删除服务将每 8 小时运行一次,以清理临时文件和文件夹。若要修改计时器,请在以下位置编辑文件删除服务 .Exe.config 文件:C:\inetpub\wwwroot\Citrix\StorageCenter\SCFileCleanSvc\FileDeleteService.exe.config