[Eisfair] E1[x64] in QEMU auf QNAP NAS Virtualisierung
D. Oezbilen
oezbilen at gmx.net
Mi Apr 1 18:24:44 CEST 2020
Hallo Armin,
> IDE ist selbsterklärend
Jepp und laaaaaaaaaaaangsam. Aber, bietet auch die gleichzeitig
ueberhaupt auf diesem Nenner installieren zu koennen. Selbiges gilt fuer
RTL/e1000 NIC.
> SATA müsste ich noch probieren was sie da emulieren (Debian meldet AHCI,
Brauchst Du nicht, weder IDE/noch SATA wird bei qemu/kvm favorisiert.
> 'SCSI' emuliert einen 'sym53c8xx' Controller.
Genau, passt auch. Diesen solltest Du einstellen, also SCSI.
> Naja, und um den 'virtio' rätseln wir die ganze Zeit rum.
Die beste Loesung; wobei hier auch ein SCSI Subsystem darunterliegt.
Hier sind die Veraenderungen in der Entwicklung am groessten, weil das
SCSI Protokoll ueberhaupt und grundlegend mehrfache I/O bietet.
SATA hat die Queues uebernommen, was SCSI v. Anfang an hatte.
Was auch wichtig ist, bei SCSI/Virtio, dass die Geraete (SCSI konnte das
eben immer, *darum* SCSI=Server Platten) angesprochen wurden, dann
autark den Request des Controllers abarbeiteten und wieder (am Bus) sich
rueckmeldeten, dass sie abliefen wollen.
Somit war/ist/wird :-) SCSI immer zuegig antworten, waehrend s.o. andere
dieses mehrfache I/O nicht haben, nicht mal schreiben koennen. SATA ein
Stck. mehr, SAS ist trotzdem besser.
[SAS kann das niedrigere SATA emulieren 1/2 so schnell dann, aber SATA
kann nicht SAS emulieren, weil SATA ein Untergruppe v. SAS ist.]
Und deswegen wird auch bei virtio noch einiges entwickelt und der
Schwenk erfolgt v. /dev/vdX auf nur noch /dev/sdx-Devs (virtio_scsi)
> Ich werde also vermutlich was anderes nehmen müssen. Hast du eine Ahnung
> was die beste Performance oder anders herum den kleinsten
> Virtualisierungs/Emulationsverlust bietet?
SCSI/ (virtio) mit virtio-NIC
Noch dies hier. :-)
Das sollte in die XML der VM auf dem Host.
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
Normalerweise hat man nur:
<domain type='kvm'>
Denn -was auch viele durcheinanderbringen ist- dass nicht kvm emuliert,
*sondern* qemu (immer). Der hingegen kann soviel mehr, dass man diese
Eigenschaften mit der o.g. Definition *zusaetzlich* fuer die Config
einschaltet.
KVM ist *nur* der Beschleuniger, wenn Du mal die Chance hast, setze mal
eine vm mit qemu auf, aber ohne -kvm. Dann selbige vm mit qemu *mit*
-kvm. You will see/feel the difference.
Das setzt voraus, dass Du die Einheit auf der CLI definierst.
Versuch mal das unter QNap, keine Ahnung, ob man das direkt eingeben kann.
###################################################
qemu-system-x86_64 \
-cdrom /pfad_zum_ISO_Image/knoppix77.iso \
-machine q35 \
-device intel-iommu \
-nic user,hostfwd=tcp::10022-:22 \
-soundhw hda \
-smp cpus=4 \
-k de \
-m 4096 \
-device e1000,netdev=network0,mac=52:55:00:d1:56:88 \
-netdev tap,id=network0,ifname=tap0,script=no,downscript=no \
-boot d \
-vnc :1 \
-vga virtio \
-spice port=5902,disable-ticketing
###################################################
-enable-fips \ # koennte evtl. nicht klappen, kannst Du weglassen.
Diese beiden stellen das Netzwerk dar, muesstest Du manuell definieren,
oder weglassen, dann ist halt keine NIC, aber es geht ja auch darum zu
sehen, was -kvm ausmacht. :-)
-device e1000,netdev=network0,mac=52:55:00:d1:56:88 \
-netdev tap,id=network0,ifname=tap0,script=no,downscript=no \
Aber dies ist entscheidend. Mitgeben oder nicht.
-accel kvm \
Rueck zu XML-Datei, Du definierst bitte in der XML zur vm noch *vor* <os>
dies hier
<iothreads>7</iothreads>
Hier sind sieben zusaetzlich io-threads (fuer sieben) virtuelle Platten
in raw defniert.
und zwischen disk-Def. sollte iothread='x' aufgefuehrt sein.
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writethrough' io='threads'
iothread='4'/>
...
</disk>
Damit triggerst Du multiplen I/Os auf dem SCSI/Virtio-Bus, weil der das
kann. Alle anderen koennen den parallelen I/O-Kram *nicht* (und qemu
uebergeht, startet gar nicht, weil es nicht untereinandere passt)
Verwendest Du jedoch LVM fuer die VM, brauchst Du das nicht, weil dann
LVM den Zugriff, die I/O auf die HW/Disksystem regelt. Die o.g. Option
gilt fuer VM-Platten, die in Dateien ausgefuehrt sind, raw/qcow2, also
im BS/Host Dateizugriffe.
Es kann sein, dass die akt. qemu diese Option automatisch einfuegen, bei
QNAP(?).
Ich habe das mal versucht zusammenzufassen, warum unter Linux/qemu das
SCSI Model favorisiert, weiter entwickelt.
Manchmal jedoch, insbesondere, wenn Du in die migrierte VM noch kein
virtio gebunden hast, musst Du halt mit IDE losgehen, eine kleine virt.
Platte mit Virtio/SCSI zusaetzlich definieren, dann wird automatisch der
Controller v. der VM angezogen, die Treiber installiert/bei win32 wird
nach Treibern gefragt und man hat die Moeglichkeiten die beschleunigten
Treiber einzubinden.
Fuer die NIC gilt das auch, RTL/e1000 geht immer, besser e1000, dazu
eine zweite NIC defnieren, die virtio kann.
OK?
Viel Erfolg, kurz nimm SCSI/Symbios Controller (oder virtio) -wenn es
geht auf LVM auf dem Host, am besten gestriped- und virtio-NIC (oder e1000).
Gruss
Derya
Mehr Informationen über die Mailingliste Eisfair