Virtualisierung: I/O Last senken mit KVM/libvirt

Geschrieben von everflux am Dezember 11th, 2011

Das Thema Virtualisierung geht einher mit neuen Anforderungen an die Ressourcen des Host Systems. Da zwar die CPU Leistung kontinuierlich zunimmt (Anzahl Kerne, Leistung/Stromverbrauch) und auch RAM Speicher immer günstiger wird, jedoch die Leistung der Festplatten nicht zunimmt, ergeben sich neue Probleme: Selbst mit schnell drehenden Platten und RAID Verbund wirkt sich die erhöhte Last durch mehrere virtualisierte Maschinen auf einem “Blech” deutlich aus, da die Leistung – gemessen an der Anzahl der I/O Operationen pro Zeiteinheit – nicht mit gewachsen ist. Durch mehrere virtualisierte Systeme verändert sich auch das Zugriffsprofil: Selbst lineares Lesen jedes einzelnen Systems für sich sieht für die Festplatten eher wie ein Zufallsmuster aus, da mehrere Systeme parallel arbeiten. Ein Weg zur Erhöhung der I/O Operationen pro Sekunde ist starkes Caching oder Einsatz von SSD Festplatten (die wieder eigene Probleme haben).

Für den Einsatz unter Linux hat sich KVM als Standard für Virtualisierung durchgesetzt, ergänzt um Abstraktionsschichten wie libvirt. Vor allem bei den derzeit angebotenen dedicated Servern lohnt sich die Nutzung als Virtualisierungshost, da dies die Management-Möglichkeiten deutlich verbessert werden und die Flexibilität erhöht wird. Bei dieser Konstellation wird in der Regel die lokale Platte/Platten als Storage verwendet, mit den oben angeführten Einschränkungen. Was noch dazu kommt: Virtualisiert man die Festplatten “direkt”, stellt diese also als IDE oder SCSI Device zur Verfügung, kommt deutlicher Overhead dazu. Der lässt sich nicht vermeiden, wenn man Windows oder ein Betriebssystem virtualisiert, das keine Paravirtualisierung unterstützt.

Paravirtualisierung liegt dann vor, wenn das virtualisierte System etwas davon weiß, in welcher Umgebung es läuft, und entsprechend kooperativ ist. Mit Linux ist das kein Problem, unter anderem durch die Vorarbeiten die fuer die Xen Virtualisierung erfolgt ist. Daher sollte man nicht als “ide” sondern “virtio” als Schnittstelle für Gäste verwenden, die das unterstützen, um geringere Last und höhere Performance zu erzielen.

Weiterlesen »

Ubuntu HDMI (kein) Sound

Geschrieben von everflux am Oktober 14th, 2011

Seit meinem neuen Computer (und Ubuntu Oneric) ist mein zweiter Monitor per HDMI Kabel angeschlossen. Das Problem: Per HDMI ist neben Bild- auch ein Tonausgabegerät und wird als Default Device verwendet. Damit ist dann teilweise nichts zu hören – offenbar ist das jedoch Anwendungsabhängig.

Als Lösung habe ich mir pragmatisch ein virtuelles pulseaudio device eingerichtet, dass auf alle Geräte den Sound dann ausgibt. Dazu installiert man sich das Paket “paprefs”

sudo apt-get install paprefs

und starte diese (“paprefs”). Auf dem Reiter “simultaneous output” (im englischen) kann dann ein virtuelles Gerät aktiviert werden, dass die Ausgabe auf alle Geräte weiterleitet.

Ubuntu Oneiric: Netbeans Master-Passwort / Keyring Integration

Geschrieben von everflux am Oktober 14th, 2011

Schon in frühen Beta Versionen von Ubuntu 11.04 / Oneiric hat Netbeans mich ständig nach einem “Master Password” gefragt, mit dem gespeicherte Passwörter von Netbeans gegen unbefugten Zugriff verschlüsselt werden.

Das ist nervig, denn bisher ging es auch ohne – dabei nutzt Netbeans die von modernen Betriebssystemen bereitgestellte native Infrastruktur um Passwörter zu speichern. (z.B. Keychain auf dem Mac, Gnome-Keyring o.ä.) Normalerweise funktioniert das auch – aber seit Gnome 3 hat sich da offenbar etwas geändert.

Debuggen kann man die Netbeans Keyring Integration indem man folgende Option in der etc/netbeans.conf zu den netbeans_default_options ergaenzt:

-J-Dorg.netbeans.modules.keyring.level=0

Anschließend sieht man in ~/.netbeans/7.0/var/log/messages

