Grundsatzfragen zu Virtio Block-Devices

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

Grundsatzfragen zu Virtio Block-Devices

Beitrag von matman » 04.07.2011 19:06:54

Leider hat KVM eine erhebliche Einschränkung, wenn es um den Zugang zu Partitionen geht. Entweder man erlaubt der VM den Zugriff auf die gesamte Festplatte, was man aber aus Sicherheitsgründen nicht unbedingt will. Oder man muss auf paravirtualisierte Block-Devices mittels Virtio zugreifen, dann kann man auch einzelne Partitionen an die VM durchreichen. Zumindest ist diese Erkenntnis in etwa das, was meine Recherchen bei Google ergeben haben. Was auf der Suche nach HowTo's allerdings offen blieb:

1. Genügt es das Paket qemu-kvm installiert zu haben, um Virtio nutzen zu können, oder braucht man dazu auf dem Host noch z.B. libvirt und die libvirt Kernel-Module?

2. Wie muss man vorgehen, wenn man Nesting nutzt und eine VM in einem Linux-Gast betreibt, welcher auf einem Linux-Host läuft? Hierbei soll eine Partition vom Host zum Gast im Gast durchgereicht werden (mittels Virtio Block-Device). Kennt hier jemand ein gutes HowTo zu dieser Thematik?
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von Colttt » 04.07.2011 22:46:14

also man kann auch ganz normal partitionen durchreichen soweit ich weiss einfach mal sdb1 angeben..

zu 1. virtio wird i.d.R direkt vom kernel unterstützt du musst also nicht direkt extra dafür was installieren..

zu 2. warum macht man denn solch ein schmarn?
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von matman » 04.07.2011 23:28:49

Colttt hat geschrieben:also man kann auch ganz normal partitionen durchreichen soweit ich weiss einfach mal sdb1 angeben..
Wäre ja toll, wenn das ginge. Aber das Problem dabei ist ja, dass die VM dann sdb1 als virtuelle Festplatte betrachtet, die ich dann ja erst einmal partitionieren muss, um diese nutzen zu können. Und versuche dann mal bitte ohne KVM von sdb1 zu booten. Ich denke mal, kein OS ist in der Lage, die Partition innerhalb der Partition zu finden. Oder ob man Grub2 das verklickern könnte?
Colttt hat geschrieben:zu 1. virtio wird i.d.R direkt vom kernel unterstützt du musst also nicht direkt extra dafür was installieren..
Ja gut, aber was ist mit dem Host-Kernel? In dem habe ich jedenfalls Paravirtualisierung deaktiviert (Kernel ist selbst gebacken).

Ich habe übrigens vorhin einmal eine Test-Installation gemacht, aber irgendwie klappte selbst das noch nicht. KVM konnte ich zwar starten (mit Optionen wie -drive file=/dev/sda2,if=virtio) aber der OS-Installer hat trotzdem nur eine virtuelle Festplatte vorgefunden und diese partitioniert, was ich ja unter gar keinen Umständen will. Es soll einfach nur die Partition formatiert werden und dann das OS drauf. Also sind entweder meine Informationen falsch, oder ich muss auf dem Host doch noch etwas einrichten, damit das Durchreichen der Partition funktioniert.
Colttt hat geschrieben:zu 2. warum macht man denn solch ein schmarn?
Um mit einem weiteren Gast auf ein Device zugreifen zu können, das ausschließlich in einem bestimmten Gast zur Verfügung steht.
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von Colttt » 05.07.2011 10:50:54

Ja gut, aber was ist mit dem Host-Kernel? In dem habe ich jedenfalls Paravirtualisierung deaktiviert (Kernel ist selbst gebacken).
ok da musst du dann nach Virtio gucken in deiner config..

Code: Alles auswählen

grep -i virtio /boot/config-2.6.32-5-686 
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=m
CONFIG_VIRTIO_NET=m
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_BALLOON=m
Ich habe übrigens vorhin einmal eine Test-Installation gemacht, aber irgendwie klappte selbst das noch nicht. KVM konnte ich zwar starten (mit Optionen wie -drive file=/dev/sda2,if=virtio) aber der OS-Installer hat trotzdem nur eine virtuelle Festplatte vorgefunden und diese partitioniert, was ich ja unter gar keinen Umständen will. Es soll einfach nur die Partition formatiert werden und dann das OS drauf. Also sind entweder meine Informationen falsch, oder ich muss auf dem Host doch noch etwas einrichten, damit das Durchreichen der Partition funktioniert.
hä??? warum reichst du ihn denn eine Partition durch wenn er sie dann nicht formatieren soll?? das versteh ich kein bisschen..
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von matman » 05.07.2011 12:36:11

Im Kernel habe ich jetzt mal virtio noch aktiviert. Das ändert allerdings, wie es aussieht, bis jetzt noch nichts.
Colttt hat geschrieben:warum reichst du ihn denn eine Partition durch wenn er sie dann nicht formatieren soll??
Klar soll die dann formatiert werden. Hatte ich doch auch so geschrieben?

