前陣子不小心把一台機器的EBS容量開太大. 以為用console就可以把容量減少. 結果發現事情沒我想的這麼簡單. 所以只好一直拖拖拖而今天終於有機會來把這件事完成順便記錄一下.

首先我是參考 Amazon EBS volumes: how to shrink ’em down to size 這篇文章來實作的. 文章中百分之90都是對的, 但還是有一個小地方錯了, 所以導致我卡了一陣子, 好險文章下面有好心人留言, 才讓我順利完成.

這邊我只是稍微到一下步驟, 以及提醒原本的文章哪裡有問題. 基本上其他地方原本的文章都講得挺清楚的了.

Steps


  1. backup, take a snapshot now. (這個我就不用再多做解釋了吧)
  2. 創造兩個新的 EBS volume.
    • 一個用你剛剛創造的snapshot開啟. 跟你原本硬碟空間一樣大.
    • 另外一個則是你希望縮小後的硬碟空間
  3. Attach both volumes
  4. 接下來是文章中有點問題的地方. 有兩顆硬碟. 只要格式化那顆你想要縮小的硬碟. 另外一顆則不用. 在過程中你可以藉由 fdisk -l & file -sL /dev/xvda1 來幫助你判斷舊硬碟目前的格式以及哪一顆你需要格式化.
  5. 接下來就是 mount 硬碟
  6. rsync -aHAXxSP /mnt/snap/ /mnt/small
  7. 再來我的作法有點不一樣. 我是 umount both.
  8. Stop the instance (一定要記得關機器啊)
  9. Detach all volumes
  10. Attach the small volume to replace original Device.
  • Block Device Name = /dev/sda1
  1. Restart your instance.
  2. Done.