FINE [org.netbeans.modules.keyring.kde.KWalletProvider]: application exit with code 2 for commandString: [qdbus, org.kde.kwalletd, /modules/kwalletd, org.kde.KWallet.isEnabled]; errVal: Service 'org.kde.kwalletd' does not exist.
FINE [org.netbeans.modules.keyring.gnome.GnomeProvider]
java.lang.UnsatisfiedLinkError: Unable to load library 'gnome-keyring': libgnome-keyring.so: cannot open shared object file: No such file or directory
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:379)
at org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.<clinit>(GnomeKeyringLibrary.java:62)
[catch] at org.netbeans.modules.keyring.gnome.GnomeProvider.enabled(GnomeProvider.java:88)
at org.netbeans.api.keyring.Keyring.provider(Keyring.java:72)
at org.netbeans.api.keyring.Keyring.save(Keyring.java:109)
at org.netbeans.modules.j2ee.deployment.impl.ServerRegistry$5.run(ServerRegistry.java:731)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1968)

Nachdem ich sichergestellt habe, dass die Library installiert ist:

sudo apt-get install libgnome-keyring0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libgnome-keyring0 is already the newest version.

bleibt die Frage: Wieso findet Netbeans die gesuchte Library nicht? Die Lösung: Die Gnome Keyring Library ist nur noch mit einem anderen Dateinamen verfügbar, mit angehängter “0″. Das gab es zwar früher schon immer, dass die Libraries ohne Versionsnummer (oder was das ist) lediglich ein Symlink auf die “echte” Library waren, aber immerhin gab es die. (Da gibt es bestimmt einen guten Grund und viel Logik für, dass das abgeschafft wurde – mir erschließt sich das jedoch nicht.)
Der simple Work-Around ist daher:

sudo ln -s /usr/lib/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so

und danach funktioniert Netbeans wieder tadellos. Also gab es offenbar keine inkompatiblen API Änderungen, sondern “lediglich” eine Änderung des Library-Namens. Ob das ein Ubuntu/Debian Paketierungsproblem ist, oder ab Gnome 3 einfach die neue Marschrichtung, kann ich nicht sagen.

Update: Ich hab dazu ein Bug im Netbeans Issuetracker aufgemacht. Wer voten möchte – gerne: http://netbeans.org/bugzilla/show_bug.cgi?id=203735

Oneiric update auf VM Gast bricht ab

Geschrieben von everflux am Oktober 14th, 2011

Wer einen KVM/VM Gastsystem dass mit “vmbuilder” erstellt wurde auf Ubuntu Oneiric updaten möchte wird möglicherweise diese unschöne Überraschung erleben:


A fatal error occurred

Please report this as a bug and include the files
/var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in
your report. The upgrade has aborted.

Ein Blick in die genannten Logdateien hilft weiter:

2011-10-14 08:39:47,147 DEBUG creating statefile: '/var/log/dist-upgrade/apt-clone_system_state.tar.gz'
2011-10-14 08:39:56,877 DEBUG lspci failed: [Errno 2] No such file or directory
2011-10-14 08:39:56,920 DEBUG lsb-release: 'natty'
2011-10-14 08:40:00,162 ERROR not handled exception:
Traceback (most recent call last):

Da schlägt der Aufruf von “lspci” fehl. Das Paket ist in dem per vmbuilder unter lucid erstellten System nicht installiert, und wurde auch bei den nachfolgenden Updates nicht als Dependency deklariert und somit nicht installiert.
Installiert man das Paket kurzerhand selbst

sudo apt-get install pciutils

funktioniert danach das Update auf den ersten Blick auch fehlerfrei.

OpenJDK – Java 7 – mit Ubuntu kompilieren

Geschrieben von everflux am Juli 24th, 2011

Ich habe ein merkwuerdiges SSL Problem mit Java 7 (Build 147, dem Release Candidate) im Zusammenhang mit Online-Banking und Jameica/Hibiskus:

Caused by: java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
 at sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:873)
 at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:804)
 at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1319)
 ... 19 more

Schaut man sich dazu den Source Code an, sieht man schnell, dass leider die verursachende Exception verschluckt wird. (Das kommt davon, wenn Committer und Reviewer identisch sind…)
Meine Idee war also, OpenJDK selber zu bauen und da ggf. besseres Logging einzubauen. Die im Internet veröffentlichten Anleitungen sind alle ein paar Jahre alt und nicht mehr ganz korrekt, daher hier meine Ergebnisse zum Nachmachen.
Ich habe Ubuntu als System verwendet, dort ist eine Übersetzung von OpenJDK / Java 7 sehr einfach.
OpenJDK wird mittels Mercurial verwaltet, zur Hierarchiebildung wird die Mercurial Forest extension benötigt (und Mercurial). Ist das “mercurial” Paket bereits installiert so kann man die Forest extension einfach herunterladen:

hg clone http://bitbucket.org/pmezard/hgforest-crew hgforest

Diese muss nun in die .hgrc eingetragen werden: (das “….” durch den Pfad zum Download ersetzen)

