QEMUを使用してWindows10 VMをセットアップしようとしていますが、シンプロビジョニングされたLVMボリュームを使用して、Windowsでドライブを「リトリム」できるようにしたいです。でデバイスを作成しました。 :
-drive index=0,media=disk,if=virtio,format=raw,file=/dev/vg0/myvol
、
しかし、私が実行するとOptimize-Volume -DriveLetter c -Defrag -ReTrim
Windows PowerShellでは、バッキングデバイスがトリムをサポートしていないと主張しています。どうすればこれを機能させることができますか?
許してください。でも、これに2日近く費やしたので、自分の質問に答えるつもりです。オンラインのどこかに答えが必要です。
Virtioドライバーの ChangeLog は、0.1.172-1のviostor
に「discard(unmap)コマンドの予備サポート」を追加したと述べていますが、それでも失敗しました-これはとにかく不安定なリリース。
私は私の答えを見つけました ここ 、これは本質的にこれを置き換えることでした:
qemu-system-x86_64 --enable-kvm \
< ... other options ... > \
-drive index=0,format=raw,if=virtio,media=disk,file=/dev/vg0/myvol
これとともに:
qemu-system-x86_64 --enable-kvm \
< ... other options ... > \
-device virtio-scsi-pci,id=scsi0 \
-device scsi-hd,drive=mydrive0 \
-drive index=0,format=raw,if=none,id=mydrive0,file=/dev/vg0/myvol
プロセス全体を要約すると:
lvcreate -L 1t --thinpool tpool vg0
)lvcreate --verbose --thin vg0/tpool --virtualsize 128G --name win10
)#!/bin/bash
mem=8G
cores=8
threads=1
name=win10
WINVOLC=/dev/vg0/${name}
WIN10_ISO='~/dl/m$/Win10_1903_V2_English_x64.iso'
VIRTIO_ISO=~/dl/virtio-win-0.1.173.iso
rdp_port=12345
ssh_port=12346
spice_port=12347
spice_pwd=like_so_secret
qemu-system-x86_64 --enable-kvm
-name "${name}" \
-monitor stdio \
-cpu Host -smp cores=${cores},threads=${threads} -m ${mem} \
-rtc base=localtime,clock=Host \
-net nic,id=vmnet0,model=virtio \
-Net User,id=vmnet1,hostfwd=tcp::${ssh_port}-:22,hostfwd=tcp::${rdp_port}-:3389 \
-vga vmware \
-spice port=${spice_port},password=${spice_pwd} \
-device virtio-serial-pci \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-device virtio-scsi-pci,id=scsi0 \
-device scsi-hd,drive=winvolc \
-drive index=0,if=none,id=winvolc,format=raw,file=${WINVOLC} \
-drive index=1,media=cdrom,file=${WIN10_ISO} \
-drive index=2,media=cdrom,file=${VIRTIO_ISO} \
-boot order="cd"
spicy -p 12347 -h localhost -w like_so_secret
を実行しますe:\vioscsi\w10\AMD64
になります)e:\virtio-win-gt-x64.msi
を実行します。ネットワークカードを取得した後、Windowsのセットアップを終了する必要がありますが、スキップできます。Optimize-Volume -DriveLetter c -Degrag -ReTrim -Verbose
を実行しますすべてがうまくいけば、エラーメッセージは表示されず、NTFSファイルシステムで使用されなくなったブロックは破棄され、LVMシンプールに戻されます。 -Verbose
を省略すると、PowerShellの上部にかなりのプログレスバーが印刷されますが、そのように吸うため、結果は印刷されません。 -DriveLetter c
を-FileSystemLabel "System Reserved"
に置き換えることで、システム予約済みパーティションを選択することもできます。
おそらく、私はgtk-spice
を使用していることに注意する必要があります-spice
プロトコルのリファレンス実装(私が知っている唯一のものでもあります)。 cygwinをセットアップしてsshdを実行できるように、sshポートをセットアップしました。