Kvm-Virtualization
(QEMU) 在帶有丟棄物的精簡配置 LVM 設備上設置 Windows 10 VM(又名修剪)
我正在嘗試使用 QEMU 設置 Windows 10 VM,並且我想使用精簡配置的 LVM 卷並能夠在 Windows 中“重新修剪”驅動器。我創建了設備:
-drive index=0,media=disk,if=virtio,format=raw,file=/dev/vg0/myvol
,但是當我
Optimize-Volume -DriveLetter c -Defrag -ReTrim
在 Windows PowerShell 中執行時,它聲稱支持設備不支持修剪。我怎樣才能讓它工作?
所以請原諒我,但我要回答我自己的問題,因為我花了將近兩天的時間在這個問題上,需要在網上的某個地方找到答案!
virtio 驅動程序的ChangeLog聲明他們在 0.1.172-1 中添加了“對丟棄(取消映射)命令的初步支持”
viostor
,但它仍然失敗 - 無論如何這是一個不穩定的版本。我在這裡找到了我的答案,它基本上是為了替換它:
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
總結一下整個過程:
- 下載Windows 10 iso
- 下載適用於 Windows 的簽名 virtio 驅動程序 iso
- 創建 LVM 精簡池(例如
lvcreate -L 1t --thinpool tpool vg0
)- 在該池中創建一個精簡卷(例如,
lvcreate --verbose --thin vg0/tpool --virtualsize 128G --name win10
)- 使用以下內容啟動 qemu vm:
#!/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
- 選擇鍵盤佈局
- 點擊“立即安裝”
- 點擊“我沒有產品密鑰”,如果有,請輸入一個(您也可以稍後添加)
- 選擇 Windows 版本並選擇“自定義”安裝
- 點擊“載入驅動程序”並瀏覽您的 CD(可能是
e:\vioscsi\w10\amd64
)- 出現提示時,點擊“我沒有 Internet”
- Windows 安裝完成後,瀏覽 virtio CD 並執行安裝程序:
e:\virtio-win-gt-x64.msi
. 它會希望在獲得網卡後完成 Windows 設置,但您可以跳過它。- 可能重新啟動Windows
- 執行超級使用者“powershell”(點擊開始 –> Windows PowerShell –> 右鍵點擊“Windows PowerShell”子條目 –> 更多 –> 以管理員身份執行)
- 在 powershell 中,執行
Optimize-Volume -DriveLetter c -Degrag -ReTrim -Verbose
如果一切順利,您將不會收到錯誤消息,並且 NTFS 文件系統不再使用的塊將被丟棄並返回到 LVM 精簡池。如果您省略
-Verbose
,它會在 powershell 的頂部列印一個漂亮的進度條,但不會列印結果,因為它們很糟糕。您也可以通過替換為來選擇系統保留-DriveLetter c
分區-FileSystemLabel "System Reserved"
。我可能應該注意到我正在使用
gtk-spice
- 協議的參考實現spice
(也是我所知道的唯一一個)。我設置了 ssh 埠,這樣我就可以設置 cygwin 並執行 sshd。