[extensions]
forest=......hgforest/forest.py
fetch=

Danach installiert man die Build Abhängigkeiten:

sudo apt-get install build-essential gawk libasound2-dev libfreetype6-dev libcups2-dev libxt-dev libx11-dev libxtst-dev libxrender-dev

Und checkt per mercurial-forest die Sourcen fuer OpenJDK aus:

hg fclone http://hg.openjdk.java.net/jdk7/jdk7 jdk7

Da beim späteren Build noch Java Abhängigkeiten heruntergeladen werden müssen, hab ich noch folgendens in die Ant Konfiguration eingesetzt: ~/.antrc

ANT_OPTS=”$ANT_OPTS -Dallow.downloads=true”

Für den build benötigt man ein existierendes Java, und setzt folgenden Umgebungsvariablen:

export ALT_BOOTDIR=/usr/lib/jvm/java-6-sun
unset JAVA_HOME
export LANG="C"
make sanity

Da sollten keine Fehler zu sehen sein und gibt dann den “make” Befehl (dauert bei mir rund 40 Minuten):

make

Und kann es dann aus dem aktuellen Verzeichnis testen ob “java” vorhanden ist:

build/linux-amd64/bin/java -version

Bei mir sieht das dann folgendermassen aus:

openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-tkruse-b00)
OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)

Fertig.
(Ja man benötigt wirklich keine “binary plugs” o.a”. mehr!)

Ubuntu Natty: Busybox v1.17.1

Geschrieben von everflux am Mai 5th, 2011

Eine frische Ubuntu 11.04 Natty Installation schlug bei mir stets fehl: es kam statt des gewohnten Ubuntu Systems lediglich ein “Busybox v1.17.1″ Prompt.

Ich hatte das Ubuntu System dabei über den “Alternate Installer” installiert, LVM crypt fuer full disc encryption und btrfs als Dateisystem. Nichts besonderes, und es hatte bisher mit Karmic und Jaunty immer prima geklappt. So ganz genau weiss ich auch nicht, woran es liegt, jedenfalls wird die Grub Konfiguration nicht korrekt erzeugt, und dadurch kann das System nicht korrekt hochfahren.

Man kann die Grub Flags manuell editieren und in meinem Fall fehlt dabei:

rootflags=subvol=@

Hat man dies editiert, kann man mit Strg-X booten. Ein “update-grub” alleine hat entgegen anderer Aussagen in den zugehoerigen Bugs im Canonical Bugtracker nicht geholfen.

Ich habe dann das Paket grub2 aktualisiert und nochmals “update-grub” gemacht. Das hat jedoch auch nicht geholfen.

Schliesslich habe ich die /etc/default/grub Konfigurationsdatei editiert und da bei GRUB_CMDLINE_LINUX_DEFAULT noch “rootflags=subvol=@” eingetragen und “update-grub” aufgerufen.

Danach funktionierte alles wie es sollte. puh.

Firefox 4 als Ubuntu Paket installieren

Geschrieben von everflux am März 23rd, 2011

Firefox 4 ist seit gestern offiziell veröffentlicht worden – auch fuer Linux bzw. Ubuntu. Firefox 4 ist wesentlich schneller als der alte Firefox und verfügt über HTML5 Kompatibilität sowie ein aufgeräumteres Userinterface.

Wer ein Debian basiertes Linux System, wie z.B. Ubuntu, hat, sollte nach Möglichkeit Software über Pakete installieren. Zum Glück gibts es für Ubuntu ein eigenes PPA in dem stabile Versionen von Mozilla nach Veröffentlichung  bereitgestellt werden. Das spart einiges an Arbeit und bietet gegenüber dem Mozilla-Daily PPA den Vorteil, wirklich eine stabile Version zu nutzen.

Wer also unter Ubuntu Firefox 4 schon jetzt nutzen möchte, bevor dieser in den normalen Paketquellen bereitgestellt wird (falls das überhaupt geschieht und nicht erst im nächsten Ubuntu Release), der kann folgendes in eine Kommandozeile eintippen:

sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update
sudo apt-get upgrade

Viel Spaß mit Firefox 4 unter Ubuntu!

Weitere Neuerungen in Firefox 4:

  • Firefox Sync bietet die Synchronisierung von Bookmarks und Einstellungen über mehrere Rechner
  • Von der neuen – stark beschleunigten – JavaScript Engine profitiert das gesamte Userinterface, nicht nur Webseiten
  • Firefox 4 ist mit vielen Erweiterungen nicht kompatibel (ok, das ist nichts neues nach einem Firefox Update)
  • “do not track” Einstellung für verbesserte Privatssphäre
  • Mein derzeitiger Favorit: App Tabs, mittels Rechtsklick auf ein Tab kann dieser als “permanent” gespeichert werden – praktsch für Twitter, Facebook und co

