
我有一個 proxmox 安裝。我想將 vmdk 匯入到 lvm 中,過程是:
$ qemu-img convert -p -f vmdk "IE11 - Win7-disk1.vmdk" -O raw "IE11 - Win7-disk1.raw"
進而:
$ dd if="IE11 - Win7-disk1.raw" bs=1M|pv| dd of=/dev/mapper/pve-vm--103--disk--1
效果很好。
但 127GB 虛擬磁碟機上有 8.8GB 資料:
$ qemu-img info "IE11 - Win7-disk1.raw"
image: IE11 - Win7-disk1.raw
file format: raw
virtual size: 127G (136365211648 bytes)
disk size: 8.8G
當我“dd”原始驅動器時,我看到複製了 127GB,而其中只有 8.8G 很重要。 這非常緩慢。
有沒有更好的辦法?
答案1
更快的方法是不使用dd
pv < "IE11 - Win7-disk1.raw" > /dev/mapper/pve-vm--103--disk--1
cat
最快的是直接使用
cat "IE11 - Win7-disk1.raw" > /dev/mapper/pve-vm--103--disk--1
您的調用dd
使用的是 512 位元組區塊,這將導致每 KB 讀取兩次系統調用,或每 MB 讀取約 2000 次。有了它cat
,您可能會逃脫每 MB 一個。
答案2
我正在從 XenServer 遷移到 Proxmox,我找到了這個解決方案。
首先取得 qcow2 檔案(如果您還沒有)(如果您的來源檔案不是原始磁碟映像,您可能需要在此處使用不同的命令,重要的是取得 qcow2 檔案作為結果)
qemu-img convert rawimage.img -O qcow2 thinimage.qcow2
將 qcow2 影像轉換為原始影像稀疏文件:
qemu-img convert -p -f qcow2 -O raw -t none -T none thinimage.qcow2 rawsparce.raw
將稀疏檔案寫入VM的thin lv:
dd if=rawsparce.raw of=/dev/mapper/pve-vm--100--disk--1 bs=8M conv=sparse status=progress
答案3
RAW 格式僅支援預先分配,這就是為什麼當您透過qemu-img
.
嘗試將vmdk
圖像檔案轉換為qcow2
格式,無需預先分配即可工作。