“dd”原始驅動器到 lvm 效率低。有沒有更好的辦法?

“dd”原始驅動器到 lvm 效率低。有沒有更好的辦法?

我有一個 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格式,無需預先分配即可工作。

相關內容