【DevOps云实践】对Azure数据进行备份和恢复(Windows & Linux)
@TOC
推荐超级课程:
创建 VM时配置备份策略
在 Azure 门户中,选择“创建资源”。
在 Azure 市场中,选择“计算”,然后选择一个 VM 映像。
在“管理”选项卡上,在“启用备份”中选择“开” 。
Azure 备份将备份到恢复服务保管库。 如果没有现有的保管库,请选择“新建”。
接受建议的保管库名称或自己指定名称。
指定或创建保管库将位于其中的资源组。 资源组保管库可以不同于 VM 资源组。
接受默认备份策略,或修改设置。
备份策略指定执行 VM 备份快照的频率和这些备份副本的保留期。
默认策略每天备份 VM 一次。
你可以为 Azure VM 自定义你自己的备份策略以便每日或每周进行备份。
虚拟机的 Azure 备份资源组
备份服务将创建一个单独的资源组 (RG) 而非 VM 的资源组来存储还原点集合 (RPC)。 RPC 容纳托管 VM 的即时恢复点。 备份服务创建的资源组的默认命名格式为 AzureBackupRG_<Geo>_<number>
。 例如:AzureBackupRG_northeurope_1。 现在可以自定义 Azure 备份创建的资源组名称。
需要注意的要点:
您可以使用 RG 的默认名称,也可以根据组织要求自定义名称。
Azure 备份创建 RG 时,会在 RG 的名称后面追加一个数字,用于收集还原点。
可以在创建 VM 备份策略时将 RG 名称模式作为输入提供。 RG 名称应采用以下格式:
<alpha-numeric string>* n <alpha-numeric string>
。 “n”将替换为一个整数(从 1 开始),用于在第一个 RG 已满时进行横向扩展。 目前一个 RG 最多可有 600 个 RPC。该模式应遵循下面的 RG 命名规则,而且总长度不得超过允许的 RG 名称长度上限。
- 资源组名称只允许使用字母数字字符、句点、下划线、连字符和括号。 它们不能以句点结尾。
- 资源组名称最多可包含 74 个字符,包括 RG 名称和后缀。
第一个
<alpha-numeric-string>
是必需的,但“n”后面的第二个是可选的。 这仅适用于你提供自定义名称的情况。 如果未在任何文本框中输入任何内容,则使用默认名称。如果需要,可以通过修改策略来编辑 RG 的名称。 如果更改了名称模式,将在新 RG 中创建新的 RP。 但是,旧的 RP 仍将驻留在旧 RG 中,不会被删除,因为 RP 集合不支持资源移动。 最终,当点过期时,RP 会进行垃圾回收。
建议不要锁定创建以供备份服务使用的资源组。
对已经存在的VM 启动备份
你的 VM 备份将根据备份策略运行。 但是,我们建议你运行一个初始备份。
创建 VM 后,请执行以下操作:
在 VM 属性中,选择“备份”。 VM 状态保持为“初始备份挂起”,直到初始备份运行为止。
选择“立即备份”来运行按需备份。
从 Azure 虚拟机备份恢复文件
Azure 备份提供从 Azure VM 备份(也称恢复点)还原 Azure 虚拟机 (VM) 和磁盘 的功能。 本文介绍如何从 Azure VM 备份恢复文件和文件夹。 还原文件和文件夹仅适用于使用资源管理器模型部署的并在恢复服务保管库中受保护的 Azure VM。
步骤 1:生成并下载脚本以浏览和恢复文件
要从恢复点还原文件或文件夹,请转到虚拟机并执行以下步骤:
登录到 Azure 门户 ,在左侧窗格中选择“虚拟机”。 从虚拟机列表中,选择虚拟机以打开其仪表板。
在虚拟机菜单中,选择“备份”以打开“备份”仪表板。
在“备份”仪表板菜单中,选择“文件恢复”。
32此时将打开“文件恢复”菜单。
重要
用户应注意此功能的性能限制。 如以上边栏选项卡的脚注部分所示,当恢复的总大小不超过 10 GB 时,应使用此功能。 预期的数据传输速度约为每小时 1 GB。
从“选择恢复点”下拉菜单中,选择存储所需文件的恢复点。 默认已选择最新的恢复点。
选择“下载可执行文件”(适用于 Windows Azure VM)或“下载脚本”(适用于 Linux Azure VM,会生成 python 脚本),以下载用于从恢复点复制文件的软件。
Azure 会将该可执行文件或脚本下载到本地计算机。
若要以管理员身份运行可执行文件或脚本,建议将下载的文件保存到计算机。
该可执行文件或脚本受密码保护,需要密码才能运行。 在“文件恢复”菜单中,选择复制按钮以将密码加载到内存中。
步骤 2:执行脚本之前,请确保计算机满足要求
成功下载脚本后,请确保使用满足要求的计算机来执行该脚本。 你计划在其中执行脚本的 VM 不应具有以下任何不受支持的配置。 如果是这样,选择一个符合要求的备用计算机。
动态磁盘
无法在具有以下任意特征的 VM 上运行可执行脚本:选择备用计算机
- 跨多个磁盘的卷(跨区卷和带区卷)。
- 动态磁盘上的容错卷(镜像卷和 RAID-5 卷)。
Windows 存储空间
如果备份的 VM 具有 Windows 存储空间,则无法在同一备份 VM 上运行下载的可执行文件。 选择备用计算机。
具有大磁盘的虚拟机备份
如果备份的计算机上有大量磁盘(> 16 个)或大磁盘(每个磁盘 > 4 TB),则建议不要在同一台计算机上执行该脚本以进行还原,因为这会对 VM 产生重大影响。 取而代之的是,建议仅为文件恢复使用单独的 VM (Azure VM D2v3 VM),并在不需要时将其关闭。
步骤 3:成功运行脚本的 OS 要求
要在其上运行所下载脚本的 VM 必须满足以下要求。
对于 Windows OS
下表显示了服务器与计算机操作系统之间的兼容性。 恢复文件时,不能将文件还原到更旧或更新的操作系统版本。 例如,不能将文件从 Windows Server 2016 VM 还原到 Windows Server 2012 或 Windows 8 计算机。 可将 VM 中的文件还原到相同的服务器操作系统,或还原到兼容的客户端操作系统。
展开表
服务器 OS | 兼容的客户端 OS |
---|---|
Windows Server 2022 | Windows 11 和 Windows 10 |
Windows Server 2019 | Windows 10 |
Windows Server 2016 | Windows 10 |
Windows Server 2012 R2 | Windows 8.1 |
Windows Server 2012 | Windows 8 |
Windows Server 2008 R2 | Windows 7 |
对于 Linux OS
在 Linux 中,用于还原文件的计算机的 OS 必须支持受保护虚拟机的文件系统。 选择用于运行脚本的计算机时,请确保计算机具有兼容的 OS,并使用下表中认定的版本之一:
展开表
Linux OS | 版本 |
---|---|
Ubuntu | 12.04 及更高版本 |
CentOS | 6.5 及更高版本 |
RHEL | 6.7 及更高版本 |
Debian | 7 及更高版本 |
Oracle Linux | 6.4 及更高版本 |
SLES | 12 及更高版本 |
openSUSE | 42.2 及更高版本 |
其他组件
该脚本还需要 Python 和 bash 组件才能执行并安全地连接到恢复点。
展开表
组件 | 版本 | OS 类型 |
---|---|---|
bash | 4 及更高版本 | Linux |
Python | 2.6.6 及更高版本 | Linux |
.NET | 4.6.2 及更高版本 | Windows |
TLS | 应支持 1.2 | Linux/Windows |
步骤 4:成功运行脚本的访问要求
如果在访问受限的计算机上运行该脚本,请确保能够访问:
- 端口 443(出站)上 NSG 中的
download.microsoft.com
或AzureFrontDoor.FirstParty
服务标记 - 端口 3260(出站)上的恢复服务 URL(地区名称指恢复服务保管库所在的区域)
https://pod01-rec2.GEO-NAME.backup.windowsazure.com
(适用于 Azure 公共区域)或 NSG 中的AzureBackup
服务标记https://pod01-rec2.GEO-NAME.backup.windowsazure.cn
(对于 21Vianet 运营的 Microsoft Azure)或 NSG 中的AzureBackup
服务标记https://pod01-rec2.GEO-NAME.backup.windowsazure.us
(适用于 Azure 美国政府)或 NSG 中的AzureBackup
服务标记https://pod01-rec2.GEO-NAME.backup.windowsazure.de
(适用于 Azure 德国)或 NSG 中的AzureBackup
服务标记
- 端口 53(出站)上的公共 DNS 解析
备注
代理可能不支持 iSCSI 协议或授予对端口 3260 的访问权限。 因此,强烈建议在具有如上所述的直接访问权限的计算机(而不是将重定向到代理的计算机)中运行此脚本。 如果备份的 VM 是 Windows,则生成的密码中会提到地区名称。
例如,如果生成的密码为“ContosoVM_wcus_GUID”,则地区名称为“wcus”,URL 为 <https://pod01-rec2.wcus.backup.windowsazure.com
>
如果备份的 VM 是 Linux,则在[上面]的步骤 1 中下载的脚本文件的文件名中将包含地区名称。 使用该地区名称填写 URL。 下载的脚本名称以 ‘VMname_geoname_GUID
’ 开头。
因此,举例来说,如果脚本文件名为 ContosoVM_wcus_12345678,则地区名称为“wcus”,URL 如下所示:https://pod01-rec2.wcus.backup.windowsazure.com
在 Linux 上,该脚本需要“open-iscsi”和“lshw”组件才能连接到恢复点。 如果这些组件不存在于运行脚本的计算机上,该脚本会请求权限以安装组件。 请同意安装必需组件。
需要访问 download.microsoft.com
,才能下载用于在运行脚本的计算机与恢复点中的数据之间构建安全通道的组件。
步骤 5:运行脚本并标识卷
对于 Windows
右键单击该可执行文件,然后使用管理员凭据运行该文件。 出现提示时,键入密码或粘贴内存中的密码,然后按 Enter。 输入有效的密码后,脚本将连接到恢复点。
[
运行可执行文件时,操作系统将装载新卷并分配驱动器号。 可以使用 Windows 资源管理器或文件资源管理器来浏览这些驱动器。 分配给卷的驱动器号不能与原始虚拟机中的驱动器号相同。 不过,卷名会保留。 例如,如果原始虚拟机上的卷为“数据磁盘(E:\
)”,可在本地计算机上将该卷附加为“数据磁盘(‘任意字母’:\
)”。 浏览脚本输出中所述的所有卷,直至找到文件或文件夹。
对于包含大磁盘的备份 VM (Windows)
如果文件恢复进程在运行文件还原脚本后挂起(例如,如果磁盘从未装载或装载后未显示卷),请执行以下步骤:
确保 OS 为 WS 2012 或更高版本。
确保在还原服务器中按以下建议设置注册表项,并确保重新启动服务器。 GUID 旁边的数字的范围为 0001 - 0005。 下面的示例中采用的是 0004。 浏览注册表项路径,直到参数部分。
registry复制
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\TimeOutValue – change this from 60 to 2400 secs.
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003\Parameters\SrbTimeoutDelta – change this from 15 to 2400 secs.
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003\Parameters\EnableNOPOut – change this from 0 to 1
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003\Parameters\MaxRequestHoldTime - change this from 60 to 2400 secs.
对于 Linux
下载该脚本并将其复制到相关/兼容的 Linux 服务器。 你可能必须修改权限才能使用 chmod +x <python file name>
执行该脚本。 然后,使用 ./<python file name>
运行 python 文件。
在 Linux 中,恢复点的卷会装载到运行脚本的文件夹。 将相应地显示附加的磁盘、卷和对应装载路径。 这些装载路径对于具有根级别访问权限的用户可见。 浏览脚本输出中涉及的卷。
对于包含大磁盘的备份 VM (Linux)
如果文件恢复进程在运行文件还原脚本后挂起(例如,如果磁盘从未装载或装载后未显示卷),请执行以下步骤:
- 在文件 /etc/iscsi/iscsid.conf 中,将设置从
node.conn[0].timeo.noop_out_timeout = 5
至node.conn[0].timeo.noop_out_timeout = 120
- 进行上述更改之后,重新运行脚本。 如果发生暂时性故障,请确保等待 20 到 30 分钟再重新运行,以避免连续突发的请求影响目标准备。 重新运行之间的间隔时间可确保目标已准备好从脚本进行连接。
- 在执行文件恢复后,请务必返回门户并为无法装载卷的恢复点选择“卸载磁盘”。 从本质上来说,此步骤将清理所有现有进程/会话并提高恢复的可能性。
LVM/RAID 阵列(对于 Linux VM)
在 Linux 中,逻辑卷管理器 (LVM) 和/或软件 RAID 阵列用于管理多个磁盘上的逻辑卷。 如果受保护的 Linux VM 使用 LVM 和/或 RAID 阵列,则不能在同一 VM 上运行该脚本。
而应在具有兼容 OS 且支持受保护 VM 的文件系统的任何其他计算机上运行该脚本。
以下脚本输出显示了 LVM 和/或 RAID 阵列磁盘和卷,及其分区类型。
对于 LVM 分区
运行脚本后,LVM 分区会在脚本输出中指定的物理卷/磁盘中装载。 该过程旨在
- 获取物理卷或磁盘中卷组名称的唯一列表
- 然后列出这些卷组中的逻辑卷
- 然后将逻辑卷装载到所需的路径。
列出物理卷中的卷组名称
若要列出卷组名称,请执行以下操作:
Bash复制
sudo pvs -o +vguuid
此命令将列出所有物理卷(包括运行脚本之前存在的物理卷)、其相应的卷组名称以及卷组的唯一用户 ID (UUID)。 该命令的示例输出如下所示。
输出复制
PV VG Fmt Attr PSize PFree VG UUID
/dev/sda4 rootvg lvm2 a-- 138.71g 113.71g EtBn0y-RlXA-pK8g-de2S-mq9K-9syx-B29OL6
/dev/sdc APPvg_new lvm2 a-- <75.00g <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5
/dev/sde APPvg_new lvm2 a-- <75.00g <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5
/dev/sdf datavg_db lvm2 a-- <1.50t <396.50g dhWL1i-lcZS-KPLI-o7qP-AN2n-y2f8-A1fWqN
/dev/sdd datavg_db lvm2 a-- <1.50t <396.50g dhWL1i-lcZS-KPLI-o7qP-AN2n-y2f8-A1fWqN
第一列 (PV) 显示物理卷,后续列显示相关的卷组名称、格式、属性、大小、可用空间以及卷组的唯一 ID。 命令输出显示所有物理卷。 请参阅脚本输出,并确定与备份相关的卷。 在上面的示例中,脚本输出将显示 /dev/sdf 和 /dev/sdd。 因此,datavg_db 卷组属于脚本,而 Appvg_new 卷组属于计算机。 最终想法是确保唯一的卷组名称具有一个唯一 ID。
重复卷组
在某些方案中,卷组名称在运行脚本后可能具有 2 个 UUID。 这意味着执行脚本的计算机中的卷组名称与备份 VM 中的卷组名称相同。 接下来,我们需要重命名备份 VM 卷组。 请查看下面的示例。
输出复制
PV VG Fmt Attr PSize PFree VG UUID
/dev/sda4 rootvg lvm2 a-- 138.71g 113.71g EtBn0y-RlXA-pK8g-de2S-mq9K-9syx-B29OL6
/dev/sdc APPvg_new lvm2 a-- <75.00g <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5
/dev/sde APPvg_new lvm2 a-- <75.00g <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5
/dev/sdg APPvg_new lvm2 a-- <75.00g 508.00m lCAisz-wTeJ-eqdj-S4HY-108f-b8Xh-607IuC
/dev/sdh APPvg_new lvm2 a-- <75.00g 508.00m lCAisz-wTeJ-eqdj-S4HY-108f-b8Xh-607IuC
/dev/sdm2 rootvg lvm2 a-- 194.57g 127.57g efohjX-KUGB-ETaH-4JKB-MieG-EGOc-XcfLCt
脚本输出将显示附加了 /dev/sdg、/dev/sdh、/dev/sdm2。 因此,相应的 VG 名称为 Appvg_new 和 rootvg。 但是,计算机的 VG 列表中也存在相同的名称。 我们可以验证一个 VG 名称是否具有两个 UUID。
现在,我们需要为基于脚本的卷重命名 VG 名称,例如:/dev/sdg、/dev/sdh、/dev/sdm2。 若要重命名卷组,请使用以下命令
Bash复制
sudo vgimportclone -n rootvg_new /dev/sdm2
sudo vgimportclone -n APPVg_2 /dev/sdg /dev/sdh
现在,我们拥有所有具有唯一 ID 的 VG 名称。
活动卷组
确保与脚本卷相对应的卷组处于活动状态。 以下命令用于显示活动卷组。 检查此列表中是否存在脚本的相关卷组。
Bash复制
sudo vgdisplay -a
否则,请使用以下命令激活卷组。
Bash复制
sudo vgchange –a y <volume-group-name>
列出卷组中的逻辑卷
获得与脚本相关的 VG 的唯一活动列表后,便可以使用以下命令列出这些卷组中存在的逻辑卷。
Bash复制
sudo lvdisplay <volume-group-name>
此命令将每个逻辑卷的路径显示为“LV 路径”。
装载逻辑卷
将逻辑卷装载到所选的路径:
Bash复制
sudo mount <LV path from the lvdisplay cmd results> </mountpath>
警告
不要使用“mount -a”。 此命令会装载“/etc/fstab”中描述的所有设备。 这可能意味着可能会装载重复的设备。 数据可以重定向到脚本创建的设备,这些设备不会保留数据,因此可能会导致数据丢失。
对于 RAID 阵列
以下命令显示有关所有 RAID 磁盘的详细信息:
Bash复制
sudo mdadm –detail –scan
相关 RAID 磁盘显示为 /dev/mdm/<RAID array name in the protected VM>
如果 RAID 磁盘具有物理卷,请使用 mount 命令:
Bash复制
sudo mount [RAID Disk Path] [/mountpath]
如果 RAID 磁盘中配置了另一 LVM,请使用前述 LVM 分区相关过程,但使用卷名称代替 RAID 磁盘名称。
步骤 6:关闭连接
识别文件并将其复制到本地存储位置后,请删除(或卸载)其他驱动器。 若要卸载驱动器,请在 Azure 门户中的“文件恢复”菜单上,选择“卸载磁盘”。
卸载磁盘后,会显示一条消息。 连接可能在几分钟时间后才会刷新,以便能够删除磁盘。
在 Linux 中,断开与恢复点的连接后,OS 不会自动删除相应装载路径。 装载路径作为“孤立”的卷存在并且可见,但访问/写入文件时会引发错误。 这些卷可以手动删除。 该脚本运行时会标识以前的任何恢复点存在的任何此类卷,并在获得许可后将其清除。
备注
还原所需的文件后,请确保关闭连接。 这一点很重要,尤其是在执行脚本的计算机还进行了备份配置的方案中。 如果连接仍处于打开状态,则后续备份可能会失败,并显示错误“UserErrorUnableToOpenMount”。 出现这种情况是因为已装载的驱动器/卷被假定为可用,并且在访问时它们可能会因为基础存储(即 iSCSI 目标服务器)可能不可用而失败。 清理连接将删除这些驱动器/卷,因此它们在备份期间将不可用。