LINUX.ORG.RU

qemu и динамически выделяемая память

 , ,


1

3

Собственно сабж. Может кто подскажет, без пафосного balloon driver - как это по-человечески реализовать?
Есть гостевая система на винде, всю простыню писать не буду, но в двух словах:

qemu-system-x86_64: -device virtio-balloon

zcat /proc/config.gz | grep -ie CONFIG_MEMCG -e CONFIG_CGROUPS
CONFIG_CGROUPS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y

Само устройство определилось как VirtIO Balloon Driver, и guest agent'а я поставил. Теперь вопрос о том, как реализовать управление на хосте. Вот тут есть такая клевая штука http://www.linux-kvm.org/page/Projects/auto-ballooning Но мне стремно ставить, потому что уже двух летней давности, плюс (да, я арчевод), пока я разберусь, как там это воткнуть в PKGBUILD пройдет время(я сильно подозреваю, что зазря)

Задача простая - распределить ресурсы памяти между хостом и гостем, как это сделано в libvirt, который это умеет.


Ответ на: комментарий от TheAnonymous

В чем проблема использовать libvirt?

Собственно проблема в пробросе видеокарты так, что бы вместе с ней можно было подцепить патченный вбиос. Там вечно вылезают ошибки. Как только я добавляю в xml qemu arg - вылезают разные ошибки. Хотя я уже пробовал даже конвертировать команды для qemu в местный формат xml - один черт. Промучавшись пару часов я снова решил отложить либвирт в дальний угол.

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Чудесно! Спасибо. А свежих патчей на qemu уже нет? Мб есть альтернативный гипервизор, способный без потерь в производительности, пробрасывать видеокарту\диски? Не нравится мне либвирт.. А без него похоже, что никак. Или я ошибаюсь?

Rockon
() автор топика
Ответ на: комментарий от vvvvvvvv

в том, что бы им управлял не я ручками (как вы говорите, я уже настроил), а что бы это происходило автоматически. Сейчас запуск виртуалки выглядит как фиксированное выделение оперативной памяти у хоста. Т.е. qemu просто съедает 4гб памяти при запуске.

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Уважаемый, ром файл вроде грузится, во всяком случае ошибок не возникло и на втором мониторе я увидел гостя, но возникла другая проблема: не хочет гость грузится с программного рейда.

ps auxww | grep qemu | head -n1
........... -drive file=/dev/md1,format=raw,if=none,id=drive-virtio-disk0,cache=writethrough -device virtio-blk-pci,scsi=off,bus=pci.5,addr=0x0,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
...... 
 -device vfio-pci,host=02:00.0,id=hostdev0,bus=pci.6,addr=0x0,romfile=/patch_to_file/bios6970_updGOP.rom -device vfio-pci,host=02:00.1,id=hostdev1,bus=pci.7,addr=0x0 -device virtio-balloon-pci,id=balloon0,bus=pci.4,addr=0x0 -msg timestamp=on

Как мне силами xml прописать, как у меня, не используя qemu arg? Или это невозможно?

-device vfio-pci,id=video0,host=02:00.0,multifunction=on,romfile=/home/rocko/bios/vbios/bios6970_updGOP.rom,x-vga=on -device vfio-pci,host=02:00.1 \
-drive file=/dev/md1,if=virtio,id=c,format=raw,cache=writeback \[\code]

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

xml

.

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit Rock02Windows
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>Rock02Windows</name>
  <uuid>3e385212-11c9-487d-b737-8d36ec556c1f</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-2.9'>hvm</type>
    <loader readonly='yes' type='pflash'>/patch_to_file/OVMF-pure-efi.fd</loader>
    <nvram>/patch_to_file/OVMF_VARS-pure-efi.fd</nvram>
    <bootmenu enable='yes'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='host-model' check='partial'>
    <model fallback='allow'/>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='writethrough'/>
      <source dev='/dev/md1'/>
      <target dev='sda' bus='virtio'/>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/patch_to_file/ru-en_win8.1_efi.iso'/>
      <target dev='sdb' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/patch_to_file/virtio-win-0.1.135.iso'/>
      <target dev='sdc' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x2'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <model name='i82801b11-bridge'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <model name='pci-bridge'/>
      <target chassisNr='2'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x10'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x11'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x12'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x13'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0x14'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0x15'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
    </controller>
    <controller type='pci' index='9' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='9' port='0x16'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <controller type='scsi' index='0'>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='12:24:24:2a:a3:82'/>
      <source network='dmz'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
      <rom file='/patch_to_file/bios6970_updGOP.rom'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='1'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Я поправлю сообщение выше: Винда нормально грузится без libvirt с такой командой для qemu

