[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
這樣子就完成了