如何為 AWS EC2 資料保護功能擷取 EC2 執行個體的快照
如果您正在使用 Amazon Web Services (AWS) 在 Elastic Compute Cloud 中運行 Amazon EC2 執行個體(虛擬機器),您可以透過多種方式保護工作負載,避免因軟體故障、惡意軟體感染、誤刪等原因導致的資料遺失。 其中一種可用的選項是 AWS 為 EC2 執行個體內建的備份特點,稱為 EBS 快照。這篇部落格文章將說明如何透過 EBS 卷宗快照來建立 EC2 執行個體的快照,並附有詳細的設定流程範例。
什麼是 EBS 快照?
EBS 快照是 Elastic Block Store (EBS) 卷的增量副本,儲存於 Amazon S3 中。這表示當您首次建立 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 管理主控台 (Management Console) 是一個用於管理所有 AWS 運算、儲存及其他資源的圖形化網頁介面,包括建立 EBS 快照。
若要存取您要為其建立快照的 EC2 執行個體:
- 請使用具備建立 EC2 執行個體、EBS 卷宗及 EBS 快照所需權限的帳戶,登入 AWS 管理主控台。
- 點擊
Services以及在Compute區段,點擊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 執行個體清單的頁面。右鍵點擊執行個體名稱,然後在快顯選單中點擊
Stop instance.
- 找到 EC2 執行個體所使用的儲存空間的位置。點擊
Storage選取該分頁,然後點選相應 EBS 卷的卷識別碼(vol-0617000000000763c (就我們的情況而言)。
截取快照
我們準備好要建立 EC2 執行個體的快照:
- 選取 EBS 卷(點擊該行左側的核取方塊),然後點擊
Actions>Create Snapshot.
- 輸入描述、設定加密選項,並新增標籤。我使用以下參數:
- 說明: EBS 快照部落格 01
- 加密: 未加密
點擊 Create Snapshot.
註: 我們使用未加密的磁碟區並建立一個未加密的快照。在此情況下,快照的加密設定可手動設定。當您對加密的磁碟區建立快照時,該快照會自動進行加密。
- 您應會看到以下訊息及快照 ID:
建立快照請求成功
snap-0778000000000ab40
點擊快照 ID,即可開啟顯示快照選項與狀態的頁面。
- 該 待定 "快照狀態"表示 EBS 卷的資料目前正在傳輸至 Amazon S3。請等待快照建立完成(狀態將變更為 已完成)。所需時間取決於快照中儲存的資料大小。
如何建立多卷快照
EC2 執行個體通常會使用多個 EBS 卷。在此情況下,您可以為該 EC2 執行個體所掛載的所有 EBS 卷建立多卷快照,以進行 Amazon EC2 備份。
本節將探討:
為 EC2 執行個體建立第二個 EBS 儲存卷
首先,讓我們在用於示範的 EC2 執行個體上新增第二個 EBS 儲存卷:
- 在 EC2 管理主控台的導覽窗格中,前往
Elastic Block Store>Volumes. 點擊Create Volume.
- 關於 可用區域, 該區域必須與實例的區域相同(eu-central-1c (就我們的情況而言)。
輸入卷宗類型/大小、設定加密選項,並輸入標籤。標籤有助於在卷宗清單中找到該卷宗。我們將卷宗大小設定為 1 GiB,並使用以下標籤:
-
說明: 部落格
-
值: 暫存卷 2
點擊 Create Volume.
- 請記住(或寫下)該磁碟區的識別碼 (vol-0b4a0000000003d01 (在我們的情況下)。點擊磁碟區識別碼以開啟磁碟區屬性。
- 將儲存卷掛載至 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 客體作業系統的操作,但我們仍列出相關指令,以便更深入理解磁碟區的操作。
Managing storage
- 使用
lsblk用來顯示 Linux 中區塊裝置的詳細資訊。 - 使用
df -h檢查已掛載磁碟的儲存空間。 - 使用
mount檢查已掛載的磁碟。
建立並掛載分割區
在 parted 中於第二個 EBS 卷上建立並格式化分割區:
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 "EBS snapshot for disk 2" > /disk2/d2-file01.txt
- 請對第一個磁碟進行變更,以建立 EC2 執行個體所使用之第一個卷宗的新 EBS 快照。這兩個卷宗都應包含自上次建立快照以來的變更內容。
我們打造 snapshot02.txt 將檔案存放在第一個卷上,以便更方便地偵測儲存至第一個卷新快照中的變更。
一旦將兩個包含新資料的 EBS 卷掛載至 EC2 執行個體後,我們即可建立多卷快照。
建立多卷快照
- 前往
Elastic Block Store>Snapshots在 EC2 執行個體管理頁面的導覽窗格中。按一下Create Snapshot.
- 請選擇資源類型: 實例.
- 請輸入您要透過 EBS 快照備份其儲存卷的目標 EC2 執行個體的執行個體 ID。
所選實例上所有附屬的磁碟卷都會自動被選中。
- 請輸入描述文字,以便日後在 AWS 中查找該 EBS 快照。在本範例中,描述文字為 EBS 快照部落格 02.
- 請選擇 從卷中複製標籤 若要使用指派給 EBS 卷的標籤,請勾選此核取方塊。
- 一旦被擊中
Create Snapshot, 系統會為所有選取的磁碟區建立快照。
如果操作成功,您將看到以下訊息:
建立快照請求成功
顯示兩個 Amazon 快照識別碼: snap-0f95000000000de71 以及 啪–0a91000000000769b 就我們的情況而言。
您可以儲存這些 ID 值,並點選其中一個來查看快照建立狀態。在啟動快照建立後,操作狀態為 待定 以及對 已完成 一旦流程結束。
已為每個卷建立了一個新的快照。
使用 AWS CLI 建立快照
如果您偏好使用命令列介面,或需要自動化快照建立流程,可以使用 AWS CLI 作為 AWS 管理主控台的替代方案。
在 AWS CLI 中建立 EBS 快照的指令如下:
aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description "This is a test snapshot for the blog"
輸出結果應如下所示:
{
"Description": "This is a test snapshot for the blog",
"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 'Prod backup' --tag-specifications
'ResourceType=snapshot,Tags=[{Key=Blog,Value=Test},{Key=AWS,Value=EC2-snapshot}]'
如何使用 EBS 快照還原 EC2 執行個體
我們已為附加至 Amazon EC2 執行個體的 EBS 卷建立快照。這些快照是 AWS 中的資料備份形式。現在,讓我們來了解如何透過還原快照來建立 EC2 執行個體:
- AWS 中的特定 EBS 卷
- 整個 EC2 執行個體
還原第二個 EBS 卷
現在讓我們從快照還原第二個 EBS 卷(大小為 1 GiB)。此卷用於儲存檔案,且作業系統並未安裝在此卷上。
- 在 EC2 管理主控台的導覽窗格中,前往
Elastic Block Store>Snapshots.
我們輸入"部落格在搜尋欄位中輸入"",即可顯示為撰寫這篇部落格文章所使用的 EC2 執行個體之 EBS 卷所建立的所有快照。這正是為何值得添加描述和標籤的實例。
- 選取 1 GiB 磁區的快照,並從該快照建立新的磁區。右鍵點擊快照,在彈出的選單中,按下
Create Volume.
- 請在 建立卷 頁面:選擇儲存卷類型,並設定儲存卷大小、可用區域、加密選項、標籤、金鑰及值。
可用區域必須與 EC2 執行個體的可用區域相同(eu-central-1c (以我們的情況為例)。
在本例中,卷大小與原始備份卷的大小相同(1 GiB)。
標籤鍵是 部落格 而該值是 《復原》第一卷.
- 點擊
Create Volume完成並使用 EBS 快照建立 EBS 卷。
您將會看到以下訊息:
建立卷宗請求成功
您可以儲存此卷標識碼。新的卷標識碼是 vol-09cd000000000b502 就我們的情況而言。
還原系統磁碟區
若要還原 EC2 執行個體,您需要還原安裝了作業系統的 EBS 儲存卷。在此情況下,您可以從客體作業系統所使用的 EBS 儲存卷快照建立映像檔,並使用此映像檔啟動執行個體(即還原後的 EC2 執行個體)。
建立圖像
- 在 EC2 管理主控台中,前往
Elastic Block Store>Snapshots並選取安裝了客體作業系統的 EBS 卷所需要的快照。
我們選取客體作業系統(Ubuntu Server)所使用的 8-GiB 卷軸的最新快照。此 EBS 卷軸快照是在我們為 EC2 執行個體建立多卷軸快照時所建立的。
右鍵點擊該快照,並在彈出的選單中按下 Create Image.
- 在彈出的視窗中,輸入所需資訊並選取相關選項,以從 EBS 快照建立映像檔。我們使用以下參數。
姓名: 部落格已恢復
說明: 從 EBS 快照還原(部落格)
其餘設定維持預設值。
點擊 Create.
- 該 已收到建立圖片的請求 對話方塊隨即開啟。點擊圖片 ID 以查看該圖片的相關資訊(ami-08ed800000000872a (就我們的情況而言)。請等待影像建立完成。
載入圖片
建立圖片後,請在圖片上按右鍵並點擊 Launch.
新的 EC2 執行個體建立精靈隨即開啟。您必須選擇執行個體選項。您可以選擇與原始備份虛擬機器所選選項相同的設定。您也可以將執行個體還原至一台效能更強大的新 EC2 執行個體。
註: 我們被重定向至 Step 2 的向導(而非 Step 1. Choose AMI) 因為我們已經選取了 部落格已恢復 從 AMI 清單頁面中的 AMI。
Step 2: Choose an Instance Type. 我們挑選 t2.micro 作為實例類型。點擊 Next 在精靈的每個步驟中,請點擊"繼續"。
Step 3: Configure Instance. 請根據您的需求設定相關細節,包括網路設定、IAM 角色、關機行為等。
Step 4: Add Storage 在使用 EBS 快照還原 EC2 執行個體時,這一點非常重要。請按一下 Add New Volume. 本頁新增了一行,其中包含卷快照選項。請在 Snapshot 欄位。
我們輸入 snap-0a91000000000769b, 這是我們 1 GiB 卷快照的 ID。在本範例中,預設選取的卷大小為 8 GiB。我們可以將卷大小設定為 1 GiB,與原始 EBS 卷的配置一致。您也可以選取儲存裝置、卷類型、加密以及終止時刪除等選項。
Step 5: Add Tags. 請確保標籤對搜尋具有實用價值。標籤會套用至所有卷宗和實例。在此範例中,標籤金鑰是 部落格 而該值是 已恢復 VM 01.
Step 6: Configure Security Group. 編輯參數以控制您的 EC2 執行個體的網路流量。
Step 7: Review Instance Launch. 請檢視您的實例啟動詳細資訊,然後按下 Launch 完成此操作。您必須選擇一組金鑰對或建立新的金鑰對,才能存取 EC2 執行個體。
- 該 發射狀態 頁面已顯示。請點擊
View instances.
- 請輸入已還原實例的名稱(部落格已恢復 (就我們的情況而言)。已恢復的 E2 執行個體的狀態是 跑步. 從 EBS 快照還原的兩個 EBS 卷均已掛載至 EC2 執行個體(請參閱下方的螢幕截圖)。
檢查已還原的檔案
讓我們檢查在建立最新快照之前所建立的檔案是否已還原:
列出已掛載的區塊裝置:
lsblk
列出使用者當前(主)目錄中的檔案:
ls -al
該 snapshot01.txt 以及 snapshot2.txt 在對安裝作業系統的 EBS 卷執行第一次和第二次快照之前所建立的檔案仍然存在。
掛載位於第二個磁碟(EBS 卷)上的分割區:
sudo mount /dev/xvdb1 /disk2/
分區名稱已變更為 /dev/xvdb1請注意,您可能需要編輯 /etc/fstab 在還原實例以進行自動掛載後。
ls -al /disk2/
d2-file01.txt 還原後,該檔案會存在於儲存於第二個 EBS 卷上的檔案系統中。
包含所有已掛載 EBS 卷的 AWS EC2 執行個體已成功從 EBS 快照還原。所有必要資料均已完整保留。
結論
您可以備份單一卷,或透過多卷快照來備份所有卷。這是 AWS 為資料保護與災難還原所提供的一項非常實用的原生功能性。 但請注意,將 EBS 快照儲存於 Amazon 雲端時會產生額外費用,因為這會佔用額外的雲端儲存空間。此外,使用 EBS 快照進行備份還存在其他限制,例如快照建立系統無法偵測到快照擷取當下正在寫入的檔案。因此,透過 EBS 快照所做的備份僅具備"崩潰一致性",而非"應用程式一致性"。
NAKIVO Backup & Replication 是一款資料保護解決方案,可支援建立 應用程式感知備份 以及 Amazon EC2 執行個體的複本。您亦可透過此解決方案,大幅簡化並自動化備份與還原流程。無需手動還原 EBS 儲存卷、建立 Amazon EC2 執行個體,並將儲存卷手動掛載至已建立的 Amazon EC2 執行個體,即可從備份中快速還原整個 Amazon EC2 執行個體。






























