
如果我從原始映像匯入 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 子卷大小),因此我很高興有更好的解決方案,最好是創建具有適當大小的子卷的解決方案。