drive file=/dev/md1,media=disk,if=virtio,id=c,format=raw,cache=writeback 
а силами libvirt команда для qemu генерируется
 -drive file=/dev/md1,format=raw,if=none,id=drive-virtio-disk0,cache=writethrough -device virtio-blk-pci,scsi=off,bus=pci.5,addr=0x0,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1

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

Rockon
() автор топика
Ответ на: комментарий от Rockon

<target dev='sda' bus='virtio'/>

Я думаю, надо заменить на dev='vda', virtio диски начинаются не на sd, а vd, возможно, поэтому генерируется if=none

TheAnonymous ★★★★★
()
Ответ на: комментарий от TheAnonymous

уже заменил)) Я тоже заметил это, заодно удалил строку с адресом, он её перегенерировал, но в целом - гость диск видит, во всяком случае установочный диск с виндой, если ему подсунуть драйвера - все показал, так что..

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Он вообще не умеет ни ром файл привязывать, ни доп функции задавать. Я им и «сделал» основной xml.. Более того, я их несколько разных установил, у всех разные функции, какой-то п****ц и все по-своему глючат и у всех какие-то свои фишки по доп функциям..

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Вообщем то у меня кривые руки, но либвирт мне не дается

/etc/libvirt/qemu.conf

user = "root"
group="0"
2017-04-16T18:17:30.401388Z qemu-system-x86_64: -drive file=/dev/md1,if=virtio,id=c,format=raw,cache=writeback: Could not open '/dev/md1': Operation not permitted
2017-04-16 18:17:30.437+0000: shutting down, reason=failed

xml

  <qemu:commandline>
    <qemu:arg value='-drive'/>
    <qemu:arg value='file=/dev/md1,if=virtio,id=c,format=raw,cache=writeback'/>
  </qemu:commandline>

спасайте, господа. Из задачи - приделать динамически распределяемую память я столкнулся с каким-то адом. К слову :

# umount /dev/md1*
umount: /dev/md1: не примонтирован
umount: /dev/md1p2: не примонтирован
umount: /dev/md1p3: не примонтирован
umount: /dev/md1p4: не примонтирован
спасайте

Rockon
() автор топика
Ответ на: комментарий от Rockon

Так а через xml не работает? Тогда он сам выставляет права какие нужно

TheAnonymous ★★★★★
()
Ответ на: комментарий от Rockon

Более того, я их несколько разных установил

Это какие?
Канонический тот, что от red hat, называется просто virt-manager. Ром файл таки не умеет, но для более простых вещей вроде работает.
Есть ещё qt-virt-manager, тот да, очень сырой и почти не работает.

TheAnonymous ★★★★★
()
Ответ на: комментарий от TheAnonymous

код из xml я выложил, тесты провести не удалось по причине того, что у меня не заводится диск с виндой, работающий на qemu

В работе с либвирт использую оригинальный virt--manager - к нему претензий нет, кроме, разве что того, что он иногда неправильно host-cpu выставляет(проблему решил тем, что запускаю виртуалку прямо virsh start %mashine_name% https://www.archlinux.org/packages/community/any/virt-manager/

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit Rock02Windows
or other application using the libvirt API.
-->

<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>Rock02Windows</name>
  <uuid>3e385212-11c9-487d-b737-8d36ec556c1f</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>1073152</currentMemory>
  <vcpu placement='static' current='1'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-2.9'>hvm</type>
    <loader readonly='yes' type='pflash'>/patch_to_file/OVMF-pure-efi.fd</loader>
    <nvram>/patch_to_file/OVMF_VARS-pure-efi.fd</nvram>
    <boot dev='hd'/>
    <bootmenu enable='yes'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='host-model' check='partial'>
    <model fallback='allow'/>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/patch_to_file/ru-en_win8.1_u3_x86-x64_16in1_activated.iso'/>
      <target dev='sdb' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/patch_to_file/virtio-win-0.1.135.iso'/>
      <target dev='sdc' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x2'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <model name='i82801b11-bridge'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <model name='pci-bridge'/>
      <target chassisNr='2'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x10'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x11'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x12'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x13'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0x14'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0x15'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
    </controller>
    <controller type='pci' index='9' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='9' port='0x16'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <controller type='scsi' index='0'>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:fa:a3:8c'/>
      <source network='pfSense'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
      <rom file='/home/rocko/bios/vbios/bios6970_updGOP.rom'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='1'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-drive'/>
    <qemu:arg value='file=/dev/md1,if=virtio,id=c,format=raw,cache=writeback'/>
  </qemu:commandline>
</domain>
Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Если удалять секцию с <qemu:commandline> - заводится)

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Вообщем то убрал id=c из последней секции (меня осенило, либвирт ж свои ид назначает) и снова получил вчерашнюю ошибку, мол нет доступа к /dev/md1

