准备存储区域控制器以进行文件恢复

警告:

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

如何为文件恢复做准备取决于数据的存储位置:

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

按照本主题所述为文件恢复准备存储区域控制器后,可以使用 ShareFile 管理员控制台执行以下操作:

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

    有关更多信息,请参阅 从 ShareFile Data 备份中恢复文件和文件夹

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

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

必备条件

  • 具有 2 个 CPU 和 4 GB RAM 的专用物理机或虚拟机
  • Windows Server 2012 R2(数据中心、标准版或基础版)
  • Windows Server 2016
  • Windows Server 2019
  • Windows PowerShell(32 位和 64 位版本)必须支持 .NET 4 运行时程序集。有关更多信息,请参阅存储区域控制器系统要求中的“PowerShell 脚本和命令”。

  • PsExec.exe - PsExec 允许您使用网络服务帐户启动 PowerShell。您也可以使用 PsExec 来安排恢复任务。从下载 PsExec.exe https://docs.microsoft.com/en-us/sysinternals/downloads/psexec ,然后按照该页面上的安装说明进行操作。

用于灾难恢复的文件摘要

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

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

设置备份文件夹

在备份服务器上,创建用于备份 persistentstorage 文件夹的文件夹。

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

如果您的备份位置与存储区域控制器永久存储的布局不同,则必须在恢复过程中执行其他步骤,将文件从备份位置复制到在 Recovery 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
<!--NeedCopy-->

重要:

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

创建灾难恢复队列

此一次性设置是必需的。以下命令示例使用默认存储区域控制器安装文件夹。

  1. 在存储区域控制器上,以管理员身份运行 PowerShell。

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

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

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

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

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

    $psversiontable

    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>
      <!--NeedCopy-->
      
    3. 选择“文件”>“另存为”,将文件命名为 powershell.exe.config,然后将其保存到以下位置:

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

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

    4. 关闭 PowerShell 窗口,以管理员身份打开一个新窗口,然后键入 $psversiontable 以验证 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. 导航到存储区域控制器安装文件夹中的灾难恢复工具文件夹:

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

  6. 导入 Recovery.psm1 模块:

    Import-Module .\Recovery.psm1

  7. 要创建恢复队列,请输入:New-SCQueue -name recovery -operation recovery

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

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

    \\server\(您的主存储位置)\Queue。您会看到 Queue 文件夹,比如 92736b5d-1cff-4760-92c8-d8b04dc92cb2。

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

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

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

  1. 在存储区域控制器上,导航到恢复 PowerShell 脚本:

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

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

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

    b. 将 $storageRoot 参数设置为指向存储区域控制器永久存储的 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
    <!--NeedCopy--> ```
    

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

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

    d. 运行恢复脚本:

    .\DoRecovery.ps1

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

  10. 从 ShareFile 网站下载恢复的文件。

相关的 PowerShell 命令

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

  • Get-RecoveryPendingFileIDs

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

    Get-Help Get-RecoveryPendingFileIDs -full

  • 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. 对于开始位置,指定存储区域控制器安装位置中的“灾难恢复”文件夹。例如: c:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery

删除服务默认期限

从 StorageZone Controller 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"/>

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

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

要修改存储区域控制器上的 DeletePeriod,请在以下位置编辑 FileDeleteService.exe.config 文件:C:\inetpub\wwwroot\Citrix\StorageCenter\SCFileCleanSvc\FileDeleteService.exe.config

全新安装存储区域控制器后,删除服务将每 8 小时运行一次,以清理临时文件和文件夹。要修改计时器,请在以下位置编辑 FileDeleteService.exe.config 文件:C:\inetpub\wwwroot\Citrix\StorageCenter\SCFileCleanSvc\FileDeleteService.exe.config

准备存储区域控制器以进行文件恢复