Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 虛擬機擴充硬碟空間完整指南:新增虛擬磁碟掛載、qemu-img resize 線上擴容、LVM 動態擴展

編輯:Linux 教學

虛擬機 (KVM/QEMU/libvirt) 使用久了,原始分配的磁碟空間常告不足。本文針對三種常見場景提供完整擴容方案:新增虛擬磁碟掛載至目錄(最簡單、無風險)、qemu-img resize + virt-resize 離線擴容根分區(適用非 LVM 系統)、LVM 線上動態擴容(最靈活、無需停機)。涵蓋 virsh 指令、virt-manager 圖形介面、客體內部操作全流程。

環境與規劃

  • 宿主機: CentOS 6.1、libvirt/KVM
  • 客體: CentOS 6.1、磁碟裝置 /dev/vda (virtio)、根分區 /dev/vda1 (ext4)
  • 磁碟映像路徑: /var/lib/libvirt/images/test.img
  • 目標: 將 20G 磁碟擴充至 40G,或新增 20G 空間

方案一:新增虛擬磁碟並掛載至目錄(推薦新手、零風險)

A. 宿主機新增磁碟

圖形介面:virt-manager → 虛擬機詳細資料 → 「新增硬體」 → 「儲存裝置」 → 選擇大小、格式 (raw/qcow2)、總線類型 (virtio/SCSI/SATA/IDE) → 完成。
注意: IDE 總線不支援熱插拔,選 IDE 需關機;virtio/SCSI/SATA 支援熱插拔。

命令列:

# 建立 10G raw 格式磁碟映像
qemu-img create -f raw /var/lib/libvirt/images/test_add.img 10G

# 熱插拔至虛擬機 (vdb, virtio, 無快取)
virsh attach-disk test /var/lib/libvirt/images/test_add.img vdb --cache none --driver qemu --subdriver raw

# 或編輯 XML 永久生效
virsh edit test
# 在  區塊新增:
# 
#   
#   
#   
# 

B. 客體內部格式化、掛載、設定開機自動掛載

# 1. 確認新磁碟 (假設為 /dev/vdb)
fdisk -l

# 2. 格式化為 ext4
mkfs.ext4 /dev/vdb

# 3. 建立掛載點並掛載
mkdir /test
mount /dev/vdb /test

# 4. 取得 UUID 設定開機自動掛載
blkid /dev/vdb
# 輸出範例:/dev/vdb: UUID="19fc1d1d-7891-4e22-99ef-ea3e08a61840" TYPE="ext4"

# 5. 編輯 /etc/fstab 新增:
UUID=19fc1d1d-7891-4e22-99ef-ea3e08a61840 /test ext4 defaults 1 2

優點: 不動原磁碟、無數據遺失風險、可隨時移除。
缺點: 空間分散在不同掛載點,應用需感知路徑。

方案二:virt-resize 離線擴容根分區(適用非 LVM、需停機)

前提: 宿主機安裝 libguestfs-tools (yum -y install libguestfs-tools)。

# 1. 關閉虛擬機
virsh shutdown test

# 2. 建立新的較大映像檔 (目標總大小 15G)
qemu-img create -f raw /var/lib/libvirt/images/test_extend.img 15G

# 3. 使用 virt-resize 擴容根分區 (/dev/vda1) 並複製數據
virt-resize --expand /dev/vda1 /var/lib/libvirt/images/test.img /var/lib/libvirt/images/test_extend.img
# 此過程會重新分區、格式化、複製檔案,大磁碟耗時較久,請耐心等待

# 4. 以新映像取代舊映像
mv /var/lib/libvirt/images/test_extend.img /var/lib/libvirt/images/test.img

# 5. 啟動虛擬機
virsh start test

優點: 真正擴大根分區、支援 Windows 客體、無需登入客體操作。
缺點: 需停機、大磁碟耗時長、複製過程有極低機率數據損壞(建議先備份)。

方案三:LVM 線上動態擴容(最推薦生產環境、無需停機)

前提: 客體安裝時選用 LVM 管理磁碟 (根分區在 /dev/VolGroup/lv_root)。

A. 宿主機新增 LVM 邏輯卷並掛載至虛擬機

# 宿主機建立 40G LV
lvcreate -L 40G -n lv_vm_test1 VolGroup

# 熱插拔至虛擬機 (需修改裝置權限讓 qemu 進程可存取)
virsh attach-disk test /dev/mapper/VolGroup/lv_vm_test1 vdb --cache none
# 若權限錯誤:chmod 660 /dev/mapper/VolGroup/lv_vm_test1; chown root:kvm /dev/mapper/VolGroup/lv_vm_test1

B. 客體內部線上擴容

# 1. 確認新裝置 /dev/vdb
fdisk -l

# 2. 建立 PV、加入 VG
pvcreate /dev/vdb
vgextend VolGroup /dev/vdb
vgs  # 確認 VG 可用空間增加

# 3. 擴展 LV (使用所有剩餘空間)
lvextend -l +100%FREE /dev/VolGroup/lv_root

# 4. 線上調整檔案系統 (ext4/xfs 均支援線上擴容)
resize2fs -p /dev/VolGroup/lv_root
# XFS 使用:xfs_growfs /dev/VolGroup/lv_root

優點: 完全線上、秒級完成、無數據風險、支援繼續擴容。
缺點: 需客體預先使用 LVM、不支援 Windows 客體。

方案選擇建議

場景推薦方案關鍵考量
新手/臨時需求/不想動原系統方案一:新增磁碟掛載最安全、最簡單
非 LVM Linux 根分區不足、可接受停機方案二:virt-resize真正擴大根分區
生產環境 LVM 系統、要求零停機方案三:LVM 線上擴容最專業、最彈性
Windows 客體方案一 或 方案二virt-resize 支援 Windows

重要提醒

  • 任何磁碟操作前,**務必備份重要數據** 或建立虛擬機快照。
  • 擴容後在客體內執行 df -h 確認空間已生效。
  • 若使用 qcow2 格式且有快照,需先合併/刪除快照再擴容,否則會損壞快照鏈。
Copyright © Windows教程網 All Rights Reserved