Wer ein wenig schauen möchte, wo Firefox eingesetzt wird: http://glow.mozilla.org/

WLAN deauthenticating / denied association (code=17)

Geschrieben von everflux am März 5th, 2011

Lange Suche, kleine Ursache: Wenn man sich mit einem Linux Rechner nicht mit einem Linksys / Cisco WLAN Router verbinden kann, und dabei Meldungen wie z.B.


NetworkManager[1036]: (wlan0): supplicant connection state: associating -> disconnected
NetworkManager[1036]: (wlan0): supplicant connection state: disconnected -> scanning
wpa_supplicant[1234]: Trying to associate with 00:14:bf:29:c4:23 (SSID='sforce-wpa' freq=2447 MHz)
NetworkManager[1036]: (wlan0): supplicant connection state: scanning -> associating
kernel: [ 417.694909] wlan0: authenticate with 00:14:bf:29:c4:23 (try 1)
kernel: [ 417.696781] wlan0: authenticated
kernel: [ 417.697518] wlan0: associate with 00:14:bf:29:c4:23 (try 1)
kernel: [ 417.700259] wlan0: RX AssocResp from 00:14:bf:29:c4:23 (capab=0x431 status=17 aid=0)
kernel: [ 417.700267] wlan0: 00:14:bf:29:c4:23 denied association (code=17)
kernel: [ 417.700297] wlan0: deauthenticating from 00:14:bf:29:c4:23 by local choice (reason=3)

auftauchen, dann handelt es sich um folgende Phänomen: Der Router ist der Meinung, dass er voll ist, und bittet den Client, sich mit einem anderen WLAN Access Point zu verbinden.

Windows Rechner ignorieren das, und verbinden sich dennoch mit dem Access Point, während Linux – in diesem Fall ein mit Ubuntu Maverick ausgestatteter Thinkpad – der Bitte Folge leistet. Er bricht den Verbindungsaufbau mit dem Router bzw. WLAN Access Point ab.

Leider ist davon in der GUI von Ubuntu (Network Manager) nichts zu sehen, sondern es dauert einfach sehr lange, bis erneut der Dialog zur Eingabe des WLAN Passwort auftaucht. Ein Blick in “dmesg” oder die Protokolldateien offenbart dann das Problem.

In meinem Fall ist der Router ein Linksys WRT mit Tomato Firmware – hier habe ich dann einfach die Anzahl der erlaubten Clients erhöht.

Ubuntu: Fenster Größe anpassen

Geschrieben von everflux am Januar 29th, 2011

Bei Ubuntu wurde der Bereich zum “Anfassen” der Fensterrahmen auf sagenhafte einen Pixel verkleinert – möchte man ein Fenster nun breiter ziehen muss man schon gut zielen.

Komfortabler geht das derzeit lediglich, wenn man über eine Maus mit drei Tasten verfügt (oder die mittlere Taste simuliert): Hält man die “Alt” Taste fest, kann man mit der mittleren Maustaste quasi beliebig ins Fenster klicken, und die Größe anpassen. Das ist am Anfang etwas ungewohnt, geht jedoch sogar noch schneller als erst den Fensterrahmen anzusteuern – selbst wenn dieser etwas breiter ist (oder wieder wird).

Tipps zum Tastatur Layout

Geschrieben von everflux am Januar 15th, 2011

Schon seit einem guten Jahr nutze ich das US Tastaturlayout unter Ubuntu als Standardlayout. Gerade zum Entwickeln konnte ich wegen der besseren Position von Semikolon und geschweiften Klammern schnell einen Produktivitätsgewinn feststellen.

Doch dann kamen auch die Rückschläge: Euro Zeichen, Paragraphenzeichen (§) und Umlaute sind nicht mehr verfügbar. Für Umlaute behelfen sich einige mit Unicode Eingabe, oder Copy-Paste-Vorlagen. Ich habe mir bisher damit geholfen, dass ich die Rechtschreibkorrektur einfach “ue” in “ü” habe umwandeln lassen. Hilft jedoch nicht z.B. beim “§”-Zeichen.

Und da habe ich jetzt das Feature “Compose Key” gefunden. Damit kann man – fast wie bei LaTeX – Buchstaben zusammensetzen. Dazu aktiviert man erstmal die Einstellung ein “Compose Key” auf der Tastatur zu haben, ich habe dazu die rechte Alt-Taste verwendet. (System->Preferences->Keyboard, Layout auswählen, “Options”)

Anschließend kann man mittels <compose>-<u>, und <”> ein “ü” zusammensetzen. Das Paragraphenzeichen geht z.B. über <compose>-<s>, <o>


http://everflux.de/
Copyright © 2007, 2008 everflux. Alle Rechte vorbehalten. All rights reserved.