Rockon
() автор топика
Ответ на: комментарий от Rockon

<qemu:commandline> лучше вообще использовать только в крайнем случае, а для обычного жесткого диска - средствами libvirt, причем, лучше не вручную писать xml, а добавить устройство в virt-manager, а потом подредактировать, если надо

TheAnonymous ★★★★★
()
Ответ на: комментарий от TheAnonymous

Должно добавиться что-то типа <disk type='block' device='disk'>...
Ну и не забудь еще про порядок загрузки, в virt-manager отметить диск, и стрелочками переместить

TheAnonymous ★★★★★
()
Ответ на: комментарий от Rockon

Там по сути то же самое, может надо просто драйвер в шиндошс переставить, из-за того, что контроллер стал в другом слоте

TheAnonymous ★★★★★
()
Ответ на: комментарий от TheAnonymous

Вообщем то дела такие: я просто подключил диск как блочное устройство

    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/md1'/>
      <target dev='sdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
если ставить
<target dev='vdc' bus='virtio'/>
биос не определяет жесткий диск именно через либвирт. Грязным хаком добавить media=disk у меня не получилось..
http://vfio.blogspot.ru/2016/09/passing-qemu-command-line-options.html
Что делать - хз

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

я совсем забыл добавить - сейчас диск с gpt(с mbr было тоже самое), с шиной

<target dev='vdc' bus='virtio'/>
видится дальше и более того, в качестве эксперимента - на это блочное устройство была установлена винда. Но с биоса через либвирт оттуда не загрузится, только через чистный qemu Я делал грязный хак так:
 <qemu:commandline>
  <qemu:arg value='-set'/>
  <qemu:arg value='device.drive-virtio-disk0.media=disk'/>
</qemu:commandline>
потому что без этого media=disk - биос не может опознать блочное устройство для загрузки системы оттуда(я так думаю). Но конечно же он не сработал, потому что нет такого устройства(якобы). Я пробовал менять имя через алиас
 <alias name='hostdev3'/>
либвирт просто затирал эту строчку)) так как же грузится с блочного устройства с шиной virtio и проброшенной видеокартой, под чистым OVMF, а не медленным гибридом? =\

Rockon
() автор топика
Ответ на: комментарий от Rockon

потому что без этого media=disk - биос не может опознать блочное устройство для загрузки системы оттуда(я так думаю

Действительно из-за этого, если без libvirt убрать из параметров qemu, перестаёт работать?

Просто из man qemu:

media=media
This option defines the type of the media: disk or cdrom.

Видимо, по умолчанию и так disk, а не cdrom, поэтому libvirt не пишет явно, в конфиге же указано <disk type='block' device='disk'>

не может опознать блочное устройство для загрузки системы оттуда

А что грузится, efi shell?
Вручную загрузчик запустить нельзя? Там fs0:, потом команды dir, cd ... и запустить этот PE-файл
Файл с переменными efi тоже нужен тот же самый, что в qemu, загрузочная запись не пишется в MBR, если там будет чистая «флешка», грузиться не будет.

Ещё для загрузки есть параметры порядка загрузки, на отдельной вкладке virt-manager, надо отметить этот диск и переместить наверх.
В конфиге для этого можно написать в секции <os>

<os>
  ...
  <boot dev='hd'/>
  ...
</os>

А <boot order='1'/> из секции диска тогда убрать

The per-device boot elements cannot be used together with general boot elements in BIOS bootloader section.

и здесь то же https://serverfault.com/questions/313701/changing-boot-device-for-a-qemu-kvm-...

TheAnonymous ★★★★★
()
Ответ на: комментарий от TheAnonymous

map fs* показывает только сдром.

я думаю, что как грязный хак - сделаю минираздел на сата с загрузчиком, который будет грузить диск..))

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Все вещи, что вы описали - уже пробовал, Да и.. собственно хак не помог, даже со старым добрым rEFInd При этом диски в режиме vfio становятся видны, когда прогружается виртуальная винда. Что за бред

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Собственно боевые результаты
Виндовый C - это raid1 из двух sata2 дисков, подключенный как сата в либвирт

