返回列表

GCP國際帳號開通 GCP伺服器硬碟擴容與分割區教學

谷歌雲GCP / 2026-08-19 15:49:28

前言:你真正要擴的是什麼?

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 擴充並讓既有掛載點可用(最常見)

以下用通用流程描述,你可以依檔案系統與你的分割方式選擇指令。

  1. GCP 控制台把 Persistent Disk 容量提高
  2. VM 端:確認 lsblk 裝置大小已變大
  3. 若分割區大小沒變:用 parted 擴分割區到 100%
  4. 擴檔案系統:ext4 用 resize2fs;xfs 用 xfs_growfs 掛載點
  5. GCP國際帳號開通 驗證:df -hTlsblk 對照前後結果

10.2 擴充但改成新掛載(分割區擴張風險較低)

  1. GCP 控制台擴大磁碟
  2. VM 端:用 parted 查看 free space
  3. mkpart 建立新分割區(使用明確起訖範圍)
  4. mkfs 格式化
  5. mkdir + mount + 寫入 fstab
  6. 驗證:df -hT

GCP國際帳號開通 結語:容量不是問題,流程才是

你真正需要的不是更多指令,而是正確的順序:先讓雲端磁碟容量變大,再讓 OS 分割區吃到新增空間,最後擴充檔案系統讓作業能用。多數人踩坑都發生在「以為改了磁碟就會自動使用」或「分割區沒擴卻直接擴檔案系統」。只要你把這三層的確認做扎實,就能穩定完成擴容,讓伺服器在容量成長時依然保持可預期。

如果你願意,我也可以依你的實際情境(磁碟名稱、lsblk 輸出、檔案系統種類 ext4/xfs、是否用 LVM、分割區有哪些)幫你把指令精準對應到你的環境,避免用錯裝置或分割號碼。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系