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

使用Amazon Web Services(AWS)運行Elastic Compute Cloud中的EC2實例(VM)時,您有幾種方法來保護您的工作負載免受軟件故障、惡意軟件感染、意外刪除等造成的數據丟失。其中一個可用的選項是用於EC2實例的AWS內置備份功能,稱為EBS快照。本博文將解釋如何使用EBS卷快照來創建EC2實例的快照,並提供配置過程的詳細示例。

什麼是EBS快照?

EBS快照是存儲在Amazon S3中的彈性塊存儲(EBS)卷的增量副本。這意味著當您第一次創建EBS快照時,將創建一個完整的備份,並且只為後續的EBS快照複製已更改的數據。EBS卷是附加到EC2實例的虛擬磁盤。

儘管EBS快照存儲在Amazon S3中,但您無法手動訪問S3存儲中的快照。您可以在EC2管理控制台中管理這些快照。

注意:有時也會使用AWS EC2快照和Amazon快照這些術語來指代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 卷

首先,讓我們將第二個 EBS 卷添加到我們用於演示的 EC2 實例中:

  1. 在 EC2 管理控制台的導航窗格中,前往 Elastic Block Store > Volumes。點擊 Create Volume

  1. 對於 可用區,區域必須與實例的區域相同(在我們的情況下為eu-central-1c)。

輸入卷類型/大小,設置加密選項,並輸入標籤。標籤有助於在卷列表中查找卷。我們將卷大小設置為 1 GiB,並使用以下標籤:

  • 鍵:blog

  • 值:臨時卷2

點擊 Create Volume

  1. 記住(或記下)卷的 ID(在我們的情況下為 vol-0b4a0000000003d01)。點擊卷 ID 以打開卷屬性。

  1. 將卷附加到 EC2 實例。右鍵點擊卷或點擊 Actions,在打開的菜單中點擊 Attach Volume

  1. 選擇要將 EBS 卷附加到的實例。您必須選擇 EC2 實例 ID。在我們的情況下,實例 ID 為 i-0071290000000cb84

您可以選擇用於訪問附加卷的客戶操作系統中的設備。在我們的情況下使用 /dev/sdf

點擊 Attach 以將新卷附加到 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。

所選實例附加的所有卷都會自動選中。

  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 "這是用於部落格的測試快照"

輸出應該如下:

{

    "描述": "這是用於部落格的測試快照",

    "標籤": [],

    "已加密": false,

    "卷ID": "vol-0b4a51e1cea333d01",

    "狀態": "待處理",

    "卷大小": 8,

    "開始時間": "2021-08-28T21:06:01.000Z",

    "進度": "",

    "所有者ID": "012345678910",

    "快照ID": "snap-0689749a39a7b822b"

}

創建帶標籤快照的命令:

aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description 'Prod backup' --tag-specifications

'ResourceType=snapshot,Tags=[{Key=部落格,Value=測試},{Key=AWS,Value=EC2-快照}]'

如何使用EBS快照還原EC2實例

我們已經創建了附加到Amazon EC2實例的EBS卷的快照。這些快照是AWS中的數據備份形式。現在讓我們找出如何通過恢復來從快照創建EC2實例:

  • 在AWS中特定的EBS卷
  • 整個EC2實例

還原第二個EBS卷

讓我們從快照中恢復第二個EBS卷(大小為1 GiB)。此卷用於存儲文件,並且操作系統未安裝在此卷上。

  1. 在EC2管理控制台的導航窗格中,前往Elastic Block Store > Snapshots

我們在搜索欄位中輸入“blog”以顯示所有為用於撰寫此博客文章的EC2實例的EBS卷創建的快照。這是為什麼添加描述和標籤值得的一個例子。

  1. 選擇1 GiB卷的快照並從快照創建一個新卷。右鍵單擊快照,在打開的菜單中點擊Create Volume

  1. Create Volume頁面上定義所需的卷參數:選擇卷類型並定義卷大小、可用區域、加密選項、標籤鍵和值。

