Я пытаюсь настроить виртуальную машину Windows 10 с помощью QEMU, и я хочу использовать том LVM с тонкой подготовкой и иметь возможность «восстановить» диск в Windows. Я создал устройство с помощью:
-drive index=0,media=disk,if=virtio,format=raw,file=/dev/vg0/myvol
,
Но когда я бегу Optimize-Volume -DriveLetter c -Defrag -ReTrim
в Windows PowerShell утверждается, что устройство поддержки не поддерживает обрезку. Как я могу заставить это работать?
Так что простите меня, но я собираюсь ответить на свой вопрос, потому что я потратил на это почти два дня и должен быть ответ где-то в Интернете!
В Журнал изменений для драйверов virtio указано, что они добавили «предварительную поддержку команды discard (unmap)» в viostor
в 0.1.172-1, но все равно не удалось - в любом случае это нестабильный выпуск.
Я нашел свой ответ Вот, который должен был заменить это:
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
, он выводит симпатичную полосу выполнения в верхней части командной оболочки, но не выводит результат, потому что это отстой. Вы также можете выбрать раздел System Reserved, заменив -DriveLetter c
с участием -FileSystemLabel "System Reserved"
.
Наверное, стоит отметить, что я использую gtk-spice
- эталонная реализация для spice
протокол (также единственный, о котором я знаю). Я настроил порт ssh, чтобы настроить cygwin и запустить sshd.