進度條

[AWS] EC2 硬碟空間不夠,手動增加方法

更新日期:

參考AWS官網
https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
 

 

*注意!操作硬碟空間總是有風險的,失敗可能會讓資料喪失,所以最好不要直接拿上線產品來測試。

 

 

1. 硬碟空間(EBS = Elastic block store)與EC2其實是分開的,但是EBS是用流水號ID,所以不好找。最簡單的方式就是進到EC2,找到instance,選取後看下方description。

Root device /dev/xvda  <== 這個可以點擊

點擊後會出現popup box,上面會顯示EBS ID,這個ID一樣可以點擊

點擊後進入Elastic block store : Volums頁面

 

 

2. 進入頁面後,因為我們是由點擊ID進來,所以只會有一個硬碟可選(過濾過),選取後按下上方Action -> Modify Volume,就可以改變大小了。要記得這大小事會額外收費的。修改完成後只代表硬碟變大了,並不表示有切給系統使用,所以我們要進入系統裡面做修改。接下來步驟以AMI為例。

 

3. 登入進入instance 的 console後,使用指令 file 可以看到系統分佈。如果沒做特別設定只會有一個。

$ sudo file -s /dev/xvd*

以我測試機台來說,會是xvda 是disk,xvda1是partition

 

4. 如果disk完全被partition用掉就沒有剩餘,但是我們是新增出來的,所以一定有剩餘。可以用lsblk去看disk 與 part所包含的大小有沒有一致。(這時我顯示Disk 30G 與 part 8G)

$ lsblk

 

如果要看使用情形,則可以用df 去看,但這都不是現在的重點,因為就是不夠了才擴增。

$ df -h

 

5. 先利用 growpart 把disk重新分切

 

$ sudo growpart /dev/xvda 1 

 

意思就是把/dev/xvda 分成1份而已,這時再用lsblk看,就會發現disk跟part size 一樣了
 

如果你出現類似以下錯誤

mkdir: cannot create directory ‘/tmp/growpart.4216’: No space left on device
FAILED: failed to make temp dir

就代表硬碟空間已經滿到連個暫用的資料夾都存不進去了,這時候請先隨便刪掉幾個不重要或是有備份的檔案。才能繼續執行growpart
 

 

6.  切出來不代表有格式化,所以要使用resize2fs 去格式化他(不會破壞原本資料)

$ sudo resize2fs /dev/xvda1
 

如果resize2fs 失敗,有可能你並不是使用ext4的檔案系統格式,而是使用xfs,這時就要改用指令(常見於Snapshot還原後的instance)

$ sudo xfs_growfs /dev/xvda1


要確認的話可以用
$ sudo file -sL /dev/xvd*
顯示
Linux rev 1.0 ext4 filesystem data 即為ext4
SGI XFS filesystem data 即為xfs

 

這樣子就完成了