# 介紹 EC2 Hibernation是一項功能,允許將EC2實例從休眠模式中喚醒,而不是關閉或停止實例。 使用Hibernation功能時,實例的內存狀態會保存在**EBS**卷上,使得實例可以在恢復時恢復到先前的狀態。 功能: 1. 保留內存狀態:當實例進入休眠模式時,實例的內存狀態會保存在EBS卷上,在重啟實例時,它會恢復到先前的運行狀態,包括正在運行的應用程序、打開的文件和已建立的連接,可以節省重新啟動和配置的時間。 2. 會寫入 EBS:暫存的RAM(Random Access Memory) 會寫入root EBS (Elastic Block Store)中作保存。 3. 儲存也會耗成本:因為是存入EBS中,因此也會需成本 ![](https://hackmd.io/_uploads/r1tKHp9d2.png) 使用時機: 1. 需長時間運行 2. 須保存RAM 3. 需長時間初始化 特性: * 只支援特定EC2類型: Hibernate功能在特定的EC2實例系列中可用,包括C3、C4、C5、I3、M3、M4、R3、R4、T2、T3等。 * Instance RAM 大小限制: 實例的RAM大小必須小於150 GB。如果實例的RAM超過這個限制,則無法使用Hibernation功能。 * Instance Size: 不支援裸金屬實例(Bare Metal Instances),只能用於虛擬機(Virtual Machines)。 * AMI (Amazon Machine Image): 支援H多種操作系統和AMI,包括Amazon Linux 2、Linux AMI、Ubuntu、RHEL(Red Hat Enterprise Linux)、CentOS和Windows等。 * Root Volume: 在啟用Hibernation功能的實例上,根儲存卷必須是EBS(Elastic Block Store)卷,並且必須啟用加密。它不能是實例存儲(Instance Store),並且必須具有足夠的容量來存儲休眠時的RAM狀態。 * 支援類型: 可在On-Demand(按需)、Reserved(預留)和Spot(競價)實例上使用 * 休眠限制: 單個實例的休眠時間不能超過60天。如果實例休眠的時間超過這個限制,則無法再次啟用休眠。 # 實作 創建一個新的instance 與之前的步驟相同 ![](https://hackmd.io/_uploads/rkqsO69dh.png) 在Advanced details中找到stop 選擇enable 會有一串警告 > To enable hibernation, space is allocated on the root volume to store the instance memory (RAM). Make sure that the root volume is large enough to store the RAM contents and accommodate your expected usage, e.g. OS, applications. To use hibernation, the root volume must be an encrypted EBS volume. 表示 1. 請注意有足夠空間 可以看到選擇的類型是t2 有1GB的儲存空間 ![](https://hackmd.io/_uploads/Skdz9T5u3.png) 而Root volumn預設是8GB ![](https://hackmd.io/_uploads/H1V1q6q_3.png) 3. root volume須加密 ![](https://hackmd.io/_uploads/H1sIca5On.png) 在Storage中選擇進階選項 ![](https://hackmd.io/_uploads/H16Kq6qun.png) 選擇加密並選擇預設的金鑰 完成設定後就能創建Instance了 # 測試 使用SSH登入後 利用`uptime`的功能查看instance被開啟多久 ![](https://hackmd.io/_uploads/ByTpT69Oh.png) 若是一般的instance關掉後重啟 應該是重新計算 但嘗試關掉這個擁有休眠功能的instance ![](https://hackmd.io/_uploads/BykdAp5Oh.png) 在running時選擇hibernate 讓Instance進入休眠<br> ![](https://hackmd.io/_uploads/r1oWk0qun.png) 再次重新登入後查看開啟時間 發現時間還是有再增加(1->3 min) 而非從零開始