[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