使用 IaaS 雲端服務可以享受資源動態調整的便利性,空間不足夠的時候也可以直接動態擴充磁碟,最近剛好有遇到這個問題。順便紀錄一下 Linux Disk Resize 的步驟與指令。
我們採用 Snapshop 重新建立新磁碟的方法,這種方法不但快速而且有備份,由於不是對原本的磁碟直接修改,所以如果失敗的話不會影響原始的資料。由於是資料磁碟的擴充,所以整個過程基本上 VM 不需要關機,維護的時間也很短。
透過 GCP / AWS 建立 Snapshot Disk
每個雲端服務的方式都差不多,這裡不詳細介紹。主要是先停止系統服務,然後 umount 卸載要擴充的 Disk,在雲服務 Console 先對磁碟建立 Snapshot,然後針對這個 Snapshot 建立一個比較大的新磁碟,最後掛載到 VM 上。
重新配置分割區實現動態擴充磁碟
掛載好磁碟以後,先觀察一下目前的分割區狀態:
lsblk
我們可以看到 sdd 有 200G 的空間但是目前只配置 50G 到 sdd1 分割區中。
透過 parted 重新配置分割區
parted /dev/sdd
進入後按 p 可以顯示目前的分割區狀態,然後輸入 resizepart 選擇要變更大小的分割區 Number,最後輸入要變更的大小,這裡可以直接輸入 100% 配置所有的空間到分割區中。
最後輸入 quit 離開工具,重新用 lsblk 觀看一下分割區的配置。
可以看到 200G 已經全部配置給 sdd1 分割區。
Linux 分割區 File System Check 與 Resize
完成分割區的擴充以後,還需要重新配置 File System,Resize 以前需要先用 resize2fs 檢查 Disk,如下:
resize2fs /dev/sdd1
最後透過 resize2fs 重新設定分割區檔案系統的大小即可
resize2fs /dev/sdd1
透過 Label 管理磁碟與掛載
由於我習慣都會透過 Disk Label 來管理磁碟與掛載,所以最後可以設定需要的 Label 並且在 /etc/fstab 正式替換新磁碟。如下:
e2label /dev/sdd1 my-disk-label
vim /etc/fstab
更新完成以後就可以啟動服務測試看看,通常一週後如果沒有問題我就會把舊的磁碟刪除來節省費用。