如何为AWS EC2数据保护拍摄EC2实例的快照;

如果您正在使用亚马逊网络服务(AWS)在弹性计算云中运行EC2实例(虚拟机),您有几种方法可以保护您的工作负载免受软件故障、恶意软件感染、意外删除等数据丢失的影响。您可以选择的一个选项是AWS内置的EC2实例备份功能,称为EBS快照。本博文将解释如何使用EBS卷快照创建EC2实例的快照,并详细介绍配置过程的示例。

什么是EBS快照?

EBS快照是存储在亚马逊S3中的弹性块存储(EBS)卷的增量副本。这意味着当您第一次创建EBS快照时,会创建一个完整备份,而后续的EBS快照只会复制已更改的数据。EBS卷是附加到EC2实例的虚拟磁盘。

尽管EBS快照存储在亚马逊S3中,但您无法手动访问S3存储中的快照。您可以在EC2管理控制台中管理这些快照。

注意:有时也会使用AWS EC2快照和亚马逊快照这些术语来指代EBS快照。

EBS快照的工作原理

EBS快照是EC2实例数据的块级备份,代表了在发出快照命令时EBS卷的特定时间点上的情况。这意味着如果实例正在运行,则在启动快照后写入EBS卷的数据块不会保存到快照中。因此,EBS快照是崩溃一致而不是应用程序一致的备份

请注意,EBS快照与VMware vSphere和Microsoft Hyper-V中的快照不同。Hyper-V和VMware快照不是备份,不能替代正确的备份。

然而,EBS快照存在一些限制,包括缺乏调度和保留选项,无法创建本地副本,以及创建应用程序一致的EC2快照以简化恢复的复杂性。

在AWS控制台中为EC2实例创建快照的方法

AWS管理控制台是用于管理所有AWS计算、存储和其他资源的GUI Web界面,包括创建EBS快照。

要访问要创建快照的EC2实例:

  1. 使用具有创建EC2实例、EBS卷和EBS快照所需权限的帐户登录AWS管理控制台。
  2. 点击 服务,在 计算 部分点击 EC2 打开 EC2 实例、EBS 卷和其他 EC2 功能的管理控制台。

我们准备了一个 EC2 实例来演示创建 EBS 快照的步骤。我们将使用 EBS 快照备份和恢复的 EC2 实例参数如下:

名称:blog-temp

EC2 实例 ID:i-0071290000000cb84

实例类型:t2.micro

可用区域:eu-central-1c

EBS 卷 1:vol-0617000000000763c

卷类型:gp2

卷大小:8 GB

运行在 EC2 实例上的客户操作系统 (OS) 是 Ubuntu Server (Linux)。

写入文件到 EBS 卷

在创建快照之前,让我们在连接到 EC2 实例的虚拟磁盘上创建两个文件。这样,我们可以检查在从 EBS 快照恢复实例后是否能够恢复这些文件。我们在用户主目录下创建两个文件:

lspci > file01.txt

echo "test EC2 snapshot 01" > snapshot01.txt

准备实例

停止 EC2 实例以确保快照包含一致的数据。原因是 EBS 卷在块级别上工作。当拍摄 EBS 快照时,保存了那个时刻的 EBS 卷状态。存储块按原样保存。系统在文件系统级别上进行文件操作时不会意识到当时的操作。如果在拍摄快照时正在对 EBS 卷上写入文件,则快照将包含不一致的数据。效果类似于在文件正在写入时从物理计算机上拔掉电源线。

如果要对非系统 EBS 卷进行快照,可以从操作系统中卸载文件系统,以确保卷上没有文件写入操作。必须禁用 EC2 实例的休眠才能拍摄快照。

为了准备 EC2 实例以进行快照:

  1. 打开 EC2 管理控制台中 EC2 实例列表页面。右键单击实例名称,在上下文菜单中单击停止实例

  1. 找到 EC2 实例使用的卷。点击存储选项卡,然后点击适当的 EBS 卷的卷 ID(在我们的情况下为vol-0617000000000763c)。

拍摄快照

