備份與還原 AWS EC2 的 EBS
先前情提要簡單介紹一下 AWS,在 AWS 的世界,與傳統虛擬主機最大的不同,即 AWS 幾乎把主機的每個部份都拆成一個服務,有運算服務、聯網服務、儲存服務、安全服務、監控服務、容器服務、VPN 服務等等等等等,我們可以自由的把各種服務混合搭配使用,並依照各種服務的用量付費標準付錢錢給 AWS。
AWS 其中的 EC2 是一種可以被量化的雲端計算服務,這也是 EC2 的全名「Elastic Compute Cloud」的含意,而與 EC2 搭配的儲存服務是 EBS (Elastic Block Store),我們可以把 EC2 與 EBS 簡單的對比為「電腦」與「硬碟」,與傳統電腦不同的是在 AWS 的電腦與硬碟都可以隨時被更換,更換的方法可能是人工到 AWS 網站更換或是由我們自己的程式透過 AWS SDK 去更換,這樣的特性就是 elastic 這個字眼想表達的意義:彈性。
備份 EC2 的 EBS
除了排程內的定期備份外,在對機臺做某些重大變更時我習慣會對 EBS 另外做人工備份,這些重大變更包括 OS 大升級、自己的程式大改版之類的時候。
EBS 的備份為我們熟知的快照式備份,而 EBS 的快照是依容量收費的,但是是依實際容量而非額定容量計價,所以就算開 1 TB 的硬碟,但實際只用了 1 GB,那就只會拿 1 GB 來計價。
實際進行快照備份則相當簡單,一般都是從先到 EC2 主控台確定要備份的那台機器,在機器明細頁那裡找到兩個項目「Root device」與「Block devices」,Root device 指的是掛在 /dev/sda1 的開機碟,Block devices 指的是全部的硬碟,在典型的情況下應該 EC2 就只會有一顆硬碟,並且也一定是開機碟,所以 Root device 與 Block devices 應該都只會是 /dev/sda1,這顆被掛在 /dev/sda1 的硬碟有相對應的 EBS ID,透過這組 EBS ID 可以直接連結到 EBS 的主控台頁面下的這顆(卷)EBS。
進入 EBS 主控台的這卷 EBS 後,按下畫面上的 操作創建快照 就開始快照,並且會再幫我們跳轉到快照的主控台及這筆新快照的明細頁,依照容量的不同會花一點時間建立快照,等到快照的狀態變為綠燈 completed 後,即表示已經完成。
EBS 快照是支援熱快照的,也就是建立快照時 EC2 是不用關機的,但習慣上能關機的我還是會關機,不能關機的則盡量降低磁碟的存取量。
在等待快照建立完成的期間,可以在快照的 Name 欄位填一個容易往後識別的名字,不要太相信自己的記憶力。
從快照還原
情境是在 EC2 的某台機器被玩壞了,必須用之前的快照還原。
首先把那台 EC2 上面掛載的壞掉的那卷 EBS 卸下,先把那台被玩壞的 EC2 停機,接著在那台 EC2 的明細找到 Root device 找到壞的 EBS,進入那台 EBS 的明細頁,按 操作 斷開卷,此時這個 EBS 卷會與 EC2 脫離,但因為還是有佔用到 AWS 的空間,所以還是會持續計費,因此在成功還原之後記得把確定無用的、壞的 EBS 刪除掉避免漏財。
然後到 EBS 快照的主控台,確定要還原的快照,按 操作 創建卷,會建立一個新的 EBS 卷,對那個新的 EBS 卷按 操作 連接卷,並填入要掛上的 EC2 機器,以及填入掛載點,如果是要做為 Root device 開機碟的話,務必填入 /dev/sda1 作為掛載點才可正常開機。最後記得把確定無用的 EBS 卷或快照刪除。