准备存储区域控制器以进行文件恢复
警告:
ShareFile 恢复功能不会自动备份您的永久存储位置。您负责选择备份实用程序并每 1 到 7 天运行一次。
如何为文件恢复做准备取决于数据的存储位置:
-
支持的第三方存储系统 - 如果您使用带有存储区域控制器的第三方存储系统,则您的第三方存储是冗余的,不需要本地备份。但是,请注意,删除文件的 ShareFile 用户可以在短时间内从回收站中恢复文件。45 天后无法从 ShareFile 回收站中恢复文件。恢复期过后,文件将从区域中删除,从而从冗余的第三方存储中删除。如果恢复时间不足,请考虑以下解决方案之一:
- 要防止 StorageZone Controller 文件清理服务从您的本地存储位置清除实际文件,请更改
C:\\inetpub\\wwwroot\\Citrix\\StorageCenter\\SCFileCleanSvc\\FileDeleteService.exe.config
中“周期”设置的值。有关更多信息,请参阅自定义存储缓存操作。请记住,延长保留时间也会增加所需的第三方存储量。 - 每七天创建一次本地备份 StorageZone 文件,并为备份确定适当的保留策略。
- 要防止 StorageZone Controller 文件清理服务从您的本地存储位置清除实际文件,请更改
- 本地存储 — 如果您使用本地维护的共享进行私有数据存储,则您负责备份本地存储区域控制器的本地文件存储和注册表条目。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 天运行一次。
创建灾难恢复队列
此一次性设置是必需的。以下命令示例使用默认存储区域控制器安装文件夹。
-
在存储区域控制器上,以管理员身份运行 PowerShell。
-
此过程中使用的 PowerShell 脚本未签名,因此您可能需要更改 PowerShell 执行策略。
-
确定您的 PowerShell 执行策略是否允许你运行本地未签名的脚本:PS C:\>Get-ExecutionPolicy
例如,“远程签名”、“不受限制”或“绕过”策略允许您运行未签名的脚本。
-
要更改您的 PowerShell 执行策略:PS C:\>Set-ExecutionPolicy RemoteSigned
-
-
要验证 PowerShell 的 CLRVersion 是否正确,请键入:
$psversiontable
CLRVersion 的值必须为 4.0 或更高才能让 PowerShell 在脚本中加载 .NET 程序集。如果不是,请按如下方式在 Windows PowerShell 32 位和 64 位版本中对其进行更改:
-
以管理员身份运行记事本。
-
创建包含以下内容的文件。
<?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0.30319"/> <supportedRuntime version="v2.0.50727"/> </startup> </configuration> <!--NeedCopy-->
-
选择“文件”>“另存为”,将文件命名为 powershell.exe.config,然后将其保存到以下位置:
C:\Windows\System32\WindowsPowerShell\v1.0
C:\Windows\SysWOW64\WindowsPowerShell\v1.0
-
关闭 PowerShell 窗口,以管理员身份打开一个新窗口,然后键入 $psversiontable 以验证 CLRVersion 是否正确。
-
-
关闭 PowerShell 窗口然后使用 PsExec.exe 启动 PowerShell,如下所示:
-
以管理员身份打开命令提示符窗口。
-
导航到 PsExec.exe 的位置并输入:
PsExec.exe -i -u “NT AUTHORITY\NetworkService” C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell
-
单击“同意”接受 PsExec.exe 许可协议。
-
-
导航到存储区域控制器安装文件夹中的灾难恢复工具文件夹:
cd ‘C:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery’
-
导入 Recovery.psm1 模块:
Import-Module .\Recovery.psm1
-
要创建恢复队列,请输入:New-SCQueue -name recovery -operation recovery
该命令的输出包括创建的队列的名称。例如:Queue 92736b5d-1cff-4760-92c8-d8b04dc92cb2 created
要查看新文件夹,请打开文件浏览器并导航到:
\\server\(您的主存储位置)\Queue。您会看到 Queue 文件夹,比如 92736b5d-1cff-4760-92c8-d8b04dc92cb2。
-
如下一节所述,根据您的位置自定义恢复 PowerShell 脚本。
为您所在的位置自定义 PowerShell 恢复脚本
DoRecovery.ps1 PowerShell 脚本由任务调度程序执行,以处理恢复过程。此文件包括必须为站点指定的文件备份和存储位置。
-
在存储区域控制器上,导航到恢复 PowerShell 脚本:
C:\inetpub\wwwroot\Citrix\StorageCenter\Tools\Disaster Recovery\DoRecovery.ps1
-
按如下方式编辑脚本:
a. 将 $backupRoot 参数设置为指向备份位置的 UNC 路径。例如:$backupRoot = “\\10.10.10.11\(YourBackupLocation)\persistentstorage”
b. 将 $storageRoot 参数设置为指向存储区域控制器永久存储的 UNC 路径。例如:$storageRoot = “\\10.10.10.10\StorageLocation\persistentstorage”
测试恢复过程
-
创建测试文件并将其上载到 ShareFile。
-
一小时左右后,验证文件是否出现在永久存储中(在 $backupRoot 指定的路径中)。
-
从 ShareFile 中删除文件:在 ShareFile 管理员工具中,单击“回收站”,选择该文件,然后单击“永久删除”。
-
从永久存储中删除该文件。
此步骤重新创建 ShareFile 在删除文件 45 天后将执行的操作。
-
在 ShareFile 管理员工具中,转到 管理员 > 存储区域,单击该区域,然后单击“恢复文件”。
-
单击“恢复日期”文本框并选择文件删除之前和上载后的日期和时间。
此时将显示指定日期和时间的存储区域的文件列表。
-
选中文件对应的复选框。
-
选择要包含还原文件的文件夹,然后单击 还原。
该文件将添加到恢复队列中,并准备好恢复。成功恢复文件后,屏幕将更改为显示现在包含已恢复文件的文件夹。
-
要恢复文件,请执行以下操作:
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 窗口将包含“项目已恢复”消息。该文件将添加到永久存储位置。
-
从 ShareFile 网站下载恢复的文件。
相关的 PowerShell 命令
以下 PowerShell 命令支持灾难恢复。
-
Get-RecoveryPendingFileIDs
获取恢复所需的文件 ID 列表。对于语法和参数,请使用以下命令:
Get-Help Get-RecoveryPendingFileIDs -full
-
Set-RecoveryQueueItemsStatus
为恢复队列中的所有或指定项目设置状态。这会覆盖队列中现有的恢复状态。对于语法和参数,请使用以下命令:
Get-Help Set-RecoveryQueueItemsStatus -full
创建和安排恢复任务
如果需要定时恢复任务,请按照以下步骤操作。
- 启动 Windows 任务计划程序,然后在“操作”窗格中单击“创建任务”。
-
在“常规”选项卡上:
a. 为任务键入一个有意义的名称。
b. 在“安全选项”下,单击“更改用户或组”,然后指定要运行任务的用户,即网络服务或对存储位置具有写入权限的指定用户。
c. 从“配置为”菜单中,选择要运行任务的服务器的操作系统。
- 要创建触发器,请在触发器选项卡上单击新建。
- 对于“开始任务”,选择“按计划”,然后指定时间表。
-
要创建动作,请在操作选项卡上单击新建。
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