proxmox 映像導入會建立 50GB 磁碟,不論映像大小為何

proxmox 映像導入會建立 50GB 磁碟,不論映像大小為何

如果我從原始映像匯入 vm 101 的磁碟映像,它將建立一個 50GB 的磁碟映像:

# qm importdisk 101  disk.img local-zfs
importing disk '446-jenkinsmite.img' to VM 101 ...
transferred 0.0 B of 50.0 GiB (0.00%)
transferred 512.0 MiB of 50.0 GiB (1.00%)
transferred 1.0 GiB of 50.0 GiB (2.00%)
transferred 1.5 GiB of 50.0 GiB (3.00%)
...
transferred 49.9 GiB of 50.0 GiB (99.76%)
transferred 50.0 GiB of 50.0 GiB (100.00%)
transferred 50.0 GiB of 50.0 GiB (100.00%)
Successfully imported disk as 'unused0:local-zfs:vm-101-disk-0'

命令

qm create 101 --scsi0 local-zfs:0,import-from=/root/disk.img,size=13G

仍然建立一個 50GiB 磁碟。

我意識到,該圖像(尚未)佔用 50GB,它應該表現得像一個稀疏檔案:

# zfs list rpool/data/vm-101-disk-0
NAME                       USED  AVAIL     REFER  MOUNTPOINT
rpool/data/vm-101-disk-0  12.2G  2.50T     12.2G  -

但是,VM 將看到磁碟大小為 50GB,如果安裝了一些雲端來賓工具,它將調整分割區和檔案系統的大小以用完可用空間,並且最終可能會用完該空間。

我還沒有嘗試導入大於 50GiB 的磁碟映像,但這也可能會導致問題...

匯入鏡像時如何設定目標磁碟的大小?

答案1

我很快就找到了解決方法。您可以透過執行以下命令來設定 ZFS 子卷大小:

zfs set volsize=1GiB rpool/data/vm-101-disk-0

當心!

  • 如果您設定的尺寸小於原始影像,您將遺失資料!
  • 如果您輸入錯誤的磁碟區名稱,您將遺失資料!

沒有警告或詢問您是否確定,因此最好計算好大小並確保調整適當的捲大小。


此外,proxmox 仍將磁碟大小列為 50GiB:

# qm list
  VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID       
   101 VM 101               running    512               50.00 2128896   

我不知道這是否會導致任何令人不快的副作用(虛擬機似乎將磁碟視為ZFS 子卷大小),因此我很高興有更好的解決方案,最好是創建具有適當大小的子卷的解決方案。

相關內容