快轉到主要內容

如何用圖形化程式調整QEMU/KVM虛擬機的硬碟大小,開啟編輯qcow2檔

Linux系統 虛擬機與容器技術 QEMU Libvirt
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

Mount and reszie qcow2 images of QEMU VMs.

我要調整一個Windows的QEMU/KVM虛擬機的容量大小。該虛擬機使用libvirt新增,虛擬硬碟以qcow2格式儲存。

為更輕鬆的調整硬碟分區,我以圖形程式Gparted操作,來增加/縮小qcow2大小。

後面示範如何掛載qcow2硬碟,存取裡面的資料。

以Ubuntu 22.04而言,要先安裝qemu-utils、Gparted套件:

sudo apt-get install qemu-utils gparted ntfs-3g

1. 增加qcow2虛擬硬碟容量
#

  1. 找出qcow2位置,Libvirt所新增的虛擬機預設是位於/var/lib/libvirt/images
$ ls /var/lib/libvirt/images
windows11.qcow2
  1. qemu-img info指令確認容量
$ qemu-img info windows11.qcow2

image: windows11.qcow2
file format: qcow2
virtual size: 128 GiB (137438953472 bytes)
disk size: 112 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false
Child node '/file':
    filename: windows11.qcow2
    protocol type: file
    file length: 128 GiB (137460187136 bytes)
    disk size: 112 GiB
  1. 如果有空間,先備份虛擬硬碟
sudo cp windows11.qcow2 windows11_old.qcow2
  1. 使用qemu-img resize增加容量
cd /var/lib/libvirt/images
sudo qemu-img resize windows11.qcow2 256G
# 或者用加的
sudo qemu-img resize windows11.qcow2 +128G
  1. 在那之後,開機進入Windows虛擬機,用磁碟工具「延伸磁碟區」的功能就完成擴容。

  2. 如果磁碟工具讀不到新分區,就得手動對虛擬硬碟的分區做進一步操作。將qcow2掛載為NBD網路硬碟:

sudo modprobe nbd max_part=10
sudo qemu-nbd -c /dev/nbd0 windows11.qcow2
  1. 以Gparted開啟
sudo gparted /dev/nbd0
  1. 這裡就可以用圖形界面編輯分區啦

  2. 例如將中間的磁區按右鍵,貼齊磁柱,拉到最右邊。再調整最大分區的拉桿,將空白的磁區填滿。這樣移的話會讓qcow2直接吃滿256GB的實體硬碟空間。按下綠色箭頭確認。

  3. 編輯完成後刪除NBD裝置

sudo qemu-nbd -d /dev/nbd0
  1. qemu-img info windows11.qcow2確認擴充後的大小。

2. 縮小qcow2虛擬硬碟容量
#

本節步驟跟上節類似,不過過程是反過來。縮小硬碟可能會造成資料損失,且磁區後方必須是未使用磁區。

  1. 如果有空間,先備份虛擬硬碟
sudo cp windows11.qcow2 windows11_old.qcow2
  1. 掛載qcow2為NBD網路硬碟
sudo modprobe nbd max_part=10
sudo qemu-nbd -c /dev/nbd0 windows11.qcow2
  1. 以Gparted開啟掛載的硬碟
sudo gparted /dev/nbd0
  1. 拉動拉桿,將磁區縮小,最後方多出的灰色未使用磁區即為可縮小的範圍,按下綠色箭頭儲存

  2. 編輯好之後,才用qemu-img shrink縮小qcow2大小

sudo qemu-img resize windows11.qcow2 --shrink -128G
  1. 編輯完成後刪除NBD裝置
sudo qemu-nbd -d /dev/nbd0
  1. qemu-img info windows11.qcow2確認縮小後的大小。

3. 在Linux存取qcow2硬碟的檔案
#

  1. 將qcow2掛載成NBD裝置
sudo modprobe nbd max_part=10
sudo qemu-nbd -c /dev/nbd0 windows11.qcow2
  1. 使用fdisk查看Windows虛擬硬碟內的分區
sudo fdisk /dev/nbd0 -l
  1. 接著再掛載,通常是掛載Microsoft basic data分區到Linux,以存取C槽資料。
sudo mount /dev/nbd0p3 /mnt/media/disk
  1. 使用完記得取消掛載
sudo umount /mnt/media/disk
  1. 編輯完成後刪除NBD裝置
sudo qemu-nbd -d /dev/nbd0

參考資料
#

相關文章

Ubuntu單GPU直通方法,Nvidia顯示卡直通給Windows 11 QEMU/KVM虛擬機
Linux系統 虛擬機與容器技術 GPU Passthrough Ubuntu QEMU Libvirt
啟用巢狀Hyper-V,讓Windows 11 QEMU/KVM虛擬機支援WSL與WSA
Linux系統 虛擬機與容器技術 Libvirt Windows Subsystem for Linux QEMU Windows
【圖解】如何在Linux系統安裝Windows 11虛擬機(QEMU/KVM) + 常用技巧
Linux系統 虛擬機與容器技術 QEMU Windows Libvirt

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。