我们准备创建 EC2 实例的快照:

  1. 选择 EBS 卷(点击行左侧的复选框),然后点击操作 > 创建快照

  1. 输入描述,设置加密设置,并添加标签。我使用以下参数:
  • 描述:EBS 快照博客 01
  • 未加密

点击创建快照

注意:我们使用未加密卷创建未加密快照。在这种情况下,可以手动设置快照的加密设置。当您对加密卷进行快照时,快照会自动加密。

  1. 您应该看到以下消息和快照ID:

创建快照请求成功
snap-0778000000000ab40

点击快照ID以打开包含快照选项和状态的页面。

  1. 处于等待中快照状态表示正在将来自EBS卷的数据传输到Amazon S3。等待快照创建完成(状态更改为已完成)。时间取决于保存到快照的数据大小。

如何进行多卷快照

发现一个EC2实例使用多个EBS卷是很常见的。在这种情况下,您可以为连接到该EC2实例的所有EBS卷创建多卷快照以进行Amazon EC2备份。

在本节中,我们将涵盖:

为EC2实例创建第二个EBS卷

让我们首先向我们用于演示目的的EC2实例添加第二个EBS卷:

  1. 在EC2管理控制台的导航窗格中,转到弹性块存储 > 。点击创建卷

  1. 对于可用区,区域必须与实例的区域相同(在我们的案例中是eu-central-1c)。

输入卷类型/大小,设置加密选项,并输入标签。标签有助于在卷列表中找到卷。我们将卷大小设置为1 GiB,并使用以下标签:

  • 键:blog

  • 值:temp volume 2

点击创建卷

  1. 记住(或写下)卷的ID(在我们的案例中为vol-0b4a0000000003d01)。点击卷ID以打开卷属性。

  1. 将卷附加到EC2实例。右键单击卷或点击操作,在打开的菜单中点击附加卷

  1. 选择要附加EBS卷的实例。您必须选择EC2实例ID。在我们的案例中,实例ID为i-0071290000000cb84

您可以选择用于访问附加卷的客户操作系统中的设备。在我们的案例中使用/dev/sdf

点击附加以将新卷附加到EC2实例。

注意:关于重命名磁盘设备的有用信息显示在备注中。在我们的情况下,/dev/sdf在客户操作系统中被重命名为/def/xvdf

现在有两个卷附加到我们的 EC2 实例(blog-temp):

vol-0617000000000763c

vol-0b4a0000000003d01

在第二个 EBS 卷上写入数据

接下来,我们将在第二个 EBS 卷上创建一个文件。此文件将用于检查从 EBS 快照还原卷后是否恢复了所有数据。因此,我们将创建一个分区,创建一个文件系统,并将文件系统挂载到运行在 EC2 实例上的客户 Linux 操作系统中。

即使我们专注于对 EBS 快照的操作而不是运行在 EC2 实例上的客户 Linux 操作系统中的操作,我们也列出了使用的命令,以更好地理解卷的操作。

管理存储

  • 使用lsblk来显示 Linux 中块设备的详细信息。
  • 使用df -h来检查已挂载磁盘的存储空间。
  • 使用mount来检查已挂载的磁盘。

创建和挂载分区

在第二个 EBS 卷上使用 parted 创建和格式化分区:

sudo parted -l

parted /dev/xvdf

(parted) mklabel msdos

(parted) print

(parted) mkpart primary ext4 1MB 955MB

(parted) print

(parted) quit

在准备的分区上创建文件系统:

mkfs.ext4 /dev/xvdf1

创建用作挂载点的目录:

mkdir disk2

将带有文件系统的分区挂载到创建的目录:

mount /dev/xvdf1 /disk2/

转到已挂载分区的目录:

cd /disk2

将更改写入2个EBS卷

  1. 在运行Linux的EC2实例上创建第二个EBS卷上的分区上的文件:

echo “为磁盘2的EBS快照” > /disk2/d2-file01.txt

  1. 在第一个磁盘上进行更改,以创建EC2实例使用的第一个卷的新EBS快照。两个卷应包含从上次拍摄快照时的状态开始的更改。

