Login
Newsletter
Werbung

So, 15. Februar 2009, 00:00

Projekt »Virtueller hochverfügbarer Linux-Server«, Teil 10

Optimierungen und Einrichtung von Heartbeat mit CRM

Virtio

Unter dem Schlagwort »virtio« firmieren verschiedene Treiber, die spezielle virtuelle Geräte in einer VM ansteuern. Dass diese Methode schneller ist, als ein reales Gerät zu simulieren, dürfte einleuchten. Wir beschränken uns für heute auf virtuelle Netzwerk- und Blockgeräte.

Wir ersetzen die emulierte Netzwerkkarte rtl8139 durch virtio, indem wir - nach Installation des neuen Kernels - in die Datei /etc/modules die Treiber virtio_net und virtio_pci eintragen. In der Startdatei /etc/kvm/[vm] ersetzen wir die Option -net nic,macaddr=66:66:66:66:66:00,model=rtl8139 durch -net nic,macaddr=66:66:66:66:66:00,model=virtio. Beim nächsten Start der VM sollte die virtuelle Schnittstelle aktiv sein.

Ähnlich ist die Vorgehensweise beim Blockgerätetreiber. Hier müssen wir uns im Klaren sein, dass sich der Gerätename der virtuellen Festplatte von sda auf vda ändern wird (auch mehr als eine Festplatte ist möglich, die Bezeichnung ist dann vdb usw.). Wenn man in /etc/fstab mit Labels oder UUIDs gearbeitet hat, ist man aus dem Schneider, da sich dann nichts ändert. In der Startdatei /etc/kvm/[vm] ist auf jeden Fall eine Anpassung nötig. Die Option -hda /mnt/vm100/vm100.image wird durch -drive file=/mnt/vm100/vm100.image,if=virtio,boot=on ersetzt, und die Option -append "root=/dev/sda1 ro" ändert sich zu -append "root=/dev/vda1 ro".

Eine erste Geschwindigkeitsmessung der virtuellen Festplatte zeigt für virtio fast durchweg große Geschwindigkeitsvorteile. Lediglich beim sequenziellen Schreiben war der Durchsatz aus ungeklärten Gründen niedrig. Die Ergebnisse schwankten allerdings in jedem Testlauf erheblich, obwohl die VM die einzige auf dem Server war.

Die erste Messung wurde noch mit Linux 2.6.26.3 als Host-Kernel und KVM 82 durchgeführt. Die VM mit virtio hatte Kernel 2.6.28. Die letzte der drei Messsungen fand unter einem Host mit Linux 2.6.28.5 statt. Tests mit dd bestätigten die Messung im Wesentlichen.

Ohne virtio

/usr/sbin/bonnie++ -s 512m:256k -n 128k:0:1999:1 -f -q
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
krakatau 512M:256k 34652 21 9513 14 25233 31 102.3 17
 ------Sequential Create------ --------Random Create--------
 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
 files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
 128 815 24 20565 66 869 15 706 18 15759 68 265 5

Mit virtio

bonnie++ -s 512m:256k -n 128k:0:1999:1 -f -q
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
vm100 512M:256k 8541 10 16348 27 40613 62 168.4 32
 ------Sequential Create------ --------Random Create--------
 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
 files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
 128 1796 41 165854 89 3173 54 1458 46 10627 75 1753 29

Mit virtio und Kernel 2.6.28.5

bonnie++ -s 512m:256k -n 128k:0:1999:1 -f -q
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
vm100 512M:256k 18836 8 13773 10 35079 18 142.2 15
 ------Sequential Create------ --------Random Create--------
 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
 files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
 128 834 19 79013 85 1362 23 827 19 19092 72 593 12

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung