縮小EBS根(sda1)卷大小

  1. 停止當前實例。
  2. 從當前EBS創建快照。目的有二:
    1. 避免操作失誤損壞數據;
    2. 用於步驟3。
  3. 從步驟2的快照創建新卷。
  4. 創建一個目標大小的新卷。
  5. 將步驟3、4創建的新卷掛載到實例上。
  6. 啓動實例,進入SSH。
  7. 輸入lsblk查看三個卷的設備名稱。
    1. 體積最小的卷即為目標卷,其名稱為nvme?n1,其中?為數字。且該卷下無分區
    2. 另兩個體積相同的卷,掛載點為/是原來的根卷,一定不要操作它。無掛載點的即為源卷(通過快照創建的新卷);
    3. 為行文方便,假設目標卷名稱為nvme1n1,源卷名稱為nvme2n1。假設源卷只有一個分區,且分區為nvme2n1p1
  8. 執行sudo dd bs=16M if=/dev/nvme2n1 of=/dev/nvme1n1 count=10
  9. 使用fdisk為目標卷分區:
    1. 執行sudo fdisk /dev/nvme1n1
    2. p查看當前起始扇區編號;
    3. 先後按下d, n
    4. 根據指引,按默認選項進行,起始扇區編號填寫之前記錄的數;
    5. 先後按下a, w
    6. 輸入lsblk,此時目標卷應當出現分區nvme1n1p1
  10. 執行sudo e2fsck -f /dev/nvme2n1p1
  11. 如無錯誤信息,繼續執行sudo resize2fs -M -p /dev/nvme2n1p1。留意最後輸出信息中的塊數。
  12. 將上一步中的塊數除以4096,進位到整數,記為n
  13. 執行sudo dd bs=16M if=/dev/nvme2n1p1 of=/dev/nvme1n1p1 count=n
  14. 執行sudo resize2fs -p /dev/nvme1n1p1
  15. 執行sudo e2fsck -f /dev/nvme1n1p1檢查是否正確。
  16. 停止實例,將三個卷都從實例分離,再將目標卷掛載為根卷,嘗試開機。
  17. 如果成功開機,並檢查無任何問題後,即可刪除另外兩個大容量卷以及最初的快照。

主要參考ADTC文章

簡化了部分操作;針對SSD優化實例修正了卷名稱。

留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *