Linux虛擬機(jī)磁盤擴(kuò)縮容的操作指南(按文件系統(tǒng)分類)
引言
虛擬機(jī)磁盤擴(kuò)縮容需遵循“先調(diào)整底層存儲(chǔ)(虛擬機(jī)軟件)→ 再調(diào)整分區(qū)/邏輯卷 → 最后調(diào)整文件系統(tǒng)”的流程。以下按擴(kuò)容和縮容兩大類,結(jié)合文件系統(tǒng)類型(ext4/XFS/Btrfs)和分區(qū)方案(傳統(tǒng)分區(qū)/LVM)詳細(xì)說(shuō)明,確保無(wú)歧義。
一、磁盤擴(kuò)容(擴(kuò)展容量)
前提:已在虛擬機(jī)軟件(VMware/VirtualBox/KVM)中擴(kuò)展虛擬磁盤容量(如從 20GB→40GB),虛擬機(jī)處于關(guān)機(jī)或運(yùn)行中(部分場(chǎng)景需重啟識(shí)別新容量)。
(一)按文件系統(tǒng)類型與分區(qū)方案分類
1. 傳統(tǒng)分區(qū)(非LVM,如/dev/sda1)
適用場(chǎng)景:磁盤直接分區(qū)(無(wú)LVM),文件系統(tǒng)為 ext4/XFS/Btrfs。
| 文件系統(tǒng) | 詳細(xì)步驟 | 驗(yàn)證命令 |
|---|---|---|
| ext4 | ① 重新掃描磁盤(識(shí)別新容量): `echo 1 | sudo tee /sys/class/block/sda/device/rescan(sda為虛擬機(jī)磁盤)<br>② **擴(kuò)展分區(qū)**:<br>sudo growpart /dev/sda 1(擴(kuò)展第1分區(qū),如/dev/sda1)<br>③ **擴(kuò)展文件系統(tǒng)**:<br>sudo resize2fs /dev/sda1`(自動(dòng)擴(kuò)展到分區(qū)最大容量) |
| XFS | ① 重新掃描磁盤(同上) ② 擴(kuò)展分區(qū): sudo growpart /dev/sda 1③ 擴(kuò)展文件系統(tǒng)(需指定掛載點(diǎn)): sudo xfs_growfs /mount_point(如根分區(qū)掛載點(diǎn)為/,則sudo xfs_growfs /) | lsblk /dev/sda1df -hT |
| Btrfs | ① 重新掃描磁盤(同上) ② 擴(kuò)展分區(qū): sudo growpart /dev/sda 1③ 擴(kuò)展文件系統(tǒng)(需指定掛載點(diǎn)): sudo btrfs filesystem resize max /mount_point | lsblk /dev/sda1df -hT |
2. LVM 邏輯卷(推薦生產(chǎn)環(huán)境)
適用場(chǎng)景:磁盤通過(guò)LVM管理(物理卷PV→卷組VG→邏輯卷LV),文件系統(tǒng)為 ext4/XFS/Btrfs。
| 文件系統(tǒng) | 詳細(xì)步驟 | 驗(yàn)證命令 |
|---|---|---|
| ext4 | ① 重新掃描磁盤(同上) ② 擴(kuò)展物理卷(PV): sudo pvresize /dev/sda2(假設(shè)PV為/dev/sda2,新增空間已分配)③ 擴(kuò)展邏輯卷(LV): sudo lvextend -l +100%FREE /dev/vg_name/lv_name(vg_name為卷組名,lv_name為邏輯卷名,如vg0/root)④ 擴(kuò)展文件系統(tǒng): sudo resize2fs /dev/vg_name/lv_name | pvs(看PV容量)lvs(看LV容量)df -hT |
| XFS | ① 重新掃描磁盤(同上) ② 擴(kuò)展PV: sudo pvresize /dev/sda2③ 擴(kuò)展LV: sudo lvextend -l +100%FREE /dev/vg0/root④ 擴(kuò)展文件系統(tǒng)(指定掛載點(diǎn)): sudo xfs_growfs /mount_point(如/) | pvs/lvs/df -hT |
| Btrfs | ① 重新掃描磁盤(同上) ② 擴(kuò)展PV: sudo pvresize /dev/sda2③ 擴(kuò)展LV: sudo lvextend -l +100%FREE /dev/vg0/root④ 擴(kuò)展文件系統(tǒng)(指定掛載點(diǎn)): sudo btrfs filesystem resize max /mount_point | pvs/lvs/df -hT |
(二)特殊說(shuō)明
- 云虛擬機(jī)(如AWS EC2):底層磁盤為云盤(EBS),需先在云平臺(tái)控制臺(tái)擴(kuò)展云盤,再通過(guò)
growpart擴(kuò)展分區(qū)(如NVMe磁盤/dev/nvme0n1p1)。 - 在線擴(kuò)容:LVM+ext4/XFS/Btrfs支持在線擴(kuò)容(無(wú)需卸載文件系統(tǒng));傳統(tǒng)分區(qū)需確保分區(qū)未掛載(或根分區(qū)通過(guò)Live CD操作)。
二、磁盤縮容(減小容量)
風(fēng)險(xiǎn)提示:縮容需先縮小文件系統(tǒng),再縮小分區(qū)/LV,數(shù)據(jù)丟失風(fēng)險(xiǎn)極高,務(wù)必先備份!XFS文件系統(tǒng)不支持縮容,需用遷移數(shù)據(jù)替代。
(一)按文件系統(tǒng)類型與分區(qū)方案分類
1. 傳統(tǒng)分區(qū)(非LVM,ext4/Btrfs支持縮容,XFS不支持)
適用場(chǎng)景:ext4/Btrfs文件系統(tǒng),非LVM分區(qū)(如/dev/sda1)。
| 文件系統(tǒng) | 詳細(xì)步驟 | 驗(yàn)證命令 |
|---|---|---|
| ext4 | ① 備份數(shù)據(jù):tar czvf /backup/data.tar.gz /mount_point(如/mount_point為/data)② 卸載文件系統(tǒng): sudo umount /mount_point③ 檢查錯(cuò)誤: sudo e2fsck -f /dev/sda1(強(qiáng)制檢查)④ 縮小文件系統(tǒng)(目標(biāo)容量需>已用空間): sudo resize2fs /dev/sda1 20G(縮小至20GB)⑤ 縮小分區(qū)(用parted): sudo parted /dev/sda→(parted) resizepart 1→輸入新結(jié)束位置(如20GB)→(parted) quit⑥ 重新掛載: sudo mount /dev/sda1 /mount_point | df -hT(看容量)lsblk /dev/sda1 |
| Btrfs | ① 備份數(shù)據(jù)(同上) ② 卸載文件系統(tǒng): sudo umount /mount_point③ 縮小文件系統(tǒng): sudo btrfs filesystem resize 20G /mount_point(縮小至20GB)④ 縮小分區(qū)(用parted,同上) ⑤ 重新掛載 | df -hT/lsblk |
| XFS | 不支持縮容!替代方案: ① 備份數(shù)據(jù)到外部存儲(chǔ) ② 新建小分區(qū)(如20GB),格式化XFS: sudo mkfs.xfs /dev/sda1③ 恢復(fù)數(shù)據(jù)到新分區(qū) ④ 修改/etc/fstab切換掛載點(diǎn) | - |
2. LVM 邏輯卷(ext4/Btrfs支持縮容,XFS不支持)
適用場(chǎng)景:ext4/Btrfs文件系統(tǒng),LVM邏輯卷(如vg0/root)。
| 文件系統(tǒng) | 詳細(xì)步驟 | 驗(yàn)證命令 |
|---|---|---|
| ext4 | ① 備份數(shù)據(jù)(同上) ② 卸載文件系統(tǒng)(根分區(qū)需進(jìn)救援模式或用Live CD) ③ 檢查錯(cuò)誤: sudo e2fsck -f /dev/vg0/root④ 縮小文件系統(tǒng): sudo resize2fs /dev/vg0/root 20G(縮小至20GB)⑤ 縮小邏輯卷(LV): sudo lvreduce -L 20G /dev/vg0/root(LV容量需≥文件系統(tǒng)容量)⑥ 重新掛載 | lvs(看LV容量)df -hT |
| Btrfs | ① 備份數(shù)據(jù)(同上) ② 卸載文件系統(tǒng) ③ 縮小文件系統(tǒng): sudo btrfs filesystem resize 20G /mount_point④ 縮小LV: sudo lvreduce -L 20G /dev/vg0/root⑤ 重新掛載 | lvs/df -hT |
| XFS | 不支持縮容!替代方案: ① 備份數(shù)據(jù)到外部存儲(chǔ) ② 新建小LV: sudo lvcreate -L 20G -n new_lv vg0③ 格式化XFS: sudo mkfs.xfs /dev/vg0/new_lv④ 恢復(fù)數(shù)據(jù)到新LV ⑤ 修改/etc/fstab切換掛載點(diǎn) | - |
(二)Swap分區(qū)擴(kuò)縮容(獨(dú)立說(shuō)明)
擴(kuò)容(文件形式Swap):
# ① 創(chuàng)建Swap文件(如新增2GB) sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # ② 永久生效(/etc/fstab添加):echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
縮容(文件形式Swap):
sudo swapoff /swapfile # 關(guān)閉Swap sudo rm /swapfile # 刪除文件 # 從/etc/fstab刪除對(duì)應(yīng)行
三、關(guān)鍵注意事項(xiàng)
- 備份優(yōu)先:縮容前必須用
tar/rsync備份數(shù)據(jù),避免不可逆損失。 - 文件系統(tǒng)限制:XFS僅支持?jǐn)U容,不支持縮容;ext4/Btrfs支持?jǐn)U縮容(需先縮小文件系統(tǒng)再縮小分區(qū))。
- 分區(qū)與文件系統(tǒng)順序:擴(kuò)容時(shí)“先分區(qū)后文件系統(tǒng)”,縮容時(shí)“先文件系統(tǒng)后分區(qū)”。
- 虛擬機(jī)磁盤類型:動(dòng)態(tài)分配磁盤(Thin Provision)縮容需先清理碎片(如
virt-sparsify工具),固定大小磁盤(Thick Provision)縮容需虛擬機(jī)軟件支持(如VMware需“壓縮磁盤”功能)。
按上述步驟操作,可安全完成Linux虛擬機(jī)磁盤的擴(kuò)縮容,確保數(shù)據(jù)完整與系統(tǒng)穩(wěn)定。
以上就是Linux虛擬機(jī)磁盤擴(kuò)縮容的操作指南(按文件系統(tǒng)分類)的詳細(xì)內(nèi)容,更多關(guān)于Linux磁盤擴(kuò)縮容的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在CentOS / RHEL上設(shè)置 SSH 免密碼登錄的方法
本篇文章主要介紹了在CentOS / RHEL上設(shè)置 SSH 免密碼登錄的方法,自動(dòng)登錄配置好以后,你可以通過(guò)它使用 SSH (Secure Shell)和安全復(fù)制 (SCP)來(lái)移動(dòng)文件。2017-03-03
詳解Supervisor安裝與配置(Linux/Unix進(jìn)程管理工具)
這篇文章主要介紹了詳解Supervisor安裝與配置(Linux/Unix進(jìn)程管理工具),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Ubuntu修改docker數(shù)據(jù)目錄的實(shí)現(xiàn)方式
這篇文章主要介紹了Ubuntu修改docker數(shù)據(jù)目錄的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
linux確認(rèn)已經(jīng)卸載數(shù)據(jù)盤并可以新建自定義鏡像
在本文中我們給大家整理了關(guān)于linux中如何確認(rèn)已經(jīng)卸載數(shù)據(jù)盤并可以新建自定義鏡像的相關(guān)內(nèi)容和知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。2018-09-09
CentOS8 yum/dnf 配置國(guó)內(nèi)源的方法
這篇文章主要介紹了CentOS8 yum/dnf 配置國(guó)內(nèi)源的方法,需要的朋友可以參考下2019-10-10