我们在第一个卷上创建snapshot02.txt文件,以更方便地检测保存到第一个卷的新快照的更改。

一旦将具有新数据的两个EBS卷附加到EC2实例,我们就可以创建多卷快照。

创建多卷快照

  1. 转到 EC2 实例管理页面的导航窗格中的 Elastic Block Store > 快照。单击 创建快照

  1. 选择资源类型:实例
  2. 输入所需 EC2 实例的实例 ID,其卷您希望使用 EBS 快照进行备份。

所选实例附加的所有卷会自动选择。

  1. 输入说明以帮助您在需要时在 AWS 中找到 EBS 快照。在我们的示例中,说明是EBS 快照博客 02
  2. 如果您想使用分配给 EBS 卷的标记,请选择 从卷复制标记 复选框。
  3. 一旦点击 创建快照,所有选定卷的快照将被创建。

如果操作成功,您将看到以下消息:

创建快照请求成功

显示两个亚马逊快照标识符:snap-0f95000000000de71snap0a91000000000769b 在我们的案例中。

您可以保存这些 ID 值,并单击其中一个以检查快照创建状态。在启动快照创建后,操作状态为等待中,一旦过程完成,状态将变为完成

A new snapshot for each volume has been created.

使用 AWS CLI 创建快照

如果您更喜欢命令行界面或需要自动化快照创建,可以使用 AWS CLI 作为 AWS 管理控制台的替代方案。

在AWS CLI中创建EBS快照的命令是:

aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description "这是博客的测试快照"

输出应如下:

{

    "Description": "这是博客的测试快照",

    "Tags": [],

    "Encrypted": false,

    "VolumeId": "vol-0b4a51e1cea333d01",

    "State": "pending",

    "VolumeSize": 8,

    "StartTime": "2021-08-28T21:06:01.000Z",

    "Progress": "",

    "OwnerId": "012345678910",

    "SnapshotId": "snap-0689749a39a7b822b"

}

创建带有标签的快照的命令:

aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description '生产备份' --tag-specifications

'ResourceType=snapshot,Tags=[{Key=博客,Value=测试},{Key=AWS,Value=EC2-快照}]'

如何使用EBS快照还原EC2实例

我们已经创建了附加到Amazon EC2实例的EBS卷的快照。这些快照是AWS中的一种数据备份形式。现在让我们看看如何通过恢复创建EC2实例:

  • 特定的EBS卷在AWS中
  • 整个EC2实例

恢复第二个EBS卷

让我们从快照中恢复第二个EBS卷(大小为1 GiB)。这个卷用于存储文件,操作系统没有安装在这个卷上。

  1. 在EC2管理控制台的导航窗格中,转到弹性块存储 > 快照

我们在搜索框中输入“博客”,以显示为用于编写此博客文章的EC2实例的EBS卷创建的所有快照。这是添加描述和标签的价值的一个例子。

  1. 选择1 GiB卷的快照,并从快照创建一个新卷。右键单击快照,在打开的菜单中点击创建卷

  1. 创建卷页面上定义所需的卷参数:选择卷类型,定义卷大小,可用区,加密选项,标签键和值。

可用区必须与EC2实例的可用区相同(在我们的例子中是eu-central-1c)。

卷大小与我们的示例中原始备份卷的大小(1 GiB)相同。

标签键是博客,值是恢复的卷1

  1. 点击创建卷完成并使用EBS快照创建EBS卷。

您将看到以下消息:

创建卷请求成功

您可以保存卷ID。新卷的ID在我们的例子中是vol-09cd000000000b502

恢复系统卷

要恢复EC2实例,您需要恢复安装操作系统的EBS卷。在这种情况下,您可以从来宾操作系统使用的EBS卷的快照创建映像,并使用此映像(已恢复的EC2实例)启动实例。

创建映像

  1. 在EC2管理控制台中,转到弹性块存储 > 快照,并选择所需快照,该快照是来宾操作系统安装的EBS卷的快照。

我们选择来宾操作系统(Ubuntu Server)使用的8 GiB卷的最新快照。此EBS卷快照是在我们为EC2实例创建多卷快照时创建的。

