Предоставьте физический диск для существующей виртуальной машины Windows.

Вопрос или проблема

Проблема: У меня есть новый SATA диск, который я хочу подготовить с помощью установки Windows. У меня есть Windows только в виртуализированном виде на моем ПК. Мое решение: Подключить (прямо) весь диск к виртуальной машине Windows и подготовить, как обычно.

Это мой скрипт для VGA/Passthrough:

#!/bin/bash

#1Я ЧАСТЬ
configfile=/etc/vfio-pci.cfg

vfiobind() {
dev="$1"
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id

}

modprobe vfio-pci

cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done

#2Я ЧАСТЬ
xrandr --output DVI-D-0 --off
/usr/bin/synergys --config /home/%username%/.synergy.conf

export QEMU_ALSA_DAC_BUFFER_SIZE=512 QEMU_ALSA_DAC_PERIOD_SIZE=170 QEMU_AUDIO_DRV=alsa
sudo qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-m 8192 \
-cpu host,kvm=off,migratable=off,+invtsc,enforce \
-smp 4,sockets=1,cores=4,threads=1 \
-bios /usr/share/seabios/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=06:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=06:00.1,bus=root.1,addr=00.1 \
-soundhw all \
-drive if=none,file=/media/VM/windows1.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-net tap,vlan=0 \

-boot menu=on

sudo killall synergys
xrandr --output DVI-D-0 --auto
xrandr --output DVI-D-0 --right-of HDMI-0

exit 0

Вопрос 1): Я хочу сделать /dev/sdc доступным для виртуальной машины. Какой параметр -option позволит это сделать. (Чтобы повторить, новый диск, sdc, в данный момент не имеет содержимого, разделов или формата.)

Вопрос 2): Я усложняю себе жизнь или есть гораздо более простое решение.

Вопрос 3): Я знаю, что это можно сделать, используя .xml скрипт, который использует virt-manager, но, как вы видите, я не использую virt-manager для запуска виртуальной машины (из-за VGA Passthrough), возможно ли конвертировать/импортировать этот стартовый скрипт в формат .xml virt-manager и затем добавить что-то вроде:

<disk type="block" device="disk">
    <driver name="qemu" type="raw" cache="none" />
    <source dev="/dev/sda" />
    <target dev="vdb" bus="virtio" />
</disk>

…в секцию <devices>?

Большое спасибо только за то, что прочитали до конца, если вы справились с этим.

Я использую libvirt и передаю блочные устройства в виртуальные машины. Это приводит к параметрам qemu, подобным этим:

-drive file=/dev/mapper/storage-profiles,if=none,id=drive-virtio-disk4,format=raw,serial=KVM-profiles,cache=writeback
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xc,drive=drive-virtio-disk4,id=virtio-disk4,bootindex=6

Ответ или решение

Как сделать физический диск доступным для существующей Виртуальной Машины Windows

Введение

Если вы хотите сделать новый SATA-диск доступным для вашей виртуальной машины Windows и выполнить на нём установку с последующей подготовкой (sysprep), вам потребуется правильно его подключить и настроить. В этом ответе мы разберем несколько ключевых вопросов, связанных с этой задачей.

Вопрос 1: Как сделать /dev/sdc доступным для виртуальной машины?

Для использования физического диска в качестве хранилища для виртуальной машины с помощью QEMU/KVM, необходимо указать опцию -drive. Поскольку ваш диск (например, /dev/sdc) не содержит данных, его можно использовать напрямую в качестве исходного хранилища. Используйте следующую команду:

-drive file=/dev/sdc,if=none,id=disk,format=raw

Это позволит вашему виртуальному окружению напрямую взаимодействовать с указанным физическим диском. Обратите внимание, что format=raw уточняет формат хранилища на случай, если диск не отформатирован, как в вашем случае. Убедитесь, что диск не используется другими процессами и что на нём нет данных, которые могут быть потеряны.

Вопрос 2: Не усложняю ли я жизнь себе? Есть ли более простое решение?

На первый взгляд, процедура связывания физического диска с виртуальной машиной через пасс-техники (passthrough) может показаться сложной. Однако, это наиболее распространенный метод для достижения ваших целей, особенно когда требуется использование аппаратного ускорения и полной производительности оборудования.

Возможно, вы могли бы воспользоваться инструментами управления виртуальными машинами, такими как virt-manager, которые предоставляют графический интерфейс для настройки. Это может сократить количество командной строки и автоматизировать большую часть настройки. Однако, с учетом использования VGA-пасс-техники, лучше всего управлять параметрами через сценарии или команду запуска.

Вопрос 3: Можно ли импортировать вашу конфигурацию в format .xml для virt-manager?

Да, вы можете преобразовать ваш Bash-скрипт в формат XML для использования в virt-manager. Если вы хотите добавить новый блок-устройство в вашу виртуальную машину, необходимо будет создать элемент с дискoм внутри секции <devices>. Ваш код будет выглядеть следующим образом:

<disk type="block" device="disk">
    <driver name="qemu" type="raw" cache="none"/>
    <source dev="/dev/sdc"/>
    <target dev="vdb" bus="virtio"/>
</disk>

Если вы уже имеете .xml-файл для вашей виртуальной машины, просто добавьте этот блок в <devices>. Однако, если вы используете аппаратное ускорение и масштабирование вашей виртуальной системы с помощью VGA-пасс-техники и напрямую из командной строки, вам все равно нужно будет запускать виртуальную машину с помощью используемой вами конфигурации скриптов. В некоторых случаях, интеграция .xml в вашу архитектуру требует дополнительной настройки.

Заключение

Использование физического диска в виртуальной машине — это довольно сложный процесс, но следуя приведенным выше рекомендациям, вы сможете успешно подключить и использовать его. Использование команды -drive с правильными параметрами и настройками дискoв позволит вам легко создать инсталляцию Windows с нуля и подготовить вашу систему к дальнейшему использованию.

Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...