fbpx

雲端服務動態擴充磁碟空間 (GCP/AWS EC2 VM)

使用 IaaS 雲端服務可以享受資源動態調整的便利性,空間不足夠的時候也可以直接動態擴充磁碟,最近剛好有遇到這個問題。順便紀錄一下 Linux Disk Resize 的步驟與指令。

我們採用 Snapshop 重新建立新磁碟的方法,這種方法不但快速而且有備份,由於不是對原本的磁碟直接修改,所以如果失敗的話不會影響原始的資料。由於是資料磁碟的擴充,所以整個過程基本上 VM 不需要關機,維護的時間也很短。

透過 GCP / AWS 建立 Snapshot Disk

每個雲端服務的方式都差不多,這裡不詳細介紹。主要是先停止系統服務,然後 umount 卸載要擴充的 Disk,在雲服務 Console 先對磁碟建立 Snapshot,然後針對這個 Snapshot 建立一個比較大的新磁碟,最後掛載到 VM 上。

重新配置分割區實現動態擴充磁碟

掛載好磁碟以後,先觀察一下目前的分割區狀態:

lsblk

Linus lsblk command

我們可以看到 sdd 有 200G 的空間但是目前只配置 50G 到 sdd1 分割區中。

透過 parted 重新配置分割區

parted /dev/sdd

進入後按 p 可以顯示目前的分割區狀態,然後輸入 resizepart 選擇要變更大小的分割區 Number,最後輸入要變更的大小,這裡可以直接輸入 100% 配置所有的空間到分割區中。

parted utils resize disk 動態擴充磁碟

最後輸入 quit 離開工具,重新用 lsblk 觀看一下分割區的配置。

lsblk resize

可以看到 200G 已經全部配置給 sdd1 分割區。

Linux 分割區 File System Check 與 Resize

完成分割區的擴充以後,還需要重新配置 File System,Resize 以前需要先用 resize2fs 檢查 Disk,如下:

resize2fs /dev/sdd1

e2fsck

最後透過 resize2fs 重新設定分割區檔案系統的大小即可

resize2fs /dev/sdd1

透過 Label 管理磁碟與掛載

由於我習慣都會透過 Disk Label 來管理磁碟與掛載,所以最後可以設定需要的 Label 並且在 /etc/fstab 正式替換新磁碟。如下:

e2label /dev/sdd1 my-disk-label

vim /etc/fstab

更新完成以後就可以啟動服務測試看看,通常一週後如果沒有問題我就會把舊的磁碟刪除來節省費用。