開始輸入,可搜尋發票、服務、域名、工單,以及 更多...
磁碟空間不夠時,如果系統使用了 LVM(邏輯卷管理),就可以在不重灌系統、通常也無需停機的情況下增加容量。本文介紹 Linux 使用 LVM 擴容磁碟的兩種常見場景:新增一塊硬碟加入卷組,以及原有磁碟被擴大後擴充套件分割槽;同時說明沒有 LVM 時如何用 growpart 擴容根分割槽。命令適用於 Debian/Ubuntu 與 CentOS/Rocky/AlmaLinux,以 root 執行。
先安裝 lvm2 和 growpart 所在的軟體包,然後用 lsblk、pvs、vgs、lvs 瞭解當前佈局:哪塊磁碟是物理卷(PV),卷組(VG)叫什麼名字,邏輯卷(LV)掛載在哪裡。下文以卷組 vg0、邏輯卷 /dev/vg0/root 為例,請替換為實際名稱。
# Debian / Ubuntu
apt update && apt install -y lvm2 cloud-guest-utils
# CentOS / Rocky / AlmaLinux
dnf install -y lvm2 cloud-utils-growpart
# Inspect the current layout
lsblk
pvs
vgs
lvs
df -hT
如果是額外新增了一塊新硬碟(如 /dev/vdc),先將它初始化為物理卷,再加入現有卷組。執行後 vgs 中的 VFree 會增加,表示卷組有了可分配的空閒空間。注意不要對已有資料的磁碟執行 pvcreate。
# Scenario A: a new disk /dev/vdc was added
pvcreate /dev/vdc
vgextend vg0 /dev/vdc
vgs vg0
如果是原有磁碟容量被調大(例如從 40G 升級到 100G),需要先用 growpart 擴充套件分割槽到磁碟末尾,再用 pvresize 讓物理卷識別新增空間。注意 growpart 的磁碟名和分割槽號之間有空格。
# Scenario B: the existing disk /dev/vda was enlarged and the PV is partition 2
growpart /dev/vda 2
pvresize /dev/vda2
vgs
卷組有空閒空間後,用 lvextend 把空間分配給目標邏輯卷。-l +100%FREE 表示使用全部剩餘空間,-L +50G 表示增加固定大小。
# Give all free space in the VG to the logical volume
lvextend -l +100%FREE /dev/vg0/root
# Or add a fixed amount
lvextend -L +50G /dev/vg0/data
邏輯卷變大後,檔案系統還需要同步擴充套件,df 中才會顯示新容量。ext4 使用 resize2fs 指定邏輯卷路徑,XFS 使用 xfs_growfs 指定掛載點。也可以給 lvextend 加 -r 引數,一步完成邏輯卷和檔案系統的擴容。
# ext4
resize2fs /dev/vg0/root
# XFS (pass the mount point)
xfs_growfs /
# Alternative: extend LV and filesystem in one step
lvextend -r -l +100%FREE /dev/vg0/root
df -hT
很多雲映象的根分割槽是普通分割槽而非 LVM。磁碟升級後,只需 growpart 擴充套件分割槽,再擴充套件檔案系統即可,全程線上完成,無需重啟。
# Root partition without LVM, e.g. /dev/vda1 mounted on /
growpart /dev/vda 1
resize2fs /dev/vda1 # ext4
xfs_growfs / # XFS
df -hT /
說明分割槽後面沒有可用空間,可能是磁碟容量尚未生效或分割槽已是最大。可先確認 lsblk 中磁碟大小是否已變大,必要時重啟伺服器後再試。
不可以,XFS 只支援擴大。如果需要縮小,只能備份資料後重新建立檔案系統。ext4 支援縮小,但必須先解除安裝,操作風險較高,建議謹慎執行。
需要先關閉並刪除該 swap 分割槽,擴容根分割槽後再改用 swap 檔案,或在空閒空間重建 swap。此操作較複雜,如不熟悉可提交工單尋求協助。
如按以上步驟操作後仍無法解決,歡迎提交工單聯絡 IMIDC 7×24 技術支援。提交時請註明伺服器 IP、作業系統、已執行的命令和報錯截圖,工程師可以更快定位問題。