GCP國際帳號開通 GCP伺服器硬碟擴容與分割區教學
前言:你真正要擴的是什麼?
GCP國際帳號開通 在 GCP 上談「硬碟擴容」,很多人第一反應是:去控制台把容量改大就好。但實際上,擴容通常要經過三個層級:雲端磁碟的容量、作業系統看到的分割區大小、以及檔案系統可用空間。三者只要少一步,最後就會出現「控制台容量變大了,但伺服器還是顯示沒變」或「只能用到某個分割區,根本用不到新增空間」的狀況。
這篇文章用清楚的邏輯把整件事拆開:你要先確認你用的是哪種磁碟(通常是 Persistent Disk:標準/SSD/HDD),再確認目前是怎麼分割(MBR/ GPT、是不是只有一個分割區),最後選擇正確的擴容方法(調整分割區、擴充檔案系統)。你會看到可以多數情況下用線上方式完成,也會看到何時必須重啟或離線處理。
第一章:擴容前的關鍵觀念
1.1 雲端容量 ≠ 分割區容量 ≠ 檔案系統容量
你在 GCP 控制台把 Persistent Disk 從 100GB 改成 200GB,這一步只代表「磁碟裝置」的上限容量變大。接著作業系統可能還維持原本的分割表與分割區大小,例如 GPT/MBR 裡的分割區仍停留在舊範圍。最後,檔案系統(ext4、xfs 等)必須擴張,才能把新增的區塊納入使用。
GCP國際帳號開通 因此你常見到的流程是:
- 控制台擴大磁碟容量
- 在 VM 上重新掃描/確認裝置容量變大
- 調整分割區(讓分割區吃到新增空間)
- 擴充檔案系統(讓可用容量增加)
1.2 你的系統是什麼檔案系統?ext4 與 xfs 的差別
如果你的作業系統是以 ext4 為主(常見於 Debian/Ubuntu),你通常會用 resize2fs。如果是 xfs,常用 xfs_growfs。這兩種檔案系統擴充方式不同,但都相對直接。
另外還要注意:某些情境(例如你要做縮小、或分割區類型不合、或根目錄在 LVM 上)流程會不同。本文以最常見的非縮小需求為主:擴大分割區、擴充檔案系統。
1.3 分割方式的常見情況
你可能遇到三種常見結構:
- 只有一個分割區(例如 /dev/sdb1 佔滿整顆磁碟)
- 有多個分割區(例如 /dev/sdb1、/dev/sdb2…)
- 使用 LVM(邏輯卷管理)做彈性配置
第一種最省事;第二種要看新增空間能否放到最後一個分割區;第三種則需走 LVM 的 extend 流程。
第二章:在 GCP 控制台擴容 Persistent Disk
2.1 找到你的磁碟與實例
登入 GCP Console,前往 Compute Engine 的「VM Instances」。點選你的 VM,進入「Disks」。在這裡你會看到附加的 Persistent Disk(包含系統磁碟與資料磁碟)。
注意:如果你是擴充「系統磁碟」,你仍然可能可以在線上擴充,但某些步驟會更敏感,建議先確認是否能重啟或是否屬於根檔案系統的特殊情況。若你只是擴充資料磁碟,操作相對輕鬆。
2.2 調整容量並保存
找到對應的磁碟,將容量從原本大小提高到目標值。GCP 會執行容量變更,通常你不需要先卸載磁碟。完成後,回到 VM 進行 OS 層的確認。
2.3 小提醒:不要一開始就假設所有變更即刻生效
在某些環境下,VM 內的裝置容量可能需要重新掃描(rescan)或重讀塊裝置資訊。不要急著去調分割區;先確認磁碟真的已變大。
第三章:在 VM 上確認磁碟與分割區現況
3.1 登入 VM 並檢查裝置
以 SSH 登入 VM 後,先看磁碟裝置與掛載點。
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
你會看到像 /dev/sdb、/dev/sdb1 等裝置,並列出對應的檔案系統與掛載點。若你不確定哪顆是你要擴的,對照 GCP Console 的磁碟名稱(在附加裝置時通常會有辨識線索)。
3.2 重新掃描磁碟(常見需求)
如果 lsblk 顯示容量沒有變,你可以嘗試重新掃描。以常見情況(/sys/block 下的裝置)為例:
sudo sh -c 'echo 1 > /sys/class/block/sdb/device/rescan'
將 sdb 替換成你的實際裝置名稱。掃描後,再執行一次 lsblk 看容量是否有更新。
3.3 檢查分割表(GPT/MBR)與分割區邊界
接著要確認目前分割區狀態。使用:
sudo parted -l
或是:
sudo fdisk -l /dev/sdb
目標是理解:新增空間在磁碟的哪一段?能不能直接讓最後一個分割區向後吃到新增區域?如果新增空間剛好在最後一個分割區後面,那通常很容易;若是新增空間被中間的分割區卡住,就需要更謹慎的規劃,甚至可能要重建分割區(這會有風險,請先做好備份)。
第四章:擴容情境 A——只有一個分割區,直接擴充
GCP國際帳號開通 4.1 分割區已經在最後但檔案系統沒長大
如果你看到分割區(例如 /dev/sdb1)的大小沒有變,但磁碟容量已變大,那表示分割區邊界還是舊的。此時你需要把分割區延伸到磁碟末端,再擴充檔案系統。
4.2 用 parted 擴分割區到最後
以 ext4 為例,假設要擴充 /dev/sdb1。可用 parted:
sudo parted /dev/sdb
(parted) print
(parted) resizepart 1 100%
(parted) quit
resizepart 1 100% 代表把第 1 號分割區擴到磁碟末端。若你的分割區編號不是 1,請改成正確的分割號。
接著再次確認:
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS /dev/sdb
4.3 擴充檔案系統(ext4)
如果分割區是 ext4,使用:
sudo resize2fs /dev/sdb1
對於很多情況,這可以在檔案系統掛載的狀態下安全執行(resize2fs 對 online/ext4 有支援,實際仍以你的版本與狀況為準)。你可以直接查看結果:
df -hT
你會看到 / 或你的資料掛載目錄(例如 /data)的可用容量增加。
第五章:擴容情境 B——只有最後一個分割區可以延伸
5.1 何時可以直接做?
若磁碟上有多個分割區,新增空間通常會出現在磁碟末端。這意味著:你多半可以把「最後一個分割區」向後延伸到新增容量,但不能輕易擴中間分割區,因為中間分割區後面還有其它分割區,邊界會被卡住。
5.2 範例:/dev/sdb1、/dev/sdb2 存在,擴的是 /dev/sdb2
假設你要擴充的是最後一個分割區 /dev/sdb2。流程仍是兩步:調分割區 → 擴檔案系統。
先用 parted:
sudo parted /dev/sdb
(parted) print
(parted) resizepart 2 100%
(parted) quit
再依檔案系統類型擴充:
- ext4:
sudo resize2fs /dev/sdb2 - xfs:
sudo xfs_growfs /掛載點(注意 xfs_growfs 需要掛載點,不是直接給裝置節點)
5.3 注意:xfs 的擴充方式
如果是 xfs,常見做法是:
df -hT
# 找到 /dev/sdb2 掛載到的目錄,例如 /data
sudo xfs_growfs /data
xfs 會根據掛載的檔案系統情況自動使用分割區新增空間。
第六章:擴容情境 C——需要增加新分割區並掛載(而不是擴已存在的分割區)
6.1 什麼情況適合新建分割區?
如果你不想動既有分割區(避免任何調整邊界的風險),但你需要更多空間,而且磁碟末端有可用未配置空間,你可以建立新的分割區,例如 /dev/sdb3,並格式化後掛載到新的目錄。
這種方法的代價是:新分割區需要格式化,資料只會存在於新分割區。
6.2 用 parted 建立新分割區(示意)
先看 parted 的未使用空間位置:
sudo parted /dev/sdb
(parted) print free
(parted) mkpart primary ext4 100%? ?
(parted) quit
實際操作要填入起訖位置。最穩妥的方式是:用 print free 找到空閒區塊的起點與終點,然後在 mkpart 時指定明確範圍。
由於不同磁碟的分割起訖可能不一致,你應以你自己的 print free 結果為準。
GCP國際帳號開通 6.3 格式化並掛載
例如新分割區是 /dev/sdb3,要用 ext4:
sudo mkfs.ext4 /dev/sdb3
sudo mkdir -p /data2
sudo mount /dev/sdb3 /data2
接著把它寫入 fstab 讓重啟後自動掛載。較推薦用 UUID:
sudo blkid /dev/sdb3
取得 UUID 後編輯:
sudo nano /etc/fstab
新增一行(示例):
UUID=你的-UUID /data2 ext4 defaults,nofail 0 2
GCP國際帳號開通 最後測試:
sudo mount -a
df -hT
第七章:擴容情境 D——使用 LVM 的延伸方式(常見於更彈性的系統)
7.1 為什麼 LVM 需要不同流程
LVM 的核心概念是:你先擴充「實體磁碟/分割」(PV),再擴充「卷群」(VG),最後延伸「邏輯卷」(LV),再擴充檔案系統。
如果你不走 LVM 的流程,直接改分割區或直接改檔案系統,有時會無法吃到容量,甚至讓系統不一致。
7.2 確認是否在用 LVM
sudo pvs
sudo vgs
sudo lvs
GCP國際帳號開通 如果有看到輸出,表示你在用 LVM。
7.3 PV、VG、LV 與檔案系統的擴充
典型流程:
- 更新 PV(讓 LVM 重新掃描實體大小)
- 擴充 VG(通常會自動吃到新的 PV 可用空間)
- 擴充 LV
- 擴充檔案系統
常見指令(以實例名稱自行替換):
sudo pvresize /dev/sdb1
sudo lvextend -l +100%FREE /dev/your-vg/your-lv
# ext4
sudo resize2fs /dev/your-vg/your-lv
# xfs(若你的 LV 內是 xfs,則用 xfs_growfs 掛載點)
# sudo xfs_growfs /掛載點
重點是:先確保 LVM 看到新容量,再把 LV 擴到可用空間,最後擴檔案系統。
第八章:一定要做的檢查與驗證(避免做完才發現錯)
8.1 擴容前後的最基本檢查
擴容前記錄:
df -hT
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS
sudo parted -l
擴容後再做同樣的檢查,對照:
- 裝置大小是否變大(磁碟層級)
- 分割區大小是否變大(分割層級)
- 掛載目錄的可用容量是否變大(檔案系統層級)
8.2 常見錯誤:控制台已擴,但 df 還是不變
這通常代表其中一步沒做:分割區沒調整,或檔案系統沒擴充,或擴充命令對的不是目標裝置/掛載點。
你可以用以下邏輯定位:
lsblk顯示分割區大小沒變:先調整分割區lsblk顯示分割區大小變了,但df -h沒變:再擴充檔案系統- ext4 用了 xfs_growfs(或 xfs 用了 resize2fs):換對應命令
8.3 常見錯誤:調分割區後系統提示需重讀或重啟
有時候你改了分割表,系統未必立刻更新分割區視圖。可以嘗試:
sudo partprobe /dev/sdb
lsblk
仍不行就考慮重啟 VM(尤其是根檔案系統相關或更複雜的架構)。做重啟前記得先評估服務影響。
第九章:安全建議與風險控管(比指令更重要)
9.1 在動分割邊界前先做備份或快照
如果你需要調整既有分割區邊界(例如 resizepart),理論上在常見情境可行,但任何變更都可能因磁碟狀態、系統版本、檔案系統狀態造成不可預期結果。比較穩妥的做法是:在 GCP 對磁碟先做快照(Snapshot),或至少在可接受的風險下進行。
9.2 優先在非尖峰時段操作
尤其是檔案系統擴充過程中會涉及 metadata 更新,雖然多數情況可在線上完成,但你仍應避開高 IO 的時段,降低壓力,也避免你在排查問題時資料量很大導致誤判。
9.3 先從可回滾的策略開始:新建分割區通常風險較低
如果你的需求是「多一點空間」而不是「把既有分割區擴更大」,新建分割區並掛載通常更直觀:不動既有內容,出錯也相對容易復原(主要風險變成格式化新分割區這件事)。
第十章:把流程寫成你可以直接照做的清單
10.1 擴充並讓既有掛載點可用(最常見)
以下用通用流程描述,你可以依檔案系統與你的分割方式選擇指令。
- GCP 控制台把 Persistent Disk 容量提高
- VM 端:確認
lsblk裝置大小已變大 - 若分割區大小沒變:用 parted 擴分割區到 100%
- 擴檔案系統:ext4 用
resize2fs;xfs 用xfs_growfs 掛載點 - GCP國際帳號開通 驗證:
df -hT、lsblk對照前後結果
10.2 擴充但改成新掛載(分割區擴張風險較低)
- GCP 控制台擴大磁碟
- VM 端:用 parted 查看 free space
- mkpart 建立新分割區(使用明確起訖範圍)
- mkfs 格式化
- mkdir + mount + 寫入 fstab
- 驗證:
df -hT
GCP國際帳號開通 結語:容量不是問題,流程才是
你真正需要的不是更多指令,而是正確的順序:先讓雲端磁碟容量變大,再讓 OS 分割區吃到新增空間,最後擴充檔案系統讓作業能用。多數人踩坑都發生在「以為改了磁碟就會自動使用」或「分割區沒擴卻直接擴檔案系統」。只要你把這三層的確認做扎實,就能穩定完成擴容,讓伺服器在容量成長時依然保持可預期。
如果你願意,我也可以依你的實際情境(磁碟名稱、lsblk 輸出、檔案系統種類 ext4/xfs、是否用 LVM、分割區有哪些)幫你把指令精準對應到你的環境,避免用錯裝置或分割號碼。

