使用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 實例:
- 使用具有創建 EC2 實例、EBS 卷和 EBS 快照所需權限的帳戶登錄 AWS 管理控制台。
- 點擊服務,然後在計算部分點擊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 實例:
- 在 EC2 管理控制台中打開包含 EC2 實例列表的頁面。右鍵單擊實例名稱,在上下文菜單中,單擊 停止實例。
- 找到 EC2 實例使用的卷。單擊 存儲 選項卡,單擊適當的 EBS 卷的卷 ID(在我們的案例中是 vol-0617000000000763c)。
拍攝快照
我們準備好創建 EC2 實例的快照:
- 選擇 EBS 卷(單擊行左側的勾選框)並單擊 操作 > 創建快照。
- 輸入描述,設置加密設置並添加標籤。我使用以下參數:
- 描述: EBS 快照部落格 01
- 未加密
點擊建立快照。
注意:我們使用未加密的卷並創建未加密的快照。在這種情況下,可以手動設置快照的加密設置。當您對加密的卷進行快照時,快照會自動加密。
- 您應該看到以下消息和快照 ID:
建立快照請求成功
snap-0778000000000ab40
點擊快照 ID 打開包含快照選項和狀態的頁面。
- 等待中快照狀態意味著正在將來自 EBS 卷的數據轉移到 Amazon S3。等待快照創建完成(狀態更改為完成)。時間取決於保存到快照的數據大小。
如何拍攝多卷快照
在一台 EC2 實例中使用多個 EBS 卷是很常見的。在這種情況下,您可以為該 EC2 實例上附加的所有 EBS 卷創建多卷快照以進行 Amazon EC2 備份。
本節將涵蓋:
為 EC2 實例創建第二個 EBS 卷
首先,讓我們將第二個 EBS 卷添加到我們用於演示的 EC2 實例中:
- 在 EC2 管理控制台的導航窗格中,前往 Elastic Block Store > Volumes。點擊 Create Volume。
- 對於 可用區,區域必須與實例的區域相同(在我們的情況下為eu-central-1c)。
輸入卷類型/大小,設置加密選項,並輸入標籤。標籤有助於在卷列表中查找卷。我們將卷大小設置為 1 GiB,並使用以下標籤:
-
鍵:blog
-
值:臨時卷2
點擊 Create Volume。
- 記住(或記下)卷的 ID(在我們的情況下為 vol-0b4a0000000003d01)。點擊卷 ID 以打開卷屬性。
- 將卷附加到 EC2 實例。右鍵點擊卷或點擊 Actions,在打開的菜單中點擊 Attach Volume。
- 選擇要將 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卷進行更改
- 在運行Linux的EC2實例上附加的第二個EBS卷的分割區上創建文件:
echo “磁盤2的EBS快照” > /disk2/d2-file01.txt
- 在第一個磁盤上進行更改,以創建EC2實例使用的第一個卷的新EBS快照。兩個卷應包含自上一個快照拍攝時的狀態以來的更改。
我們在第一個卷上創建snapshot02.txt文件,以更方便地檢測保存到第一個卷的新快照的更改。
一旦將具有新數據的兩個EBS卷附加到EC2實例上,我們就可以創建多卷快照。
創建多卷快照
- 前往EC2實例管理頁面的導覽窗格中的
Elastic Block Store > 快照。點擊 創建快照。
- 選擇資源類型:實例。
- 輸入需要備份其卷的EC2實例的實例ID。
所選實例附加的所有卷都會自動選中。
- 輸入描述以幫助您在需要時在AWS中找到EBS快照。在我們的示例中,描述為 EBS快照博客02。
- 如果您想使用分配給EBS卷的標籤,請選擇 從卷複製標籤 复选框。
- 一旦點擊 創建快照,所有選定卷的快照都會被創建。
如果操作成功,您將看到以下消息:
創建快照請求成功
顯示兩個亞馬遜快照標識符:snap-0f95000000000de71 和 snap–0a91000000000769b 在我們的案例中。
您可以保存這些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)。此卷用於存儲文件,並且操作系統未安裝在此卷上。
- 在EC2管理控制台的導航窗格中,前往Elastic Block Store > Snapshots。
我們在搜索欄位中輸入“blog”以顯示所有為用於撰寫此博客文章的EC2實例的EBS卷創建的快照。這是為什麼添加描述和標籤值得的一個例子。
- 選擇1 GiB卷的快照並從快照創建一個新卷。右鍵單擊快照,在打開的菜單中點擊Create Volume。
- 在Create Volume頁面上定義所需的卷參數:選擇卷類型並定義卷大小、可用區域、加密選項、標籤鍵和值。
可用區域必須與EC2實例的可用區域相同(在我們的例子中是eu-central-1c)。
卷大小與我們示例中原始備份卷的大小相同(1 GiB)。
標籤鍵是blog,值是recovered volume 1。
- 點擊Create Volume完成並使用EBS快照創建EBS卷。
您將看到以下消息:
Create Volume Request Succeeded
您可以保存卷ID。新卷ID在我們的例子中是vol-09cd000000000b502。
恢復系統卷
要恢復EC2實例,您需要恢復安裝了操作系統的EBS卷。在這種情況下,您可以從EBS卷快照創建一個映像,該快照被客戶端操作系統使用,並使用此映像啟動實例(已恢復的EC2實例)。
創建映像
- 在EC2管理控制台中,轉到Elastic Block Store > Snapshots並選擇所需的EBS卷快照,該卷上安裝了客戶端操作系統。
我們選擇客戶端操作系統使用的8 GiB卷的最新快照。此EBS卷快照是在為EC2實例創建多卷快照時創建的。
右鍵單擊快照,在打開的菜單中點擊Create Image。
- 在打開的窗口中,輸入所需信息並選擇選項以從EBS快照創建映像。我們使用以下參數。
名稱:blog-recovered
描述:從EBS快照恢復(blog)
其他設置保持默認值。
點擊Create。
- 打開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 實例。
- 現在顯示啟動狀態頁面。點擊檢視實例。
- 為恢復的實例輸入一個名稱(在我們的案例中為blog-recovered)。恢復的 E2 實例的狀態是運行中。從 EBS 快照中恢復的兩個 EBS 卷已附加到 EC2 實例(參見下面的截圖)。
檢查已還原的檔案
讓我們檢查一下在拍攝最新快照之前創建的檔案是否已被還原:
列出已附加的區塊設備:
lsblk
列出使用者當前(家目錄)目錄中的檔案:
ls -al
snapshot01.txt 和 snapshot2.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/