Ich weiß auch echt nicht, wie ich das noch deutlicher erklären soll. Das Problem ist halt, das KVM die Partition als Festplatte ansieht, ich brauche es aber so, dass KVM die Partition als Partition ansieht und benutzt. Ist das so vielleicht verständlicher?

[EDIT am 5.7.2011 14:27]
So, ich habe es jetzt versuchsweise mal geschafft, die gesamte Festplatte in einem Linux-Gast als Virtio Block-Device einzuhängen. Das Gerät befindet sich dann unter /dev/vda im Gast. Aber die Kacke dabei ist, dass ich die Partitionen der Festplatte nicht sehen und folglich auch nicht benutzen kann. Gibt es denn so gar keinen Weg, von KVM aus auf eine bestehende Partition zuzugreifen?
[/EDIT]
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von Colttt » 06.07.2011 10:01:56

ich glaube das was du möchtest geht nicht..
du könntest höchstens mal von einer live-cd im kvm booten und versuchen dann auch die platte zugreifen..
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von ThorstenS » 06.07.2011 11:37:15

Unter XEN habe ich damals auf der dom0 für jede virtuelle Maschine drei logische Partitionen erstellt (boot /root und /home). Das kannst du auch mit kvm tun. Der Gast sieht dann vda vdb und vdc.
Wenn du diese Maschine booten willst, musst du mit uuids oder labeln arbeiten. Ich kann mir durchaus vorstellen, dass du dann das System entweder virtualisiert bootest, oder nativ. Eine sehr interessante Sache!

Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von matman » 19.07.2011 23:13:16

ThorstenS hat geschrieben:Der Gast sieht dann vda vdb und vdc.
Ja und das ist schon das erste Problem. Partition 1 der realen Festplatte ist dann in KVM nur eine virtuelle Festplatte. Ich werde nun lieber eine zweite Festplatte stattdessen benutzen. Das verbessert die Performance dann natürlich um einiges. Und da die SSD's langsam erschwinglich werden, könnte man sogar darüber nachdenken, mehrere kleinere Platten einzubauen. Wobei eine große SSD auch für virtuelle Festplatten ziemlich schnell sein müssten. Also an Möglichkeiten, sich die verrücktesten VM-Systeme zu basteln, mangelt es jedenfalls nicht.
ThorstenS hat geschrieben:Wenn du diese Maschine booten willst, musst du mit uuids oder labeln arbeiten.
Und was bringt das für Vorteile?
ThorstenS hat geschrieben:Ich kann mir durchaus vorstellen, dass du dann das System entweder virtualisiert bootest, oder nativ.
Das war mein Ziel.
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von rendegast » 20.07.2011 06:51:48

matman hat geschrieben: Das Problem ist halt, das KVM die Partition als Festplatte ansieht, ich brauche es aber so, dass KVM die Partition als Partition ansieht und benutzt.
und
Partition 1 der realen Festplatte ist dann in KVM nur eine virtuelle Festplatte.
Um eine Partition als Partition nutzen zu können,
braucht es doch die Partitionstabelle, die aber nicht Teil der Partition ist.
Also wenn dann das komplette Blockdevice,
das dann aber nur diesem Zweck dient.

Die häufigste Intention einer solchen Überlegung scheint mir das virtualisierte Betreiben eines Windows,
das aber auch nativ nutzbar sein soll <-> zBsp. Lizenzeinsparung, des OS und einiger Anwendungsprogramme.
Spezifisches Problem dabei ist der durch den Wechsel der Hardware-Umgebung ausgelöste Aktivierungszwang.
Unschön ist aber auch der meist angeforderte Neustart nach der PnP-Initialisierung (xp! vista/win7 weniger? ).

Dagegen ein linux mit einer vollen initrd und mit dynamischen Netzwerk- und Grafik-Einstellungen,
auch Verwendung von UUID/LABEL (bei modernen Distri mittlerweile Standard),
sollte wohl funktionieren (außer es gibt auch Verdongelungen mit der Hardware).
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Grundsatzfragen zu Virtio Block-Devices

Beitrag von ThorstenS » 20.07.2011 07:15:23

matman hat geschrieben:
ThorstenS hat geschrieben:Wenn du diese Maschine booten willst, musst du mit uuids oder labeln arbeiten.
Und was bringt das für Vorteile?
virtualisiert erscheinen die Platten als vdx, nativ als sdx. Wenn die block devices hardcoded in der grub Konfiguration oder der fstab stehen, wirds schwierig mit deinen Anforderungen.
Nutzt du nun LABEL oder uuid¹, kann sich der Name ändern wie er will - das System weiß trotzdem welche Partition anzusprechen ist.

[1] Ich nutze lieber LABEL als uuid, das ist besser lesbar. Ist aber wohl Geschmackssache

Antworten