右键单击快照,在打开的菜单中,点击创建映像

  1. 在打开的窗口中,输入所需信息并选择选项,以从EBS快照创建映像。我们使用以下参数。

名称:blog-recovered

描述:从EBS快照恢复(blog)

其他设置保持默认值。

点击创建

  1. 打开已收到创建映像请求对话框。单击映像ID以查看有关映像的信息(在我们的例子中是ami-08ed800000000872a)。等待映像创建完成。

启动映像

映像创建完成后,右键单击映像并点击启动

新的EC2实例创建向导打开。您必须选择实例选项。您可以选择与备份的原始VM相同的选项。您还可以将实例恢复到一个更强大的新EC2实例。

注意:由于我们已经从包含AMI列表的页面上选择了blog-recovered AMI,所以我们被重定向到向导的第二步(而不是第一步. 选择AMI)。

第二步:选择实例类型。我们选择t2.micro作为实例类型。在向导的每一步都单击下一步以继续。

第三步:配置实例。根据您的要求配置详细信息,包括网络设置、IAM角色、关闭行为等。

第四步:添加存储在使用EBS快照恢复EC2实例时很重要。单击添加新卷。此页面上添加了一个包含卷选项的新行。在快照字段中输入所需卷快照的ID。

我们输入snap-0a91000000000769b,这是我们的1-GiB卷快照的ID。在我们的示例中,默认选择了8-GiB卷的大小。我们可以将卷大小设置为1 GiB,与原始EBS卷配置相同。您还可以选择存储设备、卷类型、加密和终止时删除选项。

步骤 5:添加标签。确保标签对搜索有用。标签应用于所有卷和实例。在此示例中,标签键是博客,值是恢复的 VM 01

步骤 6:配置安全组。编辑参数以控制您的 EC2 实例的网络流量。

步骤 7:审查实例启动。审查您的实例启动详情,然后点击启动完成。您必须选择一个密钥对或创建一个新的以访问 EC2 实例。

  1. 现在显示启动状态页面。点击查看实例

  1. 为恢复的实例输入一个名称(在我们的案例中为blog-recovered)。恢复的 E2 实例的状态为运行。来自 EBS 快照的两个恢复的 EBS 卷已附加到 EC2 实例(请参见下面的截图)。

检查恢复的文件

让我们检查一下在获取最新快照之前创建的文件是否已恢复:

列出已连接的块设备:

lsblk

列出用户当前(主目录)目录的文件:

ls -al

之前在安装 OS 的 EBS 卷上获取第一和第二个快照之前创建的 snapshot01.txt snapshot2.txt 文件均存在。

挂载位于第二个磁盘(EBS 卷)上的分区:

sudo mount /dev/xvdb1 /disk2/

分区名称已更改为/dev/xvdb1。请注意,在恢复实例后,您可能需要编辑/etc/fstab以进行自动挂载。

ls -al /disk2/

d2-file01.txt 存在于恢复后存储在第二个 EBS 卷上的文件系统中。

所有附加的 EBS 卷的 AWS EC2 实例已成功从 EBS 快照中恢复。所有所需数据均已保留。

结论

您可以使用多卷快照备份单个卷或备份所有卷。这是一项非常方便的原生 AWS 功能,用于数据保护和灾难恢复。但请注意,将 EBS 快照存储在亚马逊云中会产生额外的费用,因为会使用额外的云存储。此外,使用 EBS 快照进行备份还存在其他限制,例如在快照被创建时系统不知道正在写入的文件。因此,使用 EBS 快照进行的备份是崩溃一致的,而不是应用一致的。

NAKIVO 备份与复制是一种数据保护解决方案,支持创建 Amazon EC2 实例的应用程序感知备份和副本。您还可以使用该解决方案大大简化和自动化备份和恢复过程。从备份快速恢复整个 EC2 实例,无需恢复 EBS 卷,创建 EC2 实例,并手动将卷附加到创建的 EC2 实例。

Source:
https://www.nakivo.com/blog/how-to-create-snapshots-of-ec2-instance/