Kvm-Virtualization

(QEMU) 在帶有丟棄物的精簡配置 LVM 設備上設置 Windows 10 VM(又名修剪)

  • November 17, 2019

我正在嘗試使用 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

總結一下整個過程:

#!/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。

引用自:https://serverfault.com/questions/991444