可用區域必須與EC2實例的可用區域相同(在我們的例子中是eu-central-1c)。

卷大小與我們示例中原始備份卷的大小相同(1 GiB)。

標籤鍵是blog,值是recovered volume 1

  1. 點擊Create Volume完成並使用EBS快照創建EBS卷。

您將看到以下消息:

Create Volume Request Succeeded

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

恢復系統卷

要恢復EC2實例,您需要恢復安裝了操作系統的EBS卷。在這種情況下,您可以從EBS卷快照創建一個映像,該快照被客戶端操作系統使用,並使用此映像啟動實例(已恢復的EC2實例)。

創建映像

  1. 在EC2管理控制台中,轉到Elastic Block Store > Snapshots並選擇所需的EBS卷快照,該卷上安裝了客戶端操作系統。

我們選擇客戶端操作系統使用的8 GiB卷的最新快照。此EBS卷快照是在為EC2實例創建多卷快照時創建的。

右鍵單擊快照,在打開的菜單中點擊Create Image

  1. 在打開的窗口中,輸入所需信息並選擇選項以從EBS快照創建映像。我們使用以下參數。

名稱:blog-recovered

描述:從EBS快照恢復(blog)

其他設置保持默認值。

點擊Create

  1. 打開Create Image request received對話框。單擊映像ID以查看有關映像的信息(在我們的情況下為ami-08ed800000000872a)。等待映像創建完成。

啟動映像

映像創建完成後,右鍵單擊映像並點擊Launch

新的 EC2 實例創建精靈已經打開。您必須選擇實例選項。您可以選擇與備份的原始 VM 選擇相同的選項。您也可以將實例恢復到一個新的更強大的 EC2 實例。

注意:我們被重定向到精靈的 第 2 步(而不是 第 1 步。選擇 AMI),因為我們已經從 AMI 列表頁面上選擇了 blog-recovered AMI。

第 2 步:選擇實例類型。我們選擇 t2.micro 作為實例類型。在精靈的每一步中點擊 下一步 繼續。

第 3 步:配置實例。根據您的要求配置詳細信息,包括網絡設置、IAM 角色、關機行為等。

第 4 步:添加存儲在使用 EBS 快照恢復 EC2 實例時很重要。點擊 添加新卷。此頁面上將添加帶有卷選項的新行。在 快照 欄中輸入所需卷快照的 ID。

我們輸入 snap-0a91000000000769b,這是我們 1-GiB 卷的快照的 ID。在我們的示例中默認選擇了 8-GiB 大小的卷。我們可以將卷大小設置為 1 GiB,就像為原始 EBS 卷配置的那樣。您還可以選擇存儲設備、卷類型、加密和終止時刪除選項。

步驟 5:新增標籤。確保標籤對搜索有用。標籤應用於所有的卷和實例。在此示例中,標籤鍵是blog,值是恢復的 VM 01

步驟 6:配置安全性群組。編輯參數以控制您的 EC2 實例的網路流量。

步驟 7:檢閱實例啟動。檢閱您的實例啟動詳細資料,然後點擊啟動以完成。您必須選擇一個金鑰對或建立一個新的以訪問 EC2 實例。

  1. 現在顯示啟動狀態頁面。點擊檢視實例

  1. 為恢復的實例輸入一個名稱(在我們的案例中為blog-recovered)。恢復的 E2 實例的狀態是運行中。從 EBS 快照中恢復的兩個 EBS 卷已附加到 EC2 實例(參見下面的截圖)。

檢查已還原的檔案

讓我們檢查一下在拍攝最新快照之前創建的檔案是否已被還原:

列出已附加的區塊設備:

lsblk

列出使用者當前(家目錄)目錄中的檔案:

ls -al

snapshot01.txtsnapshot2.txt 檔案,在安裝 OS 的 EBS 卷拍攝第一和第二個快照之前已經存在。

掛載位於第二個磁碟上的分區(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/