即时恢复
本文档描述了一个使用案例,网络管理员使用 PowerShell 脚本,利用 Veeam® 的功能从网络备份即时还原生产虚拟机 (VM)。
Veeam 的即时还原功能可直接从备份文件启动虚拟机。 Veeam® vPower NFS 服务用于访问备份文件。
脚本完成以下任务:
- 从 Veeam 备份服务器上的 PowerShell 窗口或安装了 Veeam PowerShell 扩展的其他服务器上的 PowerShell 窗口运行。 Veeam 备份服务器还启用了 PowerShell 远程。
- 需要以下变量
- 来自 vCenter 的虚拟机名称
<vm_name>
和虚拟机连接的网络名称<src_nw_name>
。 - VMware ESXi™ 主机名
<esxi_hostname>
还原虚拟机的位置。 - 恢复的虚拟机所属的资源池名称
<resource_pool_name>
。 - 恢复备份的数据存储
<datastore_name>
。 - 恢复的虚拟机所属的 vCenter 中的文件夹名称
<folder_name>
。 - 已恢复虚拟机连接的目标网络
<tgt_nw_name>
的名称。
- 来自 vCenter 的虚拟机名称
- 读取要恢复的虚拟机的最近保留点。
- 定义恢复的虚拟机名称,后缀名为 CR,后跟时间戳。
- 在变量
$Reason
中定义还原描述。 - 恢复虚拟机:
- 已恢复的虚拟机已接通电源。
- PowerShell 命令是异步运行的,因为还原是一个长期运行的过程。
- 为 Windows® 操作系统启动反病毒扫描,并在发现第一个病毒威胁后继续扫描。 如果检测到病毒,虚拟机上的网络将被禁用。
- 即时还原结束时,虚拟机仍处于开机状态。
要查找备份任务中的虚拟机名称,可在 PowerShell 窗口中使用以下命令,其中 JobName 设置为备份任务的名称。 在此示例中,备份任务名为 Cyber-backup - 1d1w30rp
:
$JobName = "Cyber-backup - 1d1w30rp"
Get-VBRJob -Name $JobName | Get-VBRJobObject | Select-Object -Property Name
下面的示例显示了一些变量示例。
$VMName = "nrt01"
$SrcNetworkName = "192-168-3-0-24"
$EsxiHostname = "host002.test.ibmcloud.local"
$ResourcePoolName = "Cyber-restore-rp"
$DatastoreName = "workload_share_LkXB6"
$FolderName = "Cyber-restore"
$TgtNetworkName = "cyber-veeam-recovery"
PowerShell 脚本如下所示。
# VM variables
$VMName = "<vm_name>"
$SrcNetworkName = "<src_nw_name>"
# Restore variables
$EsxiHostname = "<esxi_hostname>"
$ResourcePoolName = "<resource_pool_name>"
$DatastoreName = "<datastore_name>"
$FolderName = "<folder_name>"
$TgtNetworkName = "<tgt_nw_name>"
# Conversions
$LastRestorePoint = Get-VBRRestorePoint -Name $VMName | Sort-Object -Property CreationTime -Descending | Select-Object -First 1
$Esxi = Get-VBRServer -Type ESXi -Name $EsxiHostname
$ResourcePool = Find-VBRViResourcePool -Server $Esxi -Name $ResourcePoolName
$Datastore = Find-VBRViDatastore -Server $Esxi -Name $DatastoreName
$Folder = Find-VBRViFolder -Server $Esxi -Name $FolderName
$SrcNetwork = Get-VBRViServerNetworkInfo -Server $Esxi | Where-Object { $_.NetworkName -eq $SrcNetworkName }
$TgtNetwork = Get-VBRViServerNetworkInfo -Server $Esxi | Where-Object { $_.NetworkName -eq $TgtNetworkName }
$RestorePointDate = $LastRestorePoint.CreationTime
$RestoreDate = Get-Date -Format yyyy-MM-dd-HH:mm
$Reason = "Cyber-restore of $VMName retention point: $RestorePointDate at $RestoreDate"
$RestoredVMName = "$VMName-CR-$RestoreDate"
# Instant restore
Start-VBRInstantRecovery -RestorePoint $LastRestorePoint -Server $Esxi -ResourcePool $ResourcePool -Datastore $Datastore -Folder $Folder -SourceNetwork $SrcNetwork -TargetNetwork $TgtNetwork -VMName $RestoredVMName -PowerUp:$True -Reason $Reason -RunAsync -EnableAntivirusScan -EnableEntireVolumeScan -VirusDetectionAction DisableNetwork
日志
以下 PowerShell 命令将显示虚拟机 <vm_name>
上次还原会话的日志条目:
$VMName = "<vm_name>"
$Session = Get-VBRRestoreSession -Name $VMName | Sort-Object -Property CreationTime -Descending | Select-Object -First 1
$Logs = $Session.logger.GetLog().GetRecordsSortedByOrdinalId()
foreach ($Log in $Logs) { Write-Host $Log.Title }
下面的示例显示了名为 nrt01
的虚拟机的日志条目。 该 Linux® VM 跳过了防病毒扫描。
Skipping nrt01: operating system is not supported for antivirus scan
Starting nrt01-CR-2021-11-19-12:50 recovery
Connecting to host host002.partner.ibmcloud.local
Restoring from Linux Hardened Repository - LHBR01
Checking if vPower NFS datastore is mounted on host
Locking backup files
Publishing backup files
Preparing change storage
Updating VM configuration
Checking free disk space available to Power NFS server
Registering VM
Creating VM snapshot
Powering on VM
Updating session history
nrt01-CR-2021-11-19-12:50 has been recovered successfully
Waiting for user to start migration
在Linux加固版本库上,在注释 Veeam rule 876f0752-7209-4e8b-8b34-fa0af7dbced4
指定的Linux防火墙上临时打开了以下端口。
ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW 10.38.207.142 # Allow SSH from trusted servers
6162/tcp ALLOW 10.38.207.157 # Allow Veeam Mgmt from Veeam BUR server
2500/tcp ALLOW Anywhere # Veeam rule 876f0752-7209-4e8b-8b34-fa0af7dbced4
2501/tcp ALLOW Anywhere # Veeam rule 876f0752-7209-4e8b-8b34-fa0af7dbced4
6162/tcp ALLOW OUT Anywhere # Veeam transport rule
2500/tcp ALLOW OUT Anywhere # Veeam rule 876f0752-7209-4e8b-8b34-fa0af7dbced4
2501/tcp ALLOW OUT Anywhere # Veeam rule 876f0752-7209-4e8b-8b34-fa0af7dbced4
停止即时恢复
使用以下命令可以停止即时恢复会话 Get-VBRInstantRecovery | Where-Object {$_.VMName -eq $RestoredVMName} | Stop-VBRInstantRecovery
。
有关网络管理员使用 Veeam 数据集成 API 访问网络备份的使用案例,请参阅 创建 Veeam Linux 受管服务器。