-----------------------------------------------------------------------
CrystalDiskMark 5.2.1 x64 (UWP) (C) 2007-2017 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :  1218.928 MB/s
  Sequential Write (Q= 32,T= 1) :  1336.134 MB/s
  Random Read 4KiB (Q= 32,T= 1) :    44.054 MB/s [ 10755.4 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :    46.128 MB/s [ 11261.7 IOPS]
         Sequential Read (T= 1) :  1352.559 MB/s
        Sequential Write (T= 1) :  1412.400 MB/s
   Random Read 4KiB (Q= 1,T= 1) :    30.161 MB/s [  7363.5 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :    30.237 MB/s [  7382.1 IOPS]

  Test : 100 MiB [C: 9.6% (22.3/232.2 GiB)] (x5)  [Interval=5 sec]
  Date : 2017/04/20 10:17:06
    OS : Windows 10 Professional [10.0 Build 14393] (x64)
  
Диск - терабайтник, подключенный как virtio диск.
  -----------------------------------------------------------------------
CrystalDiskMark 5.2.1 x64 (UWP) (C) 2007-2017 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :    19.687 MB/s
  Sequential Write (Q= 32,T= 1) :    18.271 MB/s
  Random Read 4KiB (Q= 32,T= 1) :     0.366 MB/s [    89.4 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :     0.489 MB/s [   119.4 IOPS]
         Sequential Read (T= 1) :    83.256 MB/s
        Sequential Write (T= 1) :    70.853 MB/s
   Random Read 4KiB (Q= 1,T= 1) :     0.361 MB/s [    88.1 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :     0.470 MB/s [   114.7 IOPS]

  Test : 100 MiB [F: 84.2% (784.6/931.5 GiB)] (x5)  [Interval=5 sec]
  Date : 2017/04/20 10:11:07
    OS : Windows 10 Professional [10.0 Build 14393] (x64)
Теперь вопрос - как такое может быть? Откуда такие дикие иопсы на второй сате, близкие к реальным (если тестить с хоста)

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Подключил его в либвирте так же, как и диск С который на программном рейде.

-----------------------------------------------------------------------
CrystalDiskMark 5.2.1 x64 (UWP) (C) 2007-2017 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :  1431.094 MB/s
  Sequential Write (Q= 32,T= 1) :  1195.487 MB/s
  Random Read 4KiB (Q= 32,T= 1) :    49.743 MB/s [ 12144.3 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :    43.625 MB/s [ 10650.6 IOPS]
         Sequential Read (T= 1) :  1197.543 MB/s
        Sequential Write (T= 1) :  1262.942 MB/s
   Random Read 4KiB (Q= 1,T= 1) :    26.257 MB/s [  6410.4 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :    29.612 MB/s [  7229.5 IOPS]

  Test : 100 MiB [F: 84.2% (784.6/931.5 GiB)] (x5)  [Interval=5 sec]
  Date : 2017/04/20 10:34:36
    OS : Windows 10 Professional [10.0 Build 14393] (x64)
  
может кто прояснить, что происходит?

Rockon
() автор топика
Ответ на: комментарий от TheAnonymous

Вообщем то подведу итог: libvirt лично для меня г*вно, во всяком случае из коробки. И походу надо читать кучу доков к нему. а теперь обосную:

  <cpu mode='host-model' check='partial'>
а либвирт запускает
-cpu Opteron_G3
И ничем это не исправить, во всяком случае мне. Он спайс сервером потребляет проц в простое + эмуляция проца жрет драгоценные такты.

Как его заставить запускать в режиме

taskset -c 2-5 qemu-system-x86_64
а спайс сервер закинуть на соседние ядра и тем самым поднять работу проца - черт его знает Честно говоря, если б не общая память (которая мне так нужна) - не пользовался бы libvirt вообще.

Вообщем то вопрос по прежнему открыт, да и непонятно, что делать с тем, что прописывается в запуск qemu Пойду читать доки, но буду рад любой дельной помощи

Rockon
() автор топика
Ответ на: комментарий от Rockon

Проблему с cpu решил довольно быстро. Собственно, что бы выставлялось правильно

<domain type='kvm'>
....
 <cpu mode='host-passthrough' check='none'/>

Rockon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.