26.02.2014 Aufrufe

Linux-Magazin Datenbank 2011 (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

02/11<br />

Anzeige:<br />

NEU!<br />

STRATO Pro<br />

Server mit echten Hexa-Core CPUs<br />

strato-pro.de siehe Seite 17<br />

STR0111_Titelkopfstoerer_DediServer_120x17_CS3.indd 1 12/20/2010 17:33:31<br />

Systemcontainer für<br />

kritische Dienste<br />

LXC legt Ressourcen-schonende, isolierte<br />

Contai ner an. S. 82 (Workshop), S. 104<br />

Bretter 2.0<br />

Vier Server- und Toolpakete<br />

zum Betreiben eigener<br />

In ter net foren im Test. S. 62<br />

Karten legen<br />

Vektor oder Kachel: Drei<br />

Geodaten-Frame works für<br />

Web pro grammierer. S. 70<br />

<strong>Datenbank</strong>en <strong>2011</strong><br />

Neue Versionen mit raffinierten Features<br />

und der Trend zu schnellen NoSQL-Systemen<br />

■ Frischkost: MySQL, PostgreSQL, Ingres und<br />

Firebird im Vergleich mit Oracle 11g S. 28<br />

■ MySQL-Fork Maria DB: Neue Engines,<br />

bessere Funktionen S. 36<br />

■ PostgreSQL-Praxis:<br />

Version 9 soll’s richten S. 38<br />

■ Die NoSQL-Revolution:<br />

Generation Speed S. 42<br />

■ Couch DB: Skalieren,<br />

replizieren, optimieren S. 52<br />

■ Moderne Dateisysteme: Was aktuelle<br />

ZFS-Implementierungen taugen S. 86<br />

■ Mit Xtext komfortabel IPtables-Regeln erzeugen S. 112<br />

Grips und <strong>Magazin</strong>-Lektüre sind nötig, um die harten Nüsse des Winterrätsels zu knacken. S. 92<br />

www.linux-magazin.de<br />

Deutschland Österreich Schweiz Benelux Spanien Italien<br />

5,95 6,70 sfr 11,90 7,00 7,95 7,95<br />

4 192587 305954 02


„Ich habe jederzeit Zugriff auf alle<br />

meine Firmendaten und doppelte<br />

Datensicherheit mit der NAS-Box!“<br />

STRATO HiDrive<br />

Der geniale Online-Speicher!<br />

HiDrive ist Ihre persönliche Festplatte im Internet mit bis zu<br />

5.000 GB – optimal für alle, die viel Speicherplatz benötigen!<br />

Damit haben Sie weltweit Ihre gesamten Firmendaten parat –<br />

unterwegs per Handy oder Notebook, im Büro und Zuhause.<br />

Verwalten und bearbeiten Sie Dateien online und vergeben<br />

Sie Zugriffsrechte an Ihre Mitarbeiter und Partner. Höchste<br />

Sicherheit dank TÜV-geprüfter Rechenzentren garantiert.<br />

AKTION bis 31.01.11: HiDrive Pro 1.000 bestellen und die<br />

Synology-Box günstig dazu mieten. Lokaler Zwischenspeicher<br />

für effizientes Arbeiten mit automatischer Sicherheitskopie.<br />

Gemeinsamer Zugriff<br />

User-Verwaltung inkl.<br />

Admin-Accounts für<br />

bis zu 120 Konten<br />

Höchste Sicherheit<br />

Verschlüsselung<br />

Ihrer Firmendaten<br />

(SSH, SCP, SFTP)<br />

Große Datenmengen<br />

Einfacher Transfer und<br />

Austausch von Dateien<br />

(alle Formate)<br />

Jetzt bestellen unter:<br />

Die ideale Ergänzung!<br />

Schneller Zugang<br />

Wie bei einer lokalen<br />

Festplatte über (S)FTP,<br />

rsync, SMB/CIFS, u.v.m.<br />

Noch Fragen? Anruf genügt: 0 18 05 - 055 055<br />

(0,14 €/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42 €/Min.)<br />

HiDrive Pro 1.000<br />

mit 1.000 GB<br />

Online-Speicher!<br />

strato.de/hidrive<br />

nur<br />

39, 90 €<br />

mtl.<br />

*<br />

+<br />

NAS-Box von Synology<br />

mit 1 TB Speicher! *<br />

Daten-Backups<br />

Wiederherstellung von<br />

Dokumentenversionen<br />

mit BackupControl<br />

*Preise inkl. MwSt. Mindestvertragslaufzeit 24 Monate. Aktion: Bis 31.01.<strong>2011</strong> HiDrive Pro 1.000 bestellen und die Synology DiskStation (DS110j) für nur 4,49 €/mtl. dazu mieten. Versandkosten 6,90 €.


Kreislaufprobleme<br />

Login 02/<strong>2011</strong><br />

Editorial<br />

Ein bisschen nuttig ist das schon, wenn sich einer für Geld anbietet. So wie<br />

Novell. Im März 2010 wollte die US-Investmentgesellschaft Elliott Associates<br />

schon zugreifen, allein der Freier bot nicht genug. Zwischenzeitlich galt SAP<br />

als interessiert. Im Oktober noch meinten viele Suse-Mitarbeiter, Novell würde<br />

den <strong>Linux</strong>-Zweig separat veräußern, und hielten das für eine gute Idee. Nun<br />

übernimmt Attachmate das ganze Etablissement. Acht Monate hatte das US-<br />

Softwarehaus die Offerte geprüft und kam offenbar zum Schluss, dass die alte<br />

Dame Novell sauber ist.<br />

www.linux-magazin.de<br />

3<br />

Die Open-Source-Szene beäugte die Suche nach Freiern argwöhnisch. Jetzt, wo<br />

tatsächlich einer zugreift, gilt die Sorge der Finanzierung von Open Suse und<br />

Teilen des Kernels. Das Attachmate-Management versucht die Bedenken zu zerstreuen<br />

– ein durchschaubares Manöver: Niemand kann wissen, ob ein oder zwei<br />

Jahre nach dem Vereinigungsakt das Rosenbett nicht zum Fakirbrett mutiert.<br />

Jan Kleinert, Chefredakteur<br />

Für Analysen eignet sich die Vergangenheit besser, zumal es genug aufzuarbeiten gibt. Wie verzweifelt bitte<br />

muss das oberste Management eines Unternehmens eigentlich sein, um es mit prall gefüllter Kriegskasse auf<br />

den Bordstein zu schicken? Ist das nicht das Eingeständnis der eigenen Unfähigkeit?<br />

Wer solche Fragen nicht rhetorisch stellt, sondern ernsthaft, kommt einem perfiden Mechanismus auf die Spur:<br />

Die Vorstände, die sich, um im Bild zu bleiben, als Zuhälter betätigen, sind Täter und Opfer zugleich. Fast immer<br />

in solchen Fällen bieten sie nicht aus freien Stücken ihr Unternehmen feil, sondern auf Druck der Investoren<br />

im Hintergrund. Die wollen Rendite sehen. Da haben wir die Schuldigen: Schimpfen wir sie Renditehaie, Heuschrecken,<br />

Boni-Getriebene…<br />

Doch ach: Wer dem Weg des Geldes folgt, stellt fest, dass auch die Fondsmanager, der Risikokapitalgeber, die<br />

Investmentexpertin einer Versicherungsgesellschaft nicht aus eigenem Antrieb handeln. Sie vermehren ja nicht<br />

eigenes Geld, sondern die Mittel von Kunden. Die Antreiber sind selbst Getriebene. Dem Weg des großen Geldes<br />

folgend, müssten nun endlich die kaltschnäuzigen Alphatiere der perfiden Rendite-Nahrungskette in Sicht kommen.<br />

Wer sind die, die den Fondsmanager zu Maximalleistungen antreiben, die Vorstände von börsennotierten<br />

Konzernen auf den Übernahme-Strich schicken, deren Angestellte in Zukunftsangst versetzen? Wer ist das?<br />

Wir alle. Wir, die wir eine Lebensversicherung haben. Wir mit den monatlichen Fondssparplänen. Wir Bausparer<br />

und Was-fürs-Studium-der-Kinder-Zurückleger. Darunter der Suse-Entwickler und der Novell-Manager. Die Nahrungskette<br />

schließt sich hier zu ein Kreislauf. In der einen Richtung rotiert das Geld, in der anderen ein gnadenloser<br />

Erwartungsdruck. Den Takt der Pumpstation geben die Bilanztermine der börsennotierten Firmen vor.<br />

Das moralisch Vertrackte daran: Jedes Kettenglied ist Täter und Opfer zugleich. Und wie nennt man das, wenn<br />

sich wie hier kein Schuldiger findet? Genau: systemisch. Wer dieses sozio-ökonomische Naturgesetz nicht<br />

mag, muss auf die Ankunft eines allmächtigen Mäzenen hoffen, der mit mildtätigen Milliarden den von Rendite<br />

getriebenen Kreislauf zum Erliegen bringt und zugleich den Druck aus dem System ablässt – gewissermaßen<br />

die ökonomische Prostitution abschafft. Bis zum Eintreffen der solventen Lichtgestalt können zumindest Suse-<br />

Leute etwas Unsystemisches tun: <strong>Linux</strong>-Software schreiben und mildtätig verschenken.


Inhalt<br />

www.linux-magazin.de 02/<strong>2011</strong> 02/<strong>2011</strong><br />

4<br />

Viel Frischkost gibts für <strong>Datenbank</strong>-Anwender im neuen Jahr, seit MySQL, PostgreSQL, Ingres<br />

und Firebird neue Versionen aufgelegt haben. Auch der MySQL-Fork Maria DB verdient Aufmerksamkeit.<br />

Auf schnellen Sohlen kommt die NoSQL-Revolution in die Gänge, über drei Revolutionäre<br />

und die munter replizierende Couch DB berichtet der <strong>Magazin</strong>-Schwerpunkt auch.<br />

Aktuell<br />

Titelthema: <strong>Datenbank</strong>en <strong>2011</strong><br />

6 News<br />

n Server-Administration mit Open Panel<br />

n Tumbleweed: Suse als Rolling Release<br />

n Long Term für den <strong>Linux</strong> Kernel<br />

Ein HTML-5-<br />

Desktop<br />

empfängt die<br />

Anwender von<br />

Jolicloud 1.1.<br />

27 Einführung<br />

Titel<br />

Neue Versionen mit raffinierten Features<br />

und der Trend zu NoSQL-Systemen.<br />

28 <strong>Datenbank</strong>-Vergleich<br />

Neue Features: MySQL, PostgreSQL,<br />

In gres und Firebird im Vergleich mit<br />

Oracle 11g.<br />

38 PostgreSQL 9.0<br />

Die neue Version bringt asynchrone<br />

Replikation und Hochverfügbarkeit.<br />

12 Zahlen & Trends<br />

n AMD steigt bei Meego ein<br />

n Matt Asay verlässt Canonical<br />

n Attachmate und der Novell-Kauf<br />

Das Leibniz-<br />

Rechenzentrum<br />

in München will<br />

den Platz 1 der<br />

Supercomputer<br />

errringen.<br />

Schöne neue Bank: Was die neuen Versionen<br />

der freien DB-Alternativen bringen.<br />

36 Maria DB<br />

Was taugt die MySQL-Alternative?<br />

Die PostgreSQL-Community ist sich einig: Der<br />

Neuner ist der große Wurf.<br />

42 NoSQL<br />

Redis, Riak und Cassandra: Neuartige<br />

<strong>Datenbank</strong>en sorgen für Speed.<br />

Seit kurzem<br />

weht der Wind<br />

aus der NoSQL-<br />

Ecke. Trend oder<br />

Hype?<br />

18 Zacks Kernel-News<br />

n Realtime Clocks für mehrere Prozesse<br />

n Staging: Bessere Dokumentation<br />

52 Couch DB<br />

Die Dokumenten-basierte <strong>Datenbank</strong><br />

Couch DB kann jetzt replizieren..<br />

20 InSecurity News<br />

n Open-SSL-Schwachstellen<br />

n DoS-Attacken in Glibc<br />

n Realplayer mit Lücken<br />

Vertraut und doch neu: Monty Widenius‘ MySQL-<br />

Fork sticht unter der Konkurrenz hervor.<br />

DELUG-DVD<br />

TOOL<br />

DL – mit doppelter Kapazität, S. 57<br />

Untangle 8.0<br />

TOOL<br />

TOOL<br />

Bootet nativ von DVD: Router-<strong>Linux</strong> mit<br />

Bandbreiten-Kontrolle und Sessionviewer<br />

Open Monitoring<br />

TOOL<br />

TOOL<br />

Distribution<br />

Nagios und nützliche Plugins frisch verschnürt<br />

als fertige Software-Appliance<br />

E-Book gratis<br />

Komplett auf DVD:<br />

Plötner; Wendsel, „<strong>Linux</strong> – das<br />

umfassende Handbuch“, <strong>2011</strong><br />

Programme und<br />

Tools zum Heft<br />

Passend zu den Artikeln<br />

Egal, ob offline oder im Verbund eines Clusters:<br />

Couch DB beherrscht beides.<br />

Service<br />

3 Editorial<br />

124 IT-Profimarkt<br />

127 Seminare<br />

128 Inserenten, Veranstaltungen<br />

129 Impressum<br />

130 <strong>Vorschau</strong>


02/<strong>2011</strong> 02/<strong>2011</strong><br />

Inhalt<br />

62 Forum geht‘s?<br />

Wer ein Internetforum betreiben will,<br />

hat die Qual der Wahl. Die Bitparade<br />

wirft einen detaillierten Blick auf PHP<br />

BB, Simple Machines Forum, Vbulletin<br />

und Invision Power Board.<br />

86 Hindernislauf<br />

ZFS und <strong>Linux</strong> lassen sich nicht ohne<br />

Weiteres kombinieren. Ein Forensiker<br />

untersucht die aktuellen Implementierungen<br />

und beschreibt die Hürden.<br />

118 Datumsarithmetik<br />

Perls Git-Repository enthält alle Commits<br />

seit Larry Wall Perl 1987 erschuf.<br />

Zeitzeuge Mike Schilli holt mit R erstaunliche<br />

Statistiken zum Vorschein.<br />

www.linux-magazin.de<br />

5<br />

Software<br />

Sysadmin<br />

Know-how<br />

57 Einführung<br />

Auf der DELUG-DVD: die Open Monitoring<br />

Distribution, der komfortable Router<br />

Untangle und ein nagelneues E-Book.<br />

58 Open Monitoring Distribution<br />

Nagios einfach und professionell.<br />

62 Bitparade<br />

Titel<br />

Vier Vertreter moderner Webforen-<br />

Soft ware im Vergleich.<br />

70 Internet-Kartendienste<br />

Titel<br />

Openlayers, Mapfish und Mapbender.<br />

81 Einführung<br />

Aus dem Alltag eines Sysadmin: Lsof ist<br />

eines von Charlys Lieblingskommandos.<br />

82 LX Container<br />

LXC verspricht Virtualisierung mit wenig<br />

Overhead. Der Workshop zeigt, wie.<br />

Titel<br />

Nicht nur kritische<br />

Dienste<br />

lassen sich mit<br />

den LX Containern<br />

vortrefflich<br />

isolieren.<br />

86 ZFS und <strong>Linux</strong><br />

Nur ein proprietärer Anbieter kann<br />

im Test mit Geschwindigkeit und<br />

Kompatibilität überzeugen.<br />

104 Kern-Technik 55<br />

Titel<br />

Mit ausgefeiltem Ressourcen-Management<br />

und Namensräumen organisiert<br />

der Kernel LX Container.<br />

Kernel Userspace<br />

Appl.<br />

PID<br />

IPC<br />

UTS<br />

NET<br />

USER<br />

PROC<br />

MOUNT<br />

Appl.<br />

globaler<br />

Namensraum<br />

Appl.<br />

PID<br />

IPC<br />

UTS<br />

NET<br />

USER<br />

PROC<br />

MOUNT<br />

Container mit<br />

eigenen<br />

Namensräumen<br />

108 SQL-Injection<br />

Wie Hacker schlecht geschützte<br />

<strong>Datenbank</strong>en angreifen.<br />

Appl.<br />

Appl.<br />

Appl.<br />

PID<br />

IPC<br />

UTS<br />

NET<br />

USER<br />

PROC<br />

MOUNT<br />

Container mit<br />

eigenen<br />

Namensräumen<br />

In LXCs Namespaces<br />

dürfen<br />

Applikationen<br />

Systemressourcen<br />

unabhän gig<br />

vom Ker nel<br />

benennen.<br />

Drei Tools für immer aktuelle und interaktive<br />

Kartendaten in der eigenen Website.<br />

76 Tooltipps<br />

Etherdump, Fetch Yahoo, Patool, Srm,<br />

ZNC und die Group Shell.<br />

78 Projekteküche<br />

DJ-Software für <strong>Linux</strong>, flexible Webradio-<br />

Streams mit der Program miersprache<br />

Liquidsoap und leckere Kürbis-Gratins.<br />

Wer nicht kistenweise Vinyl und Plattenspieler<br />

herumtragen möchte, ist bei Mixxx richtig<br />

Forum<br />

92 Winterrätsel<br />

Titel<br />

Beim ultimativen Jahresrückblick in<br />

Quiz form gibt es harte Nüsse zu knacken.<br />

96 Recht einfach<br />

Leser fragen, der <strong>Linux</strong>-<strong>Magazin</strong>-<br />

Ratgeber antwortet.<br />

99 Debianopolis<br />

Neues von der Community-Distribution.<br />

100 Tux liest<br />

Die Buchseite mit einer Einführung in<br />

NoSQL- <strong>Datenbank</strong>en und das Netzwerkmana<br />

ge mentsystem Open NMS.<br />

101 Leserbriefe<br />

Auf den Punkt gebracht.<br />

Reingespritzt: Webprogramme ebnen Gaunern<br />

den Weg zur <strong>Datenbank</strong>.<br />

Programmieren<br />

111 Einführung<br />

Der Entwickler als Gewissen der<br />

Informationsgesellschaft.<br />

112 Xtext<br />

Titel<br />

Wer sich im Dschungel seiner IPtables-<br />

Regeln nicht mehr zurecht findet,<br />

modelliert sie mit Xtext.<br />

118 Perl-Snapshot<br />

Kurzweilige Statistiken aus Perls Git-<br />

Repository mit Perl und R.


Aktuell<br />

www.linux-magazin.de News 02/<strong>2011</strong><br />

6<br />

News<br />

Open Panel verwaltet Serverdienste<br />

Mit Open Panel stellt sich ein<br />

neues Administrationstool für<br />

Serverdienste vor. Es lässt sich<br />

per Weboberfläche und per<br />

Kommandozeile benutzen.<br />

Die GPL-Software niederländischer<br />

Entwickler soll als<br />

bedienungsfreundliches und<br />

erweiterbares Tool zur Server-<br />

Einrichtung dienen.<br />

In Version 1.0 kann Open Panel<br />

virtuelle Apache-2-Hosts<br />

konfigurieren, Open-SSH-Konten<br />

verwalten, DNS-Zonen<br />

mit Bind 9 administrieren sowie<br />

Postfix- und Courier-Maildienste<br />

konfigurieren. Daneben<br />

eignet sich das Panel zum<br />

Verwalten von MySQL-<strong>Datenbank</strong>en,<br />

von FTP-Konten und<br />

IPtables-Firewalls. Software-<br />

Updates per Apt lassen sich<br />

ebenfalls vornehmen.<br />

Derzeit ist die Software für<br />

Debian 5.0 (Lenny) getestet,<br />

soll aber auch unter Squeeze<br />

und Ubuntu 10.04 funktionieren.<br />

Als nächstes Ziel möchte<br />

das Projekt Open Panel auch<br />

auf weiteren Debian-basierten<br />

Distributionen testen. Langfristig<br />

soll es RPM-Versionen<br />

für Red Hat, Centos und Suse<br />

geben. Darüber hinaus haben<br />

die Entwickler bereits weitere<br />

Entwicklungsziele bekannt<br />

gegeben: IP- und SSL-<br />

Administration, Vorlagen für<br />

Hosting-Produkte, Backup,<br />

Unterstützung für Mailinglisten,<br />

Verwaltung von Amavis<br />

und Spamassassin und einiges<br />

mehr.<br />

Weitere Informationen finden<br />

sich auf der Open-Panel-<br />

Website [http://​www.​openpanel.​<br />

​com]. Dort gibt es auch eine<br />

Anleitung zur Installation der<br />

Software aus den Debian-Paketarchiven<br />

des Projekts. n<br />

Open Panel dient unter anderem zur Konfiguration der Firewall, hier die Weboberfläche<br />

in einem Macintosh-Browser.<br />

Ha-LVM: Virtualisiertes Haskell auf Xen<br />

Das US-amerikanische Unternehmen<br />

Galois hat eine Haskell<br />

Lightweight Virtual Machine<br />

(Ha-LVM) unter BSD-Lizenz<br />

freigegeben. Während es<br />

üblich ist, Betriebssysteme auf<br />

den Xen-Hypervisor zu portieren,<br />

haben die Galois-Entwickler<br />

das mit dem Laufzeit-<br />

System des Glasgow Haskell<br />

Compiler (GHC) getan. Damit<br />

steht eine virtuelle Maschine<br />

für die Programmiersprache<br />

Haskell im Prinzip überall bereit,<br />

wo Xen läuft.<br />

Die Firma aus Portland, Oregon,<br />

hat Ha-LVM nach eigenen<br />

Angaben bereits erfolgreich<br />

in mehreren Projekten<br />

eingesetzt. Mit der Veröffentlichung<br />

unter einer BSD-Lizenz<br />

verbindet Galois ein Dankeschön<br />

an die GHC- und Xen-<br />

Communities.<br />

Auf einer eigenen Ha-LVM-<br />

Homepage unter [http://​halvm.​<br />

​org] findet sich die stabile<br />

Version 1.0 als Tarball, daneben<br />

steht der Quellcode per<br />

Git zur Verfügung. Die Ha-<br />

LVM-Entwickler verwenden<br />

Xen 4.0 für 32-Bit-<strong>Linux</strong> mit<br />

einigen Modifikationen. Informationen<br />

darüber sowie Anleitungen<br />

zu Installation und<br />

Arbeit mit Ha-LVM sind auf<br />

der Website ebenfalls nachzulesen.<br />

n<br />

Egroupware 1.8 verbessert Bedienbarkeit<br />

Die Stylite GmbH hat die Community-Version<br />

1.8 ihrer Software<br />

Egroupware mit neuen<br />

Features veröffentlicht. Die<br />

neue Release bringt eine dreiteilige<br />

E-Mail-Ansicht, in der<br />

sich alle Mailordner in einer<br />

Baumstruktur aufklappen lassen.<br />

Ein einziger Klick reicht,<br />

um alle Nachrichten innerhalb<br />

eines Ordners zu markieren<br />

oder Ical- und Vcard-Dateien<br />

zu importieren.<br />

Im Kalender erhalten auch<br />

wiederkehrende Ereignisse<br />

Zeitzonenunterstützung, den<br />

Teilnehmerstatus für Termine<br />

kennzeichnet Egroupware optisch.<br />

Ein Skript aus der kostenpflichtigen<br />

Premium-Version<br />

kümmert sich nun auch<br />

in der Community-Ausgabe<br />

um Installation und Aktualisierung<br />

der Software.<br />

Die Community-Version 1.8<br />

von Egroupware [http://​www.​<br />

​egroupware.​org] ist unter GPLv2<br />

lizenziert. Der Hersteller empfiehlt,<br />

die Software aus einem<br />

Repository des Open Suse<br />

Build Service zu installieren.<br />

Die Release Notes halten noch<br />

weitere Installationsvarianten<br />

bereit. Die Firma Stylite bietet<br />

auch eine Premium-Version<br />

von Egroupware (EPL) an,<br />

samt Hosting oder zur Installation<br />

beim Kunden. Training,<br />

Consulting und Support<br />

ergänzen das Angebot. n


Jolicloud will mehr als Netbooks<br />

Jolicloud, eine Distribution,<br />

die vor allem auf Online-Anwendungen<br />

setzt, ist in Version<br />

1.1 mit zahlreichen Verbesserungen<br />

erhältlich. Die<br />

Release verwendet Ubuntu<br />

10.04 mit Long-Term-Support<br />

als Basis, was für Updates bis<br />

2013 sorgt. In Zukunft sollen<br />

aber auch Patches aus Ubuntu<br />

10.10 Eingang finden.<br />

Das neue Jolicloud soll anders<br />

als die Vorgänger nicht nur<br />

auf Netbooks laufen, sondern<br />

auch Notebooks, Desktop-PCs<br />

und Tablets erobern. Daher<br />

gibt es erweiterte Hardware-<br />

Unterstützung, beispielsweise<br />

für Touchscreens, Nvidia Ion<br />

und Intel Puolsbo sowie für<br />

WLAN-Chips und Webcams.<br />

Dieser HTML-5-Desktop empfängt die Anwender von Jolicloud 1.1, wenn sie die<br />

Online-Anwendungen des Herstellers benutzen.<br />

Der neue Kernel auf Basis<br />

von Version 2.6.35.4 ist für<br />

die Prozessoren Atom N450<br />

und N550 optimiert. Auf<br />

Atom-Netbooks verspricht<br />

Jolicloud 1.1 daher etwa 15<br />

Prozent längere Batterielaufzeit.<br />

An Bord sind unter anderem<br />

Firefox 3.6.10, VLC<br />

1.1.4, Banshee 1.6.1, Gimp<br />

2.6.8 und Open Office 3.2.1.<br />

Daneben nimmt der Chromium-Browser<br />

in Version 7.0<br />

samt Flash eine Sonderrolle<br />

ein: Er dient als Schnittstelle<br />

zum in HTML 5 umgesetzten<br />

Onlinedesktop, den der Hersteller<br />

unter My.jolicloud.com<br />

gegen (kostenlose) Registrierung<br />

anbietet. Er steht nicht<br />

nur Anwendern mit installiertem<br />

Jolicloud-Betriebssystem<br />

zur Verfügung, sondern allen<br />

Benutzern mit Chrome- oder<br />

Chromium-Browser.<br />

Die neue Release liegt auf der<br />

Jolicloud-Homepage [http://​<br />

​www.​jolicloud.​com] als ISO-Image<br />

oder als Windows-Installer für<br />

den Dual-Boot-Betrieb zum<br />

Download bereit. Dabei setzt<br />

der Hersteller auf Dateiverteilung<br />

per Bittorrent. n<br />

News 02/<strong>2011</strong><br />

Aktuell<br />

www.linux-magazin.de<br />

7<br />

Tumbleweed: Open Suse rolliert<br />

Indischer Adam weckt hohe Erwartungen<br />

Suse-Entwickler und Kernelhacker<br />

Greg Kroah-Hartman<br />

regt ein neues Projekt namens<br />

Tumbleweed an und damit ein<br />

Open-Suse-Repository, das<br />

sich fortlaufend aktualisiert.<br />

Bei einer solchen Rolling Release<br />

gibt es keine Sprünge in<br />

der Aktualisierung, sie erfolgt<br />

kontinuierlich. Bei <strong>Linux</strong>-Distributionen<br />

wie Arch, Gentoo<br />

oder Foresight ist das längst<br />

gängige Praxis.<br />

Den Unterschied zu Open<br />

Suses Factory-Zweig sieht<br />

Kroah-Hartman darin, dass<br />

Tumbleweed nur stabile Software<br />

enthalten soll, die zuverlässig<br />

funktioniert, Factory<br />

dagegen jeweils die allerneuesten<br />

Versionen liefert. Beim<br />

Kernel verwendet Factory beispielsweise<br />

bereits die Release<br />

Candidates jener Version, die<br />

ins nächste Open Suse eingehen<br />

soll. Tumbleweed werde<br />

aber nur Stable-Kernel einsetzen,<br />

schreibt Kroah-Hartman<br />

in seiner Mail an die Open-<br />

Suse-Mailingliste.<br />

Einen Vorteil für die Anwender<br />

könnte Tumbleweed insbesondere<br />

bei jenen Softwarepaketen<br />

bieten, deren neue<br />

Versionen aus Termingründen<br />

nicht mehr in ein reguläres<br />

Suse gelangt sind, dazu zählt<br />

beispielsweise Gnome mit seinen<br />

6-monatigen Zyklen, die<br />

öfter für Überschneidungen<br />

sorgen.<br />

Greg Kroah-Hartman plant,<br />

Tumbleweed nach der Veröffentlichung<br />

von Open Suse<br />

11.4 zu starten, bis dahin<br />

möchte er den Workflow vorbereiten.<br />

In der Zwischenzeit<br />

diskutiert die Open-Suse-<br />

Community den Vorschlag auf<br />

der Mailingliste unter [http://​<br />

​thread.​gmane.​org/​gmane.​linux.​suse.​<br />

opensuse.​project/​6594]. n<br />

Der indische Hersteller Notion<br />

Ink will mit dem Android-Tablet<br />

namens Adam eine Serie<br />

von „traumhaften Geräten“<br />

begründen. Anfang Januar<br />

kommt Adam weltweit in die<br />

Auslieferung, die Preise bewegen<br />

sich zwischen 370 und<br />

600 US-Dollar. Hinzu kommen<br />

50 Dollar Versandkosten<br />

in jedes Zielland.<br />

Adams Multitouch-fähiges<br />

10,1-Zoll-Display (1024 mal<br />

600 Pixel) ist in zwei Versionen<br />

zu haben. Das spezielle<br />

„Pixel Qi“-Display passt sich<br />

der Umgebungsbeleuchtung<br />

an und soll auch bei Sonnenschein<br />

lesbar sein. Der normale,<br />

matte LCD-Bildschirm<br />

verfügt laut Anbieter über<br />

Schutz gegen Kratzer und Fingerabdrücke.<br />

Mit dem Internet<br />

kann sich der Anwender je<br />

nach Preislage mittels WLAN<br />

oder HSPA verbinden.<br />

Das Gerät arbeitet mit dem<br />

Tegra 250 von Nvidia, der mit<br />

einem Zweikern-ARM Cortex<br />

A9 sowie mit Geforce-Grafikprozessor<br />

ausgestattet ist.<br />

HD-Fähigkeit gehört ebenso<br />

zu den Features wie Open GL<br />

ES 2.0. 1 GByte Arbeitsspeicher<br />

und 8 GByte Flash-Festspeicher<br />

zählen zur weiteren<br />

Ausstattung. Im Gerät steckt<br />

zudem eine 3,2-Megapixel-<br />

Kamera. Erweiterungen sind<br />

mit USB, HDMI, Micro SD und<br />

mit SIM-Karten möglich.<br />

Mitte Dezember erlebte das<br />

junge Unternehmen aus dem<br />

indischen Bangalore turbulente<br />

Tage. Die eigentlich erfreulich<br />

vielen Vorbestellungen<br />

[http://​www.​notionink.​com/​<br />

​order.​php] ließen an diversen<br />

Stellen die Technik versagen,<br />

auch mit Dienstleistern und<br />

Lieferfirmen habe es Schwierigkeiten<br />

gegeben.<br />

n


Aktuell<br />

www.linux-magazin.de News 02/<strong>2011</strong><br />

8<br />

Google zeigt Nexus S und Android 2.3<br />

Google hat mit dem Nexus S<br />

ein neues Smartphone vorgestellt,<br />

das als erstes Gerät mit<br />

der neuen Android-Version 2.3<br />

alias Gingerbread ausgestattet<br />

ist. Das Nexus S kommt mit<br />

einem 4-Zoll-WGA-Display.<br />

Ein 1-GHz-Hummingbird-<br />

Prozessor von ARM, zwei<br />

Kameras, 16 GByte interner<br />

Speicher und NFC (Near Field<br />

Communication) zählen zu<br />

den Ausstattungsmerkmalen.<br />

Das Smartphone misst 63 mal<br />

124 x 11 Millimeter und wiegt<br />

120 Gramm. Google hat das<br />

Telefon mit Samsung zusammen<br />

entwickelt.<br />

Das Gingerbread-Handy soll –<br />

vertragsfrei und ohne Simlock<br />

– in den USA über T-Mobile<br />

beziehbar sein, später dann<br />

auch über US-Elektronikhändler<br />

wie Bestbuy. Zum europäischen<br />

Markteintritt gibt<br />

Das Nexus S hat ein gewölbtes<br />

4-Zoll-Contour-Display, das sich<br />

besonders gut zum Telefonieren<br />

eignen soll.<br />

es noch keine Informationen.<br />

Anfang <strong>2011</strong> soll es auch<br />

Android 2.3 nebst Entwickler-<br />

Kit unter Open-Source-Lizenz<br />

geben. Zum Nexus S gibt es<br />

eine Produktseite [http://​www.​<br />

​google.​com/​nexus/​#!/​index], auf<br />

der sich die Spezifikationen<br />

des Geräts finden.<br />

n<br />

Pulp: Verteiler für Red Hat und Fedora<br />

Das Tool Pulp erstellt lokale<br />

Software-Repositories und<br />

verteilt Pakete nach Regeln<br />

an andere Rechner. Mit neuer<br />

Homepage und neuer Release<br />

stellt sich das Red-Hat-Communityprojekt<br />

einer breiteren<br />

Öffentlichkeit vor.<br />

Die GPL-Software eignet sich<br />

für Fedora 13 und 14 sowie<br />

für Red Hat Enterprise <strong>Linux</strong><br />

5. Sie kann Paket-Repositories<br />

per HTTP(S), aus dem Dateisystem,<br />

von CD/ DVD und aus<br />

dem Red Hat Network einlesen<br />

und einen lokalen Mirror<br />

erstellen. Pulp hält den Mirror<br />

automatisch aktuell. Daneben<br />

kann der Administrator auch<br />

Pakete einpflegen, die aus anderen<br />

Quellen stammen oder<br />

die er selbst gebaut hat.<br />

Die Installation und Aktualisierung<br />

von Computern<br />

und Rechnergruppen erfolgt<br />

zentral vom Pulp-Server aus.<br />

Dabei soll die Software laut<br />

den Entwicklern in Zukunft<br />

auch zeitlich enge Wartungsfenster<br />

für die Updates nutzen<br />

können. Die Roadmap auf der<br />

Homepage listet noch weitere<br />

geplante Features wie Rule<br />

Based Access Control (RBAC)<br />

und das Einbinden externer<br />

CDs auf.<br />

Pulp ist in Python umgesetzt<br />

und verwendet eine Server-<br />

Client-Architektur. Es lässt<br />

sich über die Kommandozeile<br />

sowie über eine REST-Schnittstelle<br />

steuern.<br />

Die neue Community-Release<br />

4 führt Paket-Suche und -Kategorien<br />

ein und komplettiert<br />

das Klonen von Repositories.<br />

Ausführliche Informationen<br />

sowie Code und Pakete gibt<br />

es auf der Pulp-Homepage<br />

[http://​pulpproject.​org]. n<br />

Open-PC startet Verkauf mit drei Rechnermodellen<br />

Das Projekt Open-PC, das<br />

KDE-Entwickler Frank Karlitschek<br />

gegründet hat, startet<br />

den Verkauf von drei Rechnermodellen.<br />

Die Computer nach<br />

Community-Spezifikation sind<br />

über drei Kooperationspartner<br />

erhältlich. Die Unterschiede<br />

zwischen den Rechnern mit<br />

offenem Design: Das Modell<br />

Open-PC 1 hat Booksize-<br />

Format, verwendet den Dualcore-Prozessor<br />

Atom D510<br />

mit 1,6 GHz sowie 4 GByte<br />

RAM und kostet in Deutschland<br />

rund 390 Euro. Mit dem<br />

gleichen Prozessor, jedoch 2<br />

GByte RAM ist der Open-PC<br />

Micro ausgestattet, der in einem<br />

Mini-ITX-Gehäuse steckt<br />

(rund 350 Euro). Mit rund 250<br />

Dollar ausgezeichnet und ausschließlich<br />

für den amerikanischen<br />

Markt bestimmt ist der<br />

Mini-Computer Open-PC SX<br />

mit 1 GByte RAM und ebenfalls<br />

Atom-Prozessor.<br />

Die Rechner sind ausschließlich<br />

mit Komponenten bestückt,<br />

zu denen offene Dokumentationen<br />

und freie Treiber<br />

vorliegen. Das vorinstallierte<br />

<strong>Linux</strong>-Betriebssystem basiert<br />

auf Open Suse 11.3 und verwendet<br />

den KDE-Desktop. Als<br />

Vertriebspartner fungieren die<br />

Firmen Arlt und Greenix in<br />

Deutschland sowie Think Penguin<br />

in USA. Für jeden verkauften<br />

PC geht eine Spende<br />

von 10 Euro an das KDE-Projekt.<br />

Weitere Informationen<br />

gibt es auf der Open-PC-Website<br />

[http://​open‐pc.​com]. n<br />

Der KDE-Entwickler Frank Karlitschek präsentiert einen Computer aus dem von<br />

ihm gegründeten Open-PC-Projekt.


Git-Timetrack erfasst Entwicklerzeit<br />

Der KDE-Entwickler Eduardo<br />

Robles Elvira hat die Git-<br />

Erweiterung Git-Timetrack<br />

vorgestellt. Damit können<br />

Entwickler aufzeichnen, wie<br />

lange sie an einem Commit<br />

arbeiten. Vor dem Einsatz<br />

in einem Projekt müssen sie<br />

das Tool mit dem Befehl »git<br />

timetrack -init« initialisieren.<br />

Danach stößt »git timetrack<br />

-start« die Zeiterfassung<br />

an. Beim nächsten Commit<br />

schreibt das Programm die<br />

benötigte Zeit in die Commit-<br />

Message. Dafür verwendet<br />

das Tool das neue Feature<br />

Git-Notes. In Pausen lässt sich<br />

die Messung mit einem Stop-<br />

Befehl unterbrechen.<br />

Die Software benötigt den Git-<br />

Entwickler-Zweig »git-next«<br />

und steht unter GPLv3. Der<br />

Quellcode ist im Online-Repository<br />

unter [http://​wadobo.​com/​<br />

​trac/​dtt] erhältlich.<br />

n<br />

Top-Performance zum Tiefpreis!<br />

Virtuelle Server<br />

News 02/2010<br />

Aktuell<br />

www.linux-magazin.de<br />

9<br />

Long Term: Änderung in der Kernel-Pflege<br />

Der bei Novell beschäftigte<br />

Kernelhacker Greg Kroah-<br />

Hartman hat auf der Kernel-<br />

Mailingliste einige Änderungen<br />

zur Betreuung von Kernelreleases<br />

bekannt gegeben<br />

sowie eine neue Mailingliste<br />

für stabile Kernel eingeführt.<br />

Es sei seit über fünf Jahren<br />

Usus, so berichtet Kroah-<br />

Hartman, die jeweils jüngste<br />

Kernelversion als »stable« zu<br />

markieren.<br />

Dieses System des „Die neue<br />

Version ist da, nimm sie und<br />

vergiss die alte Version“, habe<br />

prächtig funktioniert, bis er<br />

selbst auf die Idee gekommen<br />

sei, einige Kernelausgaben mit<br />

längerem Support auszustatten.<br />

Ein solcher Long-Term-<br />

Kernel sei etwa 2.6.16 gewesen<br />

und aktuell die Release<br />

2.6.32. Distributionen und<br />

auch Anwender seien von der<br />

längeren Pflege begeistert, so<br />

Kroah-Hartman, schließlich<br />

sei er fast bei jeder Kernelversion<br />

um verlängerten Support<br />

gebeten worden.<br />

Und damit sei jetzt Schluss:<br />

„Back to the roots“ nennt der<br />

Entwickler das künftige Vorgehen,<br />

das als stabile Release<br />

wieder den jüngsten Kernel<br />

bezeichnet. Es sei einfach zu<br />

verwirrend für Anwender geworden,<br />

auf Kernel.org jene<br />

Kernelreleases zu identifizieren,<br />

für die es noch Support<br />

gibt. Ganz zu schweigen von<br />

der Zusatzarbeit für Entwickler,<br />

die sich mit den alten<br />

Versionen herumschlagen<br />

müssen.<br />

Er werde nun noch sein Versprechen<br />

erfüllen und die<br />

bereits als Long-Term-Kernel<br />

angekündigten Releases einige<br />

Zeit weiterpflegen. Diese<br />

Kernel seien dann als »longterm«<br />

gekennzeichnet und bekämen<br />

eigene Maintainer. Das<br />

sei der Fall für die Versionen<br />

2.6.27 und 2.6.32. Auch die<br />

Version 2.6.35 soll Long Term<br />

sein, Andi Kleen habe sich als<br />

Maintainer angeboten.<br />

Kroah-Hartman hat zudem<br />

eine Stable-Mailingliste angekündigt.<br />

Unter [http://​linux.​<br />

​kernel.​org/​mailman/​listinfo/​stable]<br />

kann man sich anmelden.<br />

Den potenziellen Mitgliedern<br />

gibt er als Warnung mit, dass<br />

es dort langweilig zugehe und<br />

ein hohes Mailaufkommen zu<br />

erwarten sei.<br />

n<br />

netclusive Virtuelle Server:<br />

• bis zu 3 CPU-Kerne und 8 GB RAM<br />

• bis zu 95 GB Festplatte (RAID 10)<br />

• 5 TB Traffic inklusive<br />

• SSL-Zertifikat inklusive<br />

• Voller Root-Zugriff (SSH)<br />

• 100 % Backup-Speicher<br />

• 99,9 % garantierte Verfügbarkeit<br />

• auch als Managed Server erhältlich<br />

• viele 64-Bit-Betriebssysteme nach Wahl<br />

6 Monate<br />

kostenlos<br />

danach ab 12,99 €*<br />

0800 638 2587 | www.netclusive.de<br />

* Aktion 6 Monate kostenlos bis 31.01.<strong>2011</strong>. Nach 6 Monaten regulärer monatlicher Grundpreis:<br />

VPS L 12,99 €, VPS XL 16,99 €, VPS XXL 29,99 €. Die Mindestvertragslaufzeit beträgt wahlweise 12 Monate<br />

(Aktion 6 Monate kostenlos entfällt) bzw. 24 Monate (6 Monate kostenlos). Zzgl. 9,99 € einmalige Einrichtungsgebühr.<br />

Die Abrechnung erfolgt vierteljährlich. Alle Preise inkl. MwSt.


Aktuell<br />

www.linux-magazin.de News 02/<strong>2011</strong><br />

10<br />

Kurznachrichten<br />

Mu 0.9: Die Sammlung kleiner Programme findet E-Mails in Maildir-Archiven<br />

anhand mehrerer Kriterien. Neu: Lesezeichen, Suche nach Priorität oder<br />

Message-Eigenschaften wie Verschlüsselung oder Attachments, Suche<br />

über Zeiträume. Erstmals mit grafischer Oberfläche namens Mug. Lizenz:<br />

GPLv3 [http:// www.djcbsoftware.nl/code/mu/]<br />

GNU Recutils 1.0: Die Utilities umfassen ein Datenformat, C-Bibliotheken<br />

und Kommandozeilenprogramme für textbasierte <strong>Datenbank</strong>en. Das Format<br />

sieht Eigenschaften wie Datentypen, Pflichtfelder, eindeutige Schlüssel<br />

und Fremdschlüssel vor. Das Programm »recsel« dient zur Auswahl<br />

von Datensätzen mit Hilfe einer Abfragesprache, »recins« zum Einfügen<br />

von Datensätzen und »recdel« zum Löschen. Neu: Erste Veröffentlichung.<br />

Lizenz: GPLv3 [http://www.gnu.org/software/recutils/]<br />

Htop 0.9: Der interaktive Prozessbetrachter für die Kommandozeile zeigt<br />

eine Vielzahl von Informationen. Neu: Die Zweige der Baumansicht lassen<br />

sich mit den Plus- und Minus-Tasten erstmals auf- und zuklappen.<br />

Unterstützung für Cgroups sowie Ressourcenanzeige für virtualisierte<br />

Gastsysteme. Lizenz: GPLv2 [http://sourceforge.net/projects/htop/]<br />

Tiny Core <strong>Linux</strong> 3.3: Die minimalistische Distribution umfasst nur 10 MByte<br />

und bietet dennoch einen grafischen Desktop. Neu: Dateimanager und<br />

Editor auf Basis des Ressourcen-schonenden GUI-Toolkits Fltk. Aktualisierungen<br />

für App-Browser und die distributionseigenen Skripte. Lizenz:<br />

GPL und andere [http://tinycorelinux.com]<br />

Valgrind 3.6.0: Die freie Werkzeugsammlung dient zum dynamischen<br />

Debuggen von Programm und spürt Speicherfehler auf. Neu: Funktioniert<br />

erstmals unter <strong>Linux</strong> auf CPUs, die den Befehlssatz ARMv7-A beherrschen.<br />

Anpassung an GCC-Version 4.5 und Glibc 2.12, Unterstützung für 32- und<br />

64-Bit-Programme unter Mac OS X 10.6 (Snow Leopard). Lizenz: GPLv2<br />

[http://www. valgrind.org]<br />

Mobile Org for Android 0.4.5: Die Anwendung für Android-Smartphones<br />

zeigt Dateien im Organizer-Format von Emacs an. Neu: Synchronisation<br />

mit Webdav-Servern oder der lokalen SD-Karte. Schreibmodus für<br />

Todo-Einträge und Notizen. Lizenz: GPLv2 [https://github.com/matburt/<br />

mobileorg-android]<br />

Prrescue 0.9: Die Live-CD basiert auf Gentoo für AMD 64 und hilft bei der<br />

Systemrettung. Sie unterstützt auch die Dateisysteme Nilfs und Btrfs.<br />

Neu: Update mit neuen Gentoo-Paketen. LM-Sensors und das Benchmarktool<br />

CPU Burn sind als neue Programme dazugekommen. Auf Version<br />

2.6.36.2 aktualisierter Kernel, Booten von USB-Medien. Lizenz: GPL und<br />

andere [http:// prrescue.prnet.org]<br />

Docvert 4.0: Das Konvertierungstool übersetzt Textverarbeitungsdateien,<br />

beispielsweise im Word-Format, in das Open-Document-Format, XML oder<br />

HTML. Neu: Umwandlung von EMF- und WMF-Dateien in SVG- und PNG-Grafiken.<br />

Verbesserungen bei der Docbook-XML-Ausgabe, bei Barrierefreiheit<br />

und Performance. Lizenz: GPLv3 [http://holloway.co.nz/docvert/]<br />

KDE-Programm Cirkuit malt Schaltpläne<br />

Userful multipliziert Arbeitsplätze<br />

Der KDE-Entwickler Matteo<br />

Agostinelli hat Cirkuit vorgestellt,<br />

eine Anwendung zum<br />

Zeichnen von Schaltplänen<br />

und Graphen. Cirkuit zeigt<br />

eine Echtzeit-<strong>Vorschau</strong> und<br />

exportiert das Ergebnis in den<br />

Formaten EPS, PDF, PNG oder<br />

PSTricks. Zudem kann das<br />

KDE-Programm auch Gnuplot<br />

und Tikz/ PGF als Backends<br />

benutzen. Die Software ist auf<br />

KDEs Projektplattform unter<br />

[https://projects. kde.org/projects/<br />

playground/ graphics/ cirkuit] erhältlich.<br />

n<br />

Cirkuit dient unter anderem als Frontend für die Circuit-Makros, die Schaltpläne<br />

zeichnen. In der unteren Hälfte befindet sich ein Quelltext-Editor.<br />

Das kanadische Unternehmen<br />

Userful [http:// userful. com] hat<br />

seine Software Multiseat, die<br />

einen einzigen <strong>Linux</strong>-Rechner<br />

um bis zu zehn externe Arbeitsplätze<br />

erweitert, zu einem<br />

installationsfertigen Softwarebundle<br />

für Schulen mit<br />

Edubuntu 10.04 verschnürt.<br />

Ebenfalls dabei ist Software,<br />

um die Bildschirme der Schüler<br />

zu überwachen.<br />

In der jetzt veröffentlichten<br />

Release 4.0 von Multiseat<br />

stecken laut Hersteller eineinhalb<br />

Jahre Entwicklungszeit:<br />

Während das ältere Produkt<br />

Multiplier (ebenfalls noch<br />

erhältlich) Grafikkarten mit<br />

mehreren Ausgängen benötigt,<br />

die der Anwender zunächst<br />

in seinen Hostrechner<br />

einbauen muss, lassen sich<br />

bei Multiseat die externen Arbeitsplätze<br />

über separate USB-<br />

Kistchen anschließen, auch<br />

Zero-Clients genannt, an die<br />

dann jeweils Monitor, Maus<br />

und Tastatur und weitere Geräte<br />

gestöpselt werden. Derzeit<br />

eigenen sich für diesen<br />

Zweck die Geräte T100 von<br />

Hewlett-Packard, die Expansion<br />

Workstation MWS 8820<br />

von Magic Control Technology<br />

und der Zero-Client E01<br />

von Wyse.<br />

Damit der Host zehn Arbeitsplätze<br />

im Multiuser-Betrieb<br />

bedienen kann, sollte er mit<br />

einem Quad core-Prozessor sowie<br />

4 GByte Arbeitsspeicher<br />

ausgestattet sein.<br />

Die Software Userful Multiseat<br />

ist als Ubuntu-Paket<br />

und im Bundle mit Edubuntu<br />

als Installationsimage erhältlich.<br />

Das Unternehmen<br />

Userful vertreibt das Produkt<br />

als Closed-Source-Software,<br />

für die zwischen 60 und 100<br />

Dollar Lizenzgebühren pro<br />

Arbeitsplatz anfallen. Hinzu<br />

kommt, dass der Anwender<br />

sich die Client-Hardware kaufen<br />

muss, die laut Hersteller<br />

ab 50 Dollar pro Stück kostet.<br />

(ake/mhu/uba/ofr) n


1&1 DSL<br />

INTERNET<br />

UND TELEFON<br />

19, 99<br />

JETZT STARTEN UND 120,– €<br />

SPAREN!<br />

€/Monat *<br />

Sparpreis für volle 24 Monate,<br />

danach 24,99 €/Monat.<br />

Jetzt informieren und bestellen: 0 26 02 / 96 90<br />

www.1und1.de<br />

* 1&1 Surf-Flat 6.000: 24 Monate 19,99 €/Monat, danach 24,99 €/Monat. In den meisten Anschlussbereichen verfügbar. Inklusive Internet-Flat. Inklusive Telefonie (Privatkunden): rund um die<br />

Uhr für 2,9 ct/Min. ins deutsche Festnetz. Anrufe in alle deutschen Mobilfunknetze 19,9 ct/Min. 1&1 HomeServer für 0,– € (Hardware-Versand 9,60 €). 24 Monate Mindestvertragslaufzeit.


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 02/<strong>2011</strong><br />

12<br />

Zahlen & Trends<br />

Canonical zählt mehr Softwarepartner<br />

Canonical, das Unternehmen<br />

hinter Ubuntu <strong>Linux</strong>, hat seit<br />

der Veröffentlichung von Version<br />

10.10 eine ganze Reihe<br />

Softwarepartner gewonnen.<br />

Ubuntus Software Center<br />

ersetzt den Paketmanager<br />

Synaptic seit Version 9.10<br />

„Karmic Koala“. Mit Ubuntu<br />

10.10 „Maverick Meerkat“ ist<br />

das Angebot angelaufen, über<br />

das Software Center (Version<br />

3.0.4) auch Bezahlprogramme<br />

zu erwerben. Zu den Anbietern<br />

gehören nun die Firmen<br />

Boxed Ice, Opsview, Riptano,<br />

Unoware, Vladster, Wavemaker<br />

und Zend. Auch der kalifornische<br />

IT-Integrator Centrify<br />

hat sich eingereiht.<br />

Neu an Bord sind demnach<br />

unter anderem die Monitoring-Software<br />

Opsview, die<br />

verteilte <strong>Datenbank</strong> Cassandra,<br />

die Wysiwyg-Entwicklungsumgebung<br />

Wavemaker<br />

sowie Active Directory für<br />

Ubuntu.<br />

Zu den bisherigen rund 100<br />

Softwarepartnern von Canonical<br />

gehören Zarafa, Unison,<br />

Zimbra, PGP, Oracle, Eucalyptus<br />

und Likewise. Laut Matt<br />

Asay, dem Cheforganisator<br />

von Canonical, habe das Unternehmen<br />

während des Jahres<br />

2010 besonders viele Partner<br />

gewonnen, was mit der<br />

Einführung der Bezahlsoftware<br />

zusammenhängt. Einzelne<br />

Kooperationen hat es<br />

aber bereits seit der ersten<br />

Ubuntu-Version gegeben.<br />

Derzeit erweitert sich die Liste<br />

der Softwarepartner um ein<br />

bis zwei pro Monat, beziffert<br />

Canonical das Wachstum gegenüber<br />

der Redaktion. n<br />

AMD reicht Meego die Hand<br />

Advanced Micro Devices<br />

(AMD) will Personalressourcen<br />

in das mobile <strong>Linux</strong>-<br />

Betriebssystem Meego investieren.<br />

Das hat der Intel-<br />

Konkurrent überraschend auf<br />

der Meego-Konferenz bekannt<br />

gegeben, die vom 15. bis zum<br />

17. November 2010 in Dublin<br />

stattfand.<br />

Ben Bar-Haim, der Software-<br />

Chef von AMD, sieht Meego<br />

in Zukunft auf vielen mobilen<br />

Geräten laufen, daher<br />

wolle das Unternehmen sich<br />

einbringen. AMDs Chef-<br />

<strong>Linux</strong>er Chris Schläger differenziert<br />

im Gespräch mit<br />

dem <strong>Linux</strong>-<strong>Magazin</strong>, dass<br />

das Mobil-<strong>Linux</strong> nach AMDs<br />

Wünschen am liebsten schon<br />

auf den eigenen geplanten<br />

Portable-Plattformen Ontario<br />

und Zacete zu finden sein<br />

solle, die fürs Frühjahr <strong>2011</strong><br />

angekündigt sind. Die neuen<br />

AMD-Plattformen auf der Basis<br />

eines CPU-GPU-Verbund-<br />

Chips, die so genannten APUs<br />

(Marketingname „Fusion“),<br />

seien der Grund für das Engagement:<br />

„Bisher war der<br />

von Meego anvisierte Markt<br />

einfach nicht interessant für<br />

uns“, sagt der Leiter des Operating<br />

System Research Center<br />

Foto: Chris Schläger.<br />

Chris Schläger leitet das Operating<br />

System Research Center (OSRC) von<br />

AMD mit Standorten in Dresden und<br />

Austin, Texas.<br />

von AMD. Nun fallen als Erstes<br />

Arbeiten am <strong>Linux</strong>-Kernel,<br />

bei den Grafiktreibern und bei<br />

den Chipsatztreibern an, konkretisiert<br />

Schläger.<br />

So müssen die Entwickler prüfen,<br />

was nötig ist, um Meego<br />

für die ersten geplanten Fusion-Plattformen<br />

tauglich zu<br />

machen. Die Entwicklungen<br />

sollen ins Buildsystem von<br />

Meego einfließen. Wenn im<br />

Frühjahr <strong>2011</strong> die Plattformen<br />

erscheinen, „haben wir hoffentlich<br />

unsere Hausaufgaben<br />

gemacht“, so der Betriebssystemspezialist.<br />

Langfristig wird AMD nach<br />

Schlägers Worten zunächst<br />

sehen müssen, wohin das<br />

Meego-Engagement führt.<br />

AMD werde sich zunächst<br />

nur im Netbook- und Tablet-<br />

Segment einbringen und<br />

nicht etwa bei Smartphones,<br />

Autocomputern und vernetztem<br />

Fernsehen. Ontario und<br />

Zacete fungieren als Prüfstein,<br />

wie die Nachfrage bei Herstellern<br />

und der Community ist.<br />

AMDs künftiges Engagement<br />

hängt natürlich auch davon<br />

ab, welchen Erfolg Meego<br />

hat. „OEMs erhalten damit<br />

ein Baukastenprinzip, anders<br />

als etwa bei Android, das ja<br />

vor allem von einem einzigen<br />

Hersteller entwickelt wird“,<br />

so Schläger.<br />

Meego entstand zu Beginn<br />

des Jahres 2010 aus der Zusammenlegung<br />

von Nokias<br />

Mobil-Betriebssystem Maemo<br />

und Intels Mobil-Betriebssystem<br />

Moblin und liegt in den<br />

Händen der <strong>Linux</strong> Foundation.<br />

AMD ist eines von neun<br />

Gold-Mitgliedern der <strong>Linux</strong><br />

Foundation, zahlt also 100 000<br />

US-Dollar pro Jahr, und verfügt<br />

damit im Gegensatz zum<br />

Platin-Mitglied Intel (400 000<br />

Dollar) über keinen sicheren<br />

Vorstandssitz.<br />

n


Java Community Process: 4 Spezifikationen, 2 Rücktritte<br />

Die Gremien des Java Community<br />

Process (JCP) haben<br />

über die kommenden Spezifikationen<br />

abgestimmt und die<br />

von Oracle forcierte Roadmap<br />

für Java SE 7 und Java SE 8<br />

angenommen. Das freie Mitglied<br />

Tim Peierls und später<br />

die Apache Foundation erklärten<br />

daraufhin ihren Rücktritt<br />

aus dem „SE/ EE Executive<br />

Committee“.<br />

Das Komitee hat in seiner Sitzung<br />

über die so genannten<br />

Java Specification Requests<br />

(JSR) Zustimmung zu den<br />

JSRs 334, 335, 336 und 337<br />

erteilt. Im JSR-000336 geht<br />

es um den Java SE 7 Release<br />

Content und beim JSR-000337<br />

um das nämliche für Java SE<br />

8. Bei den Wahlergebnissen<br />

zu Java SE 7 [http://​jcp.​org/​en/​<br />

​jsr/​results?​id=5111]​stimmten die<br />

Apache Foundation, Google<br />

und der unabhängige Entwickler<br />

Tim Peierls gegen den<br />

Vorschlag.<br />

Die Apache Foundation hat<br />

den JCP nach der Abstimmung<br />

verlassen. Sie war seit zehn<br />

Jahren Mitglied des Exekutivkomitees<br />

und wurde in dieser<br />

Zeit viermal zum Mitglied des<br />

Jahres gewählt. Peierls hatte<br />

sein Votum von einer Stimmenthaltung<br />

bis zum „Nein“<br />

verschärft und dies mit seiner<br />

Unzufriedenheit über die<br />

mangelnde Information Oracles<br />

zu den Lizenzbedingungen<br />

für Java SE 7 begründet. Der<br />

JCP sei außerdem zu sehr von<br />

Firmeninteressen geprägt: Er<br />

habe die Hoffnung verloren,<br />

dass der JCP etwas Sinnvolles<br />

zustande bringe, schreibt er<br />

in seinem Blog. Google nennt<br />

als Begründung für die Gegenstimme<br />

die Lizenzierungsbestimmungen<br />

für die Testsuite<br />

Java Compatibility Kit (TCK)<br />

diskriminierend.<br />

Auch die Beteiligten, die mit<br />

„Ja“ gestimmt haben, geben<br />

überwiegend ihrem Unmut<br />

über die Lizenzierungspolitik<br />

für das TCK Ausdruck, darunter<br />

SAP, IBM und Red Hat.<br />

Sie haben sich jedoch nicht<br />

dazu durchringen können,<br />

dem Aufruf von Apache Folge<br />

zu leisten und ihre Ja-Stimme<br />

zu verweigern.<br />

Die Forderung der Apache<br />

Software Foundation nach<br />

einem frei zugänglichen TCK<br />

zieht sich schon seit vielen<br />

Jahren hin und war schon unter<br />

der Sun-Ägide ein großes<br />

Thema. Das TCK ist notwendig,<br />

um Anwendungen auf<br />

Kompatibilität mit Java-Spezifikationen<br />

testen zu können,<br />

und nur unter kommerzieller<br />

Lizenz erhältlich.<br />

n<br />

Zahlen & Trends 02/<strong>2011</strong><br />

Aktuell<br />

www.linux-magazin.de<br />

13<br />

Super MUC: Leibniz-Rechenzentrum will Platz 1<br />

Das Münchner Rechenzentrum<br />

der Bayerischen Akademie<br />

der Wissenschaften hat<br />

einen neuen Supercomputer<br />

mit einer geplanten Leistung<br />

von 3 Petaflops pro Sekunde<br />

in Auftrag gegeben. Übernächstes<br />

Jahr soll er an der<br />

Spitze der Top-500-Liste der<br />

leistungsfähigsten Rechner<br />

stehen. Mitte 2012 soll der<br />

Rechner am Leibniz-Rechenzentrum<br />

(LRZ) in München-<br />

Garching in Betrieb gehen.<br />

Den entsprechenden Vertrag<br />

unterschrieben kürzlich der<br />

Vorsitzende des RZ-Direktoriums<br />

Arndt Bode und Martin<br />

Jetter, Vorsitzender der<br />

Geschäftsführung der IBM<br />

Deutschland GmbH.<br />

Das Investitions- und Betriebsvolumen<br />

für die nächsten<br />

sechs Jahre beziffern Kunde<br />

und Dienstleister auf 83 Millionen<br />

Euro, plus 50 Millionen<br />

für Gebäude-Erweiterungen.<br />

Das Bundesland Bayern und<br />

die Bundesrepublik Deutschland<br />

tragen jeweils die Hälfte<br />

der Kosten, weil der Superrechner<br />

für den Technologiestandort<br />

Deutschland und<br />

wegen seiner Energiesparsamkeit<br />

als Zukunftsinvestition<br />

gilt. Der Neue soll neben<br />

den 3 Petaflops pro Sekunde<br />

Foto: IBM<br />

Spitzen-Rechenleistung über<br />

320 TByte Hauptspeicher und<br />

insgesamt bis zu 12 PByte<br />

Festspeicher verfügen.<br />

Damit soll er „zu den leistungsfähigsten<br />

Universalrechnern<br />

der Welt gehören“, freut<br />

sich das LRZ. Dafür sorgen<br />

rund 110 000 Prozessorkerne.<br />

Ein Prototyp für die Wasserkühlung mit Wärmerückgewinnung steht an der ETH<br />

Zürich: Das Kühlwasser wärmt gleichzeitig das Gebäude.<br />

Der rasante Kraftprotz soll für<br />

die Forscher-Community zum<br />

Beispiel die Entwicklung des<br />

Universums simulieren, das<br />

heiße Erdinnere modellieren<br />

oder die Strömungseigenschaften<br />

technischer und natürlicher<br />

Systeme berechnen.<br />

Neben der Rechenleistung<br />

heben LRZ und IBM die neue<br />

Kühltechnologie des Systems<br />

hervor, bei der Kühlflüssigkeit<br />

– die bis zu 40 Grad Celsius<br />

warm sein darf – direkt an<br />

Prozessoren und RAM vorbeifließt<br />

und anschließend das<br />

Gebäude heizt.<br />

Der „Super MUC“ genannte<br />

Rechner soll den bisher<br />

Stärksten im LRZ-Hause ersetzen:<br />

den seit 2006 arbeitenden<br />

HLRB II. Erklärungen zur<br />

Kühltechnik des Super MUC<br />

und zu den HPC-Anwendungsfällen<br />

des LRZ sind online<br />

auf [http://​www.​lrz.​de/​presse/​<br />

ereignisse/​supermuc‐vertrag‐2010​<br />

‐12‐13/]​erhältlich.<br />

n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 02/<strong>2011</strong><br />

14<br />

<strong>Linux</strong> Foundation macht in Embedded<br />

Der Embedded-Entwickler Richard<br />

Purdie steht als neuer<br />

Fellow auf der Gehaltsliste der<br />

<strong>Linux</strong> Foundation. Mit den<br />

Fellow-Positionen verfügt die<br />

<strong>Linux</strong> Foundation über Mittel<br />

und Wege, Entwicklungen in<br />

der <strong>Linux</strong>-Welt zu unterstützen,<br />

die sie für wichtig hält.<br />

Einen solchen Bedarf sehe sie<br />

bei Embedded <strong>Linux</strong>, begründet<br />

sie ihren Schritt.<br />

Als Fellow wird Richard Purdie<br />

ganztags am Yocto-Projekt<br />

und zum Beispiel an dessen<br />

Poky-Buildsystem arbeiten,<br />

das er vergangenen Oktober<br />

mitgegründet hat, sowie am<br />

Openembedded-Projekt, bei<br />

dem er seit 2004 Entwickler<br />

ist. Eine zeitliche Begrenzung<br />

der Fellowship gibt die <strong>Linux</strong><br />

Foundation nicht an.<br />

Der Master-Physiker war bisher<br />

als Embedded-<strong>Linux</strong>-Architekt<br />

bei Intel tätig, seit die<br />

Firma seinen ehemaligen Arbeitgeber<br />

Opened Hand übernommen<br />

hatte. Weitere Projekte,<br />

an denen Purdie mitgearbeitet<br />

hat, sind Clutter, der<br />

X-Server, Sharps Handheld-<br />

Betriebssystem Zaurus und<br />

der Profiler Oprofile. Beim<br />

Kernel war Purdie unter anderem<br />

Maintainer des Backlightund<br />

LED-Subsystems.<br />

Mit Purdie gibt es derzeit fünf<br />

Fellows der <strong>Linux</strong> Foundation.<br />

Der bekannteste ist Linus<br />

Torvalds. Die <strong>Linux</strong>-Organisation<br />

finanziert zum Beispiel<br />

auch Till Kamppeter und sein<br />

Openprinting-Projekt [https://​<br />

​www.​linuxfoundation.​org/​programs/​<br />

developer/​fellowship]. n<br />

Novell profitiert von Steuervorteilen<br />

Für das vierte Geschäftsquartal<br />

2010 verbucht der <strong>Linux</strong>-<br />

Anbieter einen Gewinn von<br />

322 Millionen US-Dollar. Allerdings<br />

kommen davon nur<br />

rund 22 Millionen aus dem<br />

operativen Geschäft. Die zusätzlichen<br />

rund 300 Millionen<br />

US-Dollar stammen aus nicht<br />

näher erläuterten Steuervorteilen,<br />

die Novell im Hinblick<br />

auf künftige Geschäfte einfordern<br />

konnte. Die Verluste im<br />

vergleichbaren Quartal 2009<br />

(Minus 259 Millionen) waren<br />

allerdings ebenfalls von einer<br />

Korrektur der Vermögenswerte<br />

beeinflusst.<br />

Der Umsatz sank von 216 auf<br />

207 Millionen US-Dollar, verglichen<br />

mit dem vierten Quartal<br />

2009. Softwarelizenzen<br />

trugen 31 Millionen US-Dollar<br />

zum Umsatz bei, die Sparte<br />

Maintenance und Subskriptionen<br />

153 Millionen. Während<br />

das Lizenzgeschäft damit zum<br />

Vorjahresquartal nahezu unverändert<br />

blieb, sanken die<br />

Einnahmen für Wartung und<br />

Subskriptionen um rund vier<br />

Prozent.<br />

Bei der ebenfalls veröffentlichten<br />

Jahresbilanz 2010 gibt<br />

Novell einen Umsatzrückgang<br />

von 862 Millionen im<br />

Jahr 2009 auf rund 812 Millionen<br />

US-Dollar in diesem<br />

Jahr an. Der Gewinn, durch<br />

die 308 Millionen aus Steuern<br />

begünstigt, stieg auf 378 Millionen<br />

US-Dollar. Verglichen<br />

mit einem Minus von 213 Millionen<br />

im Jahr 2009 kommt<br />

der <strong>Linux</strong>-Distributor also auf<br />

dem Papier gut weg. n<br />

Alan Clark übernimmt Open-Suse-Vorsitz<br />

Attachmate will Novell kaufen<br />

Der bei Novell angestellte<br />

Manager Alan Clark hat den<br />

Vorsitz im Open-Suse-Board<br />

angetreten. Laut seinem Arbeitgeber<br />

zeigte Clark seine<br />

Qualitäten bei den ersten<br />

Schritten hin zur Gründung<br />

einer Open-Suse-Stiftung.<br />

Foto: Novell.<br />

Auf Alan Clarks Todo-Liste als Open-<br />

Suse-Vorsitzender steht eine Stiftung<br />

für das Open-Source-Projekt.<br />

Alan Clark war zuvor schon<br />

in den Führungsgremien der<br />

<strong>Linux</strong> Foundation tätig. Dort<br />

hält er den Vorsitz des <strong>Linux</strong><br />

Foundation Vendor Advisory<br />

Council. Seine Aktivposten<br />

lassen sich fortsetzen: Novell<br />

zählt in der Ankündigung<br />

Clarks Engagement bei der<br />

<strong>Linux</strong> Standard Base, dem<br />

Open Document Format, bei<br />

Open Source for America,<br />

DMTF und der Cloud Security<br />

Alliance auf.<br />

Zu den vorrangigen Aufgaben<br />

Clarks bei Open Suse<br />

zählt nun die Gründung einer<br />

Open-Suse-Stiftung. Von<br />

Clarks Erfahrungsschatz in diversen<br />

technischen Komitees<br />

erhoffen sich Novell und das<br />

Projekt aber auch Fortschritte<br />

in Sachen Interoperabilität<br />

und Standards.<br />

n<br />

Der IT-Anbieter Attachmate<br />

Corporation hat mitgeteilt,<br />

das <strong>Linux</strong>-Unternehmen<br />

Novell für 2,2 Milliarden<br />

US-Dollar einvernehmlich<br />

übernehmen zu wollen. Den<br />

Kaufpreis gibt das von einer<br />

Investorengruppe gehaltene<br />

Attachmate mit 6,10 US-Dollar<br />

pro Aktie an. Die Novell-Aktie<br />

hatte zuvor mit 5,90 US-Dollar<br />

geschlossen. Im Zuge der<br />

Vereinbarung soll ein Novell-<br />

Großaktionär, die Elliott Management<br />

Corporation, Anteilseigner<br />

bei der Attachmate<br />

Corporation werden.<br />

Der Verkauf von geistigem<br />

Eigentum im Technologie-Bereich<br />

an die CPTN Holdings<br />

LLC sei für das Zustandekommen<br />

des Handels relevant. Die<br />

CPTN ist ein von Microsoft ins<br />

Leben gerufenes Konsortium.<br />

Bei dem Verkauf an die CPTN<br />

geht es laut Novell um rund<br />

450 Millionen US-Dollar.<br />

Attachmate plant bei Zustandekommen<br />

des Handels ein<br />

Markenportfolio aus Attachmate,<br />

Net-IQ, Novell und<br />

Suse, heißt es seitens Novell:<br />

Jeff Hawn, Vorstandsvorsitzender<br />

und CEO der Attachmate<br />

Corporation, wolle die<br />

Novell- und Suse-Lösungen<br />

ausbauen.<br />

Novells Präsident und CEO<br />

Ron Hovsepian hebt die komplementären<br />

Produkte und<br />

sich überscheidende Kundschaft<br />

der Unternehmen<br />

hervor. Die Übernahme soll<br />

im ersten Quartal <strong>2011</strong> abgeschlossen<br />

sein, wenn die Novell-Aktionäre<br />

und die an der<br />

Prüfung beteiligten Behörden<br />

zustimmen.<br />

n


Canonical verliert COO<br />

Erst Anfang des Jahres im<br />

Zuge von Mark Shuttleworth’<br />

Rückzug aus dem Tagesgeschäft<br />

zu Canonical gestoßen,<br />

verlässt Chief Operating<br />

Officer Matt Asay das <strong>Linux</strong>-<br />

Unternehmen bereits wieder.<br />

Die Entscheidung sei ihm sehr<br />

schwer gefallen, schreibt Asay<br />

in seinem Blog.<br />

Doch die Aussicht, beim auf<br />

HTML5 spezialisierten Startup<br />

Strobe wieder in den Kontakt<br />

mit Kunden zu treten und ein<br />

Unternehmen Stück für Stück<br />

aufzubauen, habe ihn zu sehr<br />

gereizt: „Ich liebe es, knietief<br />

in Kundenangelegenheiten zu<br />

stecken.“ Bei Strobe werde<br />

er in seinen Lieblingsressorts<br />

Sales und Business Development<br />

tätig sein.<br />

Asay bezeichnet diesen Weggang<br />

als schwierigste Entscheidung<br />

seines Lebens. Noch nie<br />

habe er ein Unternehmen, zumal<br />

ein so aussichtsreiches,<br />

nach so kurzer Zeit verlassen.<br />

Zuvor war Asay vier Jahre bei<br />

Alfresco. Jetzt tritt er einem<br />

Startup bei.<br />

Asay würde Canonical gerne<br />

verbunden bleiben, was allerdings<br />

CEO Jane Silber zu<br />

entscheiden habe, schreibt er<br />

in seinem Weblog. Die bedauert<br />

den Weggang Assays und<br />

sucht jetzt nach einem Nachfolger<br />

für den am 17. Dezember<br />

ausgeschiedenen COO. n<br />

Google hostet Apache-Extras.org<br />

Auf der neuen Hosting-Seite<br />

Apache-Extras.org sollen jene<br />

Apache-nahen Projekte ein<br />

Zuhause finden, die nicht Teil<br />

der offiziellen Apache-Projektfamilie<br />

sein können. Das<br />

hat die Apache Foundation<br />

bekannt gegeben. Bei den Extras<br />

soll alles Apache-relevante<br />

seinen Platz finden, das weder<br />

zu den Apache-Projekten<br />

noch zu den Incubator-Projekten<br />

noch zu den Apache-<br />

Labs oder anderen Initiativen<br />

gehört.<br />

Die Extras-Projekte stehen<br />

aber nicht unter der Ägide<br />

der Apache Foundation: Sie<br />

können jede beliebige Lizenz<br />

und Prozess-Organisation verwenden.<br />

Das heißt auch, dass<br />

die Apache Foundation sich<br />

von jeder Qualitätssicherung<br />

lossagt. Dass ausgerechnet<br />

Google jetzt eine solche Site<br />

betreibt, lässt Spekulationen<br />

zu, ob das Unternehmen um<br />

die Anerkennung seiner vor<br />

Kurzem als Apache-Projekt<br />

vorgeschlagenen Wave-Software<br />

bangt.<br />

Die Apache Foundation lässt<br />

dazu wissen, dass sie die neue<br />

Plattform gut findet: „Je größer<br />

der Pool der potenziellen<br />

Beiträger ist, desto mehr Innovation<br />

werden wir sehen“,<br />

findet Ross Gardler, der Vice<br />

President of Community Development<br />

bei Apache. n<br />

Zahlen & Trends 02/<strong>2011</strong><br />

Aktuell<br />

www.linux-magazin.de<br />

15<br />

Anzeige<br />

1. Lernen Sie!<br />

Ja, ã training-on-the-jobÒ , oft praktiziert, aber nicht<br />

Ÿ berzeugend. Denn die Kollegen haben nie Zeit<br />

fŸ r echte ErklŠ rungen, au§ erdem werden ã NeueÒ<br />

sofort von dem vereinnahmt, was im Unternehmen<br />

schon seit Ewigkeiten tradiert wird. Warum gibt's<br />

seit 2000 Jahren Schulen und UniversitŠ ten?<br />

ã LERNENÒ ist eine vollwertige TŠ tigkeit, auf die<br />

man sich konzentrieren mu§ , die man nicht 'mal<br />

eben so nebenbei tun kann, und die immer auch<br />

eine Prise ã ErneuerungÒ beinhalten sollte!<br />

2. Ineffiziente Arbeit nicht akzeptieren!<br />

Je spezialisierter Sie arbeiten, desto weniger<br />

echte, fachliche Kollegen haben Sie in Ihrem eigenen<br />

Unternehmen. Wir stellen deshalb Gruppen<br />

zusammen, in denen Sie neben hilfsbereiten<br />

Kollegen mit Š hnlichen Kenntnissen an IHREM<br />

Projekt arbeiten. Und stŠ ndig ist ein fachlicher Berater<br />

anwesend.<br />

ã Guided CoworkingÒ nennen wir das, und es<br />

kš nnte DIE Lš sung fŸ r so manches Projekt sein,<br />

das in Ihrer Firma ã haktÒ .<br />

3. Hintergrund<br />

Wer den riesigen OpenSource-Baukasten schnell<br />

beherrschen mu§ , geht zu einer unserer Ÿ ber 100<br />

Schulungen. Wer das bereits kann, aber schneller<br />

mit seinen Projekten vorankommen will, der<br />

kommt mit seiner Arbeit zum Guided Coworking.<br />

Wir sind eine der erfolgreichsten Schulungseinrichtungen<br />

im gesamten Bereich ã OpenSourceÒ<br />

- sowohl fŸ r Admins, als auch fŸ r Entwickler.<br />

Siehe www.linuxhotel.de


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 02/<strong>2011</strong><br />

16<br />

Who writes <strong>Linux</strong>? Kernel-Report 2010<br />

In ihrem Jahresbericht über<br />

die Beiträge zum <strong>Linux</strong>-Kernel<br />

setzt die <strong>Linux</strong> Foundation Red<br />

Hat auf Platz eins. Ihr Zah lenwerk<br />

zu Kernel 2.6.35 [http://​<br />

​www.​linuxfoundation.​org/​docs/​lf_<br />

linux_kernel_development_2010.​pdf]<br />

analysiert 33 335 Dateien und<br />

rund 13,5 Millionen Zeilen<br />

Code. Verglichen mit dem Vorjahresreport<br />

gibt es einen<br />

Rückgang bei den Beiträgen,<br />

was aber dem Entwicklungszyklus<br />

entspreche. Die Zahl<br />

der Entwickler sei nur marginal<br />

zurückgegangen.<br />

Der Kernel 2.6.35 erfuhr 2010<br />

täglich einen Zuwachs von<br />

7896 Zeilen Code. 5037 Zeilen<br />

verschwanden und 1802<br />

Zeilen änderten sich. Dafür<br />

verantwortlich sind 1187 Entwickler<br />

und 184 Firmen. In<br />

den letzten 5,5 Jahren steuerte<br />

ein Drittel der Entwickler nur<br />

genau ein Patch bei. Amüsiert<br />

berichtet die Foundation, dass<br />

Linus Torvalds mit insgesamt<br />

886 Beiträgen nicht in den<br />

Top-30 auftauche. Allerdings<br />

fehlten die „Merge Commits“<br />

in der Statistik.<br />

n<br />

Partnerschaft beim Cloud Computing<br />

Red Hat und Eucalyptus haben<br />

eine strategische Partnerschaft<br />

über gemeinsame Entwicklungen<br />

für Cloud Com puting<br />

geschlossen. Ziel sei es, mit<br />

Eucalyptus aufgebaute Clouds<br />

über das offene API Delta cloud<br />

anzusprechen. Auch soll Eucalyptus<br />

teilweise über die Management-Tools<br />

von RHEV, der<br />

Virtualisierungslösung von<br />

Red Hat, zu verwalten sein.<br />

FSFE kritisiert EU-Kontrakt<br />

Eucalyptus ist eine Cloud-<br />

Implementierung, die weitgehend<br />

kompatibel zu Amazons<br />

EC2 ist. Bisher setzt vor allem<br />

die Ubuntu-Distribution auf<br />

Eucalyptus. Eucalyptus-Geschäftsführer<br />

Marten Mickos<br />

kündigt die fertige Deltacloud-<br />

Implementierung für Mitte<br />

<strong>2011</strong> an. Betaversionen zum<br />

Testen soll es aber schon früher<br />

geben.<br />

n<br />

Gnome vervierfachte Spenden in 2009<br />

Die Gnome Foundation hat –<br />

kurz vor Toresschluss des Jahres<br />

2010 – ihren aufwändig<br />

gestalteten und bilderreichen<br />

Jahresbericht des Gnome-Projekts<br />

für 2009 vorgelegt.<br />

Das ungefähr 50-seitige PDF<br />

unter [http://​foundation.​gnome.​<br />

​org/​reports/​gnome‐annual‐report‐​<br />

2009.​pdf] ist von den Webseiten<br />

der Gnome Foundation<br />

ladbar, taucht aber nicht im<br />

Bericht-Index auf.<br />

2009 verzeichnete das Gnome-<br />

Projekt demnach 40 527 Bugreports,<br />

doch im Verlauf des<br />

Schön und bilderreich: Gnomes Jahresbericht<br />

2009.<br />

Jahres konnten die Entwickler<br />

fast ebenso viele schließen.<br />

Als finanziellen Erfolg wertet<br />

die Gnome-Foundation<br />

die freien Spenden, die sich<br />

auf 30 000 US-Dollar mehr als<br />

vervierfacht haben. Das Marketingteam<br />

hat es laut Bericht<br />

geschafft, mit der Kampagne<br />

„Friends of Gnome“ das Spendenvolumen<br />

von 7000 Dollar<br />

im Jahr 2008 auf 30 000 Dollar<br />

im Jahr 2009 mehr als zu<br />

vervierfachen. Das Advisory<br />

Board habe sich trotz schwerer<br />

wirtschaftlicher Zeiten bereit<br />

erklärt, den eigenen Jahresbeitrag<br />

zu erhöhen.<br />

Vom Event- und Reiseteam<br />

berichtet Stormy Peters, dass<br />

es für 39 Gnome-Entwickler<br />

die Reise zum Gnome-Summit<br />

organisiert habe, dem im Jahr<br />

2009 gemeinsam mit KDE<br />

veranstalteten Gran Canaria<br />

Desktop Summit. Schließlich<br />

wird sich die Gnome Foundation<br />

bald um einen Sysadmin<br />

erweitern und damit von eineinhalb<br />

auf zweieinhalb Mitarbeiter<br />

anwachsen. n<br />

Die Free Software Foundation<br />

Europe (FSFE) findet harsche<br />

Worte für einen von der EU-<br />

Kommission abgeschlos senen<br />

Rahmenvertrag über proprietäre<br />

Software-Lieferungen<br />

und -Services im Wert von<br />

189 Millionen Euro.<br />

Die Entscheidung, kritisiert<br />

die FSFE, stehe im krassen<br />

Gegensatz zu den eigenen Regeln<br />

und Richtlinien, dass im<br />

öffentliche Sektor offene und<br />

Die Firma Salesforce wird den<br />

Ruby-Hosting-Provider Heroku<br />

für 212 Millionen US-Dollar<br />

kaufen. Salesforce bietet bisher<br />

Software zur Pflege von<br />

Kundenbeziehungen (Customer<br />

Relationship Management,<br />

CRM) als kostenpflichtigen<br />

Webdienst an.<br />

Jüngst hatte Salesforce auch<br />

den neuen <strong>Datenbank</strong>-Dienst<br />

Database.com und eine Webanwendung<br />

für Echtzeit-Geschäftskommunikation<br />

namens<br />

Chatter vorgestellt. Heroku<br />

hat sich auf das Hosting<br />

inter operable Produkte Verwendung<br />

finden sollen.<br />

Als schlechte Entscheidung<br />

für Europa tituliert FSFE-<br />

Präsident Karsten Gerloff<br />

den Handel: Statt die Vorteile<br />

freier Software zu nutzen, mache<br />

sich die Kommission von<br />

Herstellern abhängig. Wenn<br />

sie selbst aufgestellte Richtlinien<br />

wie die Digital Agenda<br />

ignoriert, mache sie sich außerdem<br />

unglaubwürdig. n<br />

Salesforce kauft Ruby-Hoster Heroku<br />

von Ruby-Anwendungen auf<br />

der eigenen Cloud-Plattform<br />

spezialisiert. Etliche Bibliotheken<br />

[https://​github.​com/​heroku]<br />

stellte Heroku der Ruby-Community<br />

unter einer freien Lizenz<br />

zur Verfügung.<br />

Salesforce verbindet mit dem<br />

Kauf von Heroku die Vision<br />

einer „Cloud 2“, wie Salesforce-Manager<br />

Marc Benioff<br />

es nennt. Diese „nächste Ära<br />

des Cloud Computing“ sei<br />

„mobil, sozial und finde in<br />

Echtzeit statt“, meint Benioff.<br />

(ake/ mhu/ uba/ ofr) n


STRATO Pro<br />

Server-Technik, die begeistert!<br />

NEU!<br />

Jetzt Server mit echten<br />

Hexa-Core Prozessoren für:<br />

Leistungsstarke<br />

Dedicated Server<br />

Vorkonfigurierte<br />

Managed Server<br />

Auf alle Hexa-Core Server<br />

50% Rabatt<br />

für die ersten 3 Monate!<br />

Telefon: 0 18 05 - 00 76 77<br />

(0,14 €/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42 €/Min.)<br />

strato-pro.de


Aktuell<br />

www.linux-magazin.de Kernel-News 02/<strong>2011</strong><br />

18<br />

Zacks Kernel-News<br />

RTC I: Echtzeituhr bedient mehrere Prozesse<br />

Eine der Stärken von <strong>Linux</strong><br />

liegt in seiner Verfügbarkeit<br />

für verschiedenste Hardware.<br />

Immer wieder erscheinen<br />

neue Ports für den wachsenden<br />

Zoo an Plattformen. Dabei<br />

geht es nicht nur darum,<br />

den C-Quelltext einfach für<br />

eine andere Architektur in<br />

Maschinencode zu übersetzen<br />

– die unterschiedlichen<br />

Maschinen haben auch verschiedene<br />

Features.<br />

Die Aufgabe der Kernel entwickler<br />

besteht also darin,<br />

eine Abstraktion zu erfinden,<br />

die diese ganzen Unterschiede<br />

verbirgt und den Userland-<br />

Programmen eine einheitliche<br />

Schnittstelle bietet.<br />

Ein gutes Beispiel dafür liefert<br />

die Real-Time Clock (RTC).<br />

Meist handelt es sich dabei<br />

um eine batteriebetriebene<br />

Echtzeituhr, die die Zeit auch<br />

dann misst, wenn der Computer<br />

ausgeschaltet ist.<br />

Manche RTCs zählen einfach<br />

die vergehenden Sekunden,<br />

andere benützen sogar einen<br />

Kalender. Manche können<br />

Alarm auslösen, indem sie<br />

Interrupt-Requests aussenden,<br />

andere nicht. Manche<br />

Modelle können einen Alarm<br />

gerade mal für die nächsten<br />

24 Stunden einplanen, andere<br />

sogar für Jahrhunderte.<br />

© Gennadiy Poznyakov, 123RF.com<br />

Mit diesem schwierigen Hardware-Szenario<br />

setzt sich der<br />

IBM-Entwickler John Stultz<br />

auseinander, der ein Patch<br />

für den RTC-Code des Kernels<br />

eingereicht hat. Konkret<br />

hat er sich mit dem Problem<br />

beschäftigt, dass bisher nicht<br />

mehr als ein Prozess zugleich<br />

die Real-Time Clock nutzen<br />

kann. Die Schwierigkeit liegt<br />

Der Zeitmesser des Computers: Auf dem Mainboard wird die Real-Time Clock<br />

hauptsächlich durch ihre Batterie sichtbar.<br />

darin, dass der Prozess ein<br />

Lock auf die Datei »/dev/<br />

rtc« anlegen muss, um den<br />

gewünschten Alarm abzuwarten.<br />

John setzt daher auf<br />

eine Abstraktionsschicht zwischen<br />

RTC und Userland. Die<br />

Schicht, im Grunde ein Prozess,<br />

überwacht die Echtzeituhr<br />

und führt Buch über alle<br />

Prozesse, die auf ihre Alarmsignale<br />

warten. Tritt ein Alarm<br />

auf, gibt die Zwischenschicht<br />

ihn an den wartenden Prozess<br />

weiter.<br />

Bei all den bestehenden Hardware-Varianten<br />

hätte John<br />

eigentlich mit mehr Kritik<br />

an seinem Patch gerechnet –<br />

immerhin hatte er den Code<br />

lediglich auf x86-Hardware<br />

getestet. Doch das Echo der<br />

Mailingliste war durchaus positiv.<br />

Möglicherweise wird der<br />

exklusive Zugriff auf »/dev/<br />

rtc« bald der Vergangenheit<br />

angehören.<br />

n<br />

RTC II: Vereinfachter Treiber aus dem Android-Projekt<br />

Bei seiner Arbeit an der RTC-<br />

Unterstützung ist John Stultz<br />

auf einen Alarmtreiber im<br />

Android-Quelltext gestoßen.<br />

Der Code, unter [http://​android.​<br />

​git.​kernel.​org] erhältlich, verhält<br />

sich allerdings anders,<br />

als es die Posix-Spezifikation<br />

vorschreibt.<br />

Der Android-Treiber weckt<br />

das System aus dem Suspend,<br />

wenn der eingestellte<br />

Timer abläuft. Das tut auch<br />

Johns Posix-konformer Code,<br />

der allerdings anders vorgeht<br />

und damit auch andere Vorund<br />

Nachteile besitzt. Kurz<br />

gefasst, der Android-Code ist<br />

einfacher gestrickt, macht es<br />

aber Userspace-Programmen<br />

schwer, selbst die Echtzeituhr<br />

zu nutzen.<br />

John findet allerdings, die Einfachheit<br />

des Android-Treibers<br />

wiege seine Nachteile auf.<br />

Daher würde er den Code<br />

gerne im offiziellen Quelltext<br />

des Kernels sehen. Zu diesem<br />

Zweck nahm er zunächst einige<br />

Änderungen vor, denn<br />

der ursprüngliche Android-<br />

Code hält sich nicht an die<br />

Vorgaben des Torvalds’schen<br />

Kernels. Dann schickte er<br />

seine Patches an die Kernel-<br />

Mailingliste. Dort gab es<br />

kaum Kritik, lediglich Richard<br />

Cochran von der Firma Omicron<br />

machte einige technische<br />

Anmerkungen.<br />

Ob Johns Anpassungen in das<br />

Android-Projekt zurückfließen<br />

werden, ist unklar. Möglicherweise<br />

übernehmen die Mobil-<br />

Entwickler den Code aus dem<br />

offiziellen Kernel, vielleicht<br />

bleiben sie aber auch bei ihrer<br />

eigenen Variante.<br />

n


Premium Real-Time Mode<br />

Der IBM-Entwickler Vernon<br />

Mauery hat einen Echtzeittreiber<br />

für den Premium Real-<br />

Time Mode (PRTM) seines<br />

Arbeitgebers eingereicht. Der<br />

Treiber für IBMs System-X-<br />

Hardware bietet eine Sys-FS-<br />

Schnittstelle, um das System<br />

in diesen Echtzeitmodus zu<br />

versetzen.<br />

Das Bios-Feature erlaubt es,<br />

Userland-Code ohne Unterbrechung<br />

durch System Management<br />

Interrupts (SMI)<br />

auszuführen. Damit können<br />

Programme ohne die Sicherheits-<br />

und Ressourcen-Beschränkungen<br />

des Betriebssystems<br />

auf die Hardware<br />

zugreifen.<br />

Im Premium Real-Time Mode<br />

lassen sich Echtzeitanwendungen<br />

ausführen oder Debugger<br />

betreiben. Doch kann es dabei<br />

auch zu spektakulären Sicherheitslücken<br />

kommen.<br />

Die Mailingliste nahm Vernons<br />

Code mit allgemeinem<br />

Wohlwollen auf. Vermutlich<br />

wird er aber noch eigene<br />

Maßnahmen treffen müssen,<br />

um die Sicherheitsprobleme<br />

der Sys-FS-Schnittstelle einzudämmen.<br />

n<br />

OptiMAlE<br />

lEiStung<br />

prO wAtt<br />

Kernel-News 02/<strong>2011</strong><br />

Aktuell<br />

www.linux-magazin.de<br />

19<br />

Staging-Dokumentation<br />

AMD Opteron 4162 EE 6-Core<br />

1,7 GHz / 2,0 GT/s / 75 W<br />

AMD Opteron 4164 EE 6-Core<br />

1,8 GHz / 2,0 GT/s / 75 W<br />

AMD Opteron 4176 HE 6-Core<br />

2,4 GHz / 6,4 GT/s / 75 W<br />

AMD Opteron 4130 4-Core<br />

2,6 GHz / 6,4 GT/s / 75 W<br />

Andres Salomon, unter anderem<br />

Debian-Entwickler, hat<br />

die Dokumentation zum Staging-Verzeichnis<br />

des Kernels<br />

verbessert. In seinem Patch<br />

für die Textdatei »Documentation/development-process/2.<br />

Process« erläutert er, was „ich<br />

selbst gern gewusst hätte,<br />

als ich einen Treiber für Staging<br />

an Greg Kroah-Hartman<br />

schickte“.<br />

Wie Andres schreibt, finden<br />

sich unter »drivers/staging«<br />

unfertige Treiber. Dort stehen<br />

sie den Anwendern zum Gebrauch<br />

und Testen zu Verfügung<br />

und erreichen damit ein<br />

breites Publikum. Gleichzeitig<br />

signalisiert der Speicherort<br />

aber auch, dass die Treiber<br />

instabil und nicht für den Produktiveinsatz<br />

bestimmt sind.<br />

Stabilisieren sie sich, wandern<br />

sie aus Staging in ein anderes<br />

Treiber-Verzeichnis.<br />

Die Anleitung ist also für jeden<br />

brauchbar, der einen Treiber<br />

in den <strong>Linux</strong>-Kernel bringen<br />

möchte, der noch nicht die<br />

Qualitätsanforderungen der<br />

Kernel-Chefs erfüllt.<br />

Manchmal landen Treiber aus<br />

anderen Teilen des Kernels<br />

aber im Staging-Verzeichnis,<br />

um deren Maintainer eine<br />

Mahnung zu schicken: „Kümmere<br />

dich bald um Deinen<br />

Treiber, sonst verschwindet<br />

er ganz aus dem Kernel.“ In<br />

anderen Fällen sind einzelne<br />

Treiber so gut wie unentbehrlich<br />

für <strong>Linux</strong>, dümpeln<br />

aber trotzdem in Staging vor<br />

sich hin. Dahinter stecken<br />

Entwickler, die sich die Möglichkeit<br />

offenhalten möchten,<br />

das Treiber-API noch zu ändern.<br />

So brauchen sie nicht<br />

auf Rückwartskompatibilität<br />

zu achten – ein Thema, das<br />

schon oft zu heftigen Flame<br />

Wars geführt hat.<br />

Andres beschäftigt sich in seiner<br />

Dokumentation nicht mit<br />

den Konflikten in der Treiberentwicklung.<br />

Seine Anleitung<br />

bietet einfach eine leicht verständliche<br />

Einführung. (Zack<br />

Brown/ mhu)<br />

n<br />

AMD Opteron 4170 HE 6-Core<br />

2,1 GHz / 6,4 GT/s / 75 W<br />

AMD Opteron 4122 4-Core<br />

2,2 GHz / 6,4 GT/s / 75 W<br />

AMD Opteron 4174 HE 6-Core<br />

2,3 GHz / 6,4 GT/s / 75 W<br />

AMD Opteron 4180 6-Core<br />

2,6 GHz / 6,4 GT/s / 75 W<br />

AMD Opteron 4184 6-Core<br />

2,8 GHz / 6,4 GT/s / 75 W<br />

Zu finden im Happyware Onlineshop:<br />

http://www.happyware.de/AMD-Opteron-4100/<br />

OnlinE SErvEr KOnfiguriErEn<br />

Wussten Sie schon? Im Happyware Onlineshop können Sie<br />

auch gleich einen passenden Komplettserver mit<br />

AMD Opteron 4100 Prozessoren konfigurieren.


Aktuell<br />

www.linux-magazin.de InSecurity News 02/<strong>2011</strong><br />

20<br />

InSecurity News<br />

Glibc<br />

Horde<br />

Ein Programmierfehler in der<br />

Glibc hat zur Folge, dass entfernte<br />

Angreifer DoS-Attacken<br />

durchführen können. Die<br />

Schwachstelle befindet sich<br />

in der Funktion »regcomp()«.<br />

Eine Attacke bewirkt, dass die<br />

Funktion viel Stack-Speicher<br />

verbraucht und dann abstürzt.<br />

Betroffen ist Version<br />

2.12.1. [http:// securitytracker.<br />

com/ ? id=1024832]<br />

n<br />

Ein Fehler im Horde Application<br />

Framework versetzt entfernte<br />

Angreifer in die Lage,<br />

XSS-Attacken durchzuführen.<br />

Ursache ist ein Fehler beim<br />

Verarbeiten von HTML-Code<br />

in Vcard-Attachments. Eine<br />

manipulierte URL ermöglicht<br />

die Attacke. Betroffen sind<br />

Versionen vor 3.3.11. [http://<br />

lists. horde. org/ archives/ announce/<br />

2010/ 000574. html] n<br />

Chrome<br />

Ghostscript<br />

In Googles Browser Chrome<br />

haben Entwickler mehrere<br />

Schwachstellen erspäht. Entfernte<br />

Angreifer sind durch sie<br />

in der Lage, Programme ihrer<br />

Wahl mit Anwender-Rechten<br />

oder DoS-Attacken auszuführen.<br />

Eine manipulierte Webseite<br />

ermöglicht die Attacke.<br />

Ein weiteres Problem im<br />

Browser umgeht den Pop-up-<br />

Blocker. Betroffen sind Versionen<br />

vor der 8.0.552.215.<br />

[http:// googlechromereleases.blogspot.com/2010/12/stable-beta-chan<br />

-<br />

nel-updates.html]<br />

n<br />

Eine Schwachstelle im Backend<br />

für Postscript und PDF<br />

– Ghostscript – hat zur Folge,<br />

dass ein entfernter Angreifer<br />

Befehle mit den Rechten des<br />

Anwenders ausführen darf.<br />

Die Attacke ist mit einer manipuliert<br />

konstruierten Fontdatei<br />

möglich. Sobald der Anwender<br />

sie lädt, löst das einen<br />

Off-by-one Integer Overflow<br />

der Funktion »Ins_MINDEX()«<br />

in der Datei »libgs.so.8« aus.<br />

Betroffen sind Versionen 8.7<br />

und älter. [http:// securitytracker.<br />

com/ ? id=1024785]<br />

n<br />

Tabelle 1: Sicherheit bei den großen Distributionen<br />

Distributor Quellen zur Sicherheit<br />

Bemerkungen<br />

Debian Infos: [http://www.debian.org/security/] Das Debian-Projekt stellt aktuelle Security Advisories direkt auf die<br />

Liste: [http://lists.debian.org/debian-security-announce/] Homepage und betreibt eine allgemeine Sicherheitsseite. Die<br />

Betreff: [SECURITY] [DSA … 1)<br />

Meldungen sind als HTML-Seiten mit Links zu den Updates realisiert.<br />

Fedora Infos: [http://fedoraproject.org/wiki/Security] Beim Fedora-Projekt ist die Security-Info-Seite leider schwer zu finden.<br />

Liste: [https://admin.fedoraproject.org/updates/]<br />

Die Updates-Seite sammelt unter anderem Security Advisories und<br />

Betreff: [SECURITY] Fedora … 1)<br />

zeigt diese als HTML-Seiten, die zu den Update-Paketen verlinken.<br />

Gentoo Infos: [http://www.gentoo.org/security/] Die Gentoo-Homepage verlinkt auf einen eigenen Bereich zu<br />

Liste: [http://www.gentoo.org/security/en/glsa/index.xml] Sicherheitsthemen. Die Advisories liegen als HTML-Seiten vor, die als<br />

Betreff: [GLSA … 1)<br />

Codebeispiele zeigen, wie man das Patch einspielt.<br />

Mandriva Infos: [http://www.mandriva.com/security/] Mandriva betreibt eine kleine Einstiegsseite zu Sicherheitsthemen.<br />

Liste: [http://www.mandriva.com/security/advisories/] Diese verlinkt unter anderem zu den Security Advisories, die zwar als<br />

Betreff: [Security Announce] [ MDVSA-… 1)<br />

HTML-Seiten vorliegen, die Updates sind darin aber nicht verlinkt.<br />

Open Suse Infos: [http://en.opensuse.org/Security] Die Sicherheitsseite im Open-Suse-Wiki informiert über Features und<br />

Liste: [http://lists.opensuse.org/opensuse-security-announce/] Security-Updates. Das Advisory-Archiv ist als HTML ausgeführt,<br />

Betreff: [security-announce] … 1)<br />

die Texte verlinken direkt auf die Update-Pakete.<br />

Red Hat Infos: [http://www.redhat.com/security/] Red Hat betreibt eine allgemeine Security-Info-Seite, bindet auf der<br />

Liste: [http://www.redhat.com/security/updates/]<br />

Homepage aber den Link zur Security-Update-Seite ein. Die Security<br />

Betreff: [RHSA-… 1)<br />

Advisories sind HTML-Seiten ohne Links zu den Updates.<br />

Suse Infos: [http://www.novell.com/linux/security/] Die Sicherheitsseite enthält allgemeine Infos zum Thema. Novell listet<br />

Liste: [http://www.novell.com/linux/security/advisories.html] die Security Advisories in einer eigenen Seite. Die Texte sind als HTML<br />

Betreff: [suse-security-announce] … 1)<br />

ausgeführt und verlinken direkt auf die Update-Pakete.<br />

Ubuntu Infos: [https://help.ubuntu.com/community/Security] Das News-Menü der Startseite verlinkt zum Archiv der Security-<br />

Liste: [http://www.ubuntu.com/usn/]<br />

Mailingliste. Die Advisories darin sind Ascii-Text in einem HTML-Rahmen.<br />

Betreff: [USN-… 1)<br />

Die Updates sind folglich nicht verlinkt.<br />

1)<br />

Alle Distributoren kennzeichnen ihre Security-Mails im Betreff.


Open SSL<br />

Wegen einer Sicherheitslücke<br />

in der Kryptobibliothek Open<br />

SSL sind entfernte Angreifer<br />

in der Lage, DoS-Attacken<br />

durchzuführen. Weiter ist<br />

auch das Ausführen von Befehlen<br />

mit höheren Rechten<br />

möglich. Die Attacke auszulösen<br />

gelingt durch das Senden<br />

manipulierter Benutzerdaten.<br />

Diese nutzen eine Race Condition<br />

und einen Buffer Overflow<br />

in den Parsing-Routinen<br />

der TLS-Erweiterung aus.<br />

Betroffen sind die Versionen<br />

0.9.8f bis 0.9.8o, 1.0.0 und<br />

1.0.0a. [http:// www. openssl. org/<br />

news/ secadv_20101116. txt]<br />

Eine weitere Schwachstelle<br />

der Software erlaubt entfernten<br />

Angreifern die Ciphersuite<br />

herunterzustufen. Dies kann<br />

zur Folge haben, dass die<br />

Verbindung eine schwächere<br />

Verschlüsselung verwendet<br />

und so weitere Attacken vereinfacht.<br />

Betroffen sind Versionen<br />

vor 0.9.8q und 1.0.0<br />

vor 1.0.0c.<br />

In der J-PAKE-Implementation<br />

von Open SSL steckt ebenfalls<br />

ein Fehler, durch den Angreifer<br />

den Shared-Secret-Key-Mechanismus<br />

umgehen. Betroffen<br />

sind Versionen vor 1.0.0c.<br />

[.../ secadv_20101202. txt] n<br />

Android<br />

Aufgrund einer Sicherheitslücke<br />

in Googles Betriebssystem<br />

für mobile Geräte Android ist<br />

ein entfernter Angreifer in<br />

der Lage, an den Inhalt von<br />

SD-Karten zu gelangen. Die<br />

Attacke führt bereits dann<br />

zum Erfolg, wenn Übeltäter<br />

HTML-Seiten manipulieren.<br />

Rufen Benutzer diese auf, so<br />

lädt Android eine Datei auf<br />

das Gerät herunter und führt<br />

sie anschließend mit SD-Leserechten<br />

aus. Betroffen ist Version<br />

2.2 mit dem Codenamen<br />

Froyo. [http:// thomascannon. net/<br />

blog/ 2010/ 11/ android-data-stealing<br />

-vulnerability/]<br />

n<br />

InSecurity News 02/<strong>2011</strong><br />

Aktuell<br />

www.linux-magazin.de<br />

21<br />

Norton Mobile Security Beta für Android<br />

CVS<br />

Eine Schwachstelle in der<br />

Sicherheitsapplikation Norton<br />

Mobile Security Beta für<br />

Android-Systeme lässt einen<br />

entfernten Angreifer an die<br />

Logdateien des Norton-Programms<br />

gelangen.<br />

Diese enthalten möglicherweise<br />

sensible Information<br />

über das System wie zum<br />

Beispiel die Wipe- und Lock-<br />

Benutzerdaten des Android-<br />

Geräts. Betroffen ist Version<br />

1.0 beta. [http:// symantec. com/<br />

business/ security_response/securityupdates/detail.jsp?<br />

fid=security_<br />

advisory& pvid=security_advisory&<br />

year=2010& suid=20101111_00] n<br />

Eine Schwachstelle in CVS erlaubt<br />

es entfernten Angreifern,<br />

Code mit Anwender-Rechten<br />

auszuführen. Die Attacke<br />

gelingt mit einer manipulierten<br />

RCS-Datei und löst einen<br />

Heap Overflow aus. Betroffen<br />

ist Version 1.11.23. [http://<br />

securitytracker. com/ ? id=1024795] n<br />

Realplayer<br />

System Tap<br />

Eine Lücke im Realplayer hat<br />

zur Folge, dass entfernte Angreifer<br />

Befehle mit den Rechten<br />

des Anwenders ausführen<br />

können. Die Attacke ist mit<br />

Hilfe einer speziellen Median-<br />

Datei möglich. Diese muss<br />

eine manipulierte Image-Map<br />

enthalten. Das Laden der<br />

Datei löst dann einen Buffer<br />

Overflow im Realplayer aus.<br />

Betroffen sind Versionen 1.1.5<br />

und älter. [http:// securitytracker.<br />

com/ ? id=1024738]<br />

Die Abspielsoftware für diverse<br />

digitale Medien enthält<br />

noch eine Reihe weiterer<br />

Schwachstellen. Sie haben<br />

alle den Effekt, dass ein entfernter<br />

Angreifer Programmcode<br />

mit den Rechten des<br />

Anwenders ausführen darf.<br />

Entsprechende Attacken sind<br />

über spezielle Realplayer-<br />

Inhalte möglich. Betroffen<br />

sind Versionen vor 14.0.0.<br />

[http:// service. real. com/ realplayer/<br />

security/ 12102010_player/ en/] n<br />

System Tap enthält zwei<br />

Bugs, die lokalen Angreifern<br />

höhere Rechte auf dem System<br />

zuerkennen oder die zu<br />

DoS-Attacken einladen. Das<br />

Problem besteht darin, dass<br />

der »staprun«-Prozess Umgebungsvariablen<br />

falsch prüft,<br />

bevor er »modprobe« ausführt.<br />

So gelangen Angreifer an höhere<br />

Rechte und entfernen<br />

womöglich nicht benötigte<br />

Module. [http:// securitytracker.<br />

com/ ? id=1024754]<br />

n


Aktuell<br />

www.linux-magazin.de InSecurity News 02/<strong>2011</strong><br />

22<br />

Tomcat<br />

Eine Schwachstelle in Apaches<br />

Tomcat-Manager lässt entfernte<br />

Angreifer XSS-Attacken<br />

durchführen. Sie gelingen mit<br />

Hilfe einer konstruierten URL.<br />

Ursache sind Eingabekontrollfehler<br />

beim Verarbeiten der<br />

Variablen »orderBy« und »sort<br />

request« in der Datei »session-<br />

List.jsp«. Nutzt der Angreifer<br />

das aus, erhalten seine Anfragen<br />

einen anderen Sicherheitskontext.<br />

Durch den erhält er<br />

Zugriff auf sensible Daten wie<br />

etwa Cookies mit Session-IDs.<br />

Betroffen sind die Versionen<br />

6.0.12 bis 6.0.29 und 7.0.0 bis<br />

7.0.4. [http:// securitytracker. com/<br />

? id=1024764] n<br />

Jboss<br />

Schwachstellen der Jboss<br />

Enterprise Application Platform<br />

erlauben es entfernten<br />

Angreifern, Code mit Server-<br />

Rechten auszuführen. Weiter<br />

sind DoS- und Cross-Site-Forgery-Attacken<br />

möglich. Die<br />

Angriffe erfolgen mittels spezieller<br />

Benutzereingaben. Betroffen<br />

davon ist die Version<br />

4.3.0. [https:// rhn. redhat. com/<br />

errata/ RHSA-2010-0938. html]<br />

Ein weiterer Bug macht Jboss<br />

verwundbar für DoS-Attacken<br />

entfernter Angreifer, wenn der<br />

spezielle Daten an den Jboss<br />

Remoting Listener sendet. Betroffen<br />

ist Version 4.3.0. [.../<br />

RHSA-2010-0964. html] n<br />

Bind<br />

Sicherheitslücken in Bind<br />

führen dazu, dass entfernte<br />

Angreifer DoS-Attacken reiten<br />

können. Ein Problem besteht<br />

darin, dass der Server bestimmte<br />

Arten negativer DNS-<br />

Antworten in seinem Cache<br />

ablegt, sie aber nicht wieder<br />

entfernt. Stellt der Angreife<br />

sehr viele Anfragen, bringt er<br />

damit den Nameserver zum<br />

Absturz.<br />

Betroffen sind die Versionen<br />

9.0.x bis 9.7.2-P2, 9.4-ESV bis<br />

9.4-ESV-R3 sowie 9.6-ESV bis<br />

9.6-ESV-R2. [http:// www. isc. org/<br />

software/ bind/ advisories/ cve-2010<br />

-3613], [... / cve-2010-3614] sowie<br />

[... / cve-2010-3615] n<br />

Wireshark<br />

Ein Programmfehler in Wireshark<br />

lässt entfernte Angreifer<br />

DoS-Attacken durchführen.<br />

Der Buffer Overflow tritt im<br />

Code zur Analyse von LDSS-<br />

Daten auf. Manipulierte Daten<br />

auf dem untersuchten Netz<br />

lösen ihn aus. Betroffen sind<br />

Versionen 1.2.0 bis 1.2.12<br />

und 1.4.0 bis 1.4.1. [http://<br />

www. wireshark. org/ security/ wnpa<br />

-sec-2010-13. html]<br />

Ähnliche Probleme bereiten<br />

ZCL-Daten von Zig Bee.<br />

Durch sie zwingt der Angreifer<br />

den Netzanalysator in eine<br />

Endlosschleife. Betroffen sind<br />

Versionen 1.4.0 bis 1.4.1. [.../<br />

wnpa-sec-2010-14. html] n<br />

Tabelle 2: <strong>Linux</strong>-Advisories vom 12.11.2010 bis 17.11.2010<br />

In Zusammenarbeit mit dem DFN-CERT<br />

Zusammenfassungen, Diskussionen und die vollständigen Advisories sind unter [http:// www. linux-magazin. de/ dfncert/ view/ID] zu finden.<br />

ID <strong>Linux</strong> Fehlerhafte Software<br />

56369 Suse Sammeladvisory<br />

56380 Mandriva Freetype<br />

56385 Fedora Freetype<br />

56388 Red Hat Pidgin<br />

56389 Red Hat Freetype<br />

56390 Fedora Mod_fcgi<br />

56391 Fedora Cups<br />

56392 Red Hat Kernel<br />

56393 Red Hat PAM<br />

56397 Red Hat Open Swan<br />

56398 Generisch Open SSL<br />

56400 Generisch Reader, Acrobat<br />

56442 Mandriva Open SSL<br />

56443 Fedora PAM<br />

56444 Red Hat Thunderbird<br />

56447 Red Hat Systemtap<br />

56448 Red Hat Systemtap<br />

56460 Mandriva Perl-CGI<br />

56468 Fedora Systemtap<br />

56491 Fedora Freetype<br />

56492 Fedora Open SSL<br />

56506 Fedora Gif2png<br />

56510 Fedora Libtlen<br />

56511 Fedora Mingw32<br />

56513 Fedora Cups<br />

56514 Debian Open SSL<br />

56519 Fedora DHCP<br />

56520 Fedora Clam AV<br />

56521 Fedora Clam AV<br />

56532 Red Hat Kernel<br />

56533 Fedora Bzip2<br />

56534 Red Hat PostgreSQL<br />

56536 Fedora Libtlen<br />

56552 Fedora Suricata<br />

56554 Mandriva Gnucash<br />

56555 Fedora Udunits2<br />

ID <strong>Linux</strong> Fehlerhafte Software<br />

56558 Mandriva Mono<br />

56583 Fedora Dracut<br />

56584 Fedora Udev<br />

56608 Debian Wireshark<br />

56609 Mandriva Wireshark<br />

56624 Red Hat CVS<br />

56625 Fedora Open Connect<br />

56626 Fedora Libvpx<br />

56628 Mandriva Libxml2<br />

56688 Debian Kernel<br />

56689 Suse Sammeladvisory<br />

56699 Red Hat DHCP<br />

56700 Red Hat Wireshark<br />

56701 Mandriva Kerberos<br />

56702 Red Hat Kerberos<br />

56703 Red Hat Kerberos<br />

56704 Mandriva Kerberos<br />

56720 Debian Libxml2<br />

56721 Debian Kerberos<br />

56723 Red Hat Kernel<br />

56724 Fedora Kernel<br />

56725 Red Hat Reader<br />

56728 Red Hat MRG<br />

56731 Fedora Iced Tea<br />

56732 Fedora Kdenetwork<br />

56758 Fedora Udev<br />

56778 Mandriva Kernel<br />

56779 Fedora Kernel<br />

56796 Red Hat Quagga<br />

56797 Red Hat KVM<br />

56885 Red Hat Apache<br />

56887 Fedora Dnsperf<br />

56888 Fedora Clam AV<br />

56889 Fedora Bind-dyndb-ldap<br />

56890 Fedora Bind<br />

56891 Fedora Bare FTP<br />

ID <strong>Linux</strong> Fehlerhafte Software<br />

56894 Fedora Kernel<br />

56895 Mandriva Clam AV<br />

56922 Fedora Kerberos<br />

56923 Suse Acrobat, Reader<br />

56925 Fedora Bind<br />

56926 Suse Sammeladvisory<br />

56944 Mandriva Open SSL<br />

56946 Red Hat Thunderbird<br />

56947 Red Hat Kernel<br />

56948 Red Hat Firefox<br />

56949 Red Hat Thunderbird<br />

56950 Red Hat Seamonkey<br />

56968 Fedora Open SSL<br />

56969 Mandriva Firefox<br />

56970 Fedora Thunderbird<br />

56989 Fedora Thunderbird<br />

56990 Red Hat Open SSL<br />

56991 Red Hat Open SSL<br />

56992 Red Hat Exim<br />

56993 Debian Exim<br />

56994 Suse Exim<br />

56996 Debian XUL Runner<br />

56998 Fedora Mozilla<br />

56999 Red Hat Open SSL<br />

57000 Fedora Kerberos<br />

57004 Debian Bind<br />

57005 Red Hat Bind<br />

57006 Red Hat Bind<br />

57009 Debian Collectd<br />

57010 Mandriva Perl-CGI-Simple<br />

57011 Fedora Fontforge<br />

57012 Fedora Open TTD<br />

57041 Mandriva Bind<br />

57042 Fedora Xfig<br />

57043 Mandriva Perl-CGI-Simple<br />

57044 Mandriva PHP Intl


WEBHOSTING · SCHULUNGEN · SUPPORT<br />

Speziell optimiert für<br />

Joomla!, TYPO3, WordPress, Magento...<br />

Bereits ab 4,99 Euro pro Monat *<br />

Die Tarifneuheit für professionelles CMS Webhosting<br />

Die Webhostingtarife 5.0 von Mittwald CM Service bieten jetzt noch mehr Leistung für Ihre Internetseiten.<br />

Die optimierten Hostingumgebungen erfüllen alle Anforderungen moderner Webanwendungen.<br />

!<br />

Einfache Versionsupdates Ihrer Webanwendungen<br />

Proaktive Softwaresicherheit<br />

Tägliche Datensicherung bis zu 4 Wochen verfügbar<br />

Innovative Wiederherstellungs-Technologie<br />

Jetzt<br />

30 Tage<br />

kostenlos und<br />

unverbindlich<br />

testen!<br />

Kompetenter Softwaresupport<br />

Business Hosting 5.0 Profi Hosting 5.0<br />

Managed Server 5.0<br />

Der kostengünstige CMS Einstieg:<br />

ideal geeignet für kleine und<br />

mittlere Webseiten<br />

Bis zu 10 GB Speicherplatz<br />

und 100 GB Transfervolumen<br />

Einfache Installation und Updates<br />

Ihrer CMS und Webanwendungen<br />

Über 20 Content Management<br />

Systeme und Webanwendungen<br />

verfügbar<br />

Tägliche Datensicherung:<br />

bis zu 1 Woche verfügbar<br />

Garantierte Hostingleistung für<br />

professionelle CMS Projekte:<br />

optimal für Unternehmen,<br />

Institutionen und Vereine<br />

Bis zu 4 Prozessorkerne<br />

und 2 GB Arbeitsspeicher<br />

Bis zu 100 GB Speicherplatz<br />

und 500 GB Transfervolumen<br />

Höchste Sicherheit durch eigene<br />

IP Adresse und SSL Zertifikat<br />

Tägliche Datensicherung:<br />

bis zu 4 Wochen verfügbar<br />

NEU: Jetzt mit 300%<br />

Magento<br />

Performance für Ihr E-Commerce<br />

Maximale Leistung durch<br />

dedizierte Markenhardware<br />

von Hewlett Packard und Intel<br />

Bis zu 16 Prozessorkerne<br />

und 128 GB Arbeitsspeicher<br />

Umfangreiche Managed Services:<br />

Monitoring, Administration,<br />

Optimierung, Sicherheitsupdates<br />

Tägliche Datensicherung:<br />

bis zu 4 Wochen verfügbar<br />

bereits ab 4,99 € netto pro Monat* bereits ab 34,99 € netto pro Monat* bereits ab 129,- € netto pro Monat*<br />

Alle Angebote richten sich ausschließlich an Gewerbetreibende.<br />

*Die einmalige Einrichtungsgebühr für die Business und Profi Hostingpakete 5.0 beträgt 29,- € zzgl. MwSt., für die Managed Server 5.0 149,- € zzgl. MwSt. Die Vertragslaufzeiten und Abrechnungszeiträume betragen für<br />

die Business Hostingpakete 5.0 zwischen 6 und 12 Monate, für die Profi Hostingpakete 5.0 zwischen 3 und 6 Monate und für die Managed Server 5.0 zwischen 12 und 36 Monate. Automatische Vertragsverlängerung um die<br />

jeweilige Vertragslaufzeit, wenn der Vertrag nicht mit einer Frist von 30 Tagen zum Ende der jeweiligen Vertragslaufzeit gekündigt wird. Alle Angebote richten sich ausschließlich an Gewerbetreibende. Alle genannten Preise<br />

verstehen sich monatlich zzgl. MwSt.<br />

Wir beraten Sie gerne! Rufen Sie uns an.<br />

✆ 0800 / 440 3000 oder besuchen Sie uns im Internet: www.mittwald.de


Aktuell<br />

www.linux-magazin.de InSecurity News 02/<strong>2011</strong><br />

24<br />

PHP<br />

Eine Sicherheitslücke in PHP<br />

führt dazu, dass ein entfernter<br />

Angreifer DoS-Attacken<br />

durchführen kann. Der Programmierfehler<br />

steckt sich in<br />

der IMAP-Erweiterung »ext/<br />

imap/php_imap.c«.<br />

Manipulierte IMAP-Benutzernamen<br />

oder Passwörter lösen<br />

das Problem aus. Es handelt<br />

sich um eine doppelte Freigabe<br />

von Speicherbereichen,<br />

die die Applikation zum Absturz<br />

bringt. Unbestätigt ist,<br />

ob auch das Ausführen von<br />

Wordpress<br />

Programmcode damit möglich<br />

ist. Betroffen sind die Versionen<br />

5.2.14 und 5.3.3. [http://<br />

securitytracker. com/ ? id=1024761]<br />

Ein weiterer Eingabekontrollfehler<br />

in PHP erlaubt einem<br />

entfernten Angreifer XSS-Attacken<br />

durchzuführen. Weiter<br />

sind auch SQL-Injection-Attacken<br />

möglich.<br />

Der Programmierfehler befindet<br />

sich in der Funktion<br />

»utf8_decode()«. Betroffen<br />

sind Versionen 5.3.3 und älter.<br />

[.../? id=1024797] n<br />

Mozilla<br />

Die Mozilla-Entwickler haben<br />

einige Schwachstellen<br />

entdeckt: Entfernte Angreifer<br />

können im Firefox Code ausführen,<br />

indem sie konstruierte<br />

HTML-Seiten anbieten und<br />

von ihren Opfern besuchen<br />

lassen. Betroffen sind Versionen<br />

3.5 vor 3.5.16 und 3.6 vor<br />

3.6.13. [http:// securitytracker.<br />

com/ ? id=1024848]<br />

Von ähnlichen Problemen ist<br />

auch Thunderbird 3.0 vor<br />

3.0.11 und 3.1 vor 3.1.7 betroffen.<br />

[... / ? id=1024846]<br />

Eine weitere Sicherheitslücke<br />

im Firefox erlaubt einem entfernten<br />

Angreifer die Location-<br />

Bar des Browsers zu fälschen.<br />

Betroffen sind Versionen 3.5<br />

vor 3.5.16 und 3.6 vor 3.6.13.<br />

[http:// www. mozilla. org/ security/<br />

announce/ 2010/ mfsa2010-83. html]<br />

Die Code-Reviews haben außerdem<br />

ergeben, dass der<br />

Schutzmechanismus vor XSS-<br />

Attacken einen Fehler enthält.<br />

Verwendet der Angreifer eine<br />

manipulierte Version der Zeichensätze<br />

»x-mac-arabic«,<br />

»x-mac-farsi« oder »x-mac-hebrew«,<br />

erlaubt ihm dies, den<br />

Mechanismus zu umgehen.<br />

Betroffen sind Versionen 3.5<br />

vor 3.5.16 und 3.6 vor 3.6.13.<br />

[.../ mfsa2010-84. html] n<br />

Aufgrund eines Fehlers in<br />

Wordpress ist ein entfernter<br />

angemeldeter Angreifer in<br />

der Lage, SQL-Befehle auszuführen.<br />

Ursache ist ein Programmierfehler<br />

in der Funktion<br />

»do_trackbacks()« des<br />

Skripts »wp-includes/comment.php«.<br />

Für die Attacke<br />

benötigt der Angreifer »publish_posts«-<br />

und »edit_published_posts«-Rechte.<br />

Betroffen<br />

sind Versionen vor 3.0.2.<br />

[http:// wordpress. org/ news/ 2010/ 11/<br />

wordpress-3-0-2/]<br />

Eine weitere Sicherheitslücke<br />

in Wordpress hat ebenfalls<br />

zur Folge, dass ein entfernter<br />

angemeldeter Angreifer unberechtigt<br />

Posts anderer Benutzer<br />

manipuliert. Ursache<br />

ist ein Programmierfehler im<br />

XML-RPC Publishing Interface.<br />

Betroffen sind die Versionen<br />

vor 3.0.3. [http:// codex.<br />

wordpress. org/ Version_3. 0. 3] n<br />

MRG<br />

Sicherheitslücken in Red Hat<br />

Enterprise MRG Messaging<br />

und Grid haben zur Folge,<br />

dass ein lokaler Angreifer höhere<br />

Rechte erlangen kann.<br />

Der Angreifer ist in der Lage,<br />

Jobs mit den Rechten anderer<br />

Nicht-Root-Benutzer auszuführen.<br />

[https:// rhn. redhat. com/<br />

errata/ RHSA-2010-0921. html] n<br />

Kernel<br />

Ein Kernelbug hat zur Folge,<br />

dass lokale Angreifer DoS-<br />

Attacken reiten können. Der<br />

Programmierfehler befindet<br />

sich in der Funktion »inotify_<br />

init()« und erlaubt ihr sehr<br />

viel Speicher zu verbrauchen.<br />

Betroffen sind Releases bis zu<br />

2.6.36.1. [http:// securitytracker.<br />

com/ ? id=1024788]<br />

n<br />

Angeblich FBI-Backdoor in Open BSD<br />

Seit Dezember herrscht unter Open-BSD-Entwicklern Aufruhr: Gregory<br />

Perry, ein ehemaliger Entwickler des Projekts, behauptet, vor rund zehn<br />

Jahren habe das FBI versucht über Open-Source-Entwickler eine Backdoor<br />

in den VPN- und Firewall-Code einzuschleusen [http://ezlx.de/L1a1]. Er<br />

selbst sei damals bei einem Unternehmen beschäftigt gewesen, das diese<br />

Aktivitäten im Auftrag der US-Polizeibehörde koordiniert hätte.<br />

Er bezichtigte insbesondere einen weiteren Entwickler, Jason L. Wright,<br />

diese Aktivitäten geleitet zu haben, legte aber keinen konkreten Nachweis<br />

dafür vor. Die Anschuldigungen erhebe Perry erst jetzt, da er zuvor<br />

durch eine zehn Jahre währende Verschwiegenheitsklausel gebunden sei,<br />

erklärte er gegenüber Open-BSD-Chef Theo de Raadt.<br />

Der veröffentlichte zwar die ursprünglich ihm persönlich zugestellte<br />

Nachricht, wollte den Wahrheitsgehalt der Anschuldigungen jedoch weder<br />

bestätigen noch dementieren. Der beschuldigte Wright seinerseits hat<br />

den Ausführungen von Perry unmittelbar widersprochen [http://ezlx.<br />

de/L1a2]. Seither diskutiert die Open-BSD-Community, ob es möglich<br />

sei, Code mit Backdoors in das Betriebssystem einzuschleusen. Genua,<br />

eines der Unternehmen, das Open BSD in seinen Produkten einsetzt,<br />

teilte dem <strong>Linux</strong>-<strong>Magazin</strong> auf Anfrage mit, dass es gegenwärtig den mit<br />

CVS verwalteten Code nach möglichen Backdoors, Covert Channels oder<br />

Side-Channel-Attacken untersucht – bislang ohne Befund.<br />

Auswirkungen auf Open Source<br />

Anwender von Open Source wie auch proprietärer Software können sich<br />

nur auf Indizien verlassen: Es scheint denkbar, dass Nachrichtendienste,<br />

Wettbewerber oder Strafverfolgungsbehörden versuchen an zentraler<br />

Stelle Code ihrer Wahl einzuschleusen – Belege gibt es dafür jedoch nur<br />

selten. So ebbte die erhitzte Diskussion um den Bundestrojaner mittlerweile<br />

wieder ab.<br />

Die in der Diskussion geäußerte Vorstellung, dass diese Organisationen<br />

Code einbringen, der eine Rootshell liefert oder ein Master-Passwort<br />

implementiert, wäre naiv. Wahrscheinlicher wären etwa Änderungen, die<br />

die Schlüsselstärken reduzieren, um dann mit der geballten Rechenkraft,<br />

über die diese Organisationen verfügen, Ciphertexte zu dekodieren.


Ralf Mader,<br />

Qualitätssicherung<br />

„Qualitätssicherung bei<br />

Krenn ist ein frustrierender<br />

Job. Man findet einfach<br />

keine Fehler.“<br />

Thomas Krenn steht für höchste Qualität:<br />

Von der Server-Bestellung bis zur Auslieferung<br />

ist der gesamte Prozess darauf<br />

ausgerichtet, Fehler gar nicht erst zu<br />

ermöglichen. Und um auf Nummer sicher<br />

zu gehen, wird jeder Server noch einmal<br />

von uns getestet, bevor wir ihn verschicken.<br />

Server individuell konfigurieren unter 08551 9150-0 oder www.thomas-krenn.com


Aktuell<br />

www.linux-magazin.de InSecurity News 02/<strong>2011</strong><br />

26<br />

Neue Releases<br />

USBsploit: Proof-of-Concept<br />

einer Reverse-TCP-Backdoor.<br />

[http:// packetstormsecurity. org/<br />

files/ view/ 96713/ usbsploit-0. 5<br />

-BETA-linux-i686. tar. gz]<br />

Dns2tcp: Tool zum Tunneln<br />

von TCP-Verbindungen über<br />

DSN-Netzwerkdaten. [http://<br />

www. hsc. fr/ ressources/ outils/<br />

dns2tcp/ index. html. en]<br />

Xen<br />

Eine Sicherheitslücke in der<br />

Virtualisierung Xen führt<br />

dazu, dass ein lokaler Angreifer<br />

DoS-Attacken durchführen<br />

kann. Dies hat zur Folge, dass<br />

die meisten »xm«-Befehle nicht<br />

mehr funktionieren. [http://<br />

xenbits. xensource. com/ linux-2. 6. 18<br />

-xen. hg? rev/ 59f097ef181b] n<br />

MIT Kerberos<br />

In der MIT-Kerberos-Applikation<br />

wurden mehrere Schwachstellen<br />

entdeckt. Dadurch<br />

kann ein entfernter Angreifer<br />

Signaturen und Prüfsummen<br />

fälschen. Betroffen sind Versionen<br />

5-1.7 und 5-1.8. [http://<br />

web. mit. edu/ kerberos/ advisories/<br />

MITKRB5-SA-2010-007. txt] n<br />

Pidgin<br />

Eine Sicherheitslücke im Pidgin-Client<br />

erlaubt es einem<br />

entfernten Angreifer, DoS-<br />

Attacken auszuführen. Das<br />

Problem tritt beim Verarbeiten<br />

von »X-Status«-Nachrichten<br />

auf. Betroffen sind Versionen<br />

vor 2.7.2. [http:// www.<br />

securityfocus. com/ bid/ 41881] n<br />

Enterprise Virtualization Manager<br />

Open Swan<br />

Aufgrund einer Lücke im Red<br />

Hats Enterprise Virtualization<br />

Manager ist ein lokaler Angreifer<br />

in der Lage, höhere<br />

Rechte auf dem System zu erlangen.<br />

Ursache ist eine Race<br />

Condition in dem Plugin, das<br />

das Simple Protocol for Independent<br />

Computing Environments<br />

(Spice) implementiert.<br />

Die Attacke ist mittels einer<br />

vom Angreifer installierbaren<br />

Named Pipe möglich, die Benutzerdaten<br />

zwischen Plugin<br />

und Spice-Client abfängt.<br />

Betroffen sind Versionen vor<br />

2.2.4. [https:// rhn. redhat. com/<br />

errata/ RHSA-2010-0818. html] n<br />

Im VPN Open Swan haben<br />

Entwickler Sicherheitslücken<br />

entdeckt. Sie haben zur Folge,<br />

dass entfernte angemeldete<br />

Angreifer Befehle mit den<br />

Rechten des Anwenders ausführen<br />

können. Auch sind<br />

DoS-Attacken dadurch möglich.<br />

Ursache ist eine Buffer-<br />

Overflow-Schwachstelle, die<br />

beim Verarbeiten bestimmter<br />

Gateway-Datenpakete auftritt.<br />

Die so konstruierten Pakete<br />

müssen spezielle Werte für<br />

die Parameter »cisco_dns_<br />

info«, »cisco_domain_info«<br />

oder »cisco_banner« enthalten.<br />

Betroffen sind die Versionen<br />

2.6.25 bis 2.6.28. [http://<br />

www. openswan. org/ download/ CVE<br />

-2010-3302/ CVE-2010-3302. txt] sowie<br />

[.../ CVE-2010-3308. txt] n<br />

DHCP<br />

Aus einer Sicherheitslücke<br />

in ISC DHCP folgt, dass ein<br />

entfernter Angreifer DoS-Attacken<br />

ausführen kann. Die<br />

Attacke gelingt beim Senden<br />

Kurzmeldungen<br />

Dot Net Nuke 5.05.01: Eingabekontrollfehler<br />

beim Verarbeiten<br />

von URLs, XSS-Attacken sind möglich.<br />

[http:// www. procheckup.<br />

com/ vulnerability_manager/ vulne -<br />

rabilities/ pr10-19]<br />

IBM Lotus Mobile vor 6.1.4: Fehler<br />

beim Verarbeiten von HTML-<br />

Daten, XSS-Attacke möglich.<br />

[http:// www-01. ibm. com/ support/<br />

docview. wss? uid=swg27020327]<br />

Git bis 1.7.3.3: Eingabekontrollfehler<br />

im Skript »gitweb/gitweb.<br />

perl«, XSS-Attacke möglich.<br />

[http:// git. kernel. org/ ? p=git/ git.<br />

git;a=commit;h=3017ed62f47ce14<br />

a959e2d315c434d4980cf4243]<br />

spezieller Netzwerkdatan an<br />

den Server. Betroffen sind die<br />

Versionen 4.2 vor 4.2.0-P2.<br />

[https:// www. isc. org/ software/ dhcp/<br />

advisories/ cve-2010-3616] n<br />

PHP My FAQ 2.6.11 und 2.6.12<br />

(zwischen 4. und 15. Dezember):<br />

Quelltext enthält Backdoor, entfernte<br />

Angreifer führen Code mit<br />

höheren Rechten aus. [http:// www.<br />

securityfocus. com / bid/ 45442]<br />

PHP Myadmin 3.3.8.1 und 2.11.11.1:<br />

Fehler beim Verarbeiten von Benutzerdaten,<br />

XSS-Attacke möglich.<br />

[... / bid/ 45100]<br />

Helix Server 14.0.1.571: Schwachstelle<br />

im Administrations-Interface,<br />

Cross-Site-Request-Forgery-<br />

Attacke möglich. [... / bid/ 45340]<br />

Python Paste vor 1.7.4: Eingabekontrollfehler,<br />

XSS-Attacke möglich.<br />

[... / bid/ 41160]<br />

Exim<br />

Ein Buffer Overflow in Exim<br />

erlaubt entfernten Angreifern<br />

Code mit Anwender-Rechten<br />

auszuführen. Er tritt in der<br />

Funktion »string_format()«<br />

auf und lässt sich durch eine<br />

E-Mail mit speziellem Header<br />

auslösen. Betroffen sind<br />

Versionen vor 4.70. [http://<br />

securitytracker. com/ ? id=1024858]<br />

Xfig<br />

Aufgrund eines Fehlers in<br />

Xfig ist ein entfernter Angreifer<br />

in der Lage, Befehle mit<br />

den Rechten des Anwenders<br />

auszuführen. Ursache ist ein<br />

Buffer Overflow, der beim<br />

Eine weitere Lücke versieht<br />

lokale Angreifer mit Root-<br />

Rechten, wenn Systeme die<br />

Option »ALT_CONFIG_ROOT_<br />

ONLY« aktivieren. So darf der<br />

Angreifer eine spezielle Konfigurationsdatei<br />

erzeugen, mit<br />

der er eigenen Code ausführt.<br />

Betroffen sind Versionen bis<br />

4.72. [... / ? id=1024859] n<br />

Verarbeiten von speziellen<br />

Farbeinträgen in Dateien der<br />

Endung »fig« auftritt. Betroffen<br />

ist Version 3.2.5. [http://<br />

www. securityfocus. com/ bid/ 45177]<br />

(M. Vogelsberger/mg) n


Versionen mit raffinierten Features und Trends zu schnellen NoSQL-Systemen<br />

<strong>Datenbank</strong>en <strong>2011</strong><br />

Einführung 02/<strong>2011</strong><br />

Titelthema<br />

Frischkost gibts für <strong>Datenbank</strong>-Anwender, seit MySQL, PostgreSQL, Ingres und Firebird neue Versionen aufgelegt<br />

haben. Neu mischt MySQL-Fork Maria DB mit. Revolutionäres Verweigern von SQL ist das Kennzeichen<br />

von Redis, Riak und Cassandra. Die replizierende Couch DB komplettiert den <strong>Magazin</strong>-Schwerpunkt. Nils Magnus<br />

www.linux-magazin.de<br />

27<br />

Inhalt<br />

28 <strong>Datenbank</strong>-Vergleich<br />

Neue Features: MySQL, PostgreSQL,<br />

Ingres und Firebird im Vergleich mit<br />

Oracle 11g.<br />

36 Maria DB<br />

Was taugt die MySQL-Alternative?<br />

38 PostgreSQL 9.0<br />

Die neue Version bringt asynchrone<br />

Replikation und Hochverfügbarkeit.<br />

42 NoSQL<br />

Redis, Riak und Cassandra: Neuartige<br />

<strong>Datenbank</strong>en sorgen für Speed.<br />

52 Couch DB<br />

Die Dokumenten-basierte <strong>Datenbank</strong><br />

Couch DB kann jetzt replizieren.<br />

Eine Lingua Franca zu sein haben<br />

schon viele Formate von sich behauptet.<br />

Bei SQL trifft das aber tatsächlich zu.<br />

Die <strong>Datenbank</strong>-Geschichtsforschung<br />

nennt meist 1975 als Geburtsjahr der<br />

Abfragesprache, die damals SEQUEL<br />

hieß. 35 Jahre sind gleichwohl eine sehr<br />

lange Spanne in der IT, und in der Zwischenzeit<br />

haben sich die Informationsspeicher<br />

erheblich weiterentwickelt. Da<br />

gibt es zusätzliche Typen, trickreichere<br />

Suchmöglichkeiten, effizienteres Ablegen<br />

der Daten auf Speichern, verbesserte<br />

Ausfallsicherheit und vieles mehr.<br />

Der Artikel ab Seite 28 vergleicht die<br />

Features und Stärken der vier populärsten<br />

freien <strong>Datenbank</strong>en MySQL, PostgreSQL,<br />

Ingres, Firebird mit dem proprietären<br />

Schwergewicht Oracle.<br />

Einigkeit herrscht unter Anwendern,<br />

dass sich die einzelnen Softwareprodukte<br />

hinsichtlich ihrer Ausstattung erheblich<br />

unterscheiden. Interessant, was<br />

das für Auswirkungen im Laufe der Entwicklung<br />

einzelner Produkte hatte. Das<br />

gilt besonders für das Beispiel MySQL:<br />

Das RDBMS trat gleich zu Beginn seiner<br />

Entwicklung mit dem Mut zur Lücke<br />

an: Transaktionen? Haben wir nicht! Referenzielle<br />

Integrität? Wer braucht das<br />

schon! Subqueries? Irgendwann vielleicht.<br />

Vor zehn Jahren wurden die Entwickler<br />

für diese Haltung oft belächelt.<br />

Echte <strong>Datenbank</strong>en hatten einfach diese<br />

Funktionen zu haben.<br />

Übersehen hatten diejenigen, die mit<br />

dem Finger zeigten, dass nur wenige die<br />

mit hohem Aufwand erforschten und<br />

implementierten Eigenschaften tatsächlich<br />

benötigen. Dann änderte eine neue<br />

Klasse von Anwendungen, nämlich die<br />

Webapplikationen, das Anforderungsprofil<br />

an <strong>Datenbank</strong>en radikal: Nun war<br />

es wichtig, eine überschaubare Menge<br />

an Daten einfach, zuverlässig und kostengünstig<br />

zu verwalten. Mit diesem<br />

Ansatz gewann MySQL viele Freunde.<br />

Alle gegen alle<br />

Mit dem Kauf durch Sun und dann<br />

Oracle, das geradezu für die entgegengesetzte<br />

Strategie steht, zweifeln einige<br />

Anwender, ob der neue Eigner den alten<br />

Weg fortsetzt oder froh ist, einen lästigen<br />

Wettbewerber besser unter Kontrolle<br />

zu haben. Der Artikel „Vertraut<br />

und doch neu“ ab Seite 36 untersucht,<br />

ob und wie Entwickler rund um MySQL-<br />

Urvater Widenius mit ihrem Fork Maria<br />

DB an alte Werte anknüpfen.<br />

Seine Werte hat PostgreSQL nie aufgegeben:<br />

Es steht jeher für solide, leicht<br />

akademische und daher stets etwas hinterherlaufende<br />

Technik. Das Image will<br />

Version 9, beschrieben ab Seite 38, nun<br />

abschütteln und verweist dazu auf Neuerungen<br />

wie Streaming Replication und<br />

erweiterte Sicherheitsfunktionen.<br />

Diesen Engines ist die Schnittstelle SQL<br />

gemein, die sich als Fluch wie Segen er-<br />

weist: Ihre Universalität erkauft sie sich<br />

durch bisweilen ungelenke Konstrukte:<br />

In reinem SQL Graphen zu durchsuchen<br />

oder gar einen transitiven Abschluss zu<br />

finden, gerät kompliziert – wenn nicht<br />

unmöglich. Wer nur eine Tabelle mit einem<br />

Schlüssel nach wenigen Attributen<br />

durchsucht, braucht viele hoch komplexen<br />

Eigenschaften gar nicht.<br />

Hier tritt eine neue Generation auf,<br />

die bewusst mit der Tradition bricht<br />

und sich provokativ unter dem Banner<br />

„NoSQL“ versammelt. Dabei unterscheiden<br />

sich ihre Vertreter erheblich voneinander.<br />

Der Artikel „Frischer Wind“ ab<br />

Seite 42 untersucht stellvertretend die<br />

drei Projekte Redis, Riak und Cassandra.<br />

Beachtung hat zuletzt Couch DB gefunden,<br />

da das schlanke System sowohl im<br />

Online- wie dem Offlinebetrieb glänzt.<br />

Der Artikel ab Seite 52 beschreibt den<br />

verteilten Ansatz.<br />

Der Schwerpunkt widerlegt, dass <strong>Datenbank</strong>en<br />

als nützlich, aber langweilig<br />

gelten, und zeigt, dass es über »SELECT<br />

* FROM table;« noch viel mehr zu entdecken<br />

gibt.<br />

n


Titelthema<br />

www.linux-magazin.de <strong>Datenbank</strong>vergleich 02 /<strong>2011</strong><br />

28<br />

Neues bei MySQL, PostgreSQL, Ingres, Firebird und Oracle<br />

Schöne neue Bank<br />

Im vergangenen Herbst legten die freien <strong>Datenbank</strong>en MySQL, PostgreSQL, Ingres und Firebird neue Releases<br />

mit einer ganzen Latte Neuerungen auf. Dieser Überblick hilft die Systeme mit den eigenen Anforderungen<br />

abzugleichen und zu klären, ob sich gar das teure Oracle lohnt. Bernd Erk, Jan Kleinert, Peter Kreußel<br />

In den Jahren 2004 bis 2008 hat aber auch<br />

MySQL von anderen Systemen schon länger<br />

bekannte Features übernommen, etwa<br />

Prepared Statements, Stored Procedures<br />

sowie Trigger und Views. Unter der Ägide<br />

von Sun lieferte Version 5.1 Partitionierung,<br />

Event-Scheduler und zeilenbasierte<br />

Replikation, außerdem ein Plugin-API,<br />

das Storage-Engines zur Laufzeit lädt,<br />

sowie tabellenbasierte Serverlogs. Eine<br />

Performance Schema genannte Pseudo-<br />

Storage-Engine erlaubt den Zugriff auf<br />

Performancedaten über Abfragen.<br />

© elcabron, 123RF.com<br />

Die Redewendung „Drum prüfe, wer<br />

sich ewig bindet…“ stammt natürlich<br />

nicht aus der <strong>Datenbank</strong>entwicklung.<br />

Doch auch in diesem unromantischen<br />

Zusammenhang gilt: Bindung an eine so<br />

unternehmenskritische Komponente ist<br />

von eher langfristiger Natur, denn das<br />

„S“ in SQL steht nach gängiger Interpretation<br />

nicht für „Standardized“, sondern<br />

„Structured“.<br />

Kein Standard<br />

Ein Wechsel der <strong>Datenbank</strong>-Engine setzt<br />

also, allen Standardisierungs-Bemühungen<br />

für SQL zum Trotz, auch umfangreichere<br />

Anpassungen der Befehle voraus,<br />

über die eine Anwendung mit der <strong>Datenbank</strong><br />

kommuniziert. Als Hilfestellung bei<br />

der keineswegs einfachen Wahl vergleicht<br />

dieser Artikel die aktuellen Highlights<br />

von MySQL, PostgreSQL, Ingres, Firebird<br />

und Oracle und trägt zudem deren Neuerungen<br />

seit Anfang 2008 zusammen. Tabelle<br />

1 gibt einen detailreichen Überblick<br />

über die Features der Kandidaten.<br />

E MySQL<br />

Die Erfolgsgeschichte von MySQL, der<br />

verbreitetsten <strong>Datenbank</strong>-Engine, begann<br />

mit der Release von Version 3.23 im Januar<br />

2001. Spötter bezeichneten MySQL,<br />

das damals nur elementare Funktionen<br />

enthielt, als besseres Dateisystem. Doch<br />

wegen der von Anfang an guten Performance<br />

und der verständlichen Dokumentation<br />

schwang sich der New comer<br />

trotzdem flott zum meistgenutzten <strong>Datenbank</strong>system<br />

auf.<br />

Seit dieser Zeit ist viel passiert: Die Inno-<br />

DB-Storage-Engine von dem schon 2005<br />

zu Oracle gehörigen Innobase sorgte<br />

für referenzielle Integrität und ACID-<br />

Transaktionen. Allerdings fehlen dieser<br />

Engine, die mit der aktuellen Version 5.5<br />

zum Standard avanciert, nach wie vor<br />

Volltext-Indices.<br />

Oracles halber Schritt<br />

Mit Version 5.5 liegt seit 15. Dezember<br />

die erste Release seit der Übernahme von<br />

Sun durch Oracle vor. Die Entwicklung<br />

der bereits als Alpha-Release verfügbaren<br />

MySQL-Version 6.0 hat Oracle dagegen<br />

eingestellt [1].<br />

Version 5.5 bringt verfeinerte Möglichkeiten<br />

zur Partitionierung: Ranges oder<br />

Listen als Basis für die Partitionierung<br />

dürfen nun einen oder mehrere Spaltenwerte<br />

referenzieren. Auch bei der Replikation<br />

legt MySQL 5.5 nach: Neben der<br />

asynchronen Replikation, bei der sich der<br />

Masterserver nicht um den Erfolg der Replikation<br />

kümmert, und der synchronen<br />

Replikation, bei der Transaktionen erst<br />

nach Abschluss aller Replikationsoperationen<br />

als erfolgreich gelten, strebt die<br />

neue halbsynchrone Replikation einen<br />

Kompromiss zwischen Datensicherheit<br />

und Performance an.<br />

Dort wartet der Masterserver nur noch<br />

während eines konfigurierbaren Zeitfensters<br />

auf maximal einen Slaveclient. Tritt<br />

ein Timeout auf, so schaltet der Server,<br />

um die Performance nicht zu stark zu<br />

beeinflussen, in den unsicheren asyn-


chronen Modus, doch nur so lange, bis<br />

sich einer der Slaves zurückmeldet.<br />

Version 5.5 unterstützt außerdem temporäre<br />

Tabellen. Die XML-Unterstützung<br />

bleibt weiterhin auf X-Path-Queries beschränkt.<br />

Mit der MySQL-Workbench, die<br />

auch in einer GPL-lizenzierten Community-Variante<br />

verfügbar ist, liegt ein leistungsfähiges<br />

grafisches Designwerkzeug<br />

vor (Abbildung 1).<br />

Abgespaltet: Maria DB<br />

<strong>Datenbank</strong>vergleich 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

29<br />

Wie bei Open Office kam es nach der<br />

Übernahme von Sun durch Oracle auch<br />

bei MySQL zu einem Fork: Einer der<br />

MySQL-Initiatoren, Michael „Monty“<br />

Widenius, bezweifelte in seinem Blog,<br />

dass die am weitesten verbreitete <strong>Datenbank</strong>-Engine<br />

und die kommerziell erfolgreichste<br />

unter einem Dach koexistieren<br />

können [2]. Vor der Übernahme habe<br />

MySQL Oracle gezwungen, die Lizenzkosten<br />

zu senken, argumentiert Widenius<br />

und glaubt daher nicht, dass Oracle Geld<br />

für die Entwicklung neuer Features ausgibt,<br />

da dies die Marktchancen für das<br />

Hauptprodukt schmälere.<br />

Widenius’ Fork Maria DB, liegt bereits<br />

stabil in Version 5.2 vor [3]. Im Vergleich<br />

zu MySQL 5.1, auf deren Quellcode der<br />

Fork aufsetzt, bietet er unter anderem<br />

Erweiterungen bei Rechenausdruck-basierten<br />

virtuellen Spalten und eine Plugin-basierte<br />

Authentifizierung.<br />

Außerdem sind die als experimentell bezeichneten<br />

Storage-Engines Sphinx, eine<br />

Volltext-Suchmaschine [4], und Oqgraph<br />

[5] hinzugekommen, eine Graphdatenbank-Engine,<br />

wie sie aus der NoSQL-Welt<br />

bekannt ist. Leider arbeitet Oqgraph nur<br />

im RAM. Nach einem Neustart des Servers<br />

lässt sich die Graphdatenbank nur<br />

aus SQL-Befehlen wiederherstellen, was<br />

die Praxistauglichkeit bisweilen sehr einschränkt.<br />

Abbildung 1: Mit der MySQL-Workbench gibt es seit 2008 ein grafisches <strong>Datenbank</strong>-Designwerkzeug für<br />

<strong>Linux</strong>, Mac OS und Windows, das wesentlich mehr leistet als die verbreitete Webanwendung PHP Myadmin.<br />

trägt, startete erst 1994 als Anschlussprojekt,<br />

das die Ingres-Abfragesprache QUEL<br />

[6] durch SQL ersetzte.<br />

Dank seiner universitären Wurzeln gehört<br />

PostgreSQL bis heute nicht einer einzelnen<br />

Firma, was Anwender angesichts<br />

der Unruhe, die die Oracle-Übernahme<br />

in der MySQL-Community ausgelöst hat,<br />

inzwischen vielleicht als Vorteil empfinden.<br />

PostgreSQL gibt es unter einer BSDartigen<br />

Lizenz [7].<br />

Noch im letzten Jahrtausend implementierte<br />

PostgreSQL im Enterprise-Umfeld<br />

gefragte Features wie Views, Trigger,<br />

temporäre Tabellen und Multi Version<br />

Concurrency Control (MVCC), ein Verfahren,<br />

das konkurrierende Zugriffe effizienter<br />

ausführt, den einzelnen Nutzern<br />

Schnappschüsse des aktuellen Datenbestandes<br />

bereitstellt und damit ein unbeabsichtigtes<br />

Blockieren der <strong>Datenbank</strong><br />

verhindert.<br />

E PostgreSQL<br />

Wie schon der Name zeigt (Post Ingres),<br />

hat PostgreSQL seine Wurzeln im Ingres-<br />

Projekt der Universität of California in<br />

Berkeley. Bereits 1985 startete Michael<br />

Stonebraker dort das Postgres-Projekt, das<br />

Ingres technologisch beerbte, ohne den<br />

Quellcode zu übernehmen. Das heutige<br />

PostgreSQL, das SQL sichtbar im Namen<br />

Abbildung 2: Der Pg-Admin3 administriert auch fortgeschrittene PostgreSQL-Funktionen wie Trigger oder die<br />

Volltextsuche in einem übersichtlichen GUI.


Titelthema<br />

www.linux-magazin.de <strong>Datenbank</strong>vergleich 02 /<strong>2011</strong><br />

30<br />

Bei der früh implementierten Trigger-<br />

Unterstützung hebt sich PostgreSQL bis<br />

heute von der Konkurrenz ab: Die durch<br />

bestimmte SQL-Operationen ausgelösten<br />

Prozeduren dürfen Entwickler nicht nur<br />

im PostgreSQL-spezifischen PL/ PgSQL,<br />

sondern auch in den verbreiteten Sprachen<br />

Tcl, Perl und Python schreiben. Das<br />

Spektrum der externen Erweiterungen<br />

reicht von der Bash [8] über das besonders<br />

Webentwicklern geläufige PHP bis<br />

zum speziell für das Einbetten in andere<br />

Software konzipierte Lua [9].<br />

PostgreSQL enthält ein umfangreiches<br />

Volltext-Suchsystem. Seit PostgreSQL<br />

8.3 ist das frühere Tsearch2-Modul fester<br />

Bestandteil der <strong>Datenbank</strong>-Engine.<br />

Es unterstützt Unicode und linguistische<br />

Funktionen wie Stop-Words und Synonyme<br />

[10]. Bei der Replikation hinkt<br />

PostgreSQL MySQL allerdings hinterher:<br />

Erst die kürzlich erschienene Version 9<br />

beherrscht asynchrone Replikation (siehe<br />

Artikel in diesem Schwerpunkt). Eine<br />

synchrone Replikation ist für die Folgeversion<br />

geplant. Allerdings gibt es eine<br />

Reihe von Third-Party-Erweiterungen,<br />

die diese bereits jetzt bereitstellen [11].<br />

Mit Pg-Admin3 (Abbildung 2) steht auch<br />

für PostgreSQL ein leistungsfähiges grafisches<br />

Verwaltungstool zur Verfügung.<br />

E Ingres<br />

Wie PostgreSQL und MySQL liegt auch<br />

Ingres seit Herbst in einer neuen Version<br />

vor. Zu den wichtigen Neuerungen<br />

dieser Version 10 gehören spaltenspezifische<br />

Datenverschlüsselung, Support für<br />

den JDBC-4-Standard und Multiversion<br />

Concurrency Control. Erstmals steht auch<br />

eine 64-Bit-Version für Windows zur Verfügung.<br />

Batch-Queries bündeln nun mehrere<br />

»Insert-« oder »Delete«-Kommandos und<br />

übertragen sie in einem Stück an den<br />

Server. Eine Optimierung bei Abfragen<br />

über partitionierte Tabellen steigert die<br />

Performance, wobei eine neue Funktion<br />

für das Dynamic Partition Pruning<br />

zum Einsatz kommt: das Überspringen<br />

nicht zu durchsuchender Partitionen. Für<br />

mehr Tempo auf Unix-Systemen sorgen<br />

der Einsatz von Direct-I/ O [12] und das<br />

Tabelle 1: Die Big Five im Vergleich<br />

Name MySQL PostgreSQL<br />

Webseite [http://www.mysql.com] [http://www.postgresql.org]<br />

Lizenz GPL und kommerzielle BSD<br />

Aktuelle Version 5.5 9.0<br />

Plattformen<br />

<strong>Linux</strong>, Unix, Mac, Windows, IBM-I-Series, Symbian,<br />

<strong>Linux</strong>, Unix, Windows<br />

Open VMS<br />

Kommerz. Support Oracle Corporation [http://www.postgresql.org/support/<br />

professional_support]<br />

Features<br />

SQL<br />

SQL 99/ 2003 teilweise, proprietäre Erweiterungen<br />

SQL 92/ 99<br />

ACID-Transaktionen ja (nicht MyIsam u.a.) ja<br />

XA Transactions ja (Inno DB) ja<br />

Stored Procedures SQL PL/ PgSQL, Perl, Python, Tcl, erweiterbar<br />

Trigger ja ja<br />

Cursor ja ja<br />

Views ja ja<br />

Locking MVCC, MyIsam nur Tabellenlevel MVCC, explizit Tabellenlevel, Advisory<br />

Volltext-Indices nur MyIsam ja<br />

User Defined Functions (UDF) ja ja<br />

User Defined Data Types (UDT) nein ja<br />

Event Scheduler ja nein<br />

Partitionierung Range-, List-, Hash-, Key, Columns-Partitioning Range-, List-, Hash-, Automatic-Partitioning (Automatic:<br />

gleichmäßige Zeilenzahl)<br />

Replikation synchron, asynchron, teilsynchron asynchron,<br />

3rd-Party-Lösungen ([20], [21], [22], [23])<br />

Clustering ja ja, Hot/Warm-Standby<br />

XML nur X-Path XML/ SQL-Unterstützung<br />

Materialized Views nein nein<br />

Index Organized Tables nein nein<br />

Java in der <strong>Datenbank</strong> nein nein<br />

Aktuelles<br />

Neuerungen der letzten 3 Jahre<br />

Version 5.1 (11/ 2008): Scheduler zeilenbasierte<br />

Replikation, tabellenbasierte Serverlogs.<br />

Maria DB 5.2 (10/ 2010): Engines Oqgraph und<br />

Sphinx, erweiterte virtuelle Spalten.<br />

Version 5.5 (12/ 2010): Range-/ Listen-Partitioning,<br />

teilsynchrone Replikation<br />

Version 8.3 (02/ 2008): SQL/ XML, Updatable<br />

cursors.<br />

Version 9.0 (09/ 2010): asynchrone Replikation,<br />

erweiterter Perl-/ Python-Support, Massen-<br />

Update eindeutiger Keys vereinfacht


Prä-Allozieren von Plattenplatz mit dem<br />

»fallocate«-System-Call [13].<br />

Version 9.3 vom Oktober 2009 erweiterte<br />

dagegen vor allem den Umfang des Ingres-SQL-Dialekts:<br />

Vergleiche mit »LIKE«<br />

dürfen sich seither auf Spalten vom Typ<br />

»LONG VARCHAR« und »LONG NVAR-<br />

CHAR« beziehen. Außerdem kommen<br />

die Vergleichsoperatoren »BEGINNING«,<br />

»CONTAINING« und »ENDING« sowie<br />

»SIMILAR TO« mit Unterstützung für Reguläre<br />

Ausdrücke hinzu.<br />

Leider nur für Windows erhältlich greift<br />

das Community-Projekt Easy Ingres [14]<br />

PHP-Entwicklern unter die Arme, die Anwendungen<br />

auf Basis von Ingres statt für<br />

MySQL schreiben. Auch hilft die Software<br />

beim Programme-Migrieren von MySQL<br />

zu Ingres. Das unter der Federführung<br />

des französischen PHP-Programmierers<br />

Cedric Pasquotti entwickelte Projekt<br />

kombiniert die Ingres-<strong>Datenbank</strong> (zurzeit<br />

noch Version 9.2) mit Apache 2.2.8, PHP<br />

5.2.9, der Ingres Developer Workbench<br />

[15], dem Scite Editor 1.77 sowie der<br />

Demo-Applikation Frequent Flyer und<br />

sorgt für die passende Konfiguration.<br />

Eine 70er-Jahre-<strong>Datenbank</strong><br />

Die Geschichte von Ingres beginnt bereits<br />

1974 als eine der frühen Umsetzungen<br />

des damals neuen Konzepts der relationalen<br />

<strong>Datenbank</strong>. Die kommerzielle Ära<br />

von Ingres endete Anfang 2004 in weitgehender<br />

Bedeutungslosigkeit. Doch nach<br />

der Release unter der GPL 2 nahm die<br />

Entwicklung neue Fahrt auf.<br />

Ingres setzte vor allem Enterprise-Features<br />

wie Partitionierung und Replikation<br />

früh um. Bei der Verarbeitung von<br />

Geodaten hat der Hersteller mit dem an<br />

das universitäre Ingres-Projekt anschließenden<br />

PostgreSQL zurzeit nur einen<br />

Konkurrenten. Bei der XML-Unterstützung<br />

ist Ingres dagegen nicht auf der<br />

Höhe der Zeit, sie fehlt komplett, eine<br />

Volltext-Suche ebenso, und ein Tool wie<br />

Squirrel-SQL (Abbildung 3, [17]) muss<br />

unter <strong>Linux</strong> das fehlende grafische Verwaltungswerkzeug<br />

ersetzen.<br />

Dem verstärkten Trend zu nicht-relationalen<br />

<strong>Datenbank</strong>en trägt Ingres offenbar<br />

auch Rechnung, indem es eine proprietäre<br />

<strong>Datenbank</strong>vergleich 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

31<br />

Ingres Firebird Oracle Database<br />

[http://www. ingres.com] [http://www.firebirdsql.org] [http://www.oracle.com]<br />

GPL 2 Mozilla Public License, Interbase Public License kommerziell<br />

10.01 2.5 11g Referenz<br />

<strong>Linux</strong>, Unix, Mac, Windows, Open VMS, <strong>Linux</strong>, Unix, Mac, Windows <strong>Linux</strong>, Windows, Solaris, HP-UX, AIX<br />

Ingres Corporation u.a. Ibphoenix, [http://www.ibphoenix.com] Oracle Corporation<br />

SQL 92/ 99 SQL 92/ 99, teilweise SQL 2003 Ansi SQL, SQL 2003<br />

ja ja ja<br />

ja ja (Jca-Connector) ja<br />

SQL PSQL PL/ SQL, Java<br />

ja ja ja<br />

ja ja ja<br />

ja ja ja<br />

MVCC Optimistic Row-Level-Locking, MVCC Table- und Row-Level, Exclusive und Shared Locks<br />

nein 3rd-Party: [24] ja, mit Oracle-Text<br />

nein ja ja<br />

nein nein ja<br />

ja nein ja<br />

Range, List, Hash (indirekt über Tabellen-<br />

Vererbung)<br />

nein<br />

Interval, Reference, List und Range (als Option<br />

für Oracle Enterprise)<br />

asynchron, Transaktionen-basiert 3rd-Party: [25] mit Oracle Streams und Oracle Goldgate im heterogenen<br />

Umfeld<br />

ja, Voraussetzung: Shared Storage nein Real Application Cluster und Standby Database<br />

nein nein Xpath und XML-Datatype<br />

nein nein ja<br />

nein nein ja<br />

nein nein ja<br />

Version 9.2 (11/ 2008): Cursors, UTF8-Support,<br />

Onlinebackup.<br />

Version 9.3 (10/ 2009): erweitertes Pattern-<br />

Matching, Sequence-Erweiterungen.<br />

Version 10 (10/2010): Multiversion Concurreny<br />

Control, JDBC 4, spaltenbasierte Verschlüsselung<br />

Version 2.1 (4/ 2008): Triggers, Global Temporary<br />

Tables, Common Table Expressions.<br />

Version 2.5 (10/ 2010): Reguläre Ausdrücke in »SI-<br />

MILAR TO«, neue Threading-Architektur [http://<br />

www.firebirdsql. org/rlsnotesh/rlsnotes25.html#<br />

rnfb25- engine- threading]]<br />

Letzte Release 11g (07/ 2007), seitdem nur<br />

Bugfixes.


Titelthema<br />

www.linux-magazin.de <strong>Datenbank</strong>vergleich 02 /<strong>2011</strong><br />

32<br />

als freie Software herausgab. Die erste<br />

Release erschien im März 2002. Bis Februar<br />

2004 hatte das Entwicklerteam die<br />

Software von C nach C++ portiert und<br />

als Version 1.5 herausgegeben. Wichtige<br />

Features wie Trigger kamen mit Version<br />

2, während die aktuelle Version 2.5 sich<br />

auf ein neues Threading-Modell konzentriert.<br />

Von Bedeutung ist dies vor allem für<br />

die Embedded-Version, mit der Firebird<br />

als einzige der vorgestellten <strong>Datenbank</strong>en<br />

aufwarten kann. Auch sind jetzt mehrere<br />

Prozessorkerne möglich.<br />

E Oracle Database<br />

Abbildung 3: Da es unter <strong>Linux</strong> kein speziell auf Ingres zugeschnittenes grafisches Verwaltungswerkzeug<br />

gibt, bleibt außer der Kommandozeile nur der Rückgriff auf generische <strong>Datenbank</strong>-Tools wie Squirrel-SQL.<br />

Vektordatenbank anbietet (siehe Kasten<br />

„Vector Wise“). Vector Wise stammt aus<br />

einem Forschungsprojekt des Amsterdamer<br />

CIW. In die Weiterentwicklung zu<br />

einem kommerziellen Produkt haben Ingres<br />

und Intel investiert.<br />

E Firebird<br />

Obwohl Firebird laut Ohloh.net mehr<br />

Benutzer hat als Ingres, kennen durchschnittliche<br />

Computernutzer den <strong>Datenbank</strong>server<br />

bestenfalls, weil er der Auslöser<br />

für einen Namenswechsel des Webbrowsers<br />

Firefox war. Was die Leistung<br />

angeht, muss sich Firebird (Abbildung 4)<br />

Oracle ist in der aktuell verfügbaren<br />

Version 11g Release 2 seit September<br />

2009 verfügbar und die wichtigste kommerzielle<br />

<strong>Datenbank</strong>variante auf dem<br />

Markt. Im Vergleich zu den gelisteten<br />

Open-Source-Systemen bietet sie das mit<br />

Abstand mächtigste Feature-Set, fordert<br />

Admini stratoren und Entwicklern jedoch<br />

auch am meisten Know-how ab.<br />

Bereits mit Version 10g setze Oracle auf<br />

eine damals neuartige Clustertechnologie,<br />

das so genannte Grid. Aktuelle Versionen<br />

entwickeln diese Technik weiter.<br />

So erlaubt es der Oracle Real Application<br />

Cluster (RAC), One-Node-Single-Instance-<br />

Systeme in das Grid zu überführen, um<br />

Features wie Rolling Upgrades und Transparent<br />

Session Fail over bei einem Ausfall<br />

des <strong>Datenbank</strong>systems zu nutzen.<br />

Im Bereich der Speicherverwaltung hebt<br />

sich Oracle besonders von den Konkurjedoch<br />

vor der freien Konkurrenz nicht<br />

verstecken: Er kennt Stored Procedures,<br />

Trigger und referenzielle Integrität. Zu<br />

den fortgeschrittenen Funktionen gehören<br />

MVCC und Cursors.<br />

So genannte Careful Writes sorgen für<br />

das schnelle Recovery, ohne dass dafür<br />

die üblichen Logs nötig sind. Außerdem<br />

stellt Firebird ungewöhnlich viele Anbindungen<br />

zur Verfügung: Es lässt sich<br />

über ODBC, OLEDB, JDBC 4, ein natives<br />

API und über einen Dbexpress-Treiber<br />

ansprechen. Außerdem gibt es Module<br />

für Perl, Python, PHP und Dotnet.<br />

Firebird geht auf das proprietäre Interbase<br />

zurück, das Borland Mitte 2000<br />

Abbildung 4: Flamerobin ist ein leistungsfähiger <strong>Datenbank</strong>manager für Firebird, der grafische Tools und einen SQL-Editor mit Syntax Highlighting und Autocompletion<br />

kombiniert. Firebird ist der freie Nachfolger von Borlands Interbase.


Vector Wise<br />

Im Juni 2010 stellte Ingres die erste Version<br />

der spaltenorientierten <strong>Datenbank</strong> Vector Wise<br />

[16] vor, zunächst nur für 64-Bit-<strong>Linux</strong> als<br />

RPM und TGZ, inzwischen auch als Amazon-<br />

Cloud-RPM. Es gibt aber nur 180-Tage-Testversionen.<br />

Ingres bietet zudem eine Administrationsoberfläche<br />

(leider nur) für 32-Bit-Windows<br />

und einen JDBC-Treiber zum Download an.<br />

Spaltenorientierte Vektoren<br />

Die Abfragearchitektur von Vector Wise fußt<br />

nicht auf einzelnen spaltenorientierten Tupeln,<br />

sondern auf spaltenorientierten Vektoren.<br />

renzprodukten ab, da Oracles ASM (Automatic<br />

Storage Management) sich zu<br />

einem vollwertigen Storage-Manager mit<br />

Stripe- und Mirroring-Unterstützung entwickelt<br />

hat, der ein Volume-Manager auf<br />

Betriebssystemebene überflüssig macht<br />

und so eine einheitliche Ressourcenverwaltung<br />

sicherstellt.<br />

Mit dem Oracle Database Filesystem stehen<br />

Large Objects direkt im Dateisystem<br />

zur Verfügung. Mittels Fuse und der darunterliegenden<br />

PL/ SQL-Implementierung<br />

sind Strukturen der <strong>Datenbank</strong> wie Dokumente<br />

zum Beispiel für einen Webserver<br />

ohne zusätzlichen Programmieraufwand<br />

erreichbar.<br />

Darüber hinaus glänzt die proprietäre<br />

Engine im Bereich der dynamischen<br />

Speicherverwaltung und Archivierung<br />

von Altdaten mit einer Vielzahl von Neuerungen,<br />

die den Platzbedarf und den<br />

administrativen Overhead in großen Umgebungen<br />

erheblich reduzieren.<br />

Als Killer-Feature bei der <strong>Datenbank</strong>entwicklung<br />

gilt die Edition-based Redefinition.<br />

Als eine Art interner Versionsverwaltung<br />

lassen sich verschiedene Versionen<br />

eines Package oder einer Funktion<br />

innerhalb der <strong>Datenbank</strong> erstellen, testen<br />

oder ausführen und schließlich für andere<br />

Anwender sichtbar machen sowie<br />

in den Produktionsbetrieb überführen.<br />

Auch für Views steht dieses Feature nun<br />

zur Verfügung und erlaubt es, Basistabellen<br />

im laufenden Betrieb umzustellen.<br />

Qual der Wahl<br />

Der Markt der SQL-<strong>Datenbank</strong> ist im<br />

Wesentlichen aufgeteilt, es findet „nur<br />

noch“ ein Verdrängungswettbewerb statt.<br />

Das macht die Auswahl für die Kunden<br />

Dazu kennt die Engine Varianten der relationalen<br />

Operatoren (Selektion, Projektion, Join,<br />

Sortierung), die mehrere Werte quasi-parallel<br />

verarbeiten und dabei die Möglichkeiten moderner<br />

CPUs nutzen.<br />

Die Größe der Vektoren wählt eine Logik so,<br />

dass alle nur für die Abfrage benötigten Daten<br />

in den CPU-Cache passen. Zudem komprimiert<br />

Vector Wise die Datensätze. Ingres und Intel<br />

behaupten, dass im Ergebnis komplexe Datenanalysen<br />

gegenüber relationalen <strong>Datenbank</strong>en<br />

auf Vector Wise um zwei Größenordnung<br />

schneller laufen.<br />

kaum einfacher, weil die etablierten Anbieter<br />

ständig an Performance und Features<br />

schrauben. Schwerer noch wiegt,<br />

dass die Anforderungen der Applikationsschichten<br />

in der Praxis stark differieren –<br />

zwischen denen jedes <strong>Datenbank</strong>system<br />

nur einen mehr oder minder passenden<br />

Kompromiss anbieten kann.<br />

Beim Vergleich technischer Features hilft<br />

die Tabelle 1 in diesem Artikel. In Sachen<br />

Enterprise-Einsatz gibt eine Studie<br />

[18] von Forrester Research eine erste<br />

Orientierung: Danach dominieren IBM,<br />

Microsoft und Oracle mit 88 Prozent<br />

Marktanteil das Feld, weil hier Performance,<br />

Verfügbarkeit und Skalierbarkeit<br />

überzeugen würden.<br />

Ingres sei bei weniger als 1 TByte Daten<br />

und maximal 1000 gleichzeitigen Benutzern<br />

die derzeit beste Open-Source-<strong>Datenbank</strong>,<br />

auch wenn sie nicht die bekannteste<br />

sei. Allerdings sehen nur wenige<br />

fertige Anwendungspakete Ingres als<br />

<strong>Datenbank</strong> vor.<br />

Laut Studie hat MySQL bei den Features<br />

zu Ingres aufgeschlossen und auch eine<br />

große Benutzergemeinde, es fehle aber<br />

an Zertifizierungen und Unterstützung<br />

wichtiger Produkte wie die von Peoplesoft,<br />

SAP und Siebel [19]. PostgreSQL<br />

besitze zwar die größte Entwicklergemeinde,<br />

sei aber in Firmen kaum verbreitet<br />

und bei Verfügbarkeit, Sicherheit<br />

und Performance abgeschlagen. (mfe) n<br />

Infos<br />

[1] Rest der MySQL-6-Doku: [http://dev.<br />

mysql.com/ doc/ refman/6.0/en/]<br />

[2] Michael Widenius’ Blog:<br />

[http://monty-says.blogspot.com/2009/<br />

12/help-saving-mysql.html]<br />

[3] Maria-DB-Release 5.2:<br />

[http://monty-says.blogspot.com/2010/<br />

10/mariadb-522-gamma-is-released.html]<br />

[4] Sphinx: [http://sphinxsearch.com]<br />

[5] Oqgraph:<br />

[http://openquery. com/graph/doc]<br />

[6] QUEL: [http://en.wikipedia.org/wiki/<br />

QUEL_query_languages]<br />

[7] PostgreSQL-Lizenz: [http://www.<br />

postgresql. org/ about/licence]<br />

[8] Bash-Trigger für PostgreSQL:<br />

[http://plsh. projects.postgresql.org]<br />

[9] Lua-Trigger für PostgreSQL:<br />

[http://pllua. projects.postgresql.org]<br />

[10] PostgreSQL-Volltextsuche:<br />

[http://www. postgresql.org/docs/9.0/<br />

static/textsearch. html]<br />

[11] PostgreSQL-Replikation: [http://wiki.<br />

postgresql. org/ wiki/Replication,_<br />

Clustering,_and_Connection_Pooling]<br />

[12] <strong>Linux</strong> Direct-I/ O:<br />

[http://docs. redhat.com/docs/en-US/<br />

Red_Hat_Enterprise_<strong>Linux</strong>/5/html/Global_<br />

File_System/ s1-manage-direct-io.html]<br />

[13] »fallocate«-System-Call:<br />

[http://lwn. net/ Articles/240571/]<br />

[14] Easy Ingres: [http://esd.ingres.<br />

com/product/ Community_Projects/<br />

Development_Tools/Windows_32-Bit/<br />

EasyIngres/]<br />

[15] Ingres Database Workbench: [http://esd.<br />

ingres.com/ product/Community_Projects/<br />

Development_Tools/<strong>Linux</strong>_32-Bit/Ingres_<br />

Database_Workbench]<br />

[16] Ingres Vector Wise:<br />

[http://www. ingres.com/vectorwise/]<br />

[17] Squirrel-SQL:<br />

[http://squirrel-sql. sourceforge.net]<br />

[18] The Forrester Wave, „ Enterprise Database<br />

Management Systems“: [http://info.<br />

ingres.com/ g/ ? UJR6Q22767=clicksrc:pr]<br />

(Registrierung erforderlich)<br />

[19] Mathias Huber, „Ingres und MySQL führen<br />

bei Open-Source-<strong>Datenbank</strong>en“:<br />

[http://www. linux-magazin.de/content/<br />

view/full/ 41390]<br />

[20] Slony: [http://www.slony.info]<br />

[21] Londiste:<br />

[http://sky tools. projects.postgresql.org/<br />

doc/londiste. cmdline.html]<br />

[22] Bucardo: [http://bucardo.org]<br />

[23] Pgpool-Projekte:<br />

[http://pgpool. projects.postgresql.org]<br />

[24] Firebird-3rd-Party-Indexer:<br />

[http://www. firebirdfaq.org/faq328/]<br />

[25] Firebird-3rd-Party-Replikation:<br />

[http://www. firebirdfaq.org/faq249/]<br />

<strong>Datenbank</strong>vergleich 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

33


1&1 WEBHOSTING<br />

„1&1 WebHosting bietet uns zahlreiche<br />

Inklusiv-Features, die unsere Homepage noch<br />

informativer und erfolgreicher machen.<br />

Für uns ist 1&1 der perfekte Partner.“<br />

Markus Fügenschuh<br />

www.skischule-ostrachtal.de<br />

IHRE PROFESSIONELLE<br />

HOMEPAGE<br />

6 MONATE<br />

FÜR 0,– €/MONAT! *<br />

* Ausgewählte 1&1 Homepage-Pakete z.B. 1&1 Homepage Perfect 6 Monate für 0,– €/Monat, danach 6,99 €/Monat. Einmalige Einrichtungsgebühr 9,60 €. .info und .de Domain 0,29 €/Monat im<br />

ersten Jahr (danach .de Domain 0,49 €/Monat, .info Domain 1,99 €/Monat), keine Einrichtungsgebühr. 12 Monate Mindestvertragslaufzeit. Preise inkl. MwSt.


1&1 HOMEPAGE-PAKETE<br />

6 MONATE FÜR<br />

1&1, der größte Webhoster weltweit, garantiert beste<br />

Hosting-Qualität und wertvolle Inklusiv-Features:<br />

.de .com<br />

.net<br />

php<br />

.eu<br />

Inklusiv-Domains!<br />

Sichern Sie sich Ihre perfekte Internet-Adresse:<br />

Sie können aus den Domainendungen .de, .at,<br />

.info, .com, .net, .org, .biz oder.eu wählen.<br />

Mehr Webspace!<br />

Selbst für aufwändige Website-Projekte bieten Ihnen<br />

unsere Pakete ausreichend Webspace.<br />

Webdesign-Software!<br />

Adobe ® Dreamweaver ® CS4 und NetObjects Fusion ®<br />

dienen als optimale Basis für hochwertiges Webdesign,<br />

sogar optimiert für die Ausgabe auf mobilen Endgeräten.<br />

Entwickler-Tools<br />

PHP6 (beta), Zend Framework, Versionsmanagement<br />

(git), Cron Jobs und Shell-Zugang bieten die perfekte<br />

Spielwiese für professionelle Webdesigner.<br />

Grüne Rechenzentren!<br />

Ihre Daten liegen sicher in unseren Hochleistungs-Rechenzentren,<br />

die mit Strom aus erneuerbaren Quellen betrieben<br />

werden. Das spart 30.000 Tonnen CO ²<br />

pro Jahr.<br />

z. B. 1&1 HOMEPAGE PERFECT<br />

■ 2 Inklusiv-Domains<br />

■ 4 GB Webspace<br />

■ U N L I M I T E DTr a f fi c<br />

■ 5 MySQL-<strong>Datenbank</strong>en<br />

■ Zend Framework<br />

■ PHP6 (beta), PHP5<br />

■ Perl, Python<br />

■ SSI<br />

■ NetObjects Fusion ® 1&1 Edition<br />

■ Google Sitemaps<br />

■ 24/7 Profi-Hotline<br />

■ uvm.<br />

6, 99<br />

0,–€/Monat<br />

danach ab<br />

6,99 €/Monat *<br />

€/Monat*0,–€/Monat*<br />

6 Monate 0,– €, danach<br />

nur 6,99 €/Monat.*<br />

Weitere sensationelle Angebote,<br />

z. B. .de, .info Domains 1 Jahr für<br />

0,29 €/Monat * , unter www.1und1.info.<br />

Jetzt informieren<br />

und bestellen:<br />

0 26 02 / 96 91<br />

0800 / 100 668<br />

www.1und1.info


Titelthema<br />

www.linux-magazin.de Maria DB 02 /<strong>2011</strong><br />

36<br />

Maria DB als MySQL-Alternative<br />

Vertraut und doch neu<br />

Seit Version 5.2 ist Maria DB unter den MySQL-Forks eine attraktive Alternative. Nicht nur, dass MySQL-Entwickler<br />

Monty Widenius hier persönlich Hand anlegt – die Kombination von Patches und neuen Funktionen bei<br />

größtmöglicher Kompatibilität hebt Maria DB unter den Konkurrenten hervor. Caspar Clemens Mierau<br />

hieß [5]. Aria versteht sich als moderner<br />

Ersatz für MyISAM, ist weitgehend<br />

funktionskompatibel zu MyISAM, kann<br />

jedoch, je nach Version, auf Wunsch<br />

transaktionale Tabellen führen. Zusätzlich<br />

gilt Aria als Crash-sicher, da sie nach<br />

einem Serverabsturz die <strong>Datenbank</strong> bis<br />

zum Beginn des letzten »LOCK TABLES«<br />

zurückrollt.<br />

Engine-Kompromiss<br />

© maxfx, 123RF.com<br />

Maria DB [1] ist trotz ihrer MySQL-Kompatibilität<br />

ein eigenständiges <strong>Datenbank</strong>-<br />

System. Die Mischung aus neuen und<br />

aktualisierten Engines, zusätzlichen<br />

Funktionen und Performance- und Stabilitäts-Optimierungen<br />

machen aus Maria<br />

DB mehr als die Summe ihrer Teile.<br />

Damit ragt sie auch unter den anderen<br />

MySQL-Abkömmlingen und -Patches<br />

[2] heraus. Erfreulich, dass Installation<br />

und Umstieg in der Regel leicht von der<br />

Hand gehen. Maria DB ist ein „Drop-in<br />

Listing 1: Virtuelle Spalten<br />

01 MariaDB [test]> CREATE TABLE steuern (<br />

02 ‐> netto FLOAT NOT NULL,<br />

03 ‐> brutto FLOAT AS (netto*1.19));<br />

04 Query OK, 0 rows affected (0.10 sec)<br />

05<br />

06 MariaDB [test]> INSERT INTO steuern VALUES<br />

(100,default);<br />

07 Query OK, 1 row affected (0.00 sec)<br />

08<br />

09 MariaDB [test]> SELECT * FROM steuern;<br />

10 +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+<br />

11 | netto |brutto |<br />

12 +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+<br />

Replacement“ für MySQL. Der Code der<br />

aktuellen Version 5.2 basiert auf MySQL<br />

5.1 und garantiert weitgehend, dass bestehende<br />

<strong>Datenbank</strong>en, Queries, externe<br />

Clients und Bibliotheken nutzbar bleiben.<br />

Es ist möglich, einen bestehenden<br />

MySQL-Server durch Maria DB zu ersetzen.<br />

Der Download-Bereich stellt hierfür<br />

neben den Quellen vorkompilierte und<br />

paketierte Versionen bereit [3].<br />

Das Herzstück von Maria DB ist die Aria-<br />

Engine [4], die bis Juli 2010 noch Maria<br />

13 | 100 | 119 |<br />

14 +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+<br />

15 1 row in set (0.00 sec)<br />

16<br />

17 MariaDB [test]> DESCRIBE steuern;<br />

18 +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+<br />

19 | Field | Type | Null | Key | Default | Extra |<br />

20 +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+<br />

21 | netto | float | NO | | NULL | |<br />

22 | brutto | float | YES | | NULL | VIRTUAL |<br />

23 +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+<br />

24 2 rows in set (0.01 sec)<br />

Bestehende MyISAM-Tabellen lassen sich<br />

mit dem folgenden Kommando auf Aria<br />

umstellen:<br />

ALTER TABLE `Tabelle` ENGINE=`ARIA`U<br />

TRANSACTIONAL=1;<br />

MyISAM gilt als zuverlässige <strong>Datenbank</strong>-<br />

Engine, die gegenüber Inno DB einen<br />

Geschwindigkeitsvorteil bei Tabellen<br />

besitzt, auf die hauptsächlich lesende<br />

Zugriffe erfolgen. Die Stärken von Inno<br />

DB dagegen liegen in Transaktionen und<br />

zeilenweisem Locking. Aria bietet einen<br />

Kompromiss zwischen den beiden Engines<br />

durch eine Kombination der Vorteile<br />

von MyISAM mit Datensicherheit,<br />

Transaktionen und zunehmenden Performance-Steigerungen.<br />

Da an der Aria-Engine weiterhin stark<br />

entwickelt wird, ist es sinnvoll, den Projektfortschritt<br />

genau zu beobachten. Als<br />

weitere Features sind beispielsweise zeilenweises<br />

Locking, Group-Commits und<br />

volle Unterstützung für »COMMIT/ROLL-<br />

BACK« geplant. Für MySQL 6.0 streben<br />

die Entwickler die Aufnahme der Engine<br />

als offizielle MySQL-Engine an.<br />

Die bekannte Storage-Engine Inno DB ersetzt<br />

Maria DB durch Xtra DB [6] – eine<br />

auf dem Inno-DB-Plugin basierende Weiterentwicklung.<br />

Trotz des neuen Namens


Neuerungen in MySQL 5.5<br />

n Inno DB löst MyISAM als Standard-Engine<br />

für neue Tabellen ab.<br />

n Verbesserte Skalierung auf Mehrprozessor-Systemen.<br />

n Erweiterte Unterstützung für Unicode<br />

(»utf16«, »utf32m«, »utf8mb4«).<br />

n Verbesserte XML-Unterstützung (unter<br />

anderem »LOAD XML«).<br />

n Pluggable Authentication.<br />

n Neue »TO_SECONDS()«-Funktion konvertiert<br />

Datums-Angaben in Sekunden seit<br />

dem Jahr 0.<br />

n Optional semisynchrone Replikation für<br />

erhöhte Datenintegrität.<br />

erscheint Xtra DB in »SHOW ENGINES«<br />

als »InnoDB«, da sie diese vollständig<br />

ersetzt. Neben einigen Performance-<br />

Optimierungen bietet Xtra DB beispielsweise<br />

Prozesszeiten in Millisekunden in<br />

der Datei »slow.log« sowie die Möglichkeit,<br />

den Inno-DB-Buffer vor dem Neustart<br />

eines Servers zu sichern, um die<br />

Warmlaufphase drastisch zu reduzieren.<br />

Für Anwender, die sich ausschließlich für<br />

Xtra DB interessieren, ist eventuell der<br />

Percona-Server eine Alternative [7].<br />

Statistiken<br />

Maria DB 5.2 bietet zusätzlich Nutzungsstatistiken<br />

[8], zum Beispiel wie in Abbildung<br />

1. Nach dem Aktivieren des Feature<br />

durch den Eintrag »userstat = 1« in der<br />

Konfigurationsdatei »my.cnf« aggregiert<br />

Maria DB in flüchtigen Tabellen unter<br />

anderem Daten über Tabellen- und Index-<br />

Nutzung. Neue »SHOW«-Befehle liefern<br />

ausführliche Laufzeit-Informationen über<br />

Häufigkeit von Lese- und Schreibzugriffen.<br />

Ohne aufwändiges Auditing ist es<br />

zum Beispiel möglich, ungenutzte Indizes<br />

oder zu häufig gelesene Tabellen zu<br />

identifizieren.<br />

In Anlehnung an Oracle und MS SQL<br />

unterstützt Maria DB virtuelle Spalten<br />

[9]. Dabei handelt es sich um berechnete<br />

Spalten, die die <strong>Datenbank</strong> indirekt über<br />

eine Funktion auf der Basis von Werten<br />

innerhalb der jeweiligen Zeile befüllt. Ein<br />

einfaches Beispiel – es berechnet Bruttound<br />

Steuer-Beträge auf der Basis von<br />

Netto-Beträgen – zeigt Listing 1.<br />

Authentifizierung<br />

Mit Version 5.2 hat Maria DB das „Pluggable<br />

Authentication Framework“ eingeführt<br />

[10]. Neben der klassischen<br />

MySQL-Authentifizierung stehen damit<br />

nahezu beliebige, auch mehrstufige, Authentifizierungswege<br />

bereit. Einige einfache<br />

Beispiele sind bereits implementiert.<br />

Komfortabel ist die »socket_peercred«-<br />

Methode, die einen Nutzer anhand seines<br />

umgebenden Shell-Login erkennt. Listing<br />

2 zeigt, wie der Admin das Plugin aktiviert<br />

und einen dadurch authentifizierten<br />

Benutzer einrichtet.<br />

Die modulare Authentifizierung ist übrigens<br />

auch ein Feature der kommenden<br />

Version 5.5 von MySQL. Der Kasten<br />

„Neuerungen in MySQL 5.5“ listet auf,<br />

was sie noch bringt.<br />

Ein optionaler Thread-Pool bietet bei Maria<br />

DB eine Alternative zum bisherigen<br />

Ein-Client-pro-Thread-Modell, das in bestimmten<br />

Nutzungsszenarien nachteilig<br />

sein kann [11]. Der Thread-Pool entkoppelt<br />

die Verbindungen zur <strong>Datenbank</strong><br />

von den eigentlichen Threads.<br />

Frischzellenkur<br />

Maria DB erfindet das Rad nicht neu,<br />

unterzieht MySQL aber einer notwendigen<br />

Frischzellenkur. Die hier nur im<br />

Groben skizzierte Zusammenstellung<br />

neuer Funktionen und der professionelle<br />

Hintergrund machen Maria DB zu einer<br />

attraktiven Alternative zum MySQL-Community-Server.<br />

Die progressive Aufnahme von Patches<br />

ermöglicht es schon heute, Funktionen zu<br />

nutzen, die erst in Monaten, Jahren oder<br />

auch nie im offiziellen MySQL-Server erscheinen<br />

werden. Größter Wermutstropfen<br />

ist die Dokumentation, die derzeit<br />

aus einer Mischung aus Knowledge Base<br />

auf der Website Askmonty.org und der<br />

bekannten MySQL-Dokumentation besteht.<br />

(mhu)<br />

n<br />

Infos<br />

[1] Maria DB: [http://mariadb.org]<br />

[2] Caspar Clemens Mierau, „Moderne MySQL-<br />

Forks und -Patches“: ADMIN-<strong>Magazin</strong><br />

03/ 10: [http://www.admin-magazin. de/<br />

content/moderne-mysql-forks-und-patches]<br />

[3] Quellen und Pakete: [http://askmonty.org/<br />

wiki/MariaDB:Download]<br />

[4] Storage-Engine Aria:<br />

[http://kb. askmonty.org/v/<br />

aria-storage-engine]<br />

[5] Namensänderung: [http://askmonty.org/<br />

wiki/Rename_Maria]<br />

[6] Xtra DB: [http://www.percona.com/docs/<br />

wiki/percona-xtradb:features:start]<br />

[7] Percona-Server: [http://www.percona.<br />

com/docs/ wiki/ percona-server:start]<br />

[8] Statistiken: [http://kb.askmonty.org/v/<br />

user-statistics]<br />

[9] Virtuelle Spalten: [http://kb.askmonty.<br />

org/v/virtual-columns]<br />

[10] Authentifizierung:<br />

[http://kb. askmonty.org/v/developmentpluggable-authentication]<br />

[11] Thread-Pool: [http://kb.askmonty.org/v/<br />

pool-of-threads]<br />

Der Autor:<br />

Caspar Clemens Mierau ist Medien-Kulturwissenschaftler,<br />

arbeitet an seiner Dissertation über<br />

Entwicklungsumgebungen und berät mit seinem<br />

Projekt Screenage auch Firmen wie Moviepilot.<br />

de, Artfacts.net und Aperto.de.<br />

Maria DB 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

37<br />

Listing 2: Pluggable Authentication<br />

01 MariaDB []> INSTALL PLUGIN socket_peercred SONAME<br />

'auth_socket.so';<br />

02 Query OK, 0 rows affected (0.00 sec)<br />

03<br />

04 MariaDB []> CREATE USER ccm IDENTIFIED VIA<br />

socket_peercred;<br />

Abbildung 1: Maria DB 5.2 legt Nutzungsstatistiken an, die sich auch mit »SELECT« anzeigen lassen.<br />

05 Query OK, 0 rows affected (0.00 sec)


Titelthema<br />

www.linux-magazin.de PostgreSQL 9.0 02/<strong>2011</strong><br />

38<br />

PostgreSQL 9 bringt Replikation und HA<br />

Sichere 9<br />

PostgreSQL beabsichtigt mit der neuen Version 9.0 zurück ins Spiel der großen <strong>Datenbank</strong>-Engines zu finden.<br />

Dazu bringt sie asynchrone Replikation und manch weiteres nützliches Feature fürs Unternehmen mit. Der<br />

Artikel zeigt anhand einer Suse-Installation, wie Admins Streaming Replication konfigurieren. Michael Kromer<br />

© Jim Mills, 123RF.com<br />

Oktober 2010, die PostgreSQL-Community<br />

ist sich einig: Mit der neunten Version<br />

[1] schließt die Open-Source-<strong>Datenbank</strong><br />

in vielen Bereichen zur Konkurrenz auf.<br />

Die meisten der 200 Funktionserweiterungen<br />

und Verbesserungen (siehe den<br />

<strong>Datenbank</strong>-Vergleich in diesem Schwerpunkt)<br />

standen schon länger auf der<br />

Wunschliste der Anwender, vor allem in<br />

Sachen HA und Replikation hinkte PostgreSQL<br />

der Konkurrenz hinterher.<br />

Jetzt helfen neue HA-Mechanismen den<br />

<strong>Datenbank</strong>profis im Unternehmen einfache<br />

Master-Slave-Setups einzurichten.<br />

Der Artikel zeigt das zum einfachen Nachbau<br />

anhand von Open Suse oder SLES.<br />

Streaming Replication<br />

9.1 folgen. Dank Write-Ahead Logging<br />

(WAL, [2]) fällt jetzt die bei Anwendern<br />

ungeliebte Notwendigkeit weg, ganze<br />

16-MByte-Logsegmente nach der Pointin-Time-Recovery-Methode<br />

(PITR) zu<br />

übertragen.<br />

Darüber hinaus stehen Slaves neuerdings<br />

zumindest mit Hot Standby read-only zur<br />

Verfügung. Im Gegensatz zur synchronen<br />

Replikation ist zwar der Datenbestand<br />

nach einem Schreibvorgang nicht sofort<br />

auf dem Slave verfügbar, jedoch halten<br />

sich die Abweichungen mit meist unter<br />

einer Sekunde Differenz auch auf belasteten<br />

<strong>Datenbank</strong>en in Grenzen. Das macht<br />

den Einsatz eines Slave auch in anderen<br />

Szenarien attraktiv, zum Beispiel fürs<br />

Reporting.<br />

tionen angekommen. Aktuelle Pakete für<br />

Open Suse wie auch SLES lassen sich<br />

jedoch im »server:database«-Repository<br />

des Open Suse Build Service finden, das<br />

beim Qualitätsstandard mit den Standard-Repositories<br />

gut mithält. Listing 1<br />

zeigt dessen Integration und die Paket-<br />

Installation.<br />

Das folgende Setup richtet einen Master<br />

(»10.1.1.1«) und einen Slave (»10.1.1.2«)<br />

ein. Das Szenario lässt sich durch beliebige<br />

weitere Slaves erweitern. Deren<br />

maximale Anzahl definiert der Eintrag<br />

»max_wal_senders« in »/var/lib/pgsql/<br />

data/postgresql.conf« (Listing 2). Tabelle<br />

1 gibt einen Überblick über die Parameter<br />

für die Streaming Replication in<br />

der Konfigurationsdatei.<br />

Nach dem Start des PostgreSQL-Dienstes<br />

hat der Server seinen Datenbereich unter<br />

»/var/lib/pgsql/data« initialisiert. Mit<br />

sudo ‐u postgres mkdir /var/lib/pgsql/data/U<br />

pg_xlog_archive; chmod 700 /var/lib/pgsql/U<br />

data/pg_xlog_archive<br />

legt der Admin das konfigurierte Archiv<br />

auf dem Master an. Die Streaming Replication<br />

benötigt momentan noch dauerhaft<br />

einen Superuser-Account, den der<br />

Admin in der PostgreSQL-Kon figuration<br />

absichern sollte (Listing 3)<br />

Den Slave initialisieren<br />

Danach erstellt er auf dem Master einen<br />

Abzug der <strong>Datenbank</strong>en und synchronisiert<br />

diesen per Rsync auf einen Slave:<br />

Der neue Streaming-Replication-Mechanismus<br />

der Version 9.0 (Abbildung 1)<br />

ist in wenigen Schritten eingerichtet.<br />

Zwar bringt PostgreSQL nur asynchrone<br />

Replikation, die synchrone soll aber in<br />

Installation<br />

Die aktuelle Version von PostgreSQL war<br />

bis Redaktionsschluss noch nicht in den<br />

Standard-Repositories der Suse-Distribu-<br />

psql ‐c "SELECT pg_start_backup('master‐U<br />

backup')"<br />

rsync ‐HPSav ‐‐exclude postmaster.pid U<br />

‐‐exclude postmaster.log data/* root@U<br />

10.1.1.2:`pwd`/data/<br />

psql ‐c "SELECT pg_stop_backup()"


Auf dem Slave steht dagegen in »/var/<br />

lib/pgsql/data/postgresql.conf«:<br />

hot_standby = on<br />

archive_mode = off<br />

archive_command = ''<br />

Und in »/var/lib/pgsql/data/recovery.<br />

conf«:<br />

standby_mode = on<br />

restore_command = 'rsync ‐a /var/lib/pgsqlU<br />

/data/pg_xlog_archive/%f %p'<br />

primary_conninfo = 'host=10.1.1.1 port=5432U<br />

user=postgres'<br />

trigger_file = '/tmp/pgsql‐replication.U<br />

trigger'<br />

Nach erfolgreicher Inbetriebnahme findet<br />

der Admin folgende Log-Einträge: Auf<br />

dem Master taucht der Slave bereits mit<br />

seiner IP auf und meldet »LOG: replication<br />

connection authorized: user=postgres<br />

host=10.1.1.2 port=55723«. In ähnlicher<br />

Weise meldet auch der Slave den<br />

Vollzug mit »LOG:<br />

streaming replication<br />

successfully<br />

connected to primary«.<br />

In der Prozessliste durch »ps -ef«<br />

schlägt sich das funktionierende Setup<br />

ebenfalls nieder (Abbildung 2).<br />

Ab diesem Moment repliziert PostgreSQL<br />

alle Daten vom Master an den oder die<br />

Slaves. Von denen kann jetzt bereits jeder<br />

im schlimmsten Fall zu einem Master<br />

werden. Der Kasten „Best Practices in<br />

Replikation“ gibt grundsätzliche Tipps<br />

nicht nur für solche Setups.<br />

In-Place Upgrades<br />

Wo früher Admins für ein <strong>Datenbank</strong>-Upgrade<br />

noch »pg_dump« und »pg_restore«<br />

oder im besten Falle den Pg-Migrator [3]<br />

verwenden mussten, kommt heute »pg_<br />

upgrade« zum Einsatz und verkürzt die<br />

Parameter-Name Typ Defaultwert<br />

Beschreibung<br />

max_wal_senders Integer 0 Anzahl der erlaubten WAL-Sender-Prozesse, also der<br />

Standby-Server, die mit dem Master eine Verbindung<br />

aufnehmen dürfen.<br />

wal_sender_delay Integer 200 Die Länge des Intervalls der zu akkumulierenden<br />

WAL-Daten in Millisekunden. Es empfiehlt sich, diesen<br />

Wert gerade in virtualisierten Hochlastumgebungen<br />

nicht zu niedrig (kleiner 100 ms) zu setzen<br />

und ihn mindestens in Zehnerschritten anzupassen.<br />

wal_keep_segments Integer 0 Anzahl der mindestens vorzuhaltenden Logdatei-<br />

Segmente (jeweils 16 MByte) in Pg_xlog. Gerät ein<br />

Standby-Server mit der Replikation über diesen<br />

Punkt hinaus ins Hintertreffen, bricht PostgreSQL<br />

die Replikationsverbindung ab.<br />

vacuum_defer_<br />

cleanup_age<br />

Archive_Command<br />

Pg_xlog<br />

PostgreSQL<br />

Master<br />

WAL Sender<br />

Archive<br />

Restore_Command<br />

WAL Receiver<br />

Pg_xlog<br />

PostgreSQL<br />

Slave<br />

Tabelle 1: Streaming Replication Parameter<br />

8.4<br />

9.0<br />

Abbildung 1: Wo früher Warm Standby über das Archive-Kommando funktionierte<br />

(oben), arbeitet heute die Streaming Replication mit WAL-Sender und -Receiver.<br />

Integer 0 Verzögert bei einem »VACUUM« auf dem Master,<br />

erhöht damit die Laufzeit für Anfragen vom Slave.<br />

Best Practices bei DB-Replikation<br />

Die Natur der Datenreplikation ist durchaus komplex, man denke nur<br />

an Themen wie ACID- oder AKID-Konformität. Doch einige Vorgaben<br />

haben sich als elementarer Grundstock für den erfolgreichen Betrieb<br />

herauskristallisiert. Der Admin sollte Folgendes beachten:<br />

n Generell UTC verwenden und auf Zeitzonen mit Sommerzeit (DST,<br />

Daylight Savings Time) verzichten.<br />

n Seine Uhren mit NTP und mehreren Zeitservern synchronisieren.<br />

n Möglichst identische Systeme mit der gleichen Systemkonfiguration<br />

verwenden.<br />

n Klare Namen an die Systeme vergeben. Bezeichner wie »master«<br />

und »slave« sind denkbar ungeeignet und erzeugen schon bei einem<br />

Switch der <strong>Datenbank</strong>en-Rollen Konfusion.<br />

n Die Replikationsstände regelmäßig überwachen. Auseinanderdriftende<br />

Datenbestände verursachen unvorhersehbare Probleme.<br />

Beim letzten Punkt ist es für den <strong>Datenbank</strong>-Admin sinnvoll, auf dem<br />

Master mit »SELECT pg_current_xlog_location();« den aktuellen Datenbestand<br />

(anhand der aktuellen Position im Log) abzufragen. Den<br />

vergleicht er mit der letzten empfangenen Log-Position auf dem Slave<br />

(»SELECT pg_last_xlog_receive_location();«) und dessen aktueller Log-<br />

Position (»SELECT pg_last_xlog_replay_location();«, dieser Stand ist<br />

wirklich auf der Platte).<br />

Wartungsfenster für große <strong>Datenbank</strong>en<br />

bei einem sicheren Upgrade beträchtlich.<br />

Selbst nach einem empfohlenen »vacuumdb<br />

--all --analyze« sind auch größere<br />

Datenbestände eher in Minuten als Stunden<br />

auf den aktuellen Stand gebracht.<br />

Performance Nebensache<br />

Auch wenn für die Entwickler Performance-Optimierungen<br />

bei dieser Release<br />

keine Priorität hatten, wirkt sich<br />

so manche Änderungen sehr positiv aus.<br />

Durch Indizes mit »NOT-NULL«-Feldern<br />

untersucht die Version 9 im Gegensatz<br />

zu PostgreSQL 8.4 nur den Index, während<br />

8.4 hierzu die Tabelle selbst filtern<br />

musste. Mit dem Entfernen unnötiger<br />

Join-Statements, beispielsweise wenn<br />

referenzierende IDs per »UNIQUE« ohnehin<br />

eindeutig sind, lässt sich in größeren<br />

Abfragen deutlich Zeit sparen.<br />

Mit der effizienteren Neu-Implementation<br />

von »LISTEN« und »NOTIFY« bearbeitet<br />

der Master Events schneller, und dank<br />

der neuen Payload-Option kann eine lau-<br />

Listing 1: PostgreSQL 9.0 auf Open<br />

Suse 11.3<br />

01 zypper ar http://download.opensuse.org/repositories/<br />

server:/database:/postgresql:/9.0/openSUSE_11.3/<br />

server:database:postgresql:9.0.repo<br />

02 zypper ref<br />

03 zypper in postgresql‐server<br />

04 /etc/init.d/postgresql start<br />

PostgreSQL 9.0 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

39


Titelthema<br />

www.linux-magazin.de PostgreSQL 9.0 02/<strong>2011</strong><br />

40<br />

01 listen_addresses = '*'<br />

02 max_connections = 500<br />

03 shared_buffers = 32MB<br />

Abbildung 2: Nachdem die Verbindung zwischen Master und Slave besteht, zeigt auch die Prozessliste die zuletzt gestreamte Log-Position.<br />

schende Anwendung einen bis zu 8000<br />

Byte langen String erhalten. Die Anweisung<br />

»VACUUM FULL« dupliziert nicht<br />

mehr jeden Datensatz einzeln, sondern<br />

erzeugt eine neue Tabelle und kopiert alle<br />

Einträge in einem Vorgang. Das spart je<br />

nach Datenmenge bis zu 60 Prozent der<br />

bisher benötigten Zeit.<br />

Column-Trigger rufen automatisch Stored<br />

Procedures auf, sobald die <strong>Datenbank</strong><br />

den Wert eines Feldes explizit aktualisiert,<br />

»WHEN«-Trigger prüfen dagegen<br />

datenbezogene Konditionen. Beide Funktionen<br />

vereinfachen viele Arbeiten innerhalb<br />

einer Applikation und reduzieren<br />

die Anzahl der auszuführenden Trigger,<br />

was die CPU entlastet sowie RAM und<br />

Festplatten-I/ O spart.<br />

Das folgende Bespiel ruft die Procedure<br />

»tr_update_status()« auf, sobald jemand<br />

einen Eintrag der Tabelle »tbl_user« im<br />

Feld »user_status« aktualisiert:<br />

CREATE TRIGGER update_status BEFORE UPDATE U<br />

OF user_status ON tbl_user FOR EACH ROW U<br />

EXECUTE PROCEDURE tr_update_status();<br />

Das lässt sich in vielen Fällen sinnvoll<br />

verwenden: Auf einem Asterisk-Server<br />

04 wal_level = hot_standby<br />

05 archive_mode = on<br />

Listing 2: »/var/lib/pgsql/data/<br />

postgresql.conf«<br />

06 archive_command = 'rsync ‐a %p /var/lib/pgsql/data/<br />

pg_xlog_archive/%f'.<br />

07 max_wal_senders = 1<br />

08 wal_keep_segments = 32<br />

Listing 3: »/var/lib/pgsql/data/<br />

pg_hba.conf«<br />

01 TYP DATENBANK USER ADDRESSE ACL<br />

02 host replication postgres 10.1.1.2/32 trust<br />

03 host replication all 0.0.0.0/0 reject<br />

mit PostgreSQL-Backend zum Beispiel<br />

kann der Admin dies nutzen, um nach<br />

einem Telefonanruf eine Neuberechnung<br />

des Guthabens durchzuführen, ohne eine<br />

eigene komplexe Applikationslogik entwickeln<br />

zu müssen.<br />

Mehr Sicherheit durch<br />

Token und Passwort-Policy<br />

Mit der Möglichkeit, per Radius [4]<br />

zu authentifizieren, etwa durch Token,<br />

Cryptocard oder E-Token (Alladin) [5],<br />

macht PostgreSQL einen großen Schritt in<br />

Richtung hochsichere Umgebung. Mit der<br />

einfachen Konfiguration der Einträge »radiusserver«,<br />

»radiussecret«, »radiusport«<br />

und »radiusidentifier« ist die Anbindung<br />

auch schon erledigt. Das Modul »passwordcheck«<br />

erzwingt jedoch auch ohne<br />

Radius sichere Kennwörter.<br />

Schon in älteren Versionen ließ sich PostgreSQL<br />

mit Erweiterungen wie Slony [6],<br />

Londiste [7] oder Pgpool-II [8] das Replizieren<br />

beibringen. So schnell sind diese<br />

Erweiterungen in vielen Installationen<br />

auch nicht zu ersetzen, weil sie häufig<br />

maßgeschneiderte Setups mitbringen. Die<br />

jetzt in Version 9 eingebaute Streaming<br />

Replication ist jedoch ein großer Schritt,<br />

da die meisten Admins keine komplexen<br />

Replikationsstrategien benötigen, wenn<br />

sie lediglich Daten von mehreren Orten<br />

im Netzwerk intensiv nutzen oder hochverfügbar<br />

machen wollen.<br />

Es kommt noch mehr<br />

Hot Standby und In-Place Upgrades<br />

sorgen dafür, dass PostgreSQL auch in<br />

Sachen Usability einen erheblichen Fortschritt<br />

verzeichnet. Bessere Performance<br />

und zahlreiche kleinere Verbesserungen<br />

an der Kommandosprache wie zum Beispiel<br />

»GRANT ON ALL« oder »DEFAULT<br />

PERMISSIONS« helfen dem Admin einfache<br />

Aufgaben nun auch wirklich einfach<br />

umzusetzen. Das spart Zeit.<br />

Für gehobene Ansprüche in der Replikation,<br />

zum Beispiel Multi-Master-Setups,<br />

empfiehlt es sich, noch bis März zu<br />

warten, da dann der Postgres Extensible<br />

Cluster (Postgres-XC, [9]) auch Schreibvorgänge<br />

unter Version 9.0 relativ einfach<br />

verteilen wird. Mit den durch Oracle ausgerufenen<br />

Preissteigerungen für MySQL<br />

[10] dürfte bis dahin PostgreSQL auch für<br />

hartgesottene MySQL-Befürworter einen<br />

neuen Blick wert sein. (mfe) n<br />

Infos<br />

[1] PostgreSQL 9.0: [http://www.postgresql.<br />

org/docs/ 9. 0/ static/release-9-0]<br />

[2] PostgreSQL WAL:<br />

[http:// tuning.postgresql.de/wal]<br />

[3] Pg-Migrator: [http://pgfoundry.org/<br />

projects/pg-migrator]<br />

[4] Free Radius SQL, Howto:<br />

[http://wiki.freeradius.org/SQL_HOWTO]<br />

[5] Titel-Thema „Schlüsseldienste: Zertifikate,<br />

Keys und Tokens in der Praxis“:<br />

<strong>Linux</strong>-<strong>Magazin</strong>, 12/ 10, S. 29 bis 56<br />

[6] Slony: [http://www.slony.info]<br />

[7] Londiste: [http://sky tools.projects.<br />

postgresql. org/ doc/ londiste.cmdline.html]<br />

[8] Pgpool-Projekte:<br />

[http://pgpool. projects.postgresql.org])<br />

[9] Postgres-XC: [http://wiki.postgresql.org/<br />

wiki/Postgres-XC]<br />

[10] MySQL-Preise:<br />

[http://www.mysql.com/products]<br />

Der Autor<br />

Michael Kromer ist Senior IT Consultant und<br />

<strong>Linux</strong> Engineer bei der Millenux GmbH in München.<br />

Er entwickelt an diversen<br />

Open-Source-Projekten<br />

(Kernel, Open NX, Asterisk,<br />

Virtualbox und ISC Bind)<br />

mit. Zu finden ist er unter<br />

[http://medozas. de].


MAGAZIN<br />

SONDERAKTION<br />

Testen Sie jetzt<br />

3 Ausgaben<br />

für 3 Euro!<br />

JETZT<br />

MIT DVD!<br />

Jetzt schnell bestellen:<br />

• Telefon +49 (0)7131 2707 274<br />

• Fax +49 (0)7131 2707 78 601<br />

• E-Mail: abo@linux-magazin.de<br />

• Internet:<br />

http://www.linux-magazin.de/probeabo<br />

Mit großem Gewinnspiel<br />

(Infos unter: www.linux-magazin.de/probeabo)<br />

GEWINNEN SIE... DAS NAVIGATIONSGERÄT MIO MOOV<br />

SPIRIT V735 TV IM WERT VON 373,- EURO (UVP)<br />

Einsendeschluss ist der 15.03.<strong>2011</strong>


Titelthema<br />

www.linux-magazin.de NoSQL 02 /<strong>2011</strong><br />

42<br />

Drei NoSQL-<strong>Datenbank</strong>en: Redis, Riak und Cassandra<br />

Frischer Wind<br />

Unter dem Schlagwort NoSQL sorgen gegenwärtig diverse Kandidaten für Wirbel, meist im Zusammenspiel mit<br />

Web-2.0-Anwendungen. Dieser Artikel zeigt an den drei Beispielen Redis, Riak und Cassandra, woher der Wind<br />

bei den SQL-Verweigerern weht. Mathias Meyer<br />

© Ron Zmiri, 123RF.com<br />

<strong>Datenbank</strong>en wie MySQL verursachen<br />

immer wieder Probleme, wenn Tabellen<br />

viele Millionen Datensätze ansammeln.<br />

Immer schwerer lassen sich dann Indizes<br />

pflegen, Daten archivieren oder die Schemata<br />

ändern. Das Problem brachte Entwickler<br />

dazu, neue Konzepte zu suchen.<br />

Als Ergebnis entstand eine große Anzahl<br />

von teilweise sehr unterschiedlichen Ansätzen<br />

und Projekten, die sich unter dem<br />

Kürzel NoSQL versammeln.<br />

Alternative NoSQL<br />

Die Abkürzung tauchte zwar bereits in<br />

den 90er Jahren zum ersten Mal auf,<br />

doch erst seit 2009 nimmt das Konzept<br />

mehr und mehr Raum in der <strong>Datenbank</strong>welt<br />

ein. Trotz des aktuellen Hype<br />

beansprucht kaum eine der Lösungen,<br />

ein kompletter Ersatz für die relationalen<br />

Vorväter zu sein. Auch wenn sich der von<br />

Experten vergebene Name im Nachhinein<br />

zumindest als unglücklich herausgestellt<br />

hat, ist er wohl immer noch die klarste<br />

Beschreibung dieser <strong>Datenbank</strong>en. Die<br />

Bedeutung des Kürzels NoSQL interpretieren<br />

Quellen ganz unterschiedlich: von<br />

„no“ (kein) über „not only“ (nicht nur)<br />

sogar bis „less“ (weniger) SQL.<br />

Immerhin scheinen sich Entwickler und<br />

Anwender darin einig, dass der Name<br />

NoSQL nicht für eine völlige Ablehnung<br />

relationaler <strong>Datenbank</strong>en und von SQL<br />

steht. Stattdessen geht es um geeignete<br />

Alternativen, vor allem für den, der die<br />

Daten einer Applikation teilweise auslagern<br />

will. Das hilft schnell wachsende<br />

Datenmengen sinnvoll zu aggregieren<br />

oder auszuwerten.<br />

Schemafreiheit und<br />

Skalierbarkeit<br />

Die meisten Vertreter der NoSQL-Welt<br />

haben sich darauf eingelassen, die klassischen,<br />

starren Restriktionen aufzuheben.<br />

Erstens skaliert die strikte Konsistenz ei-<br />

nes fixen relationalen Schemas schlecht<br />

über mehrere Nodes. Zweitens erlauben<br />

es lose Schema-Definitionen eher, Daten<br />

im Laufe der Zeit zu ändern und je nach<br />

Bedarf Attribute wie die Metadaten auszulassen<br />

oder hinzuzufügen. Das hilft<br />

Applikation und Schema schneller und<br />

einfacher zu ändern. Das dritte Ziel, das<br />

viele der neuen <strong>Datenbank</strong>en verfolgen,<br />

ist hohe Skalierbarkeit, nicht nur vertikal,<br />

sondern auch horizontal, und zwar so<br />

unkompliziert wie möglich.<br />

Einer relationalen <strong>Datenbank</strong> einen<br />

neuen Clusternode hinzuzufügen und so<br />

die Kapazität linear zu vergrößern erweist<br />

sich häufig als keine leichte Aufgabe.<br />

Stattdessen greifen Admins auf<br />

Techniken wie Sharding (das horizontale<br />

Partitionieren von <strong>Datenbank</strong>en) oder<br />

Master-Slave-Setups zurück, die aber nur<br />

schlecht und wenig elastisch nach oben<br />

und unten skalieren.<br />

Innerhalb der letzten Jahre haben in der<br />

NoSQL-Welt zwei Modelle der Datenverteilung<br />

regen Zuspruch gefunden, die aus<br />

dem Umfeld der Internetfirmen Google<br />

und Amazon stammen. Deren Anforderungen<br />

an horizontale und Datacenterübergreifende<br />

Skalierbarkeit, Datenkonsistenz<br />

und Verfügbarkeit führten zur<br />

Entwicklung der im Folgenden immer<br />

wieder angesprochenen Amazon Dynamo<br />

[1] und Googles Big Table [2].<br />

Document-, Key-Value-,<br />

Column-Stores und Graphen<br />

Doch NoSQL-<strong>Datenbank</strong>en widmen sich<br />

nicht ausschließlich großen Datenmengen<br />

oder Themen wie Schemalosigkeit<br />

und Skalierung. Die Tools sind sogar so<br />

verschieden, dass jede simple Definition<br />

zu einfach gestrickt scheint. Viele der in


den letzten Jahren entstandenen DBs setzen<br />

auf bewährte Technologien, frischen<br />

sie auf und kombinieren sie mit neuen<br />

Strömungen, zum Beispiel für die wachsenden<br />

Anforderungen des Web.<br />

Es überrascht nicht, dass in den letzten<br />

Jahren Experten zahlreiche verschiedene<br />

Ansätze entwickelten, NoSQL- (und andere)<br />

<strong>Datenbank</strong>en zu kategorisieren [3].<br />

Viele Quellen stecken NoSQL-<strong>Datenbank</strong>en<br />

gern in mehrere Schubladen, um sie<br />

danach noch genauer einzuteilen oder zu<br />

beschreiben.<br />

Auch wenn der praktische Nutzen dieser<br />

Kategorien gering sein mag, so vermitteln<br />

sie doch einen ersten Überblick: NoSQL-<br />

<strong>Datenbank</strong>en unterteilen sich demnach<br />

in Key Value Stores, Dokumenten-<strong>Datenbank</strong>en,<br />

Column Stores und Graphdatenbanken.<br />

Im Zuge der zunehmenden Verbreitung<br />

verliert diese Definition allerdings an Relevanz.<br />

Deutlich alltagstauglicher ist es,<br />

die <strong>Datenbank</strong>en unter den Aspekten von<br />

Daten-Verteilung, -Modell und -Ablage<br />

zu unterscheiden. Hier sind die Merkmale<br />

deutlicher ausgeprägt als in den<br />

klassischen Kategorien, bei denen viele<br />

der Tools bei genauerem Hinsehen gar in<br />

mehrere Sparten passen.<br />

Wesentlich wichtiger für die Praxis ist<br />

auch die Betrachtung nach dem Handling<br />

der Daten. Sowohl Verteilung, Modellierung<br />

als auch Storagemodell haben<br />

direkte Auswirkung auf die alltägliche<br />

Arbeit mit <strong>Datenbank</strong>en und deren Administration.<br />

Das lässt sich am besten an<br />

konkreten Beispielen erläutern.<br />

E Redis<br />

Redis [4] ist ein besonderer Vertreter seiner<br />

Gattung und von der Architektur her<br />

unter allen NoSQL-<strong>Datenbank</strong>en wohl<br />

am einfachsten gestrickt. Ursprünglich<br />

als einfacher Key Value Store entwickelt,<br />

bei dem ein Key auf einen bestimmten<br />

Wert zeigte, der auch nur so greifbar war,<br />

bot Redis von Anfang an einzigartige Datenstrukturen.<br />

Neben einfachen String-<br />

Paaren speichert es Listen, Sets, sortierte<br />

Sets und mittlerweile auch Hashe s. Die<br />

meisten Operationen arbeiten atomar,<br />

das heißt, zwei unabhängige Prozesse<br />

können Elemente an eine Liste anhängen<br />

oder in ein Set einfügen, ohne dass sie<br />

dabei in Konflikt geraten.<br />

Das ermöglicht Redis mit einer einfachen<br />

Architektur, die auf genau einem CPU-<br />

Kern läuft. Redis ist nur ein Prozess ohne<br />

Multithreading, der auf hohen Durchsatz<br />

getrimmt ist und es durch einen Eventbasierten<br />

Ansatz trotzdem verhindert,<br />

dass sich konkurrierende Clients in die<br />

Quere kommen. In der Praxis bedeutet<br />

dies, dass Redis zwar nicht beliebig<br />

skaliert, trotzdem lassen sich aus einem<br />

Prozess ohne Weiteres mehrere Zehntausend<br />

Reads oder Writes pro Sekunde<br />

herausholen.<br />

Neben der simplen, aber sehr effizienten<br />

Architektur baut Redis auf einem ebenso<br />

NoSQL 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

43


Titelthema<br />

www.linux-magazin.de NoSQL 02 /<strong>2011</strong><br />

44<br />

einfach gestrickten Protokoll auf, das<br />

über den Standardport 6379 verfügbar<br />

ist und das der interessierte Einsteiger<br />

entweder über Telnet oder das der installierten<br />

<strong>Datenbank</strong> beiliegende Tool<br />

»redis-cli« ausprobieren kann [5].<br />

Redis-Cli<br />

Es handelt sich um ein reines Ascii-<br />

Protokoll mit einem kompakten und<br />

übersichtlichen Kommando-Set, um die<br />

angebotenen Datenstrukturen zu manipulieren.<br />

Wer ein einfaches Key-Value-<br />

Paar schreiben will, verwendet das Redis-<br />

Kommando »set«:<br />

redis‐cli set session:3a38ef U<br />

"{'user_id': 1}"<br />

Hier weist das Tool einer Session einen<br />

Json-String zu, der den eingeloggten Nutzer<br />

identifiziert. Auslesen lässt sich der<br />

Wert mit »get«:<br />

redis‐cli get session:3a38ef U<br />

"{'user_id': 1}"<br />

Werte können auch Zahlen sein, die Redis’<br />

atomare Operationen als Zähler implementieren:<br />

redis‐cli incr user_id:1:logins<br />

Hier inkrementiert der Anwender einen<br />

Zähler, der die Logins eines einzelnen<br />

Nutzers mitzählt. Existiert in der <strong>Datenbank</strong><br />

noch kein Wert unter dem angegebenen<br />

Key, geht Redis von 0 aus und<br />

erhöht den Wert entsprechend.<br />

Listen und Queues: Rpush,<br />

Lpush, Rpop und Lpop<br />

Redis’ Listen eignen sich gut für sehr<br />

einfache Queues. Sowohl das Hinzufügen<br />

(Push) als auch das Holen eines Elements<br />

von einer Liste (Pop) ist atomar. Viele<br />

Clients können also gleichzeitig Elemente<br />

auf eine Liste schieben, während eine<br />

Reihe von Worker-Prozessen von diesen<br />

Listen Elemente holt und abarbeitet, ohne<br />

dass Clients oder Worker gegenseitig Daten<br />

überschreiben oder Jobs mehrfach<br />

abarbeiten.<br />

Ein einfacher Job in diesem Sinne wäre<br />

zum Beispiel das Einlesen und Auswerten<br />

einer URL:<br />

redis‐cli rpush jobs "fetch|http://linux‐U<br />

magazin.de"<br />

Rpush hängt ein Element an das Ende der<br />

Liste an, während Lpush eines am Anfang<br />

einfügt. Lpop und Rpop holen entsprechende<br />

Elemente vom Anfang oder<br />

Ende einer Liste. Producer würden im<br />

obigen Beispiel mit Rpush Jobs am Ende<br />

anhängen, Consumer holen die Jobs mit<br />

Lpop vom Anfang der Liste:<br />

redis‐cli lpop jobs "fetch|http://linux‐U<br />

magazin.de"<br />

Dies ist nur ein kleiner Auszug aus dem<br />

Kommando-Set von Redis. Mit Sets, sortierten<br />

Sets und Hashes deckt Redis vielerlei<br />

Szenarien ab, auch wenn schon<br />

eine <strong>Datenbank</strong> wie MySQL Teil der Infrastruktur<br />

ist.<br />

Redis bietet sich auch als Komplement zu<br />

einer bereits existierenden Database an,<br />

um zum Beispiel Dinge wie Zähler, Statistiken,<br />

Job-Queues auszulagern oder einfach<br />

nur effizient und performant Daten<br />

zwischen mehreren Prozessen zu teilen.<br />

Restriktionen<br />

Wer Redis in die eigenen Infrastruktur<br />

integrieren will, muss aber einige Einschränkungen<br />

beachten, die die <strong>Datenbank</strong><br />

mitbringt. Die Grundidee der Entwickler<br />

war es, alle Daten im Arbeitsspeicher<br />

zu halten und so hohe Durchsatzraten<br />

zu gewährleisten. Deshalb war das<br />

Daten-Set anfangs durch die Größe des<br />

freien Speichers beschränkt.<br />

Diese Restriktion hat sich etwas gelockert,<br />

seit Redis in Version 2.0 Virtual<br />

Memory [6] eingeführt hat. Dabei hält es<br />

nur noch die Keys im Speicher und lagert<br />

die Werte auf die Festplatte aus, was die<br />

Speicheranforderung auf das gesamte Set<br />

von Keys samt Referenzen auf die Virtual<br />

Memory Pages im Speicher oder auf der<br />

Disk reduziert.<br />

Um ein Mindestmaß an Datenpersistenz<br />

sicherzustellen, speichert Redis in<br />

definierbaren Abständen Snapshots der<br />

gesamten <strong>Datenbank</strong> auf die Festplatte.<br />

Die Intervalle orientieren sich an der<br />

Zahl von Schreibzugriffen in einem bestimmten<br />

Zeitrahmen, zum Beispiel 300<br />

Schreibvorgängen innerhalb von 60 Sekunden.<br />

Hierfür forkt Redis einen neuen<br />

Prozess, der alle Daten im Speicher in ein<br />

Dumpfile auf die Platte bannt.<br />

Dieser Fork profitiert zwar von Copy-on-<br />

Write, was Daten unter Umständen erst<br />

vom Master-Prozess holt, wenn die DB<br />

sie schreibt, trotzdem sollte der Admin<br />

genug Speicher für einen zweiten Redis-Prozess<br />

frei halten. Alternativ dazu<br />

verzichtet er auf Wunsch völlig auf die<br />

Snapshot-Persistenz oder verlagert diese<br />

auf einen Slave.<br />

Gezielte Snapshots<br />

Abgesehen von den konfigurierbaren Abständen<br />

kann auch der Befehl »bgsave«<br />

jederzeit manuell einen Abzug der Daten<br />

auf Platte schreiben, Redis erstellt beim<br />

Beenden einen Abzug auf die Harddisk,<br />

zum Beispiel wenn der Admin die <strong>Datenbank</strong><br />

mit dem »shutdown«-Kommando<br />

herunterfährt.<br />

Da sich diese Art der Persistenz bei sehr<br />

großen oder schreibintensiven <strong>Datenbank</strong>en<br />

als nicht besonders praktikabel<br />

erweist, fügten die Entwickler eine Art<br />

Transaktionslog hinzu, das alle Writes<br />

speichert. Dieser Append-only-Modus<br />

hängt Befehle nur an das Log an. Hierfür<br />

verwendet der Admin das Kommando<br />

»bgrewriteaof«, das ähnlich den<br />

Snapshots einen neuen Prozess erzeugt<br />

und ein neues Log schreibt. Dies enthält<br />

alle notwendigen Befehle, um eine andere<br />

<strong>Datenbank</strong> in den gleichen Zustand<br />

zu versetzen.<br />

Wie oft der Admin diese Compaction anstoßen<br />

sollte, hängt von vielen Faktoren<br />

ab, vor allem aber vom verfügbaren Platz<br />

auf der Platte. Hiervon bedarf es mindestens<br />

noch genug, um den kompletten<br />

Datenumfang der Redis-<strong>Datenbank</strong> neben<br />

dem alten Log abzulegen. Außerdem<br />

sollte der Administrator den Zeitaufwand<br />

für eine größere <strong>Datenbank</strong> nicht unterschätzen.<br />

In den Setups des Autors läuft<br />

der Rewrite-Prozess jede Nacht, je nach<br />

Plattenplatz mag es auch sinnvoll sein,<br />

den Prozess nur einmal pro Woche laufen<br />

zu lassen, zur Zeit des geringsten Betriebs,<br />

beispielsweise am Wochenende.<br />

Nur beim Speicher<br />

anspruchsvoll<br />

Redis ist ansonsten recht anspruchslos<br />

beim Betrieb, es verlangt schnellen und<br />

vor allem viel Speicher, die andere Hardware<br />

ist unkritisch. Allerdings sollte die<br />

Speicherausnutzung in ein Monitoringsystem<br />

eingebunden sein.


www.linux-magazin.de<br />

NoSQL 02/<strong>2011</strong><br />

Titelthema<br />

1-1000<br />

7001-8000<br />

1-1000<br />

7001-8000<br />

1001-2000<br />

2001-3000<br />

6001-7000<br />

5001-6000<br />

1001-2000<br />

2001-3000<br />

6001-7000<br />

5001-6000<br />

45<br />

3001-4000 4001-5000<br />

3001-4000 4001-5000<br />

Vnodes<br />

Abbildung 1: Im Riak-Cluster, hier aus acht virtuellen Nodes, kommunizieren die<br />

Knoten über das Gossip-Protokoll miteinander und fangen so Ausfälle ab.<br />

hash("session:1234")<br />

Abbildung 2: Riaks Consistent Hashing reduziert die im Cluster zu übertragenden<br />

Daten auf Hashes. Das beschleunigt auch die Reaktion auf einen Node-Verlust.<br />

Redis unterstützt darüber hinaus eine<br />

sehr einfache Art von Master-Slave-<br />

Replikation. Beliebig viele Slaves bekommen<br />

auf Wunsch Änderungen vom<br />

Master übermittelt und lassen sich für<br />

beschleunigte Lesezugriffe verwenden.<br />

Sharding ist derzeit der einzige Weg, um<br />

die Skalierungsrestriktionen von Master-<br />

Slave-Setups zu umschiffen. Allerdings<br />

arbeiten die Entwickler zurzeit sehr aktiv<br />

an einer Cluster-Variante, die die Skalierung<br />

nach oben und unten automatisiert,<br />

ähnlich Riaks Dynamo-Prinzip im folgenden<br />

Abschnitt.<br />

E Riak<br />

Während Redis mit vielfältigen Datenstrukturen<br />

und hohem Durchsatz glänzt,<br />

verfolgt Riak [7] andere Ziele: hohe Verfügbarkeit,<br />

Ausfallsicherheit sowie lineare<br />

und einfache Skalierbarkeit. Riak baut<br />

dafür sehr stark auf Amazons Dynamo-<br />

Konzept auf. Neben dem nicht mehr aktiv<br />

betreuten Dynomite ist es wohl die<br />

dem Original am nächsten kommende<br />

Implementierung.<br />

Datenablage und -anfrage in Riak folgen<br />

dem Key-Value-Schema, wobei ein Key<br />

auf ein Objekt beliebiger Art zeigt, es<br />

kann sich um Json, XML oder binäre<br />

Daten handeln. Dem Aufbau des Key sind<br />

auch keine Grenzen gesetzt, ähnlich Redis<br />

greifen die Programmierer hier aber<br />

auch zu Konstrukten, die selbsterklärend<br />

sind, wie die im Abschnitt zu Redis beschriebenen<br />

Session Keys. Die <strong>Datenbank</strong><br />

fasst die Schlüssel in so genannten<br />

Buckets zusammen und erreicht so eine<br />

logische Trennung der Daten.<br />

Schlüsselraum<br />

Der Key-Space bietet Platz für 2 160 Keys<br />

und ist partitioniert in so genannte virtuelle<br />

Nodes (Vnodes, Abbildung 1). Ein<br />

Vnode ist verantwortlich für eine Partition<br />

der Daten, ein physischer Node kann<br />

mehrere Vnodes haben. Über Consistent<br />

Hashing stellt jeder Knoten im Cluster<br />

fest, wo sich der Wert zu einem Key befindet.<br />

Das bedeutet, dass kein Node in<br />

einem Riak-Cluster eine besondere Rolle<br />

hat, zum Beispiel als Master.<br />

Clients können jeden Knoten ansprechen,<br />

um jeden dem Cluster bekannten Key abzufragen.<br />

Der vom Client befragte Node<br />

heißt Coordinator und ist dafür verantwortlich,<br />

die Daten vom richtigen Knoten<br />

zu holen und an den Client zurückzugeben.<br />

Analog funktionieren Schreibzugriffe,<br />

die Kommunikation untereinander<br />

erledigt das Gossip-Protokoll (Englisch<br />

für Geschwätz, Tratsch).<br />

Mit den partitionierten Daten schafft Riak<br />

die Grundlage für einfache Skalierbarkeit<br />

nach oben und unten. Damit sich ein<br />

neuer physischer Node in den Cluster<br />

einbindet, muss er sich nur bei einem<br />

existierenden Knoten über das Gossip-<br />

Protokoll anmelden. Anschließend beansprucht<br />

er eine Reihe von Vnodes für<br />

sich und fordert die entsprechenden<br />

Datensätze von allen Nodes im Cluster<br />

an. Ist der Transfer abgeschlossen, kann<br />

der neue Node Lese- und Schreibbefehle<br />

annehmen.<br />

Verlässt ein Node den Cluster wieder,<br />

verteilt der Cluster die Vnodes auf die<br />

übrigen Knoten. Die Partitionierung<br />

der Daten und das Consistent Hashing<br />

(Abbildung 2) sorgen dafür, dass die zu<br />

transportierenden Daten auf das Notwendigste<br />

reduziert sind und kein volles Rebalancing<br />

des Clusters notwendig ist.<br />

Riak-Replikate und -Knoten<br />

Um eine hohe Verfügbarkeit zu erreichen,<br />

repliziert der Riak-Cluster die Daten. Für<br />

jeden Bucket konfiguriert der Admin, wie<br />

viele Kopien (Replikate) seiner Daten es<br />

innerhalb des Clusters geben soll (Abbildung<br />

3). In einem Cluster mit drei<br />

Nodes und drei Replikaten landet auf<br />

mindestens zwei Nodes eine Kopie jedes


Titelthema<br />

www.linux-magazin.de NoSQL 02 /<strong>2011</strong><br />

46<br />

Datums. Im Cluster ist bekannt, welcher<br />

Node ein Replikat welchen Datums hat.<br />

»N«, »R« und »W«<br />

Der Dynamo-Jargon bezeichnet die<br />

Anzahl der Replikate mit »N«. Fällt ein<br />

Node aus, existieren immer noch andere<br />

Knoten, von denen sich die Daten lesen<br />

lassen. Zusätzlich zu »N« gibt es noch<br />

die Werte »R« und »W«, die zusammen<br />

gemeinhin den Namen Quorum tragen.<br />

»R« gibt vor, von wie vielen Replikaten<br />

ein Datum erfolgreich gelesen sein muss<br />

(über den Coordinator-Node), damit ein<br />

Lesevorgang als erfolgreich abgeschlossen<br />

gilt. Das Gleiche definiert »W« für<br />

Schreibvorgänge.<br />

Sowohl »R« als auch »W« kann der Admin<br />

für jeden Lese- oder Schreibvorgang explizit<br />

angeben und hat damit eine Art<br />

Hebel in der Hand, mit dem er die Konsistenz<br />

der Daten innerhalb des Clusters<br />

abstimmt. Gibt er für das Schreiben nur<br />

ein »W« von »1« vor, muss Riak das Datum<br />

nur auf eine Kopie schreiben. Die<br />

anderen Kopien bekommen das Update<br />

früher oder später auch, was den Cluster<br />

wieder konsistent macht. Dieses Konzept<br />

nennt sich Eventual-Consistency [8],<br />

striktere Konsistenz lässt sich über den<br />

Wert von »W« einrichten.<br />

Das Gleiche gilt für »R«. Wer hier einen<br />

niedrigen Wert wählt, zum Beispiel »1«,<br />

geht das Risiko ein, dass sein Cluster von<br />

einem Replikat Daten liest, die noch nicht<br />

auf dem neuesten Stand sind. Wählt er<br />

Wie oben erwähnt, lassen sich in Riak<br />

beliebige Daten ablegen. Besitzen diese<br />

aber eine gewisse Struktur, zum Beispiel<br />

Attribut-Wert-Paare, dann empfiehlt sich<br />

Json. Das macht es einfacher, auf die Daein<br />

größeres »R« und der Coordinator-<br />

Node stellt fest, dass ein Replikat nicht<br />

aktuell ist, kommt das so genannte Read<br />

Repair zum Zuge. Hat der veraltete Node<br />

in der Zwischenzeit kein kollidierendes<br />

Update erhalten und hat er das Datum<br />

noch nicht, aktualisiert der Coordinator<br />

das Datum auf dem Replikat. Riak benutzt<br />

Vector Clocks, um Daten zu versionieren<br />

und Konflikte zu entdecken<br />

oder zu lösen.<br />

Ausfallsicher, verfügbar und<br />

skalierbar<br />

Damit sorgt Riak für Ausfallsicherheit,<br />

hohe Verfügbarkeit und einfache, lineare<br />

Skalierbarkeit. Um einen neuen Cluster<br />

zu erstellen, reicht es, Riak entweder<br />

vom Sourcecode zu kompilieren oder<br />

auf eines der verfügbaren Binärpakete<br />

zurückzugreifen [9] und das Kommando<br />

»riak start« auszuführen.<br />

Das startet einen einzelnen Node mit »3«<br />

als Defaultwert für »N«. Wer Riak auf<br />

weiteren Knoten installiert hat, bindet<br />

diese über das Kommando »riak-admin«<br />

in den Cluster ein. Dafür brauchen die<br />

anderen Knoten eine Liste von Seed Nodes,<br />

mit denen sie sich verbinden und<br />

damit ihren Platz im Cluster beanspruchen<br />

können:<br />

riak‐admin join<br />

Fällt nun ein Node eines Riak-Clusters<br />

aus, erhalten die anderen Nodes von diesem<br />

keinen Heartbeat mehr und sehen<br />

ihn deshalb als nicht aktiv an. Bis der<br />

Node wieder aktiv ist, nehmen benachbarte<br />

Nodes Schreibzugriffe entgegen,<br />

halten sie vor und geben sie später an<br />

den ausgefallenen Knoten weiter.<br />

Dieser Vorgang ist als Hinted Handoff<br />

bekannt und stellt sicher, dass der Riak-<br />

Cluster einzelne Ausfälle abfängt und<br />

trotzdem die Verfügbarkeit garantiert.<br />

Für die Lesevorgänge müssen im Cluster<br />

noch Replikate der Daten des ausgefallenen<br />

Node vorhanden sein, der Admin<br />

also einen entsprechenden »N«-Wert gesetzt<br />

haben.<br />

Riak lässt sich über zwei Interfaces ansprechen,<br />

über ein REST-HTTP-API und<br />

über eine Protocol-Buffers-Schnittstelle.<br />

Während das erste sehr pflegeleicht ist,<br />

eignet sich das zweite vor allem für Situationen,<br />

die sehr hohen Durchsatz verlangen,<br />

wobei die eine Schnittstelle die<br />

andere nicht ausschließt.<br />

HTTP ist gut dafür geeignet, dem Admin<br />

ein erstes Gefühl zu vermitteln, wie Riak<br />

arbeitet. Ein späterer Wechsel zu Protocol<br />

Buffers ist mit den meisten Client-Bibliotheken<br />

transparent, denn die sind von<br />

den Features her nahezu gleich.<br />

Datenstrukturen machen es<br />

einfacher<br />

1-1000<br />

7001-8000<br />

Replikate<br />

1001-2000<br />

6001-7000<br />

2001-3000<br />

5001-6000<br />

3001-4000 4001-5000<br />

Abbildung 3: Für jeden Bucket gibt der Administrator vor, wie viele Replikate der<br />

Riak-Cluster vorhalten soll, standardmäßig sind es drei.<br />

Abbildung 4: Riak Enterprise DS stammt vom Hersteller der gleichnamigen Open-<br />

Source-<strong>Datenbank</strong>, bringt aber ein nettes GUI mit.


tenabfragemöglichkeiten von Riak über<br />

Map/ Reduce zuzugreifen.<br />

Das Verfahren versucht einen Job möglichst<br />

über den gesamten Cluster zu verteilen,<br />

wobei die Map-Phase, die Daten<br />

transformiert, zum Beispiel einzelne Attribute<br />

aus einem Json-Dokument holt,<br />

immer auf allen Nodes läuft, von denen<br />

Daten gefragt sind. Der Reduce-Job, der<br />

etwa zur Aggregation oder Aufsummierung<br />

der in einer oder mehreren Map-<br />

Phasen gesammelten und transformierten<br />

Daten dient, läuft dann letztlich auf<br />

dem Coordinator-Node, an den der Map/<br />

Reduce-Job gegangen war.<br />

Vor Kurzem kam Riak Search [10] heraus,<br />

eine Volltextsuche, die ein Grundproblem<br />

von Key Value Stores löst und<br />

eine bessere und skalierbare Möglichkeit<br />

bietet, um komplexere Abfragen über Attributwerte<br />

oder Ranges abzusetzen, als<br />

es zum Beispiel Map/ Reduce bietet. Das<br />

bringt zwar ähnliche Möglichkeiten mit,<br />

allerdings arbeiten derartige Queries und<br />

Transformationen immer auf Livedaten,<br />

während Riak Search auf schon beim<br />

Update gebaute Indizes aufsetzt. Nahtlos<br />

lässt sich Riak Search über einen Post-<br />

Commit-Hook in Riak einbinden, den die<br />

<strong>Datenbank</strong> immer dann ausführt, wenn<br />

sie Daten ändert oder löscht.<br />

Bitcask, das Byte-Fass<br />

Einen besonderen Blick verdient auch<br />

die Storage-Engine von Riak. Nachdem<br />

sich die ursprünglich auf der Inno DB<br />

basierende Engine als nicht 100-prozentig<br />

geeignet für hochskalierbare und<br />

-verfügbare Umgebungen herausgestellt<br />

hatte, entwickelte Riak-Hersteller Basho<br />

mit Bitcask ([11], Cask: Englisch für Fass<br />

oder Tonne) eine Engine, die vor allem<br />

auf hohe Konsistenz und Datendurchsatz<br />

getrimmt ist.<br />

Bitcask hält immer eine aktuelle Datei<br />

offen, in die es die Daten schreibt. Writes,<br />

also Updates und Deletes, hängt es stets<br />

hinten an, Daten landen also niemals<br />

am selben Ort. Das Verfahren sorgt für<br />

hohe Datenkonsistenz und Performance,<br />

da es Random-Seeks auf den Platten vermeidet.<br />

Ein automatisch laufender Merge-Prozess<br />

fasst bei stetig anwachsenden Datenmengen<br />

die Dateien regelmäßig zusammen,<br />

wobei er gelöschte oder veraltete Daten<br />

nicht mehr in die neuen Dateien schreibt.<br />

Das Design von Bitcask erweist sich als<br />

sehr simpel und effizient und ist in [11]<br />

näher beschrieben.<br />

Während Riak im Kern Open Source ist,<br />

bietet Basho auch eine kostenpflichtige<br />

Enterprise-Version an (Riak Enterprise<br />

DS, [12]), die neben Multi-Site-Replikation<br />

auch erweitertes Monitoring und<br />

SNMP-Support bietet (Abbildung 4).<br />

E Cassandra<br />

In der dritten <strong>Datenbank</strong> in diesem Vergleich,<br />

Cassandra [13], finden sich einige<br />

NoSQL 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

47<br />

MAGAZIN<br />

ONLINE<br />

LINUX-MAGAZIN NEWSLETTER<br />

Nachrichten rund um die Themen <strong>Linux</strong> und Open Source lesen Sie täglich<br />

im Newsletter des <strong>Linux</strong>-<strong>Magazin</strong>s.<br />

Newsletter<br />

informativ<br />

kompakt<br />

tagesaktuell<br />

www.linux-magazin.de/newsletter


Titelthema<br />

www.linux-magazin.de NoSQL 02 /<strong>2011</strong><br />

48<br />

Konzepte von Riak oder Amazons Dynamo<br />

wieder, allerdings mit Teilen aus<br />

Googles Big Table kombiniert oder vereinfacht.<br />

Während Cassandra auf einem<br />

dem Dynamo-Prinzip ähnlichen Cluster<br />

und dem Gossip-Protokoll mit ähnlichen<br />

Attributen wie Quorum und Ausfallsicherheit<br />

aufbaut, sind Daten- und Storage-<br />

Modell auf der Platte doch anders. Cassandra<br />

stammt aus dem Hause Facebook,<br />

ist durchweg in Java geschrieben und<br />

baut zur Kommunikation mit Clients und<br />

im Cluster auf dem Thrift-Protokoll [14]<br />

auf, wobei die Entwickler auch bereits<br />

mit Alternativen experimentieren.<br />

Google, Amazon und mehr<br />

Betrachtet man Redis als eine lokale<br />

Hashtabelle mit erweiterten Datenstrukturen<br />

und Riak als große verteilte Hashmap<br />

mit transparentem Zugriff auf Daten<br />

innerhalb des Clusters, dann geht<br />

Cassandra weiter und erlaubt innerhalb<br />

des verteilten Hash noch mehr zu verschachteln.<br />

Neben einfachem Key Value geht das bis<br />

zu zwei Ebenen tiefer in eine mehrfach<br />

verschachtelte Hashmap. So lässt sich<br />

zum Beispiel direkt auf Attribute mit<br />

Namen zugreifen, ohne den gesamten<br />

Datensatz zu holen. Im Kern ist Cassandra<br />

eine spaltenorientierte <strong>Datenbank</strong>,<br />

inspiriert von Googles Big Table, kombiniert<br />

mit den Verteilungsmechanismen<br />

von Amazons Dynamo.<br />

Cassandras Datenmodell unterscheidet<br />

mehrere Stufen der Verschachtelung.<br />

Eine Reihe von Attribut-Wert-Paaren<br />

heißt Row und identifiziert sich mit einem<br />

Key. Jede Row ist Teil einer Column<br />

Family (Spaltenfamilie), die im Grunde<br />

verwandte Daten enthält.<br />

Eine Row hat eine beliebige Zahl von<br />

Attribut-Wert-Paaren, Columns genannt.<br />

Unterschiedliche Rows in einer Column<br />

Family müssen nicht zwangsweise die<br />

gleichen Attribute haben. Zugriff auf einzelne<br />

Columns erfolgt über die Column<br />

Family sowie den Key, der die Row identifiziert,<br />

und den Namen des Attributs.<br />

Abbildung 5 zeigt das Datenmodell einer<br />

einfachen Column Family.<br />

Super Column Family<br />

Wem da der Schädel brummt, darf nicht<br />

mit Milde rechnen: Es gibt bei Cassandra<br />

auch noch Super Column Families,<br />

die Rows und Columns noch stärker<br />

verschachteln. Super Column Families<br />

machen aus dem bis dato dreidimensionalen<br />

Hash (Column Family, Key und<br />

Column) einen vierdimensionalen. Wozu<br />

diese scheinbare Komplexität? Da es sich<br />

bei Column Families quasi um Hashes<br />

handelt, sind diese auch entsprechend<br />

vorsortiert.<br />

Abbildung 6 verdeutlicht das Datenmodell<br />

der Super Column Families. Ein Row<br />

Key gilt immer eindeutig über alle definierten<br />

Column Families hinweg. Ein Key,<br />

der einen Nutzer identifiziert, kann Einträge<br />

in den fiktiven Families »Address«<br />

und »Timeline« haben, denen der Administrator<br />

auch unterschiedliche<br />

Eigenschaften<br />

für die<br />

Replikate, Garbage<br />

Collection oder<br />

Com paction zuordnen<br />

kann.<br />

Super Column<br />

Je nach Column Family legt der Admin<br />

in Cassandra fest, als welcher Typ ein<br />

Key anzusehen ist, ob er nach Ascii oder<br />

UTF-8 zu sortieren ist oder nach Timed-<br />

UUID, einer Unique-ID mit Zeitkomponente.<br />

Damit eignet sich Cassandra sehr<br />

gut, um zeitabhängige Daten zu speichern,<br />

zum Beispiel Logs.<br />

Rows und Columns<br />

Eine einzelne Row in Cassandra darf<br />

so mehrere Tausend Einträge enthalten,<br />

heraus kommt dann eine so genannte<br />

Wide Column. Gerade wer Super Column<br />

Families verwendet, hat das in der Regel<br />

als Ziel. Damit lassen sich alle Arten<br />

von Timelines sehr gut speichern, zum<br />

Beispiel die kompletten Log-Einträge<br />

eines Service von einem bestimmten<br />

Tag. Der Row Key könnte in dem Fall<br />

»Service:Apache:20101210« heißen.<br />

Für jeden Tag kommt ein neuer Eintrag<br />

hinzu, am nächsten Tag speichert Cassandra<br />

die Einträge automatisch unter<br />

einem neuen Key, der dem aktuellen Datum<br />

entspricht. Ein Log-Eintrag ist dementsprechend<br />

zum Beispiel ein Hash, der<br />

einzelne Attribute wie Uhrzeit, Log-Level<br />

und die Nachricht enthält.<br />

Der Key einer Super Column Family<br />

kann wiederum beispielsweise vom Typ<br />

Timed-UUID sein, den Cassandra automatisch<br />

vorsortiert. Eine Timed-UUID ist<br />

Super Column Family<br />

Row Key<br />

Super Column<br />

Column<br />

Column<br />

Column<br />

Column<br />

Column Family<br />

Column<br />

Column<br />

Column<br />

Column<br />

Row Key<br />

Row-Key<br />

Column<br />

Column<br />

Column<br />

Column<br />

Row Key<br />

Column<br />

Column<br />

Column<br />

Column<br />

Super Column<br />

Super Column<br />

Column<br />

Column<br />

Column<br />

Column<br />

G Abbildung 5: Cassandras Column Families ermöglichen den Zugriff auf einzelne<br />

Spalten. Jede Spalte ist dabei Teil einer Column Family.<br />

Column<br />

Column<br />

Column<br />

Column<br />

E Abbildung 6: Super Column Families erweitern die Komplexität des Datenmodells<br />

von Cassandra um eine ganze Dimension.


eine erweiterte UUID mit einer Zeitkomponente,<br />

die es der <strong>Datenbank</strong> erlaubt,<br />

Einträge nach Zeitstempel zu sortieren,<br />

aber auch für exakt den gleichen Timestamp<br />

mehrere Einträge zu erstellen.<br />

Innerhalb einer einzelnen Zeile lassen<br />

sich so sehr einfach einzelne Zeitabschnitte<br />

herausfischen, zum Beispiel alle<br />

Log-Einträge zwischen 12 und 13 Uhr.<br />

Komplette Ranges von Einträgen abzufragen<br />

gilt als Spezialität von Cassandra,<br />

und das liegt vor allem an dem verwendeten<br />

Verteilungsmodell.<br />

Cassandra-Cluster<br />

Ähnlich wie Riak verteilt Cassandra Daten<br />

über alle Nodes im Cluster. Aber es<br />

partitioniert die verfügbaren Keys nicht<br />

in Vnodes, sondern teilt Nodes im Cluster<br />

eine feste Range zu. Diese verschiebt<br />

Cassandra, wenn neue Knoten in den<br />

Cluster kommen oder ihn verlassen, nur<br />

funktioniert dies ein wenig anders als im<br />

klassischen Dynamo-Modell. Per Default<br />

streut Cassandra Daten zufällig per Consistent<br />

Hashing des Key. Dies stellt sicher,<br />

dass die Daten möglichst gleichmäßig<br />

über den Cluster verteilt sind, meist ein<br />

wünschenswertes Ergebnis.<br />

Darüber hinaus unterstützt Cassandra<br />

eine Art von Partitionierung, die die natürliche<br />

Reihenfolge von Keys berücksichtigt<br />

und beieinander liegende Keys<br />

auch zusammen abspeichert, wenn<br />

möglich auf dem gleichen Node. Das hat<br />

den Vorteil, dass Range-Abfragen auch<br />

über Keys erlaubt sind, nicht nur über<br />

die oben beschriebenen Super Columns<br />

einzelner Zeilen.<br />

Bevorzugte Nodes<br />

Manche Nodes verwalten wesentlich<br />

mehr Daten als andere, womit mögliche<br />

Hotspots entstehen. Dieser Trade-off ist<br />

für viele Anwender aber durchaus akzeptabel,<br />

wenn sie von Range Queries<br />

Gebrauch machen möchten. Auch wenn<br />

in einem idealen Cassandra-Cluster alle<br />

Nodes theoretisch gleich sind, gibt es<br />

doch Möglichkeiten, einige Nodes etwas<br />

gleicher zu machen als andere. Dies bezieht<br />

sich allerdings eher auf die Replikation,<br />

die in Cassandra Rack Aware und<br />

Datacenter Aware sein kann. Damit stellt<br />

der Admin sicher, dass Repliken nicht<br />

außerhalb des gleichen Racks oder sogar<br />

Datacenters platziert sind, und erreicht<br />

eine zuverlässigere Redundanz.<br />

Alle Columns versieht Cassandra mit<br />

Time stamps, um sie leichter zu identifizieren.<br />

Im Gegensatz zu Riaks Vector<br />

Clocks greift die trojanische Königstochter<br />

somit auf einen etwas simpleren Mechanismus<br />

zurück, denn im Zweifel gewinnt<br />

ganz einfach das Update mit dem<br />

neuesten Zeitstempel.<br />

Einzelne Spalten einer Row lassen sich<br />

dann in Cassandra auch unabhängig voneinander<br />

updaten. Aktualisiert die <strong>Datenbank</strong><br />

nur eine einzelne Column, löscht sie<br />

NoSQL 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

49


Titelthema<br />

www.linux-magazin.de NoSQL 02 /<strong>2011</strong><br />

50<br />

nicht automatisch alle anderen Attribute.<br />

Für hohen Schreibdurchsatz greift Cassandra<br />

auf eine Kombination verschiedener<br />

Mechanismen zurück, die die Daten<br />

trotzdem konsistent fortschreiben. Bei<br />

einem Write hängt die <strong>Datenbank</strong> zuerst<br />

das Update an ein sequenzielles Commit-<br />

Log an und schickt die Daten erst dann<br />

an die für den Key verantwortlichen Nodes.<br />

Danach aktualisiert sie eine Struktur<br />

im Speicher, die die Entwickler Memtable<br />

nennen. Diese hält per Default 128 Keys<br />

und die zugehörigen Werte vor, die die<br />

letzten Schreibvorgänge aktualisiert oder<br />

hinzugefügt hatten.<br />

Wird die Memtable zu groß, um im Speicher<br />

zu verbleiben, oder überschreitet<br />

sie das Maximum an Keys, schreibt Cassandra<br />

sie in Form einer SSTable (Sorted<br />

Strings Table) auf die Platte, eines Dateiformats,<br />

das Key-Value-Paare sortiert<br />

nach dem Key ablegt. Zusätzlich erzeugt<br />

Cassandra einen SSTable-Index, der Keys<br />

und entsprechende Zeiger in das Datenfile<br />

enthält. Nachdem die Einträge aus<br />

dem Commit-Log auf der Platte gelandet<br />

sind, löscht die <strong>Datenbank</strong> die entsprechenden<br />

Log-Einträge.<br />

Ein Compaction-Prozess fasst die SSTable-Dateien<br />

zusammen, wenn sie im Lauf<br />

der Zeit allzu sehr anschwellen. Dabei<br />

vereint er Keys und Columns wieder und<br />

entfernt gelöschte Daten. Writes sind in<br />

Cassandra extrem schnell, da die einzige<br />

I/ O-intensive Operation ein sequenzieller<br />

Schreibvorgang ins Log ist.<br />

Aus Sicht des Administrators ist es von<br />

Vorteil, dass Cassandra auf der Java<br />

Virtual Machine läuft. Das macht viele<br />

Metriken über JMX einsehbar und erleichtert<br />

Monitoring und Operationen.<br />

Die Metriken sind sehr zahlreich, wie<br />

die Abbildung 7 zeigt, aber auch eine<br />

gute Hilfestellung bei der Problemanalyse<br />

durch den Admin.<br />

Kein Tool für alle Fälle<br />

Das NoSQL-Feld bietet noch viele weitere<br />

<strong>Datenbank</strong>en wie die dokumentenorien-<br />

Abbildung 7: Cassandra läuft in einer Java Virtual Machine und erlaubt Wartung und Kontrolle via JMX.<br />

tierten Couch DB (siehe den Artikel in<br />

diesem Schwerpunkt) und Mongo DB<br />

[15] sowie Neo4j [16] oder Sones [17]<br />

als Graphdatenbanken oder Hbase [18]<br />

als vollwertigen Nachbau von Googles<br />

Big Table.<br />

Natürlich haben Redis, Riak und Cassandra<br />

Stärken und Schwächen in unterschiedlichen<br />

Szenarien. Ob sich die<br />

gewählte Variante für den geplanten<br />

Einsatz eignet, muss jeder Admin selbst<br />

herausfinden. Dafür ist umfangreiches<br />

Testen und viel eigene Erfahrung nötig.<br />

Manchmal gelingt das auch erst unverhofft<br />

nach ein paar Jahren. Dann mag<br />

auch eine Rolle spielen, dass Redis in<br />

reinem C, Riak in Erlang [19] und Cassandra<br />

in Java geschrieben ist. (mfe) n<br />

Infos<br />

[1] Werner Vogels et. al., „Amazon’s Dynamo“:<br />

[http:// www.allthingsdistributed.<br />

com/2007/ 10/ amazons_dynamo.html]<br />

[2] Google Big Table: [http://labs.google.com/<br />

papers/bigtable. html]<br />

[3] Stefan Edlich, „Schneller als die <strong>Datenbank</strong>“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 09/10, S. 44.<br />

[4] Redis: [http://redis.io]<br />

[5] Referenz der Redis-Kommandos:<br />

[http://code. google.com/p/redis/wiki/<br />

CommandReference]<br />

[6] Virtual Memory User Guide für Redis:<br />

[http://code. google.com/p/redis/wiki/<br />

VirtualMemoryUserGuide]<br />

[7] Basho Riak:<br />

[http://www. basho. com/Riak.html]<br />

[8] Werner Vogels, „Eventually Consistent<br />

– Revisited“: [http://www.<br />

allthingsdistributed.com/2008/12/<br />

eventually_consistent.html]<br />

[9] Basho-Downloads:<br />

[http://downloads. basho.com/ riak/]<br />

[10] Riak Search:<br />

[http://www. basho. com/riaksearch.html]<br />

[11] Bitcask: [http://blog.basho.com/2010/04/<br />

27/hello,-bitcask/]<br />

[12] Riak Enterprise DS: [http://www.basho.<br />

com/enterpriseds. html]<br />

[13] Apache Cassandra:<br />

[http://cassandra. apache.org]<br />

[14] Thrift-Protokoll: [http://thrift.apache.org]<br />

[15] Mongo DB: [http:// www.mongodb.org]<br />

[16] Neo4j: [http://www.neo4j.org]<br />

[17] Sones: [http:// ]www.sones.com<br />

[18] Hbase: [http://hbase.apache.org]<br />

[19] Erlang: [http://www.erlang.org]


Hallo – Aufwachen!<br />

Homepage Spezial<br />

1blu-Homepage „Spezial <strong>2011</strong>“<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

2, 69<br />

¤/Monat*<br />

Dauerpreis!<br />

1blu-Homepage „Spezial <strong>2011</strong>“<br />

<br />

<br />

<br />

<br />

<br />

* Preis/Monat inkl. 19% MwSt. Es fällt keine Einrichtungsgebühr an. Vertragslaufzeit jeweils 6 Monate, jederzeit<br />

kündbar mit einem Monat Frist zum Vertragsende. Bei Software-Bestellung 7,90 € Versandkosten.<br />

030 - 20 18 10 00 | nur unter www.1blu.de/spezial


Titelthema<br />

www.linux-magazin.de Couch DB 02 /<strong>2011</strong><br />

52<br />

Replikation für Couch DB<br />

Replication reloaded<br />

Die freie NoSQL-<strong>Datenbank</strong> Couch DB kann beides: offline arbeiten und sich in einem großen Verbund replizieren.<br />

Dieser Artikel stellt Anwendungsszenarien, Skalierungstechniken sowie eine Auswahl ergänzender Software<br />

für das Replikationswunder vor. Sven Pöhler<br />

Control (MVCC) arbeitet. Das bedeutet,<br />

dass Couch DB ohne Geschwindigkeitsverlust<br />

Daten lesen und schreiben kann,<br />

weil es sie ohne Transaktionslocks in fortlaufenden<br />

Revisionen abspeichert. Der<br />

Preis hierfür ist das notwendig größere<br />

Datenvolumen für die Revisionsstände<br />

der einzelnen Dokumente.<br />

MVCC und die Konflikte<br />

© Pavel Losevsky, 123RF.com<br />

Über ein Vierteljahrhundert ist es her,<br />

dass Lotus Notes das Konzept eines<br />

verteilten <strong>Datenbank</strong>systems realisiert<br />

hat. Seine Offline-Fähigkeit erfüllte eine<br />

wichtige Forderung der damaligen Zeit,<br />

denn digitale Zugänge in Firmennetze<br />

waren anfänglich unzuverlässige Modem-<br />

(später ISDN-)Dial-ups, die gelegentlich<br />

ausfielen. <strong>Datenbank</strong>gestützte<br />

Anwendungen gänzlich ohne bestehende<br />

Serververbindung laufen lassen – das war<br />

höchst innovativ.<br />

Aktuelle Anforderungen<br />

Die damaligen Gründe für ein verteiltes,<br />

replikationsfähiges <strong>Datenbank</strong>system<br />

sind heutzutage nicht mehr relevant.<br />

Dennoch schickt sich mit Couch DB [1]<br />

erneut ein Vertreter dieser Art von <strong>Datenbank</strong>en<br />

an, mit ganz ähnlichen Ansätzen<br />

und Konzepten den aktuellen Anforderungen<br />

zu begegnen. Dieser Artikel zeigt<br />

die heutigen Motivationen für ein derartiges<br />

<strong>Datenbank</strong>system und beschreibt<br />

die wichtigsten Anwendungsszenarien<br />

für Couch DB. Eine grundlegende Einführung<br />

in Couch DB findet sich in Oliver<br />

Frommels Online-Artikel [2].<br />

Heute sollen Anwendungen in zwei Richtungen<br />

verlässlich skalieren: Beim Up-<br />

Scaling für das Web 2.0 müssen sie mit<br />

sehr hohen Lasten umgehen und beim<br />

Down-Scaling sollen sie für mobile Endgeräte<br />

taugen. Beim Einsatz unterwegs<br />

sollen Anwendungen zudem ohne permanente<br />

Netzanbindung funktionieren.<br />

So entwickelt etwa die Firma Couch One,<br />

in der Couch-DB-Erfinder Damien Katz<br />

CEO ist, eine hinsichtlich Arbeitsspeicher<br />

und Storage optimierte Android-Version<br />

von Couch DB [3]. Eine I-Phone-Version<br />

ist laut Jan Lehnardt vom selben Unternehmen<br />

fest in Planung.<br />

Couch DB gibt auf diese unterschiedlichen<br />

Skalierungsanforderungen konzeptionelle<br />

Antworten, indem es als Kernfunktionalität<br />

Anwendung und Datenbestand<br />

repliziert und dabei nach dem<br />

Prinzip der Multiversion Concurrency<br />

Das wesentliche Merkmal von Couch DB<br />

ist die Fähigkeit, die Dokumenten-basierten<br />

<strong>Datenbank</strong>en via Replikation beliebig<br />

verteilen zu können. Ein Replikationsvorgang<br />

ist unidirektional und kennt jeweils<br />

eine Quell- und eine Zieldatenbank, die<br />

auch beide auf demselben Couch-DB-<br />

Server residieren können.<br />

Die Replikation zwischen zwei <strong>Datenbank</strong>en<br />

lässt sich auf der Kommandozeile<br />

mit Curl anstoßen. Der folgende Befehl<br />

veranlasst eine lokale Replikation von<br />

»db« nach »dbrep«:<br />

curl http://127.0.0.1:5984/_replicateU<br />

‐H 'Content‐Type: application/json'U<br />

‐d '{"source":"db", "target":"dbrep"}'<br />

Abbildung 1 zeigt die alternative Bedienung<br />

über das mit Couch DB mitgelieferte<br />

Webfrontend Futon. Neben der Replikationsquelle<br />

»db« hat der Admin im<br />

Beispiel die Zieldatenbank »db-replica«<br />

definiert. Der Parameter »Continuous« für<br />

die Replikation bewirkt, dass Couch DB<br />

eine Quelle bei bestehender Netzverbindung<br />

kontinuierlich überwacht. Zusätzlich<br />

lässt sich eine Pollingzeit angeben<br />

(rote Markierungen).<br />

Wer den Datenbestand bidirektional replizieren<br />

möchte, benötigt zwei Replikationsvorgänge.<br />

Couch DB ist hierbei in<br />

der Lage, einen inkonsistenten Datenbe-


Couch App<br />

Wer einmal selbst eine Anwendung für Couch<br />

DB entwickeln möchte, dem sei als nützliches<br />

Entwicklungstool Couch App [4] empfohlen.<br />

Dabei handelt es sich um eine erweiterbare<br />

Sammlung von Python-Skripten, die eine<br />

Couch-DB-Applikation als Dateien in einer definierten<br />

Ordnerstruktur anlegt. In dieser Form<br />

lässt sich der Quelltext in ein verteiltes Versionskontrollsystem<br />

wie Git einchecken.<br />

Das Deployment findet statt, indem der Entwickler<br />

die Dateien in eine Couch-DB-Instanz<br />

lädt. Couch App unterstützt damit den dezentralen<br />

Ansatz von Couch DB, indem es orthogonal<br />

zur replizierenden lauffähigen Couch-<br />

DB-Anwendung auch den Entwicklungsprozess<br />

verteilen kann.<br />

Couch App setzt mindestens Python 2.5 voraus<br />

und lässt sich einfach installieren. Nach der<br />

Installation erzeugt der Befehl<br />

couchapp generate Anwendung<br />

eine neue Applikation. Die beiden Zeilen<br />

cd Anwendung/<br />

couchapp generate show Funktion<br />

schreiben in das Verzeichnis »shows« die Datei<br />

»hello.js«, die der Entwickler nach dem Hinzufügen<br />

des Javascript-Programmcode mit<br />

couchapp push http://localhost:5984/<br />

Anwendung<br />

in die lokale Couch-DB-Instanz pusht.<br />

flow-Hintergrundprozesse diese mitverursachten,<br />

sodass keine automatisierte<br />

Konfliktlösung in Betracht kam.<br />

Es gibt daher einige wichtige Design -<br />

prinzipien, die Replikationskonflikte<br />

innerhalb einer Anwendung vermeiden<br />

helfen. Dazu gehört zunächst die Verteilung<br />

der Daten auf einzelne Dokumente.<br />

Beispielsweise sollte eine CRM-<br />

Anwendung die verschiedenen Daten<br />

innerhalb eines Kundenkontextes auf<br />

einzelne Dokumente aufspalten. Während<br />

das Hauptdokument nur die reinen<br />

Stammdaten des Kunden enthält, sind<br />

Kampagnendaten, Kommunikationsprotokolle<br />

und Ähnliches jeweils in eigenen<br />

Dokumenten abgebildet.<br />

Couch DB 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

53<br />

stand zu erkennen und mit Hilfe der Markierung<br />

»("_conflicts": true)« Konfliktrevisionen<br />

der Dokumente auszuweisen.<br />

Seit der Version 0.10 vergleicht Couch DB<br />

den MD5-Hash zweier Dokumente über<br />

die Eigenschaften Json-Body, Attachments<br />

und das »_deleted«-Flag, um zu<br />

entscheiden, ob es sich um einen Konflikt<br />

handelt. Das Speichern ohne inhaltliche<br />

Änderung und identische Änderungen<br />

führen seit dieser Version nicht mehr zu<br />

Konflikten.<br />

Abbildung 2 zeigt das Auftreten eines<br />

Speicherkonflikts (gelber Bereich). Couch<br />

DB erzeugt bei der Replikation in solchen<br />

Situationen Konfliktrevisionen der<br />

Dokumente. Die Bestimmung, welches<br />

Dokument die Haupt- und Konfliktrevision<br />

wird, entscheidet Couch DB anhand<br />

von festen Regeln deterministisch (roter<br />

Bereich). Dies hat den Vorteil, dass<br />

für diese Feststellung keine Rückfragen<br />

nach weiteren <strong>Datenbank</strong>informationen<br />

notwendig sind und somit keine Performanceprobleme<br />

im Betrieb auftreten.<br />

Anschließend müssen diese Konflikte<br />

redaktionell oder durch die Anwendung<br />

(semi-)automatisch gelöst werden (grüner<br />

Bereich).<br />

Anwendungsdesign<br />

Die Möglichkeit, dass in einer Couch-<br />

DB-Anwendung Replikationskonflikte<br />

entstehen, sollten Entwickler zwingend<br />

im Anwendungsdesign berücksichtigen.<br />

In den Lotus-Notes-Hochzeiten wurden<br />

nicht selten hochbezahlte IT-Consultants<br />

beauftragt diese zu lösen. Verschärfend<br />

wirkte der Umstand, dass häufig Work-<br />

Schreibrechte<br />

Ebenfalls empfehlenswert ist ein feingranulares<br />

Autorisierungsmodell der Schreibberechtigungen.<br />

Das oben genannte<br />

Hauptdokument sollten nur organisatorisch<br />

zuständige Mitarbeiter des Marketings<br />

ändern dürfen. Couch DB definiert<br />

die Schreibberechtigungen innerhalb<br />

einer <strong>Datenbank</strong> über die Auswertung<br />

der Validierungsfunktionen aller Designdokumente<br />

einer <strong>Datenbank</strong>. Sinnvoll ist<br />

auch eine Abstraktion über Rollen, wie<br />

dies exemplarisch der Javascript-Code in<br />

Listing 1 umsetzt.<br />

Sollen dennoch mehrere Parteien ein<br />

Dokument manipulieren dürfen, ist eine<br />

Request-basierte Anwendungsarchitektur<br />

eine gute Wahl (Abbildung 3). Diese<br />

folgt dem Grundsatz, dass prinzipiell alle<br />

Parteien ihren Änderungsauftrag in eine<br />

Request-<strong>Datenbank</strong> einstellen. Die Anwendungskonfiguration<br />

(»Config-DB«)<br />

enthält die Information, auf welchem<br />

<strong>Datenbank</strong>server die Requests abgearbeitet<br />

werden.<br />

Ein Szenario hierfür wäre die regelmäßige<br />

Dokumentenaktualisierung durch<br />

ein zentral gepflegtes Schlagwortregister<br />

bei synchroner redaktioneller Dokumentenpflege.<br />

Eine solche Architektur<br />

Listing 1: Rollen<br />

01 function(new_doc, old_doc, userCtx) {<br />

02 if(userCtx.roles.indexOf("marketing") == ‐1) {<br />

03 throw({unauthorized: "Sie haben nicht die Rolle<br />

'marketing'."});<br />

04 }<br />

Abbildung 1: Mit dem Webfrontend Futon lässt sich kontinuierliche Replikation einrichten.<br />

05 }


Titelthema<br />

www.linux-magazin.de Couch DB 02 /<strong>2011</strong><br />

54<br />

rung sind der Fokus einiger interessanter<br />

Projekte im Ökosystem rund um Couch-<br />

DB. Es existieren bereits verschiedene<br />

Lösungen und Ansätze, um horizontale<br />

Skalierung über mehrere Knoten zu verwirklichen.<br />

Couch-DB-Lounge [5] ist ein Framework<br />

zur Partitionierung per HTTP-Reverse-<br />

Proxy und basiert auf dem Webserver/<br />

Proxy Nginx. Es umfasst ein Nginx-Modul<br />

sowie einen Python-Daemon und arbeivermeidet<br />

nicht nur Konflikte, sondern<br />

erhöht auch die Anwendungssicherheit,<br />

indem beispielsweise externe Schnittstellen<br />

keinen direkten Schreibzugriff auf die<br />

eigentliche Anwendung erhalten.<br />

Request-basiert<br />

Abbildung 3 zeigt exemplarisch eine<br />

solche Anwendungsarchitektur. Ein<br />

Nutzer, der eine Änderung in der Replik<br />

der Applikation auf dem Berliner Server<br />

umsetzen möchte, erstellt dafür ein<br />

Request-Dokument in der Request-<strong>Datenbank</strong>.<br />

Die Anwendungskonfiguration<br />

(in der Config-DB) bestimmt, dass alle<br />

Änderungen der Daten ausschließlich auf<br />

dem Münchener Server umzusetzen sind.<br />

Das Request-Dokument repliziert auf den<br />

Münchener Server, wo der Request ausgeführt<br />

wird.<br />

Da sich derzeit in Couch DB Leseberechtigungen<br />

nur datenbankweit vergeben<br />

lassen, ist es sinnvoll, derartige Konfigurationsinformationen<br />

in einer separierten<br />

Konfigurationsdatenbank abzulegen, die<br />

dann ebenso Teil der replizierenden Anwendungssuite<br />

wird.<br />

Nicht direkt ein Designprinzip, aber dennoch<br />

dazu geeignet, die Wahrscheinlichkeit<br />

von Datenkonflikten zu verringern,<br />

sind Maßnahmen zur möglichst schnellen<br />

Verbreitung von Änderungen. Bewährt<br />

hat sich hierfür die Hub-Spoke-Topologie:<br />

Die Clients (Spokes, Speichen) replizieren<br />

jeweils mit einer Zentralinstanz (Hub,<br />

Nabe). Die Hubs gleichen ihren Datenbestand<br />

untereinander mit hoher Frequenz<br />

ab, sodass auch topologisch entfernte<br />

Clients Änderungen schnell erfahren.<br />

_id=foo<br />

_rev=1-db<br />

val=1<br />

Couch DB galt anfänglich als nur für<br />

kleine bis mittlere Anwendungs-Setups<br />

geeignet. Ein typisches Szenario war das<br />

private Adressbuch, das zwischen Smartphone,<br />

Notebook und heimischem PC<br />

hin und her repliziert. Durch Umsetzung<br />

der oben genannten Designprinzipien<br />

lassen sich aber auch komplexere Anforderungen<br />

bedienen. Jedoch spätestens<br />

wenn Eskalationen, SLAs und Notifikationen<br />

Teil der Anforderungen werden,<br />

sind zeitgesteuerte Hintergrundprozesse<br />

notwendig. Bedauerlicherweise existiert<br />

in Couch DB bisher kein interner Schedudb<br />

_id=foo<br />

_rev=1-db<br />

val=1<br />

db<br />

_id=foo<br />

_rev=2-db<br />

val=3<br />

db<br />

Konfliktentscheidung<br />

Es existieren die beiden <strong>Datenbank</strong>en<br />

»db« und »dbrep«.<br />

Die Anwendung erstellt in »db«<br />

das Dokument »foo« mit »val=1«.<br />

Es wird von »db« (Source) nach<br />

»dbrep« (Target) repliziert, was<br />

»foo« in »dbrep« erzeugt.<br />

Konfliktentstehung<br />

In »dbrep« wird in »foo« »val=2« gespeichert.<br />

In »db« wird in »foo« »val=3« gespeichert.<br />

Anschließend wird wieder von »db«<br />

nach »dbrep« repliziert, womit<br />

in »dbrep« ein Konflikt entsteht.<br />

Revisionshistorie<br />

gleich lang?<br />

ler, um Hintergrundprozesse anzustoßen.<br />

Natürlich lässt sich beispielsweise unter<br />

<strong>Linux</strong> der Cron-Daemon als Scheduler<br />

benutzen, die Nachteile eines solchen<br />

Designbruchs sind jedoch Plattformabhängigkeit,<br />

nicht konsistente Berechtigungen<br />

und die Unmöglichkeit, derartige<br />

anwendungsrelevante Konfigurationen in<br />

die Replikation einzubeziehen.<br />

Weniger die Dezentralität von Anwendungen<br />

als vielmehr die massive Skalie-<br />

ja<br />

nein<br />

dbrep<br />

_id=foo<br />

_rev=1-db<br />

val=1<br />

dbrep<br />

_id=foo<br />

_rev=2-dbrep<br />

val=2<br />

dbrep<br />

Die längere Revisionshistorie<br />

gewinnt! Konflikte<br />

und deren Lösung analog<br />

wie im weiteren Beispiel.<br />

Hintergrundprozesse<br />

Konfliktlösung<br />

»_rev« Ascii-Sort:<br />

»2-db« kleiner<br />

als »2-dbrep«?<br />

nein<br />

ja<br />

In »dbrep« wird von »foo« eine<br />

Konfliktrevision angelegt mit<br />

»_rev=2-db« und »val=3«.<br />

Die Hauptrevision von »foo«lautet<br />

»_rev=2-dbrep« und »val=2«.<br />

»foo« in »db« bleibt unverändert.<br />

In »dbrep« wird von »foo« eine<br />

Konfliktrevision angelegt mit<br />

»_rev=2-dbrep« und »val=2«.<br />

Die Hauptrevision von »foo« lautet<br />

»_rev=2-db« und »val=3«.<br />

»foo« in »db« bleibt unverändert.<br />

Jetzt ist der Konflikt in »dbrep« zu lösen.<br />

Dazu wird die Hauptrevision mit dem richtigen »val«-Wert gespeichert,<br />

womit »_rev« auf »3-dbrep« hochzählt.<br />

Die Konfliktrevision wird gelöscht, und abschließend muss noch<br />

einmal repliziert werden, diesmal von »dbrep« (Source) nach »db« (Target).<br />

Abbildung 2: Dieses Diagramm zeigt, wie Couch DB auftretende Speicherkonflikte bearbeitet.


tet als Consistent Hashing-Ring über alle<br />

Dokumente. Mit Hilfe der Datei »shards.<br />

conf« lässt sich die Datenpartitionierung<br />

(Sharding) definieren. Daten-Failover mit<br />

verschiedenen Nodes ist möglich.<br />

Eine weitere Möglichkeit für die Partitionierung<br />

bietet Pillow [6]. Es stammt<br />

von dem Norweger Knut Hellan, der in<br />

dem überschaubaren Softwareprojekt<br />

insbesondere seine eigenen Anforderungen<br />

an die Fähigkeit zum automatischen<br />

Re sharding umgesetzt hat.<br />

Middleware oder Cluster<br />

DOC<br />

_id=ID1<br />

DATA=1<br />

Application<br />

DOC<br />

_id=ID1<br />

DATA=2<br />

Application<br />

REQ_DOC<br />

CMD=UPD<br />

TARGET=ID1<br />

DATA=2<br />

Request-DB<br />

SRV=BLN<br />

REQ_DOC<br />

CMD=UPD<br />

TARGET=ID1<br />

DATA=2<br />

Request-DB<br />

SRV=MUC<br />

Replikation<br />

CFG_DOC<br />

SRV=MUC<br />

Config-DB<br />

CFG_DOC<br />

SRV=MUC<br />

Config-DB<br />

Abbildung 3: Bei mehreren schreibberechtigten Nutzern empfiehlt<br />

sich eine Request-basierte Anwendungsarchitektur.<br />

Einen generischen Ansatz verfolgt die<br />

Skalierungs-Middleware Gizzard [7]. Sie<br />

operiert zwischen einer Webanwendung,<br />

die <strong>Datenbank</strong>abfragen abschickt, und<br />

beliebigen <strong>Datenbank</strong>systemen. Diese<br />

Vorgehensweise hat den Vorteil, dass sie<br />

im Gegensatz zum Consistent Hashing<br />

eine heterogene Partitionierung gestattet,<br />

sodass sich etwa häufig abgefragte Daten<br />

Performance-fördernd segmentieren<br />

lassen. Daneben kann man Forwarding-<br />

Strategien individuell festlegen.<br />

Außerdem gestattet es Gizzard, Ressourcen<br />

dynamisch zum Cluster hinzuzufügen,<br />

was dem System Elastizität verleiht.<br />

Das System verhält sich sehr robust, da<br />

es beim Ausfall einer Partitionsreplik Requests<br />

dynamisch umleitet. Für den Fall,<br />

dass eine gesamte Partition nicht mehr<br />

erreichbar sein sollte, puffert Gizzard die<br />

ausstehenden Schreiboperationen in einem<br />

Transaktionsjournal.<br />

Das jüngste und aktivste Upscaling-<br />

Projekt im Couch-DB-Umfeld ist jedoch<br />

Bigcouch [8], das sich stark an die konzeptionellen<br />

Ansätze aus dem Amazon<br />

Dynamo anlehnt. Dieser Couch-DB-Fork<br />

der Firma Cloudant arbeitet ebenfalls als<br />

elastischer Cluster und partitioniert die<br />

Daten auf Basis von Consistent-Hashing-<br />

Algorithmen. Daneben hält die Software<br />

View-Indizierung auf jeder Partition parallel<br />

vor, was zu deutlichen Performancegewinnen<br />

im Vergleich zu Standalone-<br />

Systemen führt. Neben der Gesamtanzahl<br />

von Knoten innerhalb eines Clusters<br />

steuern folgende vier Parameter Bigcouch<br />

dynamisch:<br />

n Der Grad der Partitionierung als Anzahl<br />

»Q« der Shards eines Clusters.<br />

n »N«, die Anzahl redundanter Kopien<br />

eines jeden Dokuments. (Die Empfehlung<br />

lautet »N > 2«.)<br />

n Die Anzahl der Kopien, die gespeichert<br />

werden müssen, bevor ein Dokument<br />

„gespeichert“ ist (»W«). »W« ist damit<br />

die Stellschraube für die Konsistenz<br />

der Daten. »W=N« bedeutet vollständige<br />

Konsistenz, »W=1« führt zu maximalem<br />

Durchsatz.<br />

n »R«, die verlangte Anzahl<br />

identischer Dokumentrepliken,<br />

bevor ein Lese-Request<br />

erfüllt ist. Während<br />

»R=1« eine minimale Latenz<br />

bedeutet, erzwingt<br />

»R=N« wiederum eine<br />

vollständige Konsistenz aller<br />

Dokumentkopien.<br />

Standardmäßig erscheint Bigcouch<br />

auf Port 5984 dem Benutzer<br />

wie eine einzelne<br />

Couch-DB-Instanz. Daneben<br />

existiert aber auf Port 5986 die<br />

Möglichkeit, zu Admini strationszwecken<br />

die einzelnen<br />

Nodes des Clusters direkt anzusprechen.<br />

Couch DB stellt sich in drei<br />

verschiedenen Ausprägungen<br />

dar. Einerseits lädt es<br />

zum Downscaling auf Mobilgeräten<br />

ein, weil es geringe<br />

Ansprüche an die Hardware<br />

stellt. Zweitens erlaubt die <strong>Datenbank</strong> die<br />

horizontale Skalierung wie in früheren<br />

Lotus-Notes-Anwendungsszenarien. Die<br />

Web-2.0-Skalierung begegnet hoher Last<br />

und sehr großen Datenvolumina.<br />

Der magische „Glue“, der diese unterschiedlichen<br />

Ausprägungen von Dezentralität<br />

möglich macht, besteht in der<br />

Fähigkeit von Couch DB, nicht nur Daten,<br />

sondern auch das Design von Anwendungen<br />

einfach und sehr robust zu<br />

replizieren.<br />

Ausblick<br />

Das Couch-DB-Universum zeigt sich<br />

dynamisch und innovativ. Mittel- bis<br />

langfristig gibt es aber noch einiges Potenzial<br />

auszuschöpfen. Die Möglichkeit,<br />

beispielsweise mit einem Form-Builder<br />

ex trem einfach Couch-DB-Anwendungen<br />

für kleine und mittlere Unternehmen<br />

nutzbar zu machen, könnte einen<br />

bedeutenden Schub für Akzeptanz und<br />

Verbreitung der Software bewirken.<br />

Kurzfristig ist für die kommende Version<br />

1.1 mit einer verbesserten externen Programmierschnittstelle<br />

zu rechnen. Damit<br />

soll sich Couch DB auch als Reverse-<br />

Proxy konfigurieren lassen und externe<br />

Prozesse verwalten können. (mhu) n<br />

Infos<br />

[1] Couch DB: [http://couchdb.apache.org]<br />

[2] Oliver Frommel, „Mal ausspannen“:<br />

[http://www. linux-magazin.de/<br />

Online-Artikel/ CouchDB]<br />

[3] Android bei Couch One: [http://www.<br />

couchone. com/ page/android]<br />

[4] Couch App: [http://www.couchapp.org]<br />

[5] Couch-DB-Lounge [http://tilgovi.github.<br />

com/couchdb-lounge/]<br />

[6] Pillow: [https://github.com/khellan/Pillow]<br />

[7] Gizzard:<br />

[https://github. com/twitter/gizzard]<br />

[8] Bigcouch:<br />

[https://github. com/cloudant/bigcouch]<br />

Der Autor<br />

Sven Pöhler beschäftigt sich mit <strong>Linux</strong> bereits<br />

seit Kernelversion 0.96. Er<br />

ist seit vielen Jahren im Bereich<br />

Software-Entwicklung<br />

und IT-Infrastruktur tätig. Er<br />

arbeitet für ein ID-Hochsicherheitsunternehmen.<br />

Couch DB 02/<strong>2011</strong><br />

Titelthema<br />

www.linux-magazin.de<br />

55


DAS LINUX-JAHR<br />

2010 AUF EINER<br />

SCHEIBE<br />

JETZT NEU!<br />

12 Ausgaben<br />

auf DVD nur<br />

14,95 !<br />

• Zwölf Ausgaben<br />

komplett als<br />

HTML und PDF<br />

• Ausgeklügelte<br />

Navigation in<br />

jedem Browser<br />

• Blitzschnelle<br />

Volltextsuche<br />

mit Javascript<br />

• Inklusive Adobe<br />

Reader<br />

MAGAZIN<br />

Auf der 2. Seite der doppelseitigen DVD<br />

finden Sie die Live-Distribution Backtrack<br />

4r2 in der überall bootfähigen<br />

32-Bit-Version. Backtrack eignet sich<br />

hervorragend für Penetrationstests im<br />

eigenen Netzwerk.<br />

back track<br />

JETZT SCHNELL BESTELLEN:<br />

• Telefon 089 / 99 34 11-0<br />

• Fax 089 / 99 34 11-99<br />

• E-Mail: info@linux-magazin.de<br />

• Internet: http://www.linux-magazin.de/DVD2010<br />

Ihr Widerrufsrecht: Sie können Ihre Bestellung innerhalb von 14 Tagen beim <strong>Linux</strong>-<strong>Magazin</strong>-Leserservice,<br />

Putzbrunner Straße 71, D-81739 München, widerrufen. Zur Wahrung der Frist genügt die rechtzeitige Absendung des Widerrufs.


In eigener Sache: DELUG-DVD<br />

OMD, Untangle, E-Book<br />

Einführung 12/2010 02/<strong>2011</strong><br />

Software<br />

Auch diesen Monat bekommen die DELUG-Käufer die doppelte Datenmenge zum einfachen Preis: Auf der DVD-9<br />

findet sich die brandneue Open Monitoring Distribution in einer exklusiven Preview. Von der DVD bootet der<br />

Router Untangle, dazu gibt’s Software zum <strong>Datenbank</strong>schwerpunkt und ein komplettes E-Book. Markus Feilner<br />

www.linux-magazin.de<br />

57<br />

Inhalt<br />

58 OMD<br />

Nagios mit vielen Plugins einfach installieren,<br />

das verspricht die Open Monitoring<br />

Distribution.<br />

62 Bitparade<br />

Vier Mal Forensoftware im Vergleich:<br />

PHP BB, Simple Machines Forum, Vbulletin<br />

und das Invision Power Board.<br />

70 Webmapping<br />

Wer auf seiner Webseite schicke interaktive<br />

Karten einbauen will, kommt um<br />

Open Layers, Mapfish und Mapbender<br />

nicht herum.<br />

76 Tooltipps<br />

Etherdump, Fetch Yahoo, Patool, Srm,<br />

ZNC und Group Shell.<br />

78 Projekteküche<br />

Die freie DJ-Software Mixx erlaubt das<br />

Mixen am <strong>Linux</strong>-PC, Liquidsoap erstellt<br />

flexible Webradio-Streams. Dazu gibt’s<br />

Kartoffel-Kürbis-Gratin.<br />

Neben einem normalen <strong>Linux</strong>-<strong>Magazin</strong><br />

ohne Datenträger gibt es die DELUG-<br />

Ausgabe mit Monats-DVD, bei der die<br />

Redaktion die Disk mit einem speziellen<br />

Konzept zusammenstellt: In einer<br />

Art modularem System enthält sie Programme<br />

und Tools, die in der jeweiligen<br />

<strong>Magazin</strong>-Ausgabe getestet und besprochen<br />

sind. Zudem gibt es nicht im Heft<br />

abgehandelte Software, die die Redaktion<br />

besonders empfiehlt, alles gebündelt<br />

unter einer HTML-Oberfläche. Wer den<br />

Silberling einlegt, findet in der Webseite<br />

gleich als erstes den Menüpunkt »Exklusiv«,<br />

der zur Open Monitoring Distribution<br />

führt.<br />

OMD und Untangle<br />

Die sieben Entwickler von OMD ([1],<br />

siehe Artikel auf Seite 58) haben für die<br />

DELUG-DVD eine Schippe drauf gelegt.<br />

So finden sich in der Nagios-Variante,<br />

die vor allem die Installation und Konfiguration<br />

der zahlreichen Plugins einfacher<br />

macht, auch Tools und Tricks, deren<br />

Integration Anwender sonst erst einige<br />

Recherche- und Arbeitszeit kostet.<br />

Auch der Hersteller Untangle hat seiner<br />

gleichnamigen Router-Distribution<br />

in der neuen Major-Version 8.0 zahlreiche<br />

Feaures hinzugefügt, beispielsweise<br />

Software zur Bandbreitenkontrolle oder<br />

einen Mechanismus zur Kontrolle der<br />

Servicequalität der Internetverbindung.<br />

Dazu kommt ein neuer Viewer, der die<br />

Sessionprioritäten anzeigt, sowie insgesamt<br />

acht Profile für ein- und ausgehende<br />

Verbindungen (Abbildung 1).<br />

Galileo E-Book<br />

Damit nicht genug: Neben den vielen<br />

Tools aus dem Titelthema „<strong>Datenbank</strong>en“,<br />

der Bitparade, den Tooltipps und<br />

aus dem Webmapping- und dem LXC-<br />

Artikel findet sich auf der DVD auch das<br />

komplette E-Book „<strong>Linux</strong>“ von Johannes<br />

Plötner und Steffen Wendzel in der neuesten<br />

Ausgabe von <strong>2011</strong> (Abbildung 2,<br />

[2]) von Galileo Computing. Neben umfangreichem<br />

<strong>Linux</strong>-Grundwissen erklärt<br />

es sowohl die Anwendung des Systems<br />

als Workstation oder Server und dessen<br />

Administration. In gedruckter Form kostet<br />

dieses Buch 40 Euro, DELUG-Abonnenten<br />

erhalten es einfach so. ■<br />

Infos<br />

[1] Open Monitoring Distribution:<br />

[http:// omdistro. org]<br />

[2] Johannes Plötner, Steffen Wendzel, „<strong>Linux</strong>“:<br />

Galileo Computing, <strong>2011</strong>: [http:// openbook.<br />

galileocomputing. de/ linux]<br />

Abbildung 1: In Java<br />

Swing, C und anderen<br />

Sprachen implementiert<br />

ist Untangle. Die<br />

<strong>Linux</strong>-Distribution<br />

dient als Netzwerk-<br />

Gateway mit Modulen<br />

zu Spamabwehr und<br />

Webfilterung.<br />

Abbildung 2: Komplett<br />

als E-Book auf der<br />

DELUG-DVD: Galileos<br />

Standardwerk „<strong>Linux</strong>“.


Software<br />

www.linux-magazin.de OMD 02 /<strong>2011</strong><br />

58<br />

Die Open Monitoring Distribution macht Nagios einfacher<br />

Geballter Durchblick<br />

Sieben prominente Nagios-Entwickler brachten letzten Oktober eine angepasste und erweiterte Nagios-<br />

Variante heraus: OMD, die Open Monitoring Distribution. Ihr spendierten sie Installationspakete und zahlreiche<br />

Addons. Im Testlabor hinterließ OMD einen guten Eindruck. Markus Feilner<br />

die sonst nur langjährige Nagios-Anwender<br />

kennen und umsetzen. So lägen beispielsweise<br />

alle Daten, auf die das System<br />

häufig zugreift, auf einer Ramdisk, was<br />

die Arbeitsgeschwindigkeit deutlich erhöhen<br />

soll.<br />

Streitfall <strong>Datenbank</strong><br />

© Alexander Kataytsev, Fotolia.com<br />

Nagios und seine jüngeren Ableger wie<br />

Icinga sind in der Welt der IT-Überwachung<br />

das Maß aller Dinge. Für den<br />

Platzhirsch gibt es eine schier unendliche<br />

Anzahl Plugins und Erweiterungen,<br />

GUIs und Tools, deren Auswahl und Aktivierung<br />

den Admin bei der Installation<br />

bisweilen viel Zeit kosten.<br />

Für Profis und Einsteiger<br />

Anspruchsvolle Anwender mit Bedarf für<br />

modernere Plugins, die noch nicht in den<br />

<strong>Linux</strong>-Distributionen oder den vorkompilierten<br />

Nagios-Paketen enthalten waren,<br />

blieb bisher sogar nur der langwierige<br />

Weg über den Quelltext. Ähnlich wie<br />

das im letzten Heft vorgestellte Open IT<br />

Cockpit [1] will seit wenigen Monaten die<br />

Open Monitoring Distribution [2] die Bedürfnisse<br />

von Neueinsteigern und fortgeschrittenen<br />

Nutzern bedienen, indem sie<br />

topaktuelle Features mit einer einfachen<br />

Installation kombiniert, Dafür stellen prominente<br />

Nagios-Entwickler Software und<br />

Konfigurationen zusammen und pflegen<br />

die Pakete.<br />

Hinter dem Kürzel OMD verbirgt sich<br />

eine vorkonfigurierte Nagios-Installation<br />

mit Addons, ausgewählt und kombiniert<br />

von den Entwicklern Wolfgang Barth,<br />

Gerhard Laußer, Mathias Kettner, Lars<br />

Michelsen, Jörg Linge, Sven Nierlein und<br />

Stefan Hösl. Sie sind seit Jahren in der<br />

Nagios-Szene aktiv und durch ihre Arbeit<br />

an Projekten wie der Visualisierung Nagvis<br />

(Michelsen, [3]), der Agentensoftware<br />

Check_mk (Kettner, [4], [5]), dem<br />

Performance-Analysetool Pnp4nagios<br />

(Linge, [6]) oder dem Webinterface<br />

Thruk (Nierlein, [7]) bekannt.<br />

Auf der Open Source Monitoring Conference<br />

2010 stellten sie ihr jüngstes Kind<br />

erstmals der Öffentlichkeit vor [8]. Dort<br />

berichteten sie, in OMD wäre viel Praxis-<br />

Know-how eingeflossen, also Konzepte,<br />

Auch das in OMD ebenfalls enthaltene<br />

Mk_Livestatus [9] zielt in diese Richtung:<br />

Indem es die Nagios-Statusdaten<br />

nicht in einer <strong>Datenbank</strong> (wie bei NDO<br />

[10] oder Icinga [11]) oder Files (wie<br />

bei reinem Nagios) vorhält, sondern über<br />

einen Socket bereitstellt, spare das System<br />

viel CPU-Last oder I/ O-Operationen.<br />

„Allein ein Update der Status-<strong>Datenbank</strong><br />

mit dem Löschen alter Daten kann in<br />

größeren Umgebungen bis zu 45 Minuten<br />

in Anspruch nehmen, Zeit, in denen<br />

der Monitoringserver seine Arbeit<br />

nicht oder nur schlecht erledigen kann“,<br />

so OMD-Initiator Mathias Kettner zum<br />

<strong>Linux</strong>-<strong>Magazin</strong>. Doch er gibt auch zu:<br />

„Das Thema ist allerdings ein Minenfeld,<br />

da prallen unterschiedlichste Meinungen<br />

aufeinander und die Diskussion wird oft<br />

emotional geführt.“<br />

Nach seiner Erfahrung generiert eine <strong>Datenbank</strong><br />

mit Konfigurationen und Statusinformationen<br />

beträchtlichen Overhead,<br />

nicht zuletzt, weil Nagios ohnehin<br />

stets Klartextdateien für die Konfiguration<br />

brauche. Andererseits profitieren<br />

vor allem Addon-Programmierer von<br />

den <strong>Datenbank</strong>-Schnittstellen. Kettners<br />

Mk_Livestatus hält die Daten dagegen<br />

im RAM vor und schreibt nichts auf die<br />

Platte. Das Konzept scheint aufzugehen,<br />

zumindest raten mittlerweile sogar die<br />

Nagvis-Entwickler dazu und erklären die<br />

Status-DB als „deprecated“.


opensourcepress.de<br />

Bücher<br />

neu<br />

OMD 02/<strong>2011</strong><br />

Software<br />

neu<br />

ISBN 978-3-941841-33-8<br />

220 Seiten · brosch. · 29,90 [D]<br />

ISBN 978-3-937514-40-6<br />

439 Seiten · brosch. · 39,90 [D]<br />

www.linux-magazin.de<br />

59<br />

neu<br />

Abbildung 1: Nach dem ersten Login auf der virtuellen Maschine erscheint das Web Administration Tool der<br />

Open Monitoring Distribution namens Multisite mit dem Wato-Plugin.<br />

OMD macht im Test bereits einen ausgereiften<br />

Eindruck und bringt einige interessante<br />

Features mit. So sind mehrere<br />

Monitoring-Instanzen pro Host möglich,<br />

die auch mit unterschiedlichen Benutzerrechten<br />

laufen können. OMD kommt als<br />

Debian- und RPM-Paket für Centos, RHEL,<br />

SLES, Debian und Ubuntu und lässt sich<br />

mit Yum, Zypper und Apt problemlos<br />

installieren. Wer eine Quellcode-basierte<br />

Installation bevorzugt, findet Skripte,<br />

die die Erstellung eigener, angepasster<br />

Tarballs vereinfachen. Als die Tester des<br />

<strong>Linux</strong>-<strong>Magazin</strong>s eine frühe Version unter<br />

Centos installieren wollten, bekamen sie<br />

noch Fehlermeldungen wegen unerfüllter<br />

Abhängigkeiten zu Gesicht, diese behoben<br />

die Entwickler jedoch auf Anfrage<br />

innerhalb weniger Tage.<br />

OMD bringt eine lange Liste an Tools mit,<br />

hier die wichtigsten (in alphabetischer<br />

Reihenfolge):<br />

n Check_logfiles<br />

n Check_mk<br />

n Check_mysql_health<br />

n Check_nrpe<br />

E<br />

ISBN 978-3-941841-23-9<br />

248 Seiten · brosch. · 19,90 [D]<br />

Kurse<br />

Server-Know-how<br />

ISBN 978-3-937514-60-4<br />

255 Seiten · brosch. · 19,90 [D]<br />

07.-09. Februar<br />

21.-23. Februar<br />

14.-16. März<br />

Apache Webserver<br />

LDAP<br />

Samba in heterogenen Netzen<br />

Dozent:<br />

Stefan<br />

Schäfer<br />

Abbildung 2: Wie in Nagios zeigt auch das Gespann OMD-Multisite-Wato die Services eines Hosts in einer<br />

langen Liste mit übersichtlichen Icons und grafischen Statusreports.<br />

Auswahl Kurstermine Januar – März <strong>2011</strong><br />

C++: STL und Boost<br />

Novell 3103<br />

TCP/IP-Analyse mit Wireshark<br />

Single-Source-Publishing mit DocBook<br />

Bacula Grundlagen<br />

Vorbereitung auf LPIC-1<br />

Nagios Advanced<br />

Kerberos<br />

Hochverfügbarkeit mit Heartbeat<br />

Git<br />

Administration von OTRS<br />

FAI<br />

opensourceschool.de<br />

24. – 25.01.<br />

31.01 – 04.02.<br />

02. – 04.02.<br />

07. – 09.02.<br />

14. – 16.02.<br />

14. – 18.02.<br />

17. – 18.02.<br />

21. – 23.02.<br />

07. – 11.03.<br />

10. – 11.03.<br />

14. – 16.03.<br />

14. – 16.03.<br />

Sonderpreise<br />

für Studierende


Software<br />

www.linux-magazin.de OMD 02 /<strong>2011</strong><br />

60<br />

Abbildung 3: Für einen einfachen Test empfiehlt sich der vollständig vorkonfigurierte Local Host, der bereits<br />

den Check_mk-Agenten installiert hat. Analog dazu integriert der Admin eigene Server.<br />

n Check_oracle_health<br />

n Check_web_inject<br />

n Dokuwiki<br />

n Jmx4perl<br />

n Mk_Livestatus<br />

n Multisite<br />

n Nagios und zahlreiche Plugins<br />

n Nagvis<br />

n Nsca<br />

n Pnp4nagios<br />

n Rrdtool/ Rrdcached<br />

n Thruk<br />

Dazu gesellen sich zahlreiche Perl-Module<br />

und andere abhängige Pakete. Die<br />

Abbildungen in diesem Artikel sind mit<br />

der virtuellen OMD-Maschine von der<br />

DELUG-DVD erstellt und zeigen einen<br />

aktuellen Git-Snapshot, der bereits mit<br />

der Weboberfläche Multisite [12] und<br />

Kettners Plugin Wato [13] in einer unsta-<br />

ble Preview der Version 1.1.9 ausgestattet<br />

ist. OMD liegt zur Zeit in Version 0.44<br />

vor, das virtuelle Debian-<strong>Linux</strong> ist gleichzeitig<br />

auch als Client eingerichtet, der<br />

sich für einen ersten Test oder zum Üben<br />

sehr einfach an den Monitoring-Server<br />

anbinden lässt.<br />

Inbetriebnahme<br />

Das klappt am schnellsten ebenfalls mit<br />

den Client-Agenten von Check_mk, die<br />

für verschiedene Betriebssysteme auf der<br />

DELUG-DVD vorliegen. Nach dem Log in<br />

als Root (Passwort »omd«) auf der Shell<br />

gibt ein Ifconfig die IP-Adresse des Hosts<br />

aus. Mit der meldet sich der Anwender<br />

im Browser an (Username »omdadmin«,<br />

Passwort »omd«) und erhält den ersten<br />

Überblick über die beiden konfigurierten<br />

Abbildung 4: Jeder Rechner mit einem Check_mk-Agenten liefert von Haus aus diese Statusinformationen<br />

zu rück. Trotzdem ist OMD kompatibel zum Standard-Nagios, eigene Addons und Services lassen sich einbinden.<br />

Demo-Standorte »München« und »Hamburg«<br />

inklusive deren Service-Listen<br />

(Abbildungen 1 und 2). Einen eigenen<br />

Host fügt der Admin über die Schaltfläche<br />

»Create New Host« unter dem Menüpunkt<br />

»Server« hinzu, zum Beispiel in der<br />

Location »München«. Je nach Bildschirm<br />

kann dafür ein wenig Scrollen notwendig<br />

sein, der Eintrag findet sich recht weit<br />

unten (Abbildung 3).<br />

Es ist ratsam, zunächst den lokalen Rechner<br />

als Client hinzuzufügen, denn wenn<br />

das klappt, steht der Überwachung eines<br />

anderen Servers nichts im Wege. Abbildung<br />

4 zeigt die Standards, die Check_<br />

mk einrichtet und überwacht. Ein Klick<br />

auf das grüne Icon hinter dem Dienst<br />

startet den Check sofort, nicht erst beim<br />

nächsten geplanten Termin. Nach kurzer<br />

Zeit erscheint das Ergebnis und der<br />

Anwender kann sich durch die Listen<br />

hangeln.<br />

Die Standards sind in den meisten Fällen<br />

ausreichend, um eine sinnvolle Überwachung<br />

des eigenen Servernetzes zu<br />

bewerkstelligen. Wer sich jetzt fragt, ob<br />

seine eigenen Erweiterungen auch damit<br />

funktionieren, sollte es ausprobieren.<br />

Klassische Nagios-Checks sind parallel<br />

zu den installierten Tools jederzeit möglich,<br />

Inkompatibilitäten soll es laut den<br />

Entwicklern nicht geben.<br />

n<br />

Infos<br />

[1] Bernd Erk, „Der Aufpasser“: <strong>Linux</strong>-<br />

<strong>Magazin</strong> 01/11, S. 94<br />

[2] OMD: [http:// omdistro.org]<br />

[3] Nagvis: [http://www.nagvis.org]<br />

[4] Check_mk: [http://mathias-kettner.de/<br />

check_mk. html]<br />

[5] Robert Koch, Markus Feilner, Tobias Eggendorfer,<br />

„Auf einen Blick“: <strong>Linux</strong>-<br />

<strong>Magazin</strong> 10/ 09, S. 86<br />

[6] Pnp4nagios: [http://www.pnp4nagios.org]<br />

[7] Thruk: [http://www.thruk.org/ index.php]<br />

[8] Jens-Christoph Brendel, „Monitoring nach<br />

Nagios“: <strong>Linux</strong>-<strong>Magazin</strong> 12/ 10, S. 28<br />

[9] Mk_Livestatus: [http://mathias-kettner.<br />

de/checkmk_livestatus.html]<br />

[10] NDO, Nagios <strong>Datenbank</strong> Utilities: [http://<br />

www.nagios-wiki. de/nagios/ndo/start]<br />

[11] Icinga: [http://www.icinga.org]<br />

[12] Multisite: [http://mathias-kettner.de/<br />

checkmk_multisite. html]<br />

[13] Wato: [http://mathias-kettner. de/<br />

checkmk_wato. html]


LINUX<br />

F<br />

®


Software<br />

www.linux-magazin.de Bitparade 02/<strong>2011</strong><br />

62<br />

Forensoftware im Vergleich<br />

Forum geht’s?<br />

Auf viele Fragen haben Internetforen die passende Antwort. Wer selbst eine solche Plattform betreiben<br />

möchte, hat die Wahl zwischen einigen freien und kommerziellen Systemen. Diese Bitparade beleuchtet vier<br />

Vertreter aus Administratorsicht. Daniel Schäfer<br />

ten PHP BB, Simple Machines Forum,<br />

Vbulletin und Invision Power Board gegeneinander<br />

an.<br />

E PHP BB<br />

© boing, Photocase.com<br />

Titel, Thesen, Trollgefahr – sie sind<br />

Spielwiesen für Nerds aller Art, Diskussions-<br />

und Wissensplattformen, bieten<br />

Erfahrungsberichte aus erster Hand, leisten<br />

erste Hilfe bei vielen Fragen, aber<br />

vor allem sind sie ein wichtiger Teil der<br />

Netzkultur: Foren. Tagtäglich versammeln<br />

sich Tausende Nutzer an diesen virtuellen<br />

Tischen, lesen und posten Artikel, verschicken<br />

Anhänge, moderieren Beiträge<br />

anderer Nutzer und machen das Leben<br />

im Netz ein bisschen bunter.<br />

Egal ob man Boards als Zeitfresser oder<br />

Wissensgruben empfindet, sie sind in jedem<br />

Fall eine Herausforderung für jeden,<br />

der sie warten darf. Wer ein Forum anbieten<br />

und administrieren möchte, greift am<br />

besten zu einer der zahlreichen fertigen<br />

Softwarelösungen – dieser Artikel stellt<br />

vier davon vor.<br />

Alle Testkandidaten sind in der Praxis erprobte<br />

und erfolgreiche Systeme. Sie sind<br />

sämtlich in PHP implementiert und laufen<br />

problemlos auf Standard-LAMP-Servern<br />

(<strong>Linux</strong>, Apache, MySQL, PHP). Da solche<br />

Zusammenstellungen inzwischen bei den<br />

meisten Webhostern im Angebot sind,<br />

bereiten Installation und Einrichtung in<br />

der Regel auch unerfahrenen Betreibern<br />

keine größeren Probleme. Unterschiede<br />

gibt es vor allem bei der Codestruktur<br />

und der Funktionspalette.<br />

Das zeigt sich nicht nur, wenn der Betreiber<br />

sie erweitern oder aktualisieren<br />

möchte. Stehen Sicherheitsupdates bereit,<br />

sollte das Forum möglichst leicht aktualisierbar<br />

sein, damit die Downtime der<br />

Plattform sich in Grenzen hält. Mit Hilfe<br />

von Berechtigungen kann der Admin<br />

Features für bestimmte Nutzer freischalten<br />

oder sperren – auch diese Funktion<br />

musste sich im Test beweisen.<br />

Last but not least, nimmt diese Bitparade<br />

unter die Lupe, wie komfortabel ein<br />

Verwalter das Aussehen seines Forums<br />

individuell gestalten darf. Im Test trete-<br />

PHP BB [1] ist ein weitverbreitetes, freies<br />

Forensystem, das unter der GPL steht.<br />

Schon die deutschsprachige Projektwebseite<br />

glänzt mit Übersichtlichkeit, großer<br />

Auswahl, vielen Anleitungen und Hilfestellungen.<br />

Einmal heruntergeladen<br />

entpackt der Administrator die Quellen<br />

auf seinem Server und startet die Installation<br />

direkt aus dem Browser heraus.<br />

Ein Assistent führt durch den Einrichtungsprozess<br />

und fragt zunächst Details<br />

zur <strong>Datenbank</strong> ab. Diese muss existieren,<br />

andernfalls weigert sich PHP BB, mit der<br />

Installation fortzufahren.<br />

Wenn der Admin die weiteren Einrichtungsschritte<br />

des Assistenten durchlaufen<br />

hat, sollte er die Installationsskripte<br />

löschen. PHP BB gibt sonst eine Fehlermeldung<br />

aus – das ist vorbildlich gelöst,<br />

denn die Installationsroutinen der Foren<br />

enthalten potenzielle Sicherheitslücken.<br />

Danach kann der Betreiber auf sein Forum<br />

und vor allem auf die Verwaltungsfunktionen<br />

zugreifen. Die erreicht er über<br />

das Administration Control Panel (Admin<br />

CP). Es beherbergt fast alle Konfigurationsmöglichkeiten,<br />

nur die kritischen Einstellungen,<br />

etwa der <strong>Datenbank</strong>zugang,<br />

sind von dort aus nicht erreichbar.<br />

Die einzelnen Menüs mit ihren Kategorien<br />

wirken logisch und aufgeräumt<br />

(Abbildung 1). Einziges Manko im<br />

Admin-Bereich: Der Timeout für die<br />

Authentifizierung ist zu hoch. Im Test war<br />

es sogar nach einem Tag Inaktivität möglich,<br />

ins Control Panel zu gelangen. Potenziellen<br />

Angreifern öffnet dies Tür und Tor


zum Kommandozentrum, falls der Admin<br />

mal vergisst, sich auszuloggen.<br />

Möchte er Berechtigungen für seine Benutzer<br />

festlegen, stellt er schnell fest,<br />

dass die entsprechenden Einträge in<br />

den Einrichtungsmenüs teilweise über<br />

mehrere Kategorien erreichbar sind – besonders<br />

übersichtlich ist das aber nicht.<br />

PHP BB kennt für die Befugnisse der Anwender<br />

drei Zustände: »Nein« (Standard,<br />

verboten), »Ja« (erlaubt, überschreibt<br />

Standard) und »Nie« (überschreibt die<br />

anderen beiden Einstellungen und verbietet<br />

grundsätzlich). Jeder Account besitzt<br />

aber nicht nur einen individuellen<br />

Berechtigungssatz, sondern erbt auch<br />

noch die Rechte der Gruppen, in denen<br />

er Mitglied ist.<br />

Für den alltäglichen Forenbetrieb ist diese<br />

Vermischung verwirrend und unkomfortabel,<br />

vor allem dann, wenn mehrere<br />

Administratoren ein Board verwalten.<br />

Ändert einer davon die Befugnisse eines<br />

Benutzers, muss er immer die anderen<br />

Berechtigungspunkte durchsehen und<br />

prüfen, ob nicht ein weiterer Admin etwas<br />

verändert hat. Besser wäre eine reine<br />

Aufteilung in Gruppen. So wäre auf einen<br />

Blick klar, welche Anwender wo welche<br />

Rechte haben. Gefährlich ist dieses zweigeteilte<br />

System darüber hinaus, wenn zum<br />

Beispiel ein Admin nach seinem Ausstieg<br />

weiter alle Rechte hat, weil irgendeine Benutzereinstellung<br />

die Degradierung zum<br />

normalen Anwender überschreibt.<br />

ihm Abfragen und Schleifen innerhalb<br />

des Template zu realisieren. PHP BB speichert<br />

die Templates im Dateisystem des<br />

Webservers zwischen und wandelt die<br />

Abfragen und Schleifen in PHP-Code um.<br />

Dieses Vorgehen entlastet den Server, da<br />

das System nicht bei jedem Seitenaufruf<br />

konvertieren muss.<br />

Kommt ein Update heraus, weist PHP BB<br />

den Admin darauf hin. Leider ist diese<br />

Information nur im Admin CP selbst zu<br />

sehen. Läuft ein Forum ohne größere Probleme,<br />

schaut der Verwalter dort jedoch<br />

relativ selten vorbei. Wer immer auf dem<br />

neuesten Stand sein möchte, sollte daher<br />

die Mailinglisten des Projekts mit den<br />

Ankündigungen abonnieren. Die Aktualisierung<br />

auf eine neue PHP-BB-Version<br />

erfolgt dann halbautomatisch.<br />

Im Verwaltungsbereich steht ein Updatepaket<br />

zur Verfügung, das der Admin<br />

von Hand einspielt. Da das System nicht<br />

prüft, wo dieser eigene Modifikationen<br />

vorgenommen hat, und einfach die Originaldateien<br />

überschreibt, gehen eigene<br />

Anpassungen eventuell dabei verloren.<br />

Ein weiteres Problem dieser halbautomatischen<br />

Updates entsteht, wenn eigene<br />

Modifikationen nur zu einem Teil aus<br />

den Quelltexten der Forensoftware verschwinden.<br />

So entstehen Fehler, die nur<br />

schwer zu lokalisieren sind.<br />

E Simple Machines Forum<br />

Die Firma Simple Machines vertreibt ihre<br />

gleichnamige Forensoftware (SMF, [3])<br />

unter einer eigenen, unfreien Lizenz. Diese<br />

erlaubt zwar das System kostenlos einzusetzen<br />

und den Quellcode zu modifizieren,<br />

verbietet aber das Weiterverteilen ohne<br />

schriftliche Genehmigung. Zusätzlich bietet<br />

der Hersteller diverse Supportleistungen<br />

für rund 50 US-Dollar pro Jahr an.<br />

Auf der Projekt-Homepage stehen verschiedene<br />

Quellpakete zum Download<br />

Bitparade 02/<strong>2011</strong><br />

Software<br />

www.linux-magazin.de<br />

63<br />

Gestaltungsmöglichkeiten<br />

Die meisten Betreiber suchen irgendwann<br />

nach Erweiterungen für ihr Forum.<br />

Gewünscht sind häufig Funktionen, die<br />

mehr Informationen auf die Indexseite<br />

bringen (letzte Beiträge, Top-Poster und<br />

so weiter) oder ein Button, um Artikel zu<br />

bewerten (ähnlich dem Like-Knopf von<br />

Facebook). Ebenfalls auf der Wunschliste<br />

stehen Chats (Shoutbox) oder die Anpassung<br />

des URL-Formats an etwas Eigenes.<br />

Modifikationen baut der Verwalter bei<br />

PHP BB direkt in den Quellcode ein. Das<br />

ist aufwändig und fehleranfällig. Glücklicherweise<br />

gibt es Tools wie Automod [2],<br />

die vieles automatisieren.<br />

Das Aussehen des Forums passt der<br />

Administrator über CSS und HTML-<br />

Templates an. Kontrollwörter, die aus<br />

HTML-Kommentaren bestehen, helfen<br />

Abbildung 1: Das Administration Control Panel (Admin CP) von PHP BB ist übersichtlich und erlaubt schnellen<br />

Zugriff auf die wichtigsten Forumseigenschaften.


Software<br />

www.linux-magazin.de Bitparade 02/<strong>2011</strong><br />

64<br />

damit das Cachen der Templates. So sind<br />

PHP-Code und HTML-Konstrukte wild<br />

miteinander vermischt.<br />

Auch diese Forensoftware informiert über<br />

Aktualisierungen nur im Admin-Bereich,<br />

sodass es für den Betreiber sinnvoll ist, die<br />

SMF-Mailinglisten zu lesen. Das eigentliche<br />

Update startet er im Control Panel,<br />

schaut gelassen bei der Aktualisierung zu<br />

und stellt anschließend erfreut fest, dass<br />

das System sogar die Modifikationen berücksichtigt<br />

und neu eingebaut hat.<br />

E Vbulletin<br />

Abbildung 2: Die einzelnen Verwaltungsbereiche in Simple Machines Forum sind übersichtlich in Kategorien<br />

wie »Hauptseite«, »Konfiguration«, »Forum«, »Mitglieder« und »Wartungsbereich« aufgeteilt.<br />

bereit, die jedoch nur die englischsprachige<br />

Programmversion enthalten. Individuelle<br />

Sprach anpassungen muss der User<br />

etwas umständlich selbst über das Supportforum<br />

suchen. Das Simple-Machines-<br />

Paket enthält eine knappe, aber vollständige<br />

Installationsanleitung, ebenfalls auf<br />

Englisch. Genau wie bei PHP BB ruft der<br />

Anwender den Einrichtungsassistenten<br />

über den Webbrowser auf, nachdem er<br />

die Quelldateien auf den Server gespielt<br />

hat. Sofern die <strong>Datenbank</strong> noch nicht<br />

existiert, versucht der Installationsassistent<br />

sie anzulegen. In der Praxis dürfte<br />

dies aber oft an mangelnden MySQL-<br />

Zugriffsrechten scheitern.<br />

Im Anschluss darf der Systembetreuer direkt<br />

auf alle Foren- und Verwaltungsfunktionen<br />

zugreifen. SMF warnt lediglich mit<br />

einem Hinweis in der Kopfzeile davor,<br />

dass die Installationsskripte noch ausführbar<br />

sind. Sicherer und besser wäre<br />

es, den Admin zu zwingen die potenziell<br />

gefährlichen Skripte zu entfernen.<br />

Um das Admin Control Panel zu betreten,<br />

muss der Betreiber sich erneut einloggen.<br />

Sicherheitshalber meldet das System<br />

den Verwalter nach zirka 30 Minuten<br />

Inaktivität ab. Das Kontrollzentrum ist<br />

gut strukturiert und übersichtlich gehalten<br />

(Abbildung 2). Einige wichtige<br />

Konfigurationsmöglichkeiten muss der<br />

Betreiber explizit freischalten. Es ist unbedingt<br />

empfehlenswert, alle Häkchen<br />

unter »Berechtigungen« | »Einstellungen«<br />

zu setzen, um das volle Potenzial des<br />

SMF-Berechtigungssystems ausschöpfen<br />

zu können. Sind diese Optionen nicht<br />

aktiviert, gelten alle gesetzten Befugnisse<br />

global für alle Unterforen, es gibt kein<br />

dreigeteiltes System für Erlaubtes und<br />

Verbotenes, wie es etwa PHP BB nutzt.<br />

Variantenreich<br />

Tiefgreifende Änderungen an der Grundfunktionalität<br />

geschehen auch bei diesem<br />

Forensystem über Modifikationen. SMF<br />

zeigt sich hier vorbildlich und fasst Erweiterungen<br />

als Pakete zusammen, die<br />

der Verwalter direkt über das Admin CP<br />

einspielen oder deinstallieren kann. Auch<br />

diese Modifikationen landen direkt in den<br />

PHP-Quelldateien (die dazu schreibbar<br />

sein müssen), in diesem Fall nimmt aber<br />

die Forensoftware dem Admin die Arbeit<br />

des Einpflegens ab.<br />

Die Optik des Boards ändert der Administrator<br />

über fertige Templates, die<br />

allerdings vergleichsweise unübersichtlich<br />

sind. Simple Machines Forum bietet<br />

keine Kontrollwörter an und spart sich<br />

Die unter einer proprietären Lizenz veröffentlichte<br />

Forensoftware [4] der Firma<br />

Vbulletin Solutions, Inc., ist in zwei Ausführungen<br />

erhältlich. Das reine Forum<br />

kostet 159 Euro (139 Euro für ein Upgrade),<br />

die Publishing Suite schlägt mit<br />

239 Euro (Upgrade: 209 Euro) zu Buche.<br />

Einen Vergleich der beiden Ausführungen<br />

präsentiert die Webseite des Herstellers<br />

im Bereich »Features«. In diesem Test trat<br />

das reine Forum an.<br />

Um an die Downloadpakete von Vbulletin<br />

zu gelangen, muss sich der Benutzer<br />

zunächst im deutschsprachigen Kundencenter<br />

einloggen. Die Auswahl dort ist<br />

groß – und übersichtlich. Das mitgelieferte<br />

Handbuch ist ebenfalls auf Deutsch<br />

verfügbar. Die Anleitung ist zwar deutlich<br />

knapper als die von PHP BB, aber immer<br />

noch ausreichend.<br />

Bevor der Admin den Installationsassistenten<br />

auf den Plan ruft, trägt er von<br />

Hand den <strong>Datenbank</strong>zugang in eine Konfigurationsdatei<br />

ein. Danach entpackt er<br />

die Quellen auf seinem Server, und es<br />

kann losgehen. Der Assistent fragt nach<br />

der Vbulletin-Kundennummer, ohne die<br />

er seinen Dienst verweigert. Danach verläuft<br />

das Einrichten wie bei den anderen<br />

Testkandidaten reibungslos.<br />

Vbulletin verwehrt zunächst den Zugriff<br />

auf die Verwaltungsfunktionen im Admin<br />

Control Panel und erlaubt die Anmeldung<br />

erst, nachdem die Installationsskripte gelöscht<br />

sind. Der Admin-Bereich hat einen<br />

vernünftig eingestellten Timeout. Vbulletin<br />

wirft den Verwalter nach rund 15<br />

Minuten Inaktivität raus.<br />

Das Control Panel spiegelt den großen<br />

Funktionsumfang wider. Leider sind die<br />

zahlreichen Konfigurationsoptionen nicht<br />

in einzelne Bereiche aufgeteilt, sodass


der Verwaltungsbereich für den ungeübten<br />

Forenbetreiber zu unübersichtlich ist<br />

(Abbildung 3). So bleibt nur die Möglichkeit,<br />

die Einstellungen auszuklappen und<br />

die Suchfunktion des Browsers zur Hilfe<br />

zu nehmen.<br />

Das Berechtigungssystem erlaubt zwar<br />

eine genaue Feinabstimmung der Befugnisse,<br />

ist aber bei Weitem nicht so<br />

benutzerfreundlich wie das der anderen<br />

Testkandidaten. Vbulletin hat keine Option,<br />

alles zu verbieten (»Nie«) – alles<br />

ist entweder erlaubt oder nicht. In der<br />

Praxis kann das zu verworrenen Situationen<br />

führen.<br />

Angenommen der Admin will den Benutzer<br />

Bob für eine Woche bannen. Bob ist<br />

Mitglied in den beiden Gruppen C und D.<br />

Um Bob zu sperren, muss der Admin ihn<br />

aus beiden Gruppen entfernen und zur<br />

Banngruppe hinzufügen. Vergisst er das,<br />

überschreiben die erlaubten Dinge der<br />

Gruppen C und D die Sperre. Ist die Woche<br />

Auszeit vorbei, muss er sich genau<br />

daran erinnern, aus welchen Gruppen er<br />

Bob entfernt hatte.<br />

Das ist unnötig kompliziert und gestaltet<br />

den Verwaltungsprozess aufwändiger als<br />

nötig – ein Manko der zweigeteilten Systeme,<br />

bei denen der Verwalter zuerst eine<br />

Erlaubnis entfernen muss, damit er etwas<br />

explizit verbieten kann.<br />

Geschickt modifiziert<br />

Reichen die zahlreichen Vbulletin-Features<br />

nicht aus, kann der Betreiber aus<br />

vielen freien und kostenpflichtigen Erweiterungen<br />

auswählen ([5], [6]). Das<br />

Addon-Konzept basiert auf so genannten<br />

Hooks und ermöglicht es auf diese Weise,<br />

Modifikationen einzubauen, ohne die<br />

Quelldateien zu verändern. Hooks sind<br />

in Vbulletin Stellen, an denen externer<br />

Code ausgeführt werden darf. Modifikationen<br />

schleusen ihren eigenen Quelltext<br />

also an fest definierten Stellen in den<br />

Programmablauf ein, Vbulletin speichert<br />

den Code in seiner <strong>Datenbank</strong> ab und<br />

lädt ihn nur bei Bedarf.<br />

Das Aussehen des Forums verändert der<br />

Betreiber mit CSS und Templates. Beide<br />

legt Vbulletin ebenfalls in der <strong>Datenbank</strong><br />

ab, was dazu führt, dass der Admin Datei-<br />

Inhalte hin- und herkopieren muss, will<br />

er externes CSS oder HTML-Editoren verwenden.<br />

Innerhalb der Templates kann<br />

Abbildung 3: Im Kontrollzentrum von Vbulletin dürften gerade Neulinge unter den Forenbetreibern lange<br />

suchen, während Profis die gebündelte Darstellung meist schätzen.<br />

er Schleifen und Abfragen über HTML-<br />

Tags nutzen. Auch Vbulletin speichert<br />

die Templates zwischen und ersetzt die<br />

HTML-Tags durch entsprechenden PHP-<br />

Code. Die Forensoftware setzt auch bei den<br />

Templates auf eingebaute Hooks. Diese<br />

Anker erlauben den Modifikationen, die<br />

Funktionalität des Forums neu zu gestalten,<br />

ohne dass der Verwalter dafür Templates<br />

ändern müsste.<br />

Das sehr gut durchdachte Hooks-Konzept<br />

von Vbulletin erlaubt ein unkompliziertes<br />

Update der Software. Über neue<br />

Versionen informiert der Hersteller per<br />

Mail und auch im Control Panel selbst.<br />

Der Betreiber überträgt anschließend<br />

nur noch das neue Programmpaket auf<br />

seinen Webserver, startet den Installationsassistenten<br />

mit seiner Kundennummer<br />

und löscht am Schluss wieder die<br />

Einrichtungsskripte.<br />

E Invision Power Board<br />

Invision Power Board (IPB, [7]) ist ebenfalls<br />

proprietäre Software. Die Firma Invision<br />

Power Service bietet ihr Produkt<br />

in zwei Kategorien an. Die Standard License,<br />

der Testkandidat, ist für rund 150<br />

US-Dollar erhältlich, die Business License<br />

für zirka 350 US-Dollar. Die rein englischsprachige<br />

Hersteller-Webseite gibt Aufschluss<br />

über die Unterschiede und führt<br />

auch zum Kundencenter.<br />

Nach der Anmeldung findet der Benutzer<br />

dort schnell die aktuelle Version der<br />

Forensoftware. Eine deutsches Sprachpaket<br />

bietet eine Community-Webseite<br />

unter [8] an. Die mitgelieferte englische<br />

Dokumentation ist ausführlicher als die<br />

SMF- oder Vbulletin-Handbücher, kann<br />

allerdings der PHP-BB-Hilfe nicht das<br />

Wasser reichen.<br />

Die Installation ähnelt jener der anderen<br />

getesteten Forensysteme. Der Administrator<br />

lädt die Dateien auf seinen Webserver<br />

und startet im Browser den Installationsassistenten.<br />

Es ist nicht zwingend<br />

notwendig, die Installationsskripte nach<br />

dem Einspielen zu entfernen, IPB gibt<br />

aber eine entsprechende Warnung im<br />

Admin-Bereich aus. Der Verwalter sollte<br />

diesen Hinweis ernst nehmen und die<br />

Skripte löschen.<br />

E<br />

Bitparade 02/<strong>2011</strong><br />

Software<br />

www.linux-magazin.de<br />

65


Software<br />

www.linux-magazin.de Bitparade 02/<strong>2011</strong><br />

66<br />

Das Control Panel sieht ähnlich wie bei<br />

PHP BB aus. Die einzelnen Einstellungen<br />

findet der Admin in verschiedenen<br />

Bereichen, was zur Übersichtlichkeit beiträgt<br />

(siehe Abbildung 4). Nach rund<br />

30 Minuten Inaktivität ist Schluss, der<br />

Verwalter muss sich im Kontrollzentrum<br />

neu einloggen.<br />

Dagegen fällt das Berechtigungssystem<br />

etwas ab. Mit seiner Zweiteilung folgt es<br />

dem gleichen, stark veralteten Prinzip<br />

wie Vbulletin: Pro Berechtigungspunkt<br />

existieren zwei Zustände – erlaubt und<br />

verboten. Auch die Unterteilung der Zugangsberechtigungen<br />

ist nicht so fein<br />

aufgegliedert wie die der moderneren<br />

Konkurrenten. Der Admin kann für seine<br />

Benutzer lediglich festlegen, ob sie das<br />

Forum und die Themeninhalte sehen, auf<br />

Beiträge antworten oder neue schreiben<br />

beziehungsweise Anhänge hoch- oder<br />

runterladen dürfen.<br />

Der Aufbau des Quellcode und die Möglichkeiten,<br />

die sich daraus für Entwickler<br />

von Modifikationen ergeben, sind dagegen<br />

eine der Stärken von IPB. Der PHP-<br />

Code folgt dem MVC-Prinzip (Model<br />

View Controller), das funktionale Teile<br />

streng trennt: Das Model beschreibt die<br />

Daten, Views zeigen die Daten eines Model<br />

an und Controller verändern sie. Die<br />

einzelnen Komponenten kommunizieren<br />

miteinander: Ändert ein Controller die<br />

Daten in einem Model, bekommen alle<br />

Views automatisch Kenntnis von der<br />

Neuerung. Entwickler, die das Prinzip<br />

konsequent einhalten, bauen mit sehr geringem<br />

Aufwand eigene Views und Controller,<br />

erweitern also die Funktionalität.<br />

Anpassungsfähig<br />

Alle Erweiterungen befinden sich in eigenen<br />

PHP-Dateien, welche die Software<br />

über Hooks in das laufende System einbindet.<br />

Da der IPB-Quellcode klassenorientiert<br />

aufgebaut ist, können Modifikationen<br />

leicht Features erben, anpassen<br />

und erweitern. Hat ein Entwickler sich<br />

in dieses Konzept erst mal eingearbeitet,<br />

ist er viel schneller in der Lage, Addons<br />

für IPB zu entwickeln als für die anderen<br />

Forensysteme.<br />

Auch IPB setzt auf CSS und HTML-Templates,<br />

um Look & Feel anzupassen. Alle<br />

Templates liegen in eigenen Dateien vor<br />

und Invision Power Board speichert sie<br />

zwischen. Schleifen und Abfragen sind<br />

als HTML-Tags realisiert. Jede Schleife<br />

und jede Abfrage ist gleichzeitig ein<br />

Hook, über den eine Modifikation HTML-<br />

Code einschleust. Dabei steht es dem<br />

Entwickler frei, seinen Code vor, nach<br />

oder – bei Schleifen – mitten in den Tags<br />

Abbildung 4: Das Admin Control Panel von Invision Power Board glänzt durch klare Strukturen und eine übersichtliche<br />

Anordnung von News und Konfigurationsoptionen.<br />

zu platzieren. Das Konzept ähnelt damit<br />

dem von Vbulletin, geht aber einen<br />

Schritt weiter.<br />

Sind neue Versionen oder Updates der<br />

Software verfügbar, meldet der Hersteller<br />

dies per Mail an den Admin und veröffentlicht<br />

einen Hinweis im Control Panel.<br />

Das Einspielen der Aktualisierungen geschieht<br />

genau wie bei Vbulletin über die<br />

Installation eines entsprechenden Pakets<br />

und verläuft ebenso unproblematisch.<br />

Fazit<br />

Wer bei Fragen auch mal einen Tag länger<br />

auf Antworten warten kann oder<br />

Chats im IRC nicht scheut, muss keineswegs<br />

zu einem der kostenpflichtigen Systeme<br />

greifen, nur weil er guten Support<br />

wünscht. Sowohl die PHP-BB- als auch<br />

die SMF-Community beantwortet Fragen<br />

schnell und freundlich. Auch Hilferufe<br />

im deutschen Vbulletin-Forum erhörten<br />

die Mitglieder und gaben kompetent und<br />

ausführlich Auskunft.<br />

Der Support von IPB fiel im Test dagegen<br />

ab, antwortete auf Fragen häufiger mit<br />

Gegenfragen, half dann aber anstandslos<br />

weiter. Dennoch: Von einem bezahlten<br />

Dienstleister darf man etwas mehr Hilfsbereitschaft<br />

erwarten.<br />

Was die Zugriffsrechte betrifft, gliedern<br />

sich die Testkandidaten in zwei Gruppen<br />

auf: dreigeteilte Systeme (PHP BB<br />

und SMF) und klassische Zweiteilungen<br />

(Vbulletin und IPB). Auf den ersten Blick<br />

mögen Erstere komplizierter wirken, allerdings<br />

erleichtern sie dem Administrator<br />

im alltäglichen Forenbetrieb seine<br />

Aufgabe ungemein.<br />

Ein Blick hinter die Kulissen und in den<br />

Quellcode der Kandidaten offenbart<br />

enorme Unterschiede. Im direkten Vergleich<br />

schneidet das Simple Machine<br />

Forum hier am schlechtesten ab. Eine<br />

Struktur ist fast nicht zu erkennen, der<br />

Code scheint eher gewachsen als geplant<br />

zu sein. Das spiegelt sich auch konsequent<br />

im Template-Aufbau wider. Die<br />

Vermischung von HTML und PHP widerspricht<br />

der Trennung von Funktion<br />

und Aussehen und macht es Designern<br />

unnötig schwer, individuelle Templates<br />

zu entwickeln.<br />

PHP BB leistet sich in diesem Bereich<br />

keine Patzer, sticht allerdings auch nicht<br />

besonders positiv hervor. Ein Layer trennt


Online-Suche<br />

<strong>Linux</strong> New Media AG<br />

Anzeigenabteilung<br />

Putzbrunner Str. 71<br />

D-81739 München<br />

Tel.: +49 (0)89/99 34 11-23<br />

Fax: +49 (0)89/99 34 11-99<br />

die <strong>Datenbank</strong> zwar sauber vom Rest,<br />

dennoch wären solche Ebenen auch an<br />

anderen Stellen hilfreich, um die Erweiterbarkeit<br />

zu verbessern und doppelten<br />

Code zu verringern.<br />

Wer Vbulletin genauer unter die Lupe<br />

nimmt, bekommt den Eindruck, dass<br />

die Entwickler anfangs ein Konzept verfolgt,<br />

es dann später aber nicht konsequent<br />

umgesetzt haben. Einige Layer<br />

sind vorhanden, teilweise sorgen sogar<br />

Klassen für die Trennung der einzelnen<br />

Funktionsteile. An anderen Stellen findet<br />

jedoch keine Auslagerung in Klassen<br />

mehr statt, sondern es gibt nur noch<br />

Funktionen, was es Entwicklern erschwert,<br />

in Abläufe einzugreifen oder<br />

Funktionalitäten schnell und einfach zu<br />

übernehmen.<br />

Mit Abstand die durchdachteste Codestruktur<br />

zeigt Invision Power Board.<br />

Klassen beschreiben die einzelnen Funktionalitäten<br />

und der Code scheint sauber<br />

aufgeteilt. So gibt es beispielsweise <strong>Datenbank</strong>-,<br />

Funktions- und Template-Layer.<br />

Ungeübte Entwickler benötigen dadurch<br />

eventuell eine längere Einarbeitungszeit,<br />

können aber anschließend viel leichter<br />

Modifikationen vornehmen.<br />

Schaut man die Aktualisierungsverwaltung<br />

an, haben Invision Power Board<br />

und Vbulletin die Nase vorn, da Modifikationen<br />

bei ihnen meist keinen Eingriff<br />

in die Quelldateien erfordern und daher<br />

in der Regel auch Updates überleben.<br />

Zwar gibt es für die Erweiterungen bei<br />

PHP BB und Simple Machines Forum<br />

Möglichkeiten, die Vorgänge zu automatisieren,<br />

dennoch erfordern Addons<br />

hier immer eine grundlegende Veränderung<br />

der Codestruktur. Läuft einmal<br />

etwas schief, ist es äußerst aufwändig,<br />

den entsprechenden Code-Abschnitt zu<br />

finden und zu fixen.<br />

So bleibt am Ende die Erkenntnis, dass<br />

keines der vorgestellten Programme perfekt<br />

ist. Es bleibt der Wunsch nach einem<br />

Forensystem, das den strukturellen Auf-<br />

bau, die Dokumentation und Community<br />

von PHP BB hat, das Berechtigungssystem<br />

von Simple Machines Forum, den<br />

Funktionsumfang und die Fülle der<br />

Modifikationen von Vbulletin und vom<br />

Codeaufbau her Invision Power Board<br />

ähnelt. (hej)<br />

n<br />

Infos<br />

[1] PHP BB: [https:// www. phpbb. de]<br />

[2] Automod:<br />

[https:// www. phpbb. de/ kb/ automod]<br />

[3] Simple Maschines Forum:<br />

[http:// www. simplemachines. org]<br />

[4] Vbulletin: [http:// www. vbulletin-germany. com]<br />

[5] Vbulletin-Erweiterungen (engl.):<br />

[http:// vbulletin. org]<br />

[6] Deutsche Vbulletin-Addon-Seite:<br />

[http:// www. vbulletin-germany. org]<br />

[7] Invision Power Board:<br />

[http:// community. invisionpower. com]<br />

[8] Deutscher IPB-Support:<br />

[http://www.ipbsupport. de]<br />

Bitparade 02/<strong>2011</strong><br />

Software<br />

www.linux-magazin.de<br />

67<br />

Hier finden Sie <strong>Linux</strong>-Profis<br />

in Ihrer Nähe!<br />

112<br />

<strong>Linux</strong>-<strong>Magazin</strong> 08/09 IT-Profimarkt<br />

Service<br />

PROFI<br />

MARKT<br />

Sie fragen sich, wo Sie maßgeschneiderte<br />

<strong>Linux</strong>-Systeme und kompetente<br />

Ansprechpartner zu Open-Source-Themen<br />

finden? Der IT-Profimarkt weist Ihnen<br />

als zuverlässiges Nachschlagewerk<br />

den Weg. Die hier gelisteten Unternehmen<br />

beschäftigen Experten auf ihrem<br />

Gebiet und bieten hochwertige Produkte<br />

und Leistungen.<br />

Hardware, Software, Seminaranbieter,<br />

Systemhaus, Netzwerk/TK und Schulung/Beratung.<br />

Der IT-Profimarkt-Eintrag<br />

ist ein Service von <strong>Linux</strong>-<strong>Magazin</strong><br />

und <strong>Linux</strong>User.<br />

Informationen<br />

fordern Sie bitte an bei:<br />

Die exakten Angebote jeder Firma entnehmen<br />

Sie deren Homepage. Der ersten<br />

Orientierung dienen die Kategorien<br />

Besonders bequem finden Sie einen <strong>Linux</strong>-Anbieter<br />

in Ihrer Nähe über die neue<br />

Online-Umkreis-Suche unter: [http://<br />

www.linux-magazin.de/IT-Profimarkt]<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

E-Mail: anzeigen@linux-magazin.de<br />

Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de 3 3 3 3<br />

imunixx GmbH UNIX consultants 01468 Moritzburg / bei Dresden, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de 3 3 3 3 3<br />

future Training & Consulting GmbH Leipzig 04315 Leipzig, Kohlgartenstraße 15 0341-6804100 www.futuretrainings.com 3<br />

LR IT-Systeme, Jörg Leuschner u.<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

4= Fachliteratur 5 = Software 6 = Beratung<br />

Mario Reinhöfer GbR 04626 Schmö ln, Kirchplatz 3 034491-567813 www.lr-itsysteme.de 3 3 3 3 3<br />

future Training & Consulting GmbH Ha le 06 16 Ha le (Saale), Fiete-Schulze-Str. 13 0345-56418-20 www.futuretrainings.com 3<br />

TUXMAN <strong>Linux</strong> Fan-Shop 10367 Berlin, Mö lendor fstr. 44 030-97609773 www.tuxman.de 3 3 3 3 3<br />

Xtops.DE, Werner Heuser 13189 Berlin, Granitzstr. 26 030-3495386 www.xtops.de 3 3<br />

elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-A lee 25 030-2345869-6 www.elegosoft.com 3 3 3 3<br />

future Training & Consulting GmbH Berlin 13629 Berlin, Wernerwerkdamm 5 030-34358899 www.futuretrainings.com 3<br />

verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de 3 3 3<br />

i.based: Systemhaus GmbH & Co.KG 18439 Stralsund, Langenstr. 38 03831-28944-0 www.ibased.de 3 3 3 3 3<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de 3 3 3 3<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 25 040-27863190 www.sybuca.de 3 3 3 3 3<br />

i Tec hn o l og y Gmb H c/ o C :1 So lu t i on s Gm bH 220 83 Ham b urg , O ster be kstr. 9 0 c 040-52388-0 www.itechnology.de 3 3 3 3<br />

UDS-<strong>Linux</strong> - Schulung, Beratung, Entwicklung 22087 Hamburg, Lübecker Str. 1 040-45017123 www.uds-linux.de 3 3 3 3 3 3<br />

Comparat Software-Entwicklungs- GmbH 23558 Lübeck, Prießstr. 16 0451-479566-0 www.comparat.de 3 3<br />

Print, im Marktteil<br />

future Training & Consulting GmbH Wismar 23966 Wismar, Lübsche Straße 22 Dr. Plöger & Ko legen secom consulting<br />

GmbH & Co. KG 24105 Kiel, Waitzstr. 3 MaLiWi IT 28309 Bremen, Bippenstr. 13 03841-222851 www.futuretrainings.com 0431-66849700 www.secom-consulting.de 0421-1752122 www.maliwi.it 3<br />

3 3 3 3 3<br />

3 3 3 3 3<br />

(<br />

talicom GmbH 30169 Hannover, Calenberger Esplanade 3 05 1-123599-0 www.talicom.de 3 3 3 3<br />

Servicebüro des grafischen Gewerbes 31789 Hameln, Talstraße 61 05151-774800 www.karsten-mue ler.org 3<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net 3 3 3 3 3<br />

MARCANT INTERNET-SERVICES GmbH 33602 Bielefeld, Ravensberger Str. 10 G 0521-95945-0 www.marcant.net 3 3 3 3 3 3<br />

OpenIT GmbH 40599 Düsseldorf, In der Steele 33a-41 02 1-239577-0 www.OpenIT.de 3 3 3 3 3<br />

bee Baastrup EDV-Entwicklung GmbH 44135 Dortmund, Schwanenwa l 40 0231- 587 19- 0 sta ti c .b ee.de/ L in ux N M 3 3 3 3 3<br />

Dennis Grosche EDV Dienstleistungen 44536 Lünen, Technologiezentrum Lünen,<br />

<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de 3 3 3 3 3<br />

<strong>Linux</strong>hotel GmbH 45279 Essen, Antoniena lee 1 0201-8536-600 www.linuxhotel.de 3<br />

Am Brambusch 24 0231-1768259 www.grosche.net 3 3 3 3 3<br />

Herste l 45888 Gelsenkirchen, Wildenbruchstr. 18 02098503020 www.herste l.info 3<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensource-training.de 3<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de 3 3 3 3<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. A le Angaben ohne Gewähr. (S. 116)<br />

Online<br />

PROFI<br />

MARKT<br />

www.it-profimarkt.de<br />

Jetzt neu!


Software<br />

www.linux-magazin.de Webmapping 02 /<strong>2011</strong><br />

70<br />

Die Web-GIS-Frameworks Open Layers, Mapfish und Mapbender<br />

Web-Globus<br />

Immer mehr Online-Kartendienste setzen auf Open-Source-Tools. Dieser Artikel stellt mit Open Layers, Mapbender<br />

und Mapfish die drei bekanntesten vor und zeigt ihre Einsatzgebiete. Christoph Baudson, Peter Stamm, Markus Feilner<br />

© Sebastian Duda, 123RF.com<br />

Geomarketing, Umsatz­ und Bedarfsanalysen,<br />

Informationen für Touristen und<br />

Bürger: Auf mehr und mehr größeren<br />

Webseiten tauchen interaktive Karten<br />

auf. Google trat den Boom mit Maps,<br />

Earth und Street View los und für viele<br />

Anwender ist es schon selbstverständlich,<br />

das Hotel „um die Ecke“ schnell übers<br />

Internet oder Smartphone ausfindig zu<br />

machen und raumbezogene Daten übersichtlich<br />

in klick­, pan­ und zoombaren<br />

Karten zu durchforsten.<br />

Dieser Artikel untersucht drei ausgewählte<br />

Produkte aus dem Bereich der<br />

Geo­Informatik, mit denen sich kartenbasierte<br />

Anwendungen einfach und professionell<br />

erstellen lassen: Mapbender [1],<br />

Open Layers [2] und Mapfish [3].<br />

Die Programme verfolgen zwar unterschiedliche<br />

Ansätze, lassen sich aber<br />

auch hervorragend kombinieren. Denn<br />

nur auf den ersten Blick erfüllen sie den<br />

gleichen Zweck, Karten anzuzeigen und<br />

dem Benutzer grundlegende Navigationsmöglichkeiten<br />

zu bieten. Viele Unterschiede<br />

manifestieren sich eher im<br />

Inneren des Webservers.<br />

Open Layers<br />

Open Layers haben die Initiatoren als<br />

Alternative zu den proprietären Google­<br />

Maps­Lösungen entwickelt, es liegt mittlerweile<br />

in Version 2.10 vor. Unkompliziert<br />

erlaubt es dynamische Karten auf<br />

der eigenen Webseite. Die Hauptmotivation<br />

der Entwickler ist die Benutzerfreundlichkeit,<br />

was vor allem dem Einsatz<br />

von Kachelungsdiensten zu verdanken<br />

ist (siehe Kasten „Bildkacheln oder<br />

Webservice?“). Auch wenn Open Layers<br />

Dutzende anderer Formate nutzt (Abbildung<br />

1) und viele moderne GIS­Standards<br />

beherrscht, haben solche Kachel­Services<br />

Vorteile: Sie stellen die Karten über einfache<br />

und bewährte Verzeichnisdienste<br />

eines Webservers bereit und gewähren<br />

so eine hohe Skalierbarkeit.<br />

Open Layers ist im Grunde eine Javascript­Bibliothek,<br />

die Karten in andere<br />

Webanwendungen einbettet. Die Grundfunktionen<br />

orientieren sich an denen von<br />

Google Maps, übertreffen diese jedoch in<br />

einigen Bereichen. Zoom­Funktion mit<br />

Mausrad, Slippy­Map, Kachelung, Web­<br />

Map­Service­Unterstützung (WMS, [4]),<br />

aber auch temporäre Objekte und eine<br />

umfangreiche Web­basierte Rendering­<br />

Engine gehören dazu.<br />

Die Konfiguration erfolgt über eine recht<br />

einfache Syntax, die der Administrator<br />

in einer HTML­Seite hinterlegt. Listing<br />

1 zeigt das wohl einfachste Hallo­Welt­<br />

Beispiel aus der Dokumentation, eine<br />

Weltkarte im Vollbild, generiert aus<br />

WMS­Links. Für kompliziertere Beispiele<br />

sind gute Javascript­Kenntnisse erforderlich.<br />

Mit steigender Funktionalität der<br />

Anwendungen kann das schnell recht<br />

anspruchsvoll werden.<br />

Als reiner Javascript­Kartenviewer ist<br />

Open Layers nicht mit Mapbender oder<br />

Mapfish zu vergleichen. Diese beiden<br />

Projekte decken ein viel breiteres Spektrum<br />

ab und sind sich konzeptionell ähnlicher:<br />

Sowohl Mapfish als auch Mapbender<br />

bestehen beispielsweise aus einer<br />

Client­ und einer Serverkomponente.<br />

Mapbender<br />

Mapbender ([8], Abbildung 2) ist das<br />

älteste der drei Projekte und als mandantenfähiger<br />

Kartenviewer konzipiert,<br />

der eine einfache Administration per<br />

Weboberfläche erlaubt. Er zielt auf Anwender,<br />

die große Mengen an Kartendiensten<br />

einer Vielzahl von Benutzern<br />

in unterschiedlichen Konfigurationen zur<br />

Verfügung stellen möchten, aber selbst<br />

nicht programmieren wollen. Mapbender<br />

ist quasi das CMS für Geo­Inhalte.


www.linux-magazin.de<br />

Webmapping 02/<strong>2011</strong><br />

Software<br />

71<br />

Abbildung 1: Open Layers ist nicht auf Geodaten<br />

beschränkt, sondern dient auch als komfortabler<br />

Viewer für vielerlei Bildformate, hier für ein<br />

Mandelbrot-Fraktal.<br />

Abbildung 2: Mapbender wird gerade vollständig überarbeitet, seine Stärken liegen im unkomplizierten Einbinden<br />

externer Datenquellen. Die Abbildung zeigt das Geoportal für Fahrradtouristen in Rheinland-Pfalz.<br />

Sowohl die eingebundenen Datendienste<br />

als auch bestimmte Funktionen wie das<br />

Editieren oder das Hinzuladen weiterer<br />

Dienste lassen sich einzelnen Nutzern<br />

oder Nutzergruppen (Rollen) zuordnen.<br />

Damit das klappt, müssen die Dienste<br />

den gängigen Standards und Normen im<br />

GIS­Bereich entsprechen, also den Vorgaben<br />

der ISO sowie des Open Geospatial<br />

Consortiums (OGC).<br />

Als Basis bedarf es eines Webservers mit<br />

PHP, MySQL oder PostgreSQL und einer<br />

<strong>Datenbank</strong> mit dem Namen »mapbender«.<br />

Nach ein wenig Konfigurationsarbeit<br />

(gut dokumentiert im Mapbender­Wiki)<br />

trägt der Admin in der Datei »mapbender.<br />

conf« den <strong>Datenbank</strong>­Server und ­Port<br />

sowie Zugangsdaten ein (in der neuesten<br />

Version übernimmt das ein GUI) und<br />

spezifiziert gegebenenfalls Mailserver,<br />

Logging­URLs und Modulpfade:<br />

define("DBSERVER", "");<br />

define("PORT", "");<br />

define("DB", "");<br />

define("OWNER", "");<br />

define("PW", "");<br />

Externe Geodatendienste bindet der Anwender<br />

im Web­GUI per Mausklick ein,<br />

in der Regel kommen hier die langen<br />

WMS­URLs zum Einsatz.<br />

Mapfish<br />

Das Projekt Mapfish ist das jüngste im<br />

Vergleich und bietet Software­Entwicklern<br />

ein Framework zur Erstellung komplexer<br />

Web­GIS­Anwendungen (Abbildung 3).<br />

Mapfish unterstützt zahlreiche Programmiersprachen<br />

und kombiniert etablierte<br />

Komponenten aus dem Open­Source­<br />

Bereich zu einem Stack. Dazu zählen<br />

<strong>Datenbank</strong>adapter wie SQL Alchemy [9],<br />

Hibernate oder die mächtige Javascript­<br />

Bibliothek Ext JS [10] zur Oberflächenerstellung.<br />

Mapfish kann auch Open Layers<br />

als Komponente zur Kartendarstellung<br />

heranziehen.<br />

Der Kartenfisch setzt auf Python 2.5<br />

oder 2.6, der Admin installiert es über<br />

ein Skript von der Webseite mit »python<br />

go­mapfish­framework­1.2.py ­­no­site<br />

­packages env«. Das richtet die Umgebung<br />

Env ein, das Kommando »source<br />

env/bin/activate« aktiviert sie. In dem<br />

Listing 1: »openlayers.html«<br />

01 <br />

02 <br />

04 <br />

05 <br />

06 <br />

07 html,body {<br />

08 height: 99%;<br />

09 width: 99%;<br />

10 }<br />

11 #map {<br />

12 width: 100%;<br />

13 height: 100%;<br />

14 border: 1px solid black;<br />

15 }<br />

16 <br />

17 <br />

18 <br />

19 <br />

20 <br />

21 <br />

22 var map = new OpenLayers.Map('map',<br />

{maxResolution: 0.703125} );<br />

23 var wmscURL = [<br />

24 "http://wmsc1.terrapages.net/getmap?",<br />

25 "http://wmsc2.terrapages.net/getmap?",<br />

26 "http://wmsc3.terrapages.net/getmap?",<br />

27 "http://wmsc4.terrapages.net/getmap?"<br />

28 ];<br />

29 var terrapagesStreetLayer = new OpenLayers.<br />

Layer.WMS( 'TerraPages Street',wmscURL,<br />

{layers: 'UnprojectedStreet', format: 'image/<br />

jpeg' }, {buffer: 1, isBaseLayer: true} );<br />

30 map.addLayer(terrapagesStreetLayer);<br />

31 map.zoomToMaxExtent();<br />

32 <br />

33 <br />

34


Software<br />

www.linux-magazin.de Webmapping 02 /<strong>2011</strong><br />

72<br />

Die Vorteile von Mapfish sind derzeit vor<br />

allem unter der Haube zu finden, der<br />

Code ist klarer strukturiert als in Mapbender,<br />

die Komponenten sind besser<br />

isoliert und es gibt ein umfangreiches<br />

REST­API für unterschiedliche Sprachen,<br />

Entwickler fühlen sich hier schnell wohl.<br />

Die Mapbender­Codebasis ist ungleich<br />

komplexer und weist aufgrund ihres Alters<br />

einige gewachsene Strukturen auf,<br />

was aber in der für <strong>2011</strong> angekündigten<br />

Version 3 bereinigt sein soll.<br />

Beim Zuschneiden von modernen User­<br />

Interfaces mit schicken Effekten unterscheidet<br />

sich die Leistungsfähigkeit der<br />

zwei Produkte nicht grundlegend. Die<br />

Ext­ und Geo­Ext­Bibliotheken bieten<br />

die gleichen Aufklapp­Fenster, Zoomefdarauf<br />

folgenden Prompt »(env)« prüft<br />

Pythons »paster«­Kommando den Erfolg<br />

der Installation (Listing 2).<br />

Die umfangreiche Javascript­Toolbox bindet<br />

der Anwender mit dem Paster ein,<br />

ebenso die Webservices, für die eine<br />

Post­GIS­<strong>Datenbank</strong> notwendig ist. Die<br />

Layer­Konfiguration findet dabei in ».ini«­<br />

Dateien statt, alles fein säuberlich dokumentiert<br />

auf [3].<br />

Die Unterschiede<br />

Open Layers ist eine Javascript­Bibliothek<br />

für Webentwickler, Mapbender ein Softwarepaket<br />

zum Management von Diensten<br />

und Nutzern in Geoportalen, Mapfish<br />

das Entwicklerframework für komplexe<br />

Web­GIS­Anwendungen. Alle drei lassen<br />

sich auch in den anderen Kontexten<br />

einsetzen, was aber meist erheblichen<br />

Mehraufwand verursacht.<br />

Mapfish besteht aus mehreren Komponenten,<br />

Open Layers ist ein integraler<br />

Bestandteil davon. Dazu kommen eigene<br />

Javascript­Dateien und Geo­Ext­Komponenten<br />

[11]. Das sind mächtige, mit der<br />

Ext­JS­Javascript­Bibliothek entwickelte<br />

Widgets für Open Layers. Auch Geo Ext<br />

lässt sich durch die User Extensions um<br />

eigene Widgets erweitern. Mapfish ist in<br />

HTML und Javascript programmiert, ein<br />

eigenes API ist ebenfalls enthalten und<br />

für verschiedene Programmiersprachen<br />

ausgelegt.<br />

Der Mapbender­Client bringt ebenfalls<br />

eigenes Javascript mit, das auf der<br />

schlanken Jquery­Bibliothek [12] basiert.<br />

Standardmäßig nutzt er seinen eigenen<br />

Kartenviewer, die Widgets wie die Suchmodule<br />

oder zur Digitalisierung fußen<br />

auf Jquery­UI­Komponenten, einer Bibliothek<br />

aus populären Jquery­Plugins, die<br />

sich mit dem Jquery UI Themeroller [13]<br />

gestalten lassen. Auch Open Layers kann<br />

als Kartenviewer arbeiten, das aber un­<br />

terstützen noch nicht viele Mapbender­<br />

Widgets. Auch wenn das Erstellen einer<br />

Anwendung ohne Programmierkenntnisse<br />

über eine Weboberfläche vonstatten<br />

geht, erfordert der Prozess doch einige<br />

Kenntnisse in der Mapbender­eigenen<br />

Anwendungslogik.<br />

Daten editieren mit dem<br />

Mapfish-Server<br />

Der Mapfish­Server erlaubt es, räumliche<br />

Daten über eine REST­Schnittstelle<br />

einzufügen, zu aktualisieren, abzufragen<br />

und zu löschen. Damit unterscheidet<br />

sich Mapfish stark von Mapbender,<br />

das keine eigene Geodaten­Haltung hat<br />

und verteilte Architekturen bedient. Das<br />

REST­Protokoll von Mapfish ist sowohl<br />

in Python, PHP und Java als auch in<br />

Ruby implementiert. Der Mapfish­Server<br />

erweitert das Python­Framework Pylons<br />

[14] und benutzt GIS­Bibliotheken wie<br />

Shape ly [15] oder das Python­SQL­Toolkit<br />

SQL Alchemy [9].<br />

Der Mapbender­Server ist in PHP implementiert<br />

und orchestriert oder administriert<br />

außer OGC­konformen Diensten<br />

auch Benutzer und Applikationen. Dadurch<br />

kann jeder berechtigte User Anwendungen<br />

erzeugen oder bearbeiten<br />

und anderen Benutzern Zugriff gewähren.<br />

Applikationen bestehen neben einem<br />

Kartenviewer und Widgets aus Diensten<br />

wie OGC WMS und WFS. Anders als<br />

Mapfish nutzt Mapbender ausschließlich<br />

standardisierte Dienste (transaktionale<br />

Web Feature Services), um Geometrien<br />

zu suchen, anzulegen und zu ändern,<br />

sowie WMS zur Anzeige.<br />

Alle Dienste konfiguriert der Anwender<br />

über Oberflächen per Mausklick, die<br />

Konfiguration landet in einer PostgreSQL­<br />

<strong>Datenbank</strong>. Für spezielle GIS­Methoden<br />

greift Mapbender auf Postgis [16] zurück.<br />

Auch Administrationstätigkeiten erfolgen<br />

im Webinterface.<br />

Fisch oder Bieger?<br />

Listing 2: » paster create<br />

--list-templates«<br />

01 Available templates:<br />

02 basic_package: A basic setuptools‐enabled package<br />

03 mapfish: MapFish application template<br />

04 mapfish_client: MapFish client plugin template<br />

05 paste_deploy: A web application deployed through<br />

paste.deploy<br />

06 pylons: Pylons application template<br />

07 pylons_minimal: Pylons minimal application template<br />

Abbildung 3: Mapfish im Einsatz im Kanton Solothurn. Das umfangreiche Framework glänzt mit API, Erweiterungen<br />

und einem Editor, der die Änderungen in die Daten auf dem Server schreibt.


Bildkacheln oder Webservice?<br />

In Web-basierten Kartendiensten stellt sich vor<br />

allem bei Vektordaten häufig die Frage, ob die<br />

Software die vorliegenden Geo-Informationen<br />

nativ darstellen und per standardisiertem Web<br />

Map Service (WMS, [4]) einbinden soll oder ob<br />

sie fertige, vorgerechnete Kartenkacheln nutzt,<br />

so wie Google Maps das macht.<br />

Immer aktuell oder immer schnell?<br />

WMS-Dienste greifen bei jedem Kartenaufruf<br />

auf die Datenquelle zu, die Darstellung ist also<br />

immer aktuell. Kacheln dagegen können keine<br />

dynamischen Daten enthalten. Wer also sich<br />

schnell ändernde Inhalte visualisieren will, für<br />

den hat die Kachelung eher Nachteile.<br />

Mit Geo Web Cache [5] gibt es zwar eine von<br />

mehreren Kachelungslösungen, die bei geänderten<br />

Daten bis auf den Server durchgreifen.<br />

Das hebelt allerdings die Vorteile schneller<br />

Antwortzeiten und überschaubarer Netzlasten<br />

mindestens teilweise wieder aus, von der zusätzlichen<br />

Komplexität einer weiteren Server-<br />

Softwarekomponente ganz zu schweigen.<br />

Koordinatensysteme und Projektionen<br />

Ein weiterer klarer Vorteil des WMS-Standards<br />

ist die Unterstützung unterschiedlicher Koordinatensysteme<br />

und Kartenprojektionen aus einer<br />

Datenquelle. Vereinfacht gesagt kann ein Datenbestand,<br />

der beispielsweise im metrischen<br />

Koordinatensystem Gauß-Krüger vorliegt (wie<br />

bei vielen Katasterdaten der Regelfall, [6]),<br />

auch in einer anderen Projektion auf der Karte<br />

erscheinen. Die Software rechnet ihn on the Fly<br />

um und stellt auf Wunsch auch unterschiedliche<br />

Datenbestände überlagernd dar.<br />

Bei gekachelten, also vorab in Rasterbilder umgewandelten<br />

Daten muss der Server dagegen<br />

für jedes Koordinatensystem und jede Projektion<br />

einen eigenen Bestand an Rasterkacheln<br />

anlegen und vorhalten. Das führt schnell zu<br />

sehr großen Datenmengen auf dem Webserver,<br />

deren Erzeugung bei höheren Zoomstufen Stunden<br />

in Anspruch nimmt, bei großen Projekten<br />

auch Tage.<br />

Auch hier helfen zwar Programme wie Geo Web<br />

Cache oder Mapproxy [7], allerdings bedarf<br />

es beim Planen einer Kartenanwendung einer<br />

gründlichen Untersuchung, ob die Vor- oder<br />

die Nachteile eines gekachelten Dienstes überwiegen.<br />

Eine generelle Aussage dazu gibt es<br />

nicht, es hängt ganz vom Datenbestand und<br />

Einsatzzweck der Anwendung ab. Jeder Webseitenbetreiber<br />

muss selbst abwägen, ob er<br />

die eigenen Daten hochperformant als Kacheln<br />

oder hochdynamisch als WMS-Dienst an den<br />

Browser ausliefern möchte.<br />

Webmapping 02/<strong>2011</strong><br />

Software<br />

www.linux-magazin.de<br />

73<br />

fekte und andere Web­2.0­Gimmicks der<br />

Jquery­Bibliothek. Der Themeroller in<br />

Mapbender hilft die Layouts anzupassen,<br />

auch eigene Looks sind möglich.<br />

Lizenzen<br />

Mapfish unterliegt der GPL 3.1, einige<br />

Komponenten auch anderen Lizenzen.<br />

Vor allem die Bestimmungen bei der<br />

Ext­JS­Bibliothek, die es neuerdings nur<br />

mehr mit einer proprietären Lizenz gibt,<br />

sind etwas unklar. Mapbender dagegen<br />

ist unter einer dualen Lizenz veröffentlicht<br />

(BSD oder GPL 2.3). Das Copyright<br />

liegt bei der Osgeo [17], die sehr klare<br />

Vorschriften beim Ändern der Lizenz<br />

macht. Das Projekt gehört damit der Osgeo­Community.<br />

Open Layers unterliegt<br />

einer BSD­Lizenz, das Copyright liegt bei<br />

den Entwicklern. Allerdings ist auch hier<br />

eine Diskussion darüber im Gange, es an<br />

die Osgeo abzutreten.<br />

Was darf’s sein?<br />

Mapbender zeigt eher den Charakter<br />

einer Clientsoftware, während Mapfish<br />

ein umfangreiches Entwicklerwerkzeug<br />

darstellt. Beide Frameworks nutzen auf<br />

Wunsch Open Layers als Bibliothek, es<br />

kann aber auch als eigenständige Anwendung<br />

ohne integrierte Serverkomponente<br />

fungieren. Wer viele Dienste durch unterschiedlich<br />

berechtigte Nutzer in verteilten<br />

Architekturen verwalten, schützen und<br />

überwachen will, für den ist Mapbender<br />

die erste Wahl. Zwar gibt es auch in<br />

Mapfish einige Entwicklungen in dieser<br />

Richtung, sie sind aber noch in einem<br />

sehr prototypischen Zustand.<br />

Mapfish ist dagegen die Plattform der<br />

Wahl für alle, die Open Layers mit allen<br />

Facetten nutzen wollen, einschließlich<br />

temporär gerenderter Objekte, zum Beispiel<br />

für die Druckvorstufe. Hier greift<br />

die Erweiterung Geo Ext, die als Widget<br />

alle Open­Layers­Objekte und ­Methoden<br />

kapselt und bereitstellt – aber eher für<br />

Webdeveloper, weniger für den Endbenutzer.<br />

Als umfangreiche Entwickler­<br />

Suite ist heute Mapfish die komfortabelste<br />

Lösung.<br />

Open Layers ist derzeit der De­facto­Standard<br />

für Webentwickler, die mit wenig<br />

Aufwand eine Karte in ihre Anwendung<br />

einbinden wollen. Für sie lohnt sich oft<br />

der Aufwand nicht, Mapbender oder<br />

Mapfish in Betrieb zu nehmen. Auch<br />

völlig GIS­fremde Projekte nutzen Open<br />

Layers als flotten Viewer komplexer Bilddaten,<br />

wie das Fraktal in Abbildung 1<br />

zeigt. So abseitig ist das gar nicht: Die<br />

Webseiten der Projekte zeigen weit skurrilere<br />

Einsatzszenarien rund ums schnelle<br />

Darstellen großer Bilddateien. n<br />

Infos<br />

[1] Mapbender: [http://www.mapbender.org]<br />

[2] Open Layers: [http://openlayers.org]<br />

[3] Mapfish: [http://www.mapfish.org]<br />

[4] OGC WMS: [http://www.opengeospatial.<br />

org/standards/ wms]<br />

[5] Geo Web Cache: [http://geowebcache.<br />

sourceforge. net]<br />

[6] Dietmar Fleischhauer, Frank Jäger,<br />

Markus Feilner, „Im Freien vermessen“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 10/ 10, S. 100<br />

[7] Mapproxy: [http://mapproxy.org]<br />

[8] Arnulf Christl, „Europäisch inspiriert“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 07/ 08, S. 76<br />

[9] SQL Alchemy<br />

[http://www. sqlalchemy.org/]<br />

[10] Ext JS:<br />

[http://www. sencha.com/products/js]<br />

[11] Geo EXT: [http://geoext.blogspot.com]<br />

[12] Jquery: [http://jquery.com]<br />

[13] Jquery UI Themeroller: [http://jqueryui.<br />

com/themeroller]<br />

[14] Pylons: [http://pylonshq.com]<br />

[15] Shapely: [http://trac.gispython.org/lab/<br />

wiki/Shapely]<br />

[16] Georg Lösel, Markus Feilner, „Ein Elefant<br />

als Basis“: <strong>Linux</strong>-<strong>Magazin</strong> 09/ 07, S. 56<br />

[17] Osgeo: [http://www.osgeo.org]<br />

Die Autoren<br />

Peter Stamm hat in Würzburg und Bonn Geographie<br />

studiert. Nach einer Anstellung als wissenschaftlicher<br />

Mitarbeiter im Bundestag ist er<br />

heute bei der Where Group, einem Open-Source-<br />

Beratungshaus im Bereich GIS tätig.<br />

Christoph Baudson ist Diplom-Informatiker und<br />

entwickelt mit Mapbender, Mapfish und Open Layers<br />

Webanwendungen unter dem Motto „Developing<br />

software at a sustainable pace“. Er bloggt<br />

unter [http://blog.baudson.de].


Software<br />

www.linux-magazin.de Tooltipps 02/<strong>2011</strong><br />

76<br />

Werkzeuge im Kurztest<br />

Tooltipps<br />

Etherdump 2.10<br />

Kleiner Paket-Sniffer für unterwegs<br />

Quelle: [http:// sourceforge.net/projects/<br />

psydev]<br />

Lizenz: GPLv2<br />

Alternativen: Tcpdump, Whireshark<br />

Fetch Yahoo 2.14.0<br />

Yahoo-Mails ohne POP3-Zugang herunterladen<br />

Quelle: [http:// fetchyahoo.twizzler.org]<br />

Lizenz: GPLv2<br />

Alternativen: Yahoo Mail Sucker<br />

Group Shell 0.3.1<br />

Bequeme Fernwartung von Serverfarmen<br />

Quelle: [http:// guichaz.free.fr/gsh]<br />

Lizenz: GPLv2<br />

Alternativen: Parallel SSH, Cluster SSH<br />

Tcpdump und Whireshark sind Quasi-<br />

Standards, um den Netzwerkverkehr zu<br />

protokollieren. Eine kleine, kompakte Alternative<br />

kommt in Form von Etherdump<br />

– gerade mal 18 KByte groß, empfiehlt<br />

sich das Tool für die Rescue-Disk oder ein<br />

Embedded-Device.<br />

Falls der Anwender kein anderes Interface<br />

beim Aufruf angibt, lauscht Etherdump<br />

auf »eth0«. Standardmäßig beobachtet<br />

es dabei die Kommunikation der Protokolle<br />

ICMP, ARP, IP, TCP und UDP.<br />

Wer nicht alle Pakete erfassen möchte,<br />

setzt einen Filter für die Protokolle.<br />

Etherdump schreibt seine gesammelten<br />

Informationen auf die Standardausgabe,<br />

auf Wunsch auch in eine Datei. Als Ausgabeformate<br />

stehen das binäre Raw-, das<br />

Ascii-basierte Hex- und das Tcpdump-<br />

Format zur Verfügung. Letzteres ist seit<br />

Version 2.10 der Standard und ideal<br />

geeignet, wenn der Anwender die Ergebnisse<br />

mit Whireshark oder Tcpdump<br />

weiterverarbeiten möchte.<br />

Zurzeit analysiert Etherdump lediglich<br />

IPv4. Ob und wann eine IPv6-fähige<br />

Programmversion erscheint, ist nicht<br />

bekannt.<br />

★★★★★ Mit Etherdump steht eine kompakte<br />

Alternative zu den bekannten Tools<br />

Tcpdump und Whireshark bereit. n<br />

Dass Yahoo seinen Free-Mail-Kunden<br />

den SMTP- und POP3-Zugriff entzogen<br />

hat und sie auf das eigene Webfrontend<br />

verweist, ist sicher vielen sauer aufgestoßen.<br />

Das Perl-Skript Fetch Yahoo bietet<br />

eine elegante Lösung für alle, die ihre<br />

Mails lieber weiter im eigenen Client lesen.<br />

Ähnlich wie Fetchmail holt das Tool<br />

Mails vom Server des Providers.<br />

Über Optionen hat der Anwender die<br />

Möglichkeit, alle oder nur die neuen<br />

Nachrichten herunterzuladen, Mails nach<br />

der Übertragung auf dem Server zu löschen<br />

beziehungsweise diese ohne vorherigen<br />

Download zu entfernen (»--nodownload«).<br />

Eine Liste aller im Mailkonto<br />

enthaltenen Nachrichten verrät der Parameter<br />

»--onlylistmessages«.<br />

Fetch Yahoo zeigt den Absender, die Betreffzeile,<br />

das Datum und die Größe in<br />

KByte an. Weitere Optionen beeinflussen<br />

den Mailfolder oder die Anzahl der Nachrichten,<br />

die Fetch Yahoo abholt. Eine Option<br />

zur Größenbeschränkung des Downloads<br />

bietet das Skript leider nicht.<br />

★★★★★ Fetch Yahoo erlaubt es auch<br />

Kunden ohne kostenpflichtiges Konto,<br />

ihre Mails auf dem eigenen Rechner zu<br />

lesen. Lediglich für den Versand müssen<br />

sie auf SMTP-Relays ihres Providers oder<br />

andere Skriptlösungen zurückgreifen. n<br />

Group Shell, kurz Gsh, ist ein Shell-Multiplexer<br />

und unterstützt Administratoren<br />

bei den immer wiederkehrenden Wartungsarbeiten<br />

auf mehreren Rechnern<br />

oder ganzen Serverfarmen. Das Tool initiiert<br />

den Verbindungsaufbau per SSH<br />

und führt anschließend sämtliche Befehle<br />

auf allen Systemen aus. Alternativ verwendet<br />

der Admin Gsh interaktiv wie<br />

eine normale Shell.<br />

Auf welchen Rechnern das Tool arbeitet,<br />

entnimmt es einer Datei, welche die<br />

IP-Adressen oder Hostnamen der Zielrechner<br />

auflistet. Spezielle SSH-Einstellungen,<br />

wie etwa einen alternativen Port,<br />

kann der Admin ebenfalls beim Aufruf<br />

definieren. Auch hier gelten die Optionen<br />

wieder für alle Remotesysteme. Die<br />

Rückmeldungen der Rechner erscheinen<br />

im Fenster der Group Shell.<br />

Das Tool setzt übersichtlich vor jede Zeile<br />

den Namen beziehungsweise die IP des<br />

entfernten Rechners. Auf Wunsch protokolliert<br />

es die aktuellen Verbindungen.<br />

Zur Fehleranalyse steht außerdem ein<br />

Debugmodus bereit, den der Anwender<br />

jederzeit über einen Befehl in der Group<br />

Shell aktivieren kann.<br />

★★★★★ Group Shell erleichtert die<br />

Wartung identischer Remotesysteme. Das<br />

Tool eignet sich sowohl für die interaktive<br />

Pflege als auch für den Einsatz in Shellskripten.<br />

n


Patool 0.12<br />

Wrapper für gängige Archivierungstools<br />

Quelle: [http:// patool.sourceforge.net]<br />

Lizenz: GPLv3<br />

Alternativen: Peazip<br />

Srm 1.2.11<br />

Sicheres Löschen auf der Shell<br />

Quelle: [http:// srm. sourceforge.net]<br />

Lizenz: MIT/ X<br />

Alternativen: Rm<br />

ZNC 0.096<br />

Proxy für den Internet Relay Chat<br />

Quelle: [http:// en. znc.in/wiki/ZNC]<br />

Lizenz: GPLv2<br />

Alternativen: Dircproxy, Bip Irc Proxy<br />

Tooltipps 02/<strong>2011</strong><br />

Software<br />

www.linux-magazin.de<br />

77<br />

Auch wenn Tar gemeinhin das Maß aller<br />

Dinge für Unix-Archive ist, gibt es doch<br />

einige interessante Alternativen. Mit dem<br />

in Python geschriebenen Patool steht<br />

nun ein Wrapper für die Shell zur Verfügung,<br />

der alle gängigen Archivformate<br />

beherrscht – vorausgesetzt die entsprechenden<br />

Kompressionsprogramme selbst<br />

sind auf dem System vorhanden.<br />

Patool versteht ganze 24 Formate. Die<br />

Palette reicht von 7z über ARC und Cab<br />

bis hin zu LZH und Zoo. Tar und die<br />

Zip-Varianten sind selbstverständlich auch<br />

vertreten und als Sahnehäubchen unterstützt<br />

der Wrapper Deb- und RPM-Pakete.<br />

Eine vollständige Liste zeigt der Parameter<br />

»formats« an. Dieser verrät auch direkt, ob<br />

das jeweilige Kompressionstool auf dem<br />

Rechner installiert ist.<br />

Interessant ist die »repack«-Option, mit deren<br />

Hilfe Patool Archivdateien von einem<br />

Format in ein anderes konvertiert. Das<br />

Quellarchiv bleibt dabei erhalten. Praktisch<br />

sind ebenfalls die integrierten »diff«-<br />

und »test«-Funktionen, die Archive vergleichen<br />

respektive die Integrität prüfen.<br />

Selbstverständlich dürfen Kommandos<br />

zum Erzeugen (»create«) und Entpacken<br />

(»extract«) nicht fehlen.<br />

Da Patool nur ein Wrapper ist, kann es<br />

nicht sämtliche Optionen jedes einzelnen<br />

Programms abbilden. Wer spezielle<br />

Parameter benötigt, greift daher besser<br />

zum Original. Die Fortbewegung im Kompressionsformate-Dschungel<br />

erleichtert<br />

Patool dennoch.<br />

★★★★★ Dank Patool muss sich der Anwender<br />

nicht mehr alle Details der einzelnen<br />

Archivierungsprogramme merken.<br />

Gerade bei selten genutzten Formaten<br />

erweist sich das als echter Vorteil. n<br />

Srm (Secure Rm) ist ein digitaler Reißwolf<br />

für die Shell und entfernt Daten rückstandslos,<br />

sodass auch gängige Recovery-<br />

Tools diese nicht wiederherstellen können.<br />

Dazu überschreibt Srm die Dateien mehrmals,<br />

benennt sie wiederholt um, zerstückelt<br />

sie und löscht sie schließlich. Nach<br />

jedem Durchlauf stellt eine Synchronisationsfunktion<br />

sicher, dass alles auf der Platte<br />

und nicht nur im Cache passiert.<br />

Das Tool hat viel von Rm übernommen,<br />

auch die Aufrufparameter. In der Voreinstellung<br />

bügelt Srm eine Datei ganze 35-<br />

mal über, bevor es sie endgültig aus dem<br />

Verzeichnisbaum entfernt. Wer so viel<br />

Gründlichkeit nicht benötigt, beschränkt<br />

den Schreibvorgang mit der Option<br />

»--simple« auf einen Durchlauf. Gründlicher<br />

hingegen arbeitet das Tool mit der<br />

Option »--openbsd«: Es überschreibt Dateien<br />

dreimal und verwendet für jeden<br />

Durchlauf ein anderes Muster.<br />

Außerdem bietet Srm die Option »--doe«,<br />

um den Vorgaben des US-Department of<br />

Education zu entsprechen. Das heißt, es<br />

finden drei Durchläufe mit jeweils anderen<br />

Überschreibungsmustern statt, wobei<br />

Srm bei den ersten beiden Zufallswerte<br />

verwendet und beim dritten die Datei<br />

dann mit dem Muster DOE füllt. Last but<br />

not least bietet Srm einen Löschmodus,<br />

der die Anforderungen des US-Department<br />

of Defense erfüllt und siebenmal<br />

gründlich saubermacht.<br />

★★★★★ Srm räumt gründlich auf und<br />

entfernt Dateien restlos von der Platte –<br />

ideal, wenn eine Neuformatierung nicht<br />

in Frage kommt.<br />

n<br />

Internet Relay Chat, kurz IRC, ist ein<br />

textbasiertes Chatsystem. Wer keine Unterhaltung<br />

mehr verpassen möchte, ist<br />

entweder mit seinem IRC-Client immer<br />

online oder greift auf ZNC zurück. Dahinter<br />

steckt ein IRC-Proxy, über den<br />

sich der Anwender mit dem IRC-Server<br />

verbindet. Dieser Proxy ist für die<br />

Clients transparent und fungiert einfach<br />

wie ein weiterer IRC-Server. Außerdem<br />

erlaubt er es den Anwendern, mit mehreren<br />

Clients auf denselben IRC-Server<br />

gleichzeitig zuzugreifen, Unterhaltungen<br />

mitzuloggen und zu einem späteren<br />

Zeitpunkt wiederzugeben.<br />

Zur sicheren Kommunikation zwischen<br />

Client und Proxy unterstützt ZNC auch<br />

das SSL-Protokoll. Das benötigte Zertifikat<br />

erzeugt der Nutzer im Handumdrehen<br />

mit dem Parameter »--makepem«.<br />

Auch das Anlegen einer Einrichtungsdatei<br />

automatisiert ZNC mit der Option<br />

»--makeconf«. Will der Anwender die<br />

Konfiguration zu einem späteren Zeitpunkt<br />

anpassen, nutzt er IRC-ähnliche<br />

Kommandos im Client oder verwendet<br />

ein Webfrontend. Alternativ hilft ein Griff<br />

zum Texteditor weiter.<br />

Der Funktionsumfang des Tools ist über<br />

C++- und Perl-Module erweiterbar. ZNC<br />

enthält bereits über 20 Erweiterungen im<br />

Standardumfang. Die Projekt-Webseite<br />

bietet außerdem Beispiele und eine Anleitung<br />

für Nutzer, die selbst Addons entwickeln<br />

möchten.<br />

★★★★★ Wer Dauergast im IRC ist, aber<br />

nicht immer vom selben Rechner aus<br />

chatten kann oder längere Offlinezeiten<br />

hat, findet in ZNC einen zuverlässigen<br />

Proxy und verpasst keine Diskussion<br />

mehr. (U. Vollbracht/ hej)<br />

n


Software<br />

www.linux-magazin.de Projekte 02/<strong>2011</strong><br />

78<br />

Neues aus der Welt der freien Software und ihrer Macher<br />

Projekteküche<br />

DJs brauchen kein teures Equipment mehr, denn Mixxx bietet gleichwertigen Ersatz am Computer. Wer lieber<br />

ein Webradio betreibt, erzeugt mit der Programmiersprache Liquidsoap vollautomatisch flexible Streams. Zu<br />

essen gibt’s ein Kartoffel-Kürbis-Gratin mit einer Kruste aus Walnüssen und Ziegenkäse. Carsten Schnober, Heike Jurzik<br />

Abbildung 1: Wer nicht kistenweise Vinyl und Spezialplattenspieler mit sich herumtragen möchte, der findet<br />

in Mixxx ein virtuelles DJ-Set mit allen Schikanen.<br />

„Play them really, really loud!“ Benutzer<br />

der Software Mixxx [1] machen auf diese<br />

Weise ihr Publikum glücklich, denn es<br />

handelt sich bei dem freien Projekt um<br />

ein virtuelles DJ-Pult (Abbildung 1). Andere<br />

mit tanzbarer Tonkunst zu erfreuen<br />

bedeutet aber mehr, als einfach nur Musik<br />

abzuspielen. Es gilt, den passenden<br />

Track im richtigen Moment auf den Plattenteller<br />

zu balancieren, sodass er seinen<br />

Vorläufer zum idealen Zeitpunkt ablöst<br />

und den Tanzrhythmus des Publikums<br />

erfasst. Optimal ist ein Übergang dann,<br />

wenn der Plattenaufleger das Tempo der<br />

beiden einander folgenden Titel aufeinander<br />

abstimmt.<br />

Wie in fast allen Lebensbereichen gibt es<br />

auch beim DJing eher traditionsorientierte<br />

Geister, die auf originale Instrumente bei<br />

der musikalischen Tätigkeit setzen. Als<br />

DJs vor rund 30 Jahren ihren Siegeszug<br />

antraten, besaßen sie gewöhnlich zwei<br />

Plattenteller, zusätzlich ein Mischpult<br />

und ein Mikrofon. Das Abspieltempo der<br />

aufliegenden Schallplatten kontrollierte<br />

der DJ manuell. Hinzu kamen Spezialhandgriffe<br />

wie Scratching, das Geräusche<br />

der übers Vinyl kratzenden Plattennadel<br />

in die Musik integriert.<br />

Besser ausgerüstete Anlagen bieten heutzutage<br />

drei oder vier Audio-Ausgänge,<br />

sodass zwei Geräte den Raum beschallen,<br />

während der DJ auf den verbleibenden<br />

Kanälen per Kopfhörer die weitere<br />

Abfolge plant.<br />

Arbeitsgeräte<br />

Inzwischen haben neue Techniken auch<br />

Einzug in die Welt der Musikaufleger<br />

gehalten, und so greifen viele DJs auf<br />

passende Software als Ergänzung oder<br />

sogar als vollständigen Ersatz für die<br />

klassischen oder die zwischenzeitlich<br />

ebenfalls etablierten CD-Player zurück.<br />

Das bietet gleich mehrere Vorteile: Vorbei<br />

sind die Zeiten, in denen DJs schwere<br />

Schallplattenstapel oder Koffer voller<br />

CDs geschleppt haben, auch teure Spezialplattenspieler<br />

scheinen entbehrlich.<br />

Stattdessen empfehlen sich Laptops mit<br />

einer gut sortierten MP3-Sammlung und<br />

ein Stück Software.<br />

Beim virtuellen Set wollen die DJs<br />

natürlich nicht auf die Möglichkeiten<br />

verzichten, die ihnen das reale Gegenstück<br />

bietet. So haben die Entwickler<br />

von Mixxx, Ken and Tue Haste Andersen<br />

(selbst Hobby-DJs), die wichtigsten<br />

Elemente originalgetreu in Java nachprogrammiert.<br />

Bereits 2001 begann die<br />

Arbeit am Softwaremischpult, als es<br />

kaum Tools dieser Gattung gab, weder<br />

proprietär noch frei.<br />

Inzwischen haben sich die beiden aus<br />

der Entwicklung zurückgezogen, das<br />

Projekt ist unter der GPLv2 an die<br />

Community übergegangen. Adam Davison<br />

und Albert Santoni fungieren als<br />

Projektmanager respektive Haupt entwickler<br />

des großen Teams.<br />

Insgesamt vier virtuelle Kanäle, zwei für<br />

Lautsprecher und zwei für Kopfhörer,<br />

ahmen die herkömmlichen Plattenspieler<br />

nach. Der DJ legt allerdings keine<br />

Platten mehr auf, sondern wählt digitalisierte<br />

Musiktitel aus und mischt deren<br />

Wiedergabe nach Belieben zusammen.<br />

Alternativ dienen die Mixxx-Kanäle, jeweils<br />

einzeln konfigurierbar, als Ton-<br />

Eingabe für Midi-Controller oder reale<br />

Plattenspieler, sodass das Tool vor allem<br />

als Mischpult eine gute Figur macht<br />

(siehe Abbildung 2).<br />

Außerdem unterstützt Mixxx so genannte<br />

DJ-Control-Hardware. Dabei handelt es<br />

sich um Geräte, die optisch und in puncto<br />

Bedienung Plattentellern nachempfunden<br />

sind, jedoch faktisch die Wiedergabe di-


gitalisierter Musik steuern. Schließt der<br />

Musikfreund ein solches Gerät an den<br />

eigenen Rechner an, kann er Mixxx damit<br />

steuern und muss nicht auf Maus und<br />

Tastatur zurückgreifen.<br />

Features<br />

Neulinge in der Welt des virtuellen DJing<br />

haben mit Mixxx keine größeren Startschwierigkeiten.<br />

Die Einstiegsaufgabe, ein<br />

Lied nach dem anderen abzuspielen, ist<br />

schnell bewältigt. Danach ergründet der<br />

Anwender Schritt für Schritt die weiteren<br />

Features – Lieder klingen leise aus,<br />

während das folgende Stück langsam die<br />

akustische Dominanz übernimmt. Mit der<br />

Hot-Cue-Funktion markiert er zudem Stellen<br />

in einem Lied, die sich besonders gut<br />

für Aus- oder Einstieg eignen.<br />

Fortgeschrittene erfreut neben der Anzeige<br />

der Klangwellenform das so genannte<br />

BPM-Meter, das dabei hilft, den<br />

perfekten Übergang zu finden. Es zeigt<br />

die Frequenz des Basis-Beats (Beats per<br />

Minute) an, ein wichtiges Kriterium in<br />

der Welt der elektronischen Musik. Mit<br />

diesem Feature bestimmt der Nutzer den<br />

Einsatz nachfolgender Stücke, wenn sie<br />

gerade die gleiche Geschwindigkeit haben.<br />

Zudem bietet Mixxx eine Funktion,<br />

welche die Geschwindigkeit eines Tracks<br />

verändert, ohne dass sich dadurch auch<br />

die Tonlage verzerrt, was aufgrund der<br />

Akustikgesetze ohne weiteres Eingreifen<br />

der Fall wäre.<br />

Genau diese mehr oder weniger subtilen<br />

Veränderungen an der Originalmusik gehören<br />

zu den gewollten Kunstgriffen eines<br />

DJ. Daher erlaubt der Vinyl-Emulationsmodus<br />

eine gleichzeitige Veränderung<br />

von Geschwindigkeit und Tonhöhe.<br />

Ein wichtiges Element, das DJs schon<br />

früh erfanden, sind Loops. Dabei wiederholen<br />

sie bestimmte Abschnitte eines<br />

Liedes, Samples genannt, in einer<br />

Schleife und mischen diese beispielsweise<br />

in andere Songs hinein. Auch<br />

dabei leistet Mixxx Schützenhilfe. Ein<br />

Klick auf »IN« markiert den Beginn,<br />

»OUT« das Ende. Diese Loop wiederholt<br />

Mixxx nun so lange, bis der DJ sie explizit<br />

beendet. Die einzelnen Schleifen<br />

manipuliert er dabei genauso wie jede<br />

andere Wiedergabe.<br />

The End<br />

Abbildung 2: Mixxx spielt nicht nur Musik des eigenen Rechners ab, sondern<br />

kann auch auf externe Plattenspieler und andere Geräte zugreifen.<br />

Erreicht Mixxx bei der Wiedergabe das<br />

Ende eines Liedes ohne Eingreifen des<br />

DJ, erkennt das Programm das zukünftig<br />

als Standardverhalten für den Song an.<br />

Zur Wahl stehen außerdem »Stop« (Wiedergabe<br />

hält am Ende an), »Loop« (spielt<br />

den Titel erneut) und »Next« (geht zum<br />

nächsten Eintrag der Playlist). Das integrierte<br />

Mischpult bietet auch Basisfunktionen<br />

wie einen Fader für die sanften<br />

Übergänge und einen Equalizer, der die<br />

Lautstärke abhängig von der Tonfrequenz<br />

reguliert.<br />

Dank seiner Plugin-Struktur ist Mixxx gut<br />

erweiterbar. So bilden auch exotisch kodierte<br />

Musikdateien oder neue Hardware<br />

keine unüberwindbaren Hürden. Wer Gefallen<br />

an Mixxx gefunden hat und die<br />

Entwicklung des<br />

Mischpults oder<br />

auch von Addons<br />

aktiv unterstützen<br />

möchte, der findet<br />

Kontaktdaten (IRC-<br />

Channel und Mailinglisten)<br />

auf der<br />

Projekt-Homepage.<br />

Radio-DJs<br />

Mit Urheberrechtsabgaben,<br />

Kontrollen<br />

und einigen<br />

anderen bürokratischen<br />

Hürden versuchen<br />

Regierungen<br />

und Verwaltungen<br />

auf der ganzen Welt schon einige<br />

Zeit lang, Webradios den Saft abzudrehen.<br />

Doch allen Versuchen zum Trotz<br />

florieren die beliebten Privatstationen<br />

weiterhin. Musikliebhaber schicken per<br />

Stream ihre Lieblingstitel in den Netzäther,<br />

andere Internetradios haben wiederum<br />

eher den Charakter gesprochener<br />

Weblogs, in denen die Macher ihre Gedanken<br />

zu den verschiedensten Themen<br />

vortragen.<br />

Unabhängig vom Inhalt besteht ein<br />

Webstream in technischer Sicht aus drei<br />

Komponenten. Die Audiodaten befinden<br />

sich in einer beliebigen Quelle, ein Streamingserver<br />

nimmt sie entgegen und stellt<br />

sie via Internet bereit. Der Client des Hörers<br />

schließlich ruft die Daten ab und gibt<br />

sie normalerweise über die Soundkarte<br />

des Rechners wieder.<br />

An Streamingservern selbst besteht<br />

glücklicherweise kein existenzieller Mangel.<br />

Icecast [2] und Shoutcast [3] heißen<br />

zwei der beliebtesten freien Vertreter.<br />

Auch auf Client-Seite ist das Angebot<br />

groß, fast jeder moderne Desktop bietet<br />

eine integrierte Wiedergabesoftware, die<br />

auch Streams abspielt.<br />

An der Quelle<br />

Liquidsoap [4] verspricht die Zusammenstellung<br />

von Audiodaten zu fertigen<br />

Webstreams zu erleichtern. Die Software<br />

kombiniert auf Wunsch verschiedene<br />

Eingabequellen, beispielsweise lokale<br />

Dateien und Netzressourcen, und kompiliert<br />

daraus einen fertigen Audiostream.<br />

Diesen leitet das Programm dann an einen<br />

Server wie Icecast weiter.<br />

Das Ganze basiert auf einer spezialisierten<br />

Skriptsprache, welche die Liquidsoap-Entwickler<br />

eigens zu diesem Zweck<br />

ins Leben gerufen haben. Das Verfahren<br />

soll dem Streamanbieter die Freiheit geben,<br />

mit überschaubarem Aufwand die<br />

individuell benötigten Features selbst zu<br />

implementieren, statt auf bereits existierende<br />

Lösungen – mit deren zwangsläufig<br />

vorhandenen Beschränkungen – zurückzugreifen.<br />

Eine typische Zeile in einem Liquidsoap-Skript<br />

bezieht sich auf eine Quelle<br />

(»Source«). Gewöhnlich bilden mehrere<br />

Quellen den entstehenden Stream. Ein<br />

Quellobjekt kann beispielsweise ein einzelnes<br />

Lied auf der lokalen Festplatte,<br />

Projekte 02/<strong>2011</strong><br />

Software<br />

www.linux-magazin.de<br />

79


Software<br />

www.linux-magazin.de Projekte 02/<strong>2011</strong><br />

80<br />

Sprache Objective Caml (Ocaml, [5])<br />

implementiert. Das ist kein Zufall, denn<br />

auch die Liquidsoap-Entwickler stammen<br />

aus diesem Umfeld. Plugins bieten<br />

Schnittstellen zur Einbettung in Webseiten,<br />

unter anderem mit Django, Perl, PHP<br />

und Plone. Wer sich für den aktuellen<br />

Entwicklungsstand der Software interessiert,<br />

sollte einen Blick auf den Bugtracker<br />

des Projekts werfen [6].<br />

Kartoffel-Kürbis-Gratin<br />

Abbildung 3: Die grafische Entwicklungsumgebung Liguidsoap generiert Programme für die Skriptsprache<br />

Liquidsoap. Die gebräuchlichsten Kommandos sind per Mausklick erreichbar.<br />

eine Wiedergabeliste oder eine Sounddatei<br />

im Netz repräsentieren. Des Weiteren<br />

geben »output«-Kommandos einen<br />

Stream an einen Streamingserver aus.<br />

Alternative Ausgabemöglichkeiten sind<br />

Geräte wie die Soundkarte, auch wenn<br />

das im Kontext von Webradios nur selten<br />

von Bedeutung ist.<br />

Ein Icecast-Server verarbeitet mehrere<br />

Streams. Dieses Feature macht sich auch<br />

Liquidsoap zunutze und erlaubt es dem<br />

Heim-DJ, beispielsweise auf Basis von<br />

Metadaten wie Musikgenre oder Künstler,<br />

Soundobjekte bestimmten Streams<br />

zuzusenden. Auch technische Details<br />

wie die Bitrate oder das Format passt<br />

er optional an. Der denkbar einfachste<br />

Aufruf erzeugt ein Soundobjekt aus einer<br />

einzelnen lokalen Ogg-Vorbis-Datei:<br />

»single("file.ogg")«.<br />

Der Benutzer speichert dieses Objekt<br />

beispielsweise in einer Variablen, um es<br />

danach über die Funktion »output.icecast()«<br />

auszugeben. Der Aufruf steuert<br />

einen lokalen oder im Netz vorhandenen<br />

Icecast-Server an. Andere Funktionen<br />

erlauben Fallback-Optionen zu konfigurieren,<br />

falls es zu Problemen beim Abruf<br />

von Ressourcen kommt. Der Stream-<br />

Programmierer kennzeichnet diese auf<br />

Wunsch mit der booleschen Eigenschaft<br />

»fallible« als nicht ausfallsicher.<br />

Liquidsoap kümmert sich auch um Probleme,<br />

die über der Netzebene liegen.<br />

Empfängt das Programm etwa aus einer<br />

Quelle nur noch Stille, reagiert es auto-<br />

matisch darauf, es kommt also wiederum<br />

eine Fallback-Option zum Einsatz.<br />

An die Oberfläche<br />

Die Liquidsoap-Entwickler betonen die<br />

Vorteile ihrer flexibel programmierbaren<br />

Lösung im Vergleich zu einer statischen<br />

Oberfläche. Eine solche wäre zwar möglicherweise<br />

leichter benutzbar, schränkt<br />

den Benutzer allerdings an anderer<br />

Stelle ein. Wer dennoch nicht auf ein<br />

GUI verzichten möchte, sollte sich Liguidsoap<br />

(ebenfalls unter [4] erhältlich)<br />

anschauen. Es handelt sich um eine grafische<br />

Entwicklungsumgebung, über die<br />

der Benutzer per Mausklick Liquidsoap-<br />

Skripte erzeugt (Abbildung 3).<br />

Die Liguidsoap-Oberfläche präsentiert die<br />

gebräuchlichsten Liquidsoap-Kommandos<br />

als Schaltflächen. Der Anwender klickt auf<br />

diese, um in einem separaten Reiter die<br />

entsprechenden Parameter zu definieren.<br />

So konfiguriert er einen Streamingserver<br />

für die Ausgabe oder erzeugt eine Wiedergabeliste<br />

mit den Lieblingstiteln. Auf<br />

Wunsch startet das grafische Tool sogar<br />

einen lokalen Icecast-Server.<br />

Auch wenn die GUI-Lösung nicht die gesamte<br />

Funktionsvielfalt von Liquidsoap<br />

widerspiegelt, bietet sie dennoch einen<br />

schnellen Einstieg in die Materie und<br />

verhilft Neulingen per Klick zum eigenen<br />

Webradio.<br />

Liquidsoap ist in der am französischen<br />

Forschungsinstitut Inria entworfenen<br />

Zur Abwechslung gibt’s mal wieder ein<br />

vegetarisches Rezept. Der leckere Kartoffel-Kürbis-Auflauf<br />

bekommt durch die<br />

Kruste aus Ziegenkäse und Walnüssen<br />

richtig Pep. Zutaten für vier Personen:<br />

zirka 800 g vorwiegend festkochende<br />

Kartoffeln, 1 mittelgroßer Hokkaidokürbis,<br />

150 ml Sahne, 100 ml Milch, 1 TL<br />

Gemüsebrühe-Pulver, 150 g weicher Ziegenkäse,<br />

50 g Walnusskerne, 1 Zitrone<br />

(Bio), 1 EL Butter, Salz und Pfeffer.<br />

Die Kartoffeln schälen, waschen und in<br />

feine Streifen schneiden. Den Hokkaidokürbis<br />

vierteln, von den Kernen und Fasern<br />

befreien, waschen und ebenfalls fein<br />

schneiden. Die Außenhaut dieser Kürbissorte<br />

ist essbar, er muss also nicht geschält<br />

werden. Den Backofen vorheizen.<br />

Die Kartoffeln und den Kürbis abwechselnd<br />

in einer Auflaufform schichten.<br />

Die Sahne und die Milch mischen, mit<br />

etwas Gemüsebrühe-Pulver, Salz, Pfeffer<br />

und geriebener Zitronenschale abschmecken.<br />

Den Auflauf damit von der Seite<br />

angießen. Ziegenweichkäse in Würfel<br />

schneiden und Walnüsse grob hacken<br />

und zusammen mit kleinen Butterflöckchen<br />

über dem Auflauf verteilen.<br />

Das Gratin dann bei 180 Grad (Umluft:<br />

160 Grad) zirka 45 Minuten backen, bis<br />

es eine schöne braune Knusperkruste hat<br />

und die Kartoffeln und der Kürbis weich<br />

sind. Guten Appetit! (hej)<br />

n<br />

Infos<br />

[1] Mixxx: [http:// www. mixxx. org]<br />

[2] Icecast: [http:// www. icecast. org]<br />

[3] Shoutcast: [http:// www. shoutcast. com]<br />

[4] Liquidsoap und Liguidsoap:<br />

[http:// savonet. sourceforge. net]<br />

[5] The Caml Language: [http:// caml. inria. fr]<br />

[6] Liquidsoap-Bugtracker:<br />

[http:// dev. sourcefabric. org/ browse/ LS]


Aus dem Alltag eines Sysadmin: Lsof<br />

K u r z über lang<br />

Einführung 12/2010 02/<strong>2011</strong><br />

Sysadmin<br />

Je kürzer das Kommando, desto länger ist die Liste der möglichen Parameter. Das gilt nicht nur für »ls« und<br />

»du«, sondern auch für »lsof«, eines von Charlys Lieblingsgewächsen. Charly Kühnast<br />

Inhalt<br />

82 Virtualisierung mit LXC<br />

Der Workshop zeigt, wie sich die leichtgewichtige<br />

Containervirtualisierung in<br />

der Praxis einsetzen lässt.<br />

86 ZFS mit <strong>Linux</strong><br />

ZFS gilt als hochmodernes Filesystem,<br />

unter <strong>Linux</strong> gleicht sein Einsatz aber<br />

einem Hindernislauf.<br />

Lsof, ohne jeden weiteren Parameter<br />

ausgeführt, gibt eine lange, lange Liste<br />

aller geöffneten Dateien aus. Der Rattenschwanz<br />

ist nach der PID sortiert,<br />

beginnt also mit »init«. Auf dem Notebook,<br />

das ich gern zum Testen benutze,<br />

bringt es diese Liste auf nicht weniger<br />

als 6778 Einträge – schnell erfassbar ist<br />

etwas ganz anderes. Fast alle Kommandozeilenparameter,<br />

die Lsof entgegenzunehmen<br />

willens ist, lichten nur diesen<br />

Dateien-Filz.<br />

Wenn ich zum Beispiel wissen möchte,<br />

welcher Prozess eine bestimmte Datei<br />

im Zugriff hat, gebe ich einfach deren<br />

Namen als Parameter an. Daraufhin<br />

liefert das Kommando »lsof /var/log/<br />

syslog« – leicht gekürzt – die folgende<br />

Ausgabe:<br />

COMMAND PID USER<br />

rsyslogd 683 syslog<br />

Auf meinem System läuft also Rsyslog.<br />

Jetzt interessiert mich aber auch, mit<br />

welchen Dateien Rsyslog außerdem<br />

noch jongliert – das Kommando »lsof -c<br />

rsyslog« verrät es. Alternativ lasse ich<br />

mir außerdem alle<br />

Dateien ausgeben,<br />

die dem Benutzer<br />

»syslog« gehören.<br />

Diese Funk tion<br />

übernimmt der<br />

Parameter »-u syslog«.<br />

Da unter <strong>Linux</strong><br />

sprichwörtlich alles<br />

ein File ist,<br />

also auch die<br />

Netzwerk-Sockets,<br />

präsentiert mir<br />

das Kommando<br />

»lsof -iTCP« alle<br />

aktuellen Netz werkverbindungen. Wenn<br />

ich aber nur Dienste sehen will, die auf<br />

Verbindungen warten, ergänze ich die<br />

Zeile zu:<br />

lsof ‐iTCP | grep LISTEN<br />

Interessiert mich dagegen nur der Datenverkehr<br />

auf einem ganz bestimmten<br />

Port, etwa für SSH, zeigt mir »lsof<br />

-i :22« alle mit dem Port 22 assoziierten<br />

Verbindungen an.<br />

Clever filtern, um<br />

zu wissen, was rausgeht<br />

Auch ausgehende Verbindungen zu<br />

einem bestimmten Server kann ich<br />

ausfiltern. Dazu hänge ich an den »-i«-<br />

Parameter ein »@« gefolgt vom Namen<br />

oder der IP-Adresse des Zielsystems an,<br />

Abbildung 1 zeigt ein Beispiel. Diesen<br />

Abbildung 1: Ausgehende Verbindungen in Richtung eines bestimmten Servers analysieren gelingt mit<br />

Anfragen nach dem Schema »lsof ‐i@example.com«.<br />

Filter zu verfeinern gelingt, indem ich<br />

die Nummer des Zielports anhänge:<br />

lsof ‐i@example.com:22<br />

Mit »-a« haben die Lsof-Erfinder um Victor<br />

A. Abell an Anwender wie mich gedacht,<br />

die gelegentlich Filterfunktionen<br />

verketten wollen:<br />

lsof ‐a ‐u charly ‐i@example.com:22<br />

Dieser Befehl listet alle ausgehenden<br />

SSH-Verbindungen zum Server Example.<br />

com, die Benutzer »charly« aufgebaut<br />

hat. Lsof ist also nur auf den ersten<br />

Blick unscheinbar, nach dem zweiten<br />

und »man lsof« wird es zum unverzichtbaren<br />

Werkzeug. (jk)<br />

n<br />

Der Autor<br />

Charly Kühnast administriert Unix-Syste me im<br />

Rechenzentrum Niederrhein in Kamp-Lintfort.<br />

Zu seinen Aufgaben gehören die Sicherheit und<br />

Verfügbarkeit der Firewalls<br />

und der DMZ. Im heißen Teil<br />

seiner Freizeit frönt er dem<br />

Ko chen, im feuchten Teil der<br />

Süßwasseraquaristik und im<br />

östlichen lernt er Japanisch.<br />

© j.berger, Photocase.com<br />

www.linux-magazin.de<br />

81


Sysadmin<br />

www.linux-magazin.de LXC 02 /<strong>2011</strong><br />

82<br />

Workshop: Container-Virtualisierung mit LXC auf Ubuntu 10.04<br />

Eingedost<br />

LXC legt mit wenig Overhead Systemcontainer an, um darin beispielsweise sicherheitskritische Dienste zu<br />

isolieren. Als Anwender müssen Sie jedoch einige Maßnahmen ergreifen, um ein System im System aufzubauen<br />

– und überhaupt hineinzukommen. Eva-Katharina Kunst, Jürgen Quade<br />

Das reicht Root bereits, um<br />

ein einzelnes Kommando –<br />

etwa eine Shell – in einem<br />

Anwendungs-Container ablaufen<br />

zu lassen:<br />

Legen Sie nun ein Verzeichnis an, beispielsweise<br />

»/lxc«, in dem Sie die Systemdateien<br />

des Gastsystems ablegen. Ein<br />

Unterverzeichnis davon repräsentiert das<br />

Root-Filesystem des neuen Containers:<br />

lxc-execute -n foo -f /usr/share/U<br />

doc/lxc/examples/lxc-macvlan.confU<br />

/bin/bash<br />

mkdir -p /lxc/rootfs.guest<br />

© Tormod Rossavik, 123RF.com<br />

Kommen Ihnen die großen Virtualisierungen<br />

wie KVM, Xen, VMware oder<br />

Virtualbox etwas klobig vor, wenn es<br />

nur darum geht, einen einzelnen Dienst<br />

wie einen Druckerspooler oder ein Intrusion<br />

Detection System zu virtualisieren?<br />

Dann zeigt Ihnen dieser Workshop, wie<br />

Sie die leichtgewichtige Containervirtualisierung<br />

LXC unter Ubuntu 10.04 dafür<br />

vorbereiten.<br />

Da LXC fester Bestandteil des Kernels ist,<br />

benötigen Sie nur die Userspace-Tools<br />

aus dem Paket »lxc«, um damit erste Erfahrungen<br />

machen. Die Zeile<br />

none /cgroup cgroup defaults 0 0<br />

in »/etc/fstab« hilft das zusätzlich notwendige,<br />

virtuelle Cgroup-Filesystem unter<br />

»/cgroup« zu mounten.<br />

Das erzeugt gemäß der Konfigurationsdatei<br />

»lxc-macvlan.<br />

conf« den Container und startet<br />

die Shell. Dass die in einer<br />

virtualisierten Umgebung<br />

läuft, zeigt bereits der Prompt<br />

an: Er trägt den geänderten<br />

Hostnamen. Die Liste der Prozesse<br />

– durch »ps auxw« aufgerufen<br />

– ist außerordentlich<br />

übersichtlich, Kernelthreads<br />

fehlen dort sogar vollständig.<br />

Und wenn Sie in das Proc-Verzeichnis<br />

wechseln, sehen Sie<br />

auch hier im Vergleich zum<br />

Hostsystem die reduzierte Anzahl von<br />

Einträgen für Prozesse.<br />

Ein- und Mehrwegbehälter<br />

Das Anlegen eines Systemcontainers ist<br />

komplexer, weil Sie dafür ein komplettes<br />

System installieren und vorbereiten<br />

müssen. Außerdem will insbesondere auf<br />

dem Host das Netzwerk konfiguriert sein.<br />

Installieren Sie darum auf dem Hostsystem<br />

zusätzlich die Pakete: »debootstrap«,<br />

»bridge-utils« und »libcap2-bin«. Als Teil<br />

der Netzkonfiguration benötigen Sie eine<br />

Brücke, um den Container unter einer<br />

eigenen IP-Adresse zu erreichen. Steht<br />

der Inhalt aus Listing 1 in »/etc/network/<br />

interfaces«, aktiviert »/etc/init.d/networking<br />

restart« die Einstellungen.<br />

Außerdem benötigen Sie eine Datei mit<br />

Namen »/lxc/fstab.guest«, die Pfade zu<br />

Mountpoints ähnlich wie in »/etc/fstab«<br />

festlegt (siehe Listing 2).<br />

Bereiten Sie jetzt das Gastsystem vor.<br />

Dazu wechseln Sie in dessen eben angelegtes<br />

Verzeichnis und erzeugen dort<br />

mit dem Debian-Installer ein minimales<br />

<strong>Linux</strong>-System (hier für die 64-Bit-Variante,<br />

für die 32-Bit-Version tauschen Sie<br />

»amd64« gegen »i386« aus):<br />

debootstrap --arch amd64 lucidU<br />

/lxc/rootfs.guest/U<br />

http://archive.ubuntu.com/ubuntu<br />

Jetzt müssen Sie das neue System noch<br />

anpassen: Kommentieren Sie in der Datei<br />

»/lxc/rootfs.guest/lib/init/fstab« die Zeilen<br />

aus, die »/proc«, »/dev« und »/dev/<br />

pts« mounten. Sie vergeben einen Hostnamen,<br />

indem Sie die Datei »/lxc/rootfs.<br />

guest/hostname« editieren. Im Beispiel<br />

heißt das System »guest«. Schreiben Sie<br />

dazu in die neue Datei »/lxc/rootfs.guest/<br />

etc/hosts«:<br />

127.0.0.1 localhost guest<br />

Die nächsten Änderungen führen Sie direkt<br />

im System aus, indem Sie mit Hilfe<br />

von »chroot« vorläufig in die neue Umgebung<br />

wechseln:<br />

chroot /lxc/rootfs.guest /bin/bash<br />

Um sich später in den Container einzuloggen,<br />

bietet sich Open SSH an, das Sie<br />

mit dem Paket »openssh-server« instal-


lieren. Nun fehlen noch ein Benutzeraccount<br />

und ein geregelter Weg, um per<br />

»sudo« an Root-Rechte zu gelangen. Dazu<br />

legen Sie einen Benutzer an und machen<br />

ihn zum Mitglied der Gruppe »admin«:<br />

u=linuxmagazin; g=admin<br />

adduser $u; addgroup $g; adduser $u $g<br />

Editieren Sie mit Hilfe des Kommandos<br />

»visudo« die Datei »/etc/sudoers«. Ersetzen<br />

Sie dabei in der Zeile<br />

%sudo ALL=(ALL) ALL<br />

den Eintrag »sudo« durch »admin«. Danach<br />

verlassen Sie die Chroot-Umgebung<br />

durch »exit« wieder. Vor dem Test des<br />

vorbereiteten Containers konfigurieren<br />

Sie LXC noch in »/lxc/conf.guest« mit<br />

dem Inhalt aus Listing 3 und passen in<br />

Zeile 8 die IP-Adresse an. Mit<br />

lxc-create -n guest -f /lxc/conf.guest<br />

bereitet LXC nun die Konfiguration auf.<br />

Das ist Voraussetzung, um anschließend<br />

das System mit »lxc-start -n guest -d«<br />

zu aktivieren. Die Option »-d« führt das<br />

Kommando im Hintergrund als Daemon<br />

aus. Sie haben jetzt zwei Möglichkeiten,<br />

sich auf dem virtualisierten System<br />

einzuloggen: direkt per »lxc-console -n<br />

guest« oder – falls das Netzwerk auf Anhieb<br />

funktioniert – per »ssh«:<br />

ssh linuxmagazin@192.168.1.69<br />

Beim Zugang per »lxc-console« müssen<br />

Sie allerdings etwas Geduld aufbringen.<br />

Bis der Systemcontainer sie aktiviert,<br />

kann es durchaus mehrere Minuten dauern!<br />

Dann meldet sich der Container, wie<br />

in Abbildung 1 zu sehen.<br />

Recycling-Container<br />

Um das System wieder anzuhalten, verwenden<br />

Sie vom Host aus das Kommando<br />

»lxc-stop -n guest«. Nach jeder Änderung<br />

der Konfigurationsdatei »/lxc/conf.guest«<br />

löschen Sie die alte Konfiguration mit<br />

»lxc-destroy -n Gastname« und legen mit<br />

»lxc-create« wieder eine neue an.<br />

Im LXC-Howto finden Sie die wichtigsten<br />

Schritte zusammengefasst [1], optional<br />

auch Ubuntu-Eigenheiten [2]. Mehr von<br />

den LXC-Tools weiß ein IBM-Kernelentwickler<br />

zu sagen [3]. Sind alle Konfigurationen<br />

am rechten Ort, bietet LXC eine<br />

flotte Alternative für die Trennung kleiner<br />

Dienste, die sich untereinander nicht ins<br />

Gehege kommen sollen. (mg) n<br />

Infos<br />

[1] Dwight Schauer, „LXC Howto“:<br />

[http://lxc. teegra. net]<br />

[2] Beau Steward, „Virtualizing with LXC in<br />

Ubuntu“:<br />

[http://www. nimdae.com/ ?p=576]<br />

[3] Matt Heisley, „LXC: <strong>Linux</strong> container tools“:<br />

[http://www. ibm. com/developerworks/<br />

linux/library/ l‐lxc‐containers/]<br />

Die Autoren<br />

Eva‐Katharina Kunst, Journalistin, und Jürgen<br />

Quade, Professor an der Hochschule Niederrhein,<br />

sind seit den Anfängen von <strong>Linux</strong> Fans von Open<br />

Source. Demnächst erscheint die dritte Auflage<br />

ihres Buches „<strong>Linux</strong> Treiber entwickeln“.<br />

LXC 02/<strong>2011</strong><br />

Sysadmin<br />

www.linux-magazin.de<br />

83<br />

Listing 1: »/etc/network/interfaces«<br />

für Host anpassen<br />

01 auto lo<br />

02 iface lo inet loopback<br />

03 # LXC-Config<br />

04 # The primary network interface<br />

05 #auto eth0<br />

06 #iface eth0 inet dhcp<br />

07 auto br0<br />

08 iface br0 inet dhcp<br />

09 bridge_ports eth0<br />

10 bridge_stp off<br />

11 bridge_maxwait 5<br />

12 post-up /usr/sbin/brctl setfd br0 0<br />

Listing 2: »/lxc/fstab.guest«<br />

Abbildung 1: Die aktivierte Config startet den Container, was bisweilen einige Minuten dauert.<br />

01 none /lxc/rootfs.guest/dev/pts devpts defaults 0 0<br />

02 none /lxc/rootfs.guest/var/run tmpfs defaults 0 0<br />

03 none /lxc/rootfs.guest/dev/shm tmpfs defaults 0 0<br />

Listing 3: Die Container-Konfiguration »conf.guest«<br />

01 lxc.utsname = guest<br />

02 lxc.tty = 4<br />

03 lxc.network.type = veth<br />

04 lxc.network.flags = up<br />

05 lxc.network.link = br0<br />

06 lxc.network.hwaddr = 08:00:12:34:56:78<br />

07 #lxc.network.ipv4 = 0.0.0.0<br />

08 lxc.network.ipv4 = 192.168.1.69<br />

09 lxc.network.name = eth0<br />

10 lxc.mount = /lxc/fstab.guest<br />

11 lxc.rootfs = /lxc/rootfs.guest<br />

12 lxc.pts = 1024<br />

13 #<br />

14 lxc.cgroup.devices.deny = a<br />

15 # /dev/null and zero<br />

16 lxc.cgroup.devices.allow = c 1:3 rwm<br />

17 lxc.cgroup.devices.allow = c 1:5 rwm<br />

18 # consoles<br />

19 lxc.cgroup.devices.allow = c 5:1 rwm<br />

20 lxc.cgroup.devices.allow = c 5:0 rwm<br />

21 lxc.cgroup.devices.allow = c 4:0 rwm<br />

22 lxc.cgroup.devices.allow = c 4:1 rwm<br />

23 # /dev/{,u}random<br />

24 lxc.cgroup.devices.allow = c 1:9 rwm<br />

25 lxc.cgroup.devices.allow = c 1:8 rwm<br />

26 lxc.cgroup.devices.allow = c 136:* rwm<br />

27 lxc.cgroup.devices.allow = c 5:2 rwm<br />

28 # rtc<br />

29 lxc.cgroup.devices.allow = c 254:0 rwm


Sysadmin<br />

www.linux-magazin.de <strong>Linux</strong> und ZFS 02 /<strong>2011</strong><br />

86<br />

Erste Begegnung zwischen dem <strong>Linux</strong>-Kernel und ZFS<br />

Hindernislauf<br />

Suns ZFS gilt derzeit als das modernste Filesystem. Der <strong>Linux</strong>-Kernel unterstützt es zwar nicht direkt, aber<br />

auf Umwegen. Im Test offenbarten sich jedoch Hürden, die ZFS unter <strong>Linux</strong> oft straucheln lassen. Nur ein<br />

proprietärer Anbieter kann mit Kompatibilität und Speed überzeugen. Hans-Peter Merkel, Markus Feilner<br />

© Andrey Kiselev, 123RF.com<br />

Am Anfang stand eine vermeintlich ganz<br />

normale forensische Auswertung. Ermittler<br />

hatten einen Solaris-Server beschlagnahmt<br />

und sollten dessen Daten auswerten.<br />

An sich nichts Besonderes, wären da<br />

nicht drei Festplatten im Raid-5-Verbund<br />

unter ZFS verbaut gewesen.<br />

Reichlich Komplex: ZFS<br />

Die Vorgabe, die brandneuen ZFS-Treiber<br />

unter <strong>Linux</strong> ([1], [2], [3]) einzusetzen,<br />

um eine logische Datensicherung zu erstellen,<br />

entwickelte sich zum komplexen<br />

Projekt, das in den Tabellen, Benchmarks<br />

Listing 1: »zpool import« auf Open Solaris<br />

01 # zpool import<br />

02 pool: mybackups<br />

03 id: 18344450410782017931<br />

04 state: UNAVAIL<br />

05 status: The pool was last accessed by another<br />

system.<br />

06 action: The pool cannot be imported due to<br />

und Testergebnissen des vorliegenden Artikels<br />

mündete. Tabelle 1 zeigt die dabei<br />

verwendeten Versionen.<br />

ZFS als 128-Bit-Dateisystem integriert<br />

Raid- und Volume-Management mit Prüfsummen<br />

und glänzt durch zahlreiche Erweiterungen<br />

für Rechenzentren [4]. Der<br />

Name stammt ursprünglich von Zetabyte<br />

File System und stellte eine Anspielung<br />

auf die riesigen Datei- und Dateisystemgrößen<br />

(beides 16 Exbibyte, 16 mal 2 60<br />

Byte) dar, die ZFS unterstützt. Weil die<br />

Features der von Sun für Solaris 10 entwickelten<br />

Software den Rahmen gängiger<br />

Filesysteme deutlich sprengen und weit in<br />

damaged devices or data.<br />

07<br />

08 mybackups UNAVAIL newer version<br />

09 Raidz1 DEGRADED<br />

10 ad14p1 ONLINE<br />

11 ad16p1 ONLINE<br />

12 dsk/c4t5d0s0 UNAVAIL cannot open<br />

den HA- oder Netzwerkbereich reichen,<br />

entwickelte sich unter <strong>Linux</strong>-Anhängern<br />

eine heftige Diskussion, wobei die Vertreter<br />

der „One Job, one Tool“-Fraktion dem<br />

Stack-übergreifenden Funktionsumfang<br />

skeptisch gegenüberstanden.<br />

Auch weil ZFS der Common Development<br />

and Distribution Licence (CDDL,<br />

[5]) unterliegt, lässt eine vollständige Implementierung<br />

im <strong>Linux</strong>-Kernel auf sich<br />

warten, Anwender müssen auf spezielle<br />

Tools oder Fuse zurückgreifen. Die CDDL<br />

enthält beispielsweise Passagen, nach denen<br />

die Lizenz ungültig wird, wenn ein<br />

Lizenznehmer rechtliche Schritte gegen<br />

den Lizenzgeber unternimmt. Das richtet<br />

sich vor allem gegen Patentklagen und<br />

gilt als umstritten. Die CDDL stammt aus<br />

dem Jahr 2004, als Sun die Freigabe von<br />

Solaris vorbereitete, fast ganz Open Solaris<br />

unterliegt ihr.<br />

Auf den Zahn gefühlt<br />

Grund genug, die Theorie und die versprochenen<br />

Eigenschaften der verschiedenen<br />

Lösungen in die Praxis umzusetzen.<br />

In den folgenden Beispielen kommen<br />

sowohl Kernel-basierte Varianten als<br />

auch die einfach zu implementierende<br />

Lösung über den Userspace und ZFS-<br />

Fuse auf einem AM3-Mainboard mit<br />

einer 500-GByte-Systemplatte und drei<br />

1-TByte-Festplatten mit einem Raid-5-<br />

System zum Einsatz. Im Multiboot mit<br />

fünf Betriebssystemen auf jeweils 80<br />

GByte großen Partitionen landen da:<br />

n Open Solaris Beta 201003<br />

n Free BSD 8.1<br />

n Debian Squeeze<br />

n Ubuntu 10.10 Desktop mit ZFS-Fuse<br />

n Ubuntu 10.04 Server LTS mit proprietärem<br />

Kerneltreiber


<strong>Linux</strong> und ZFS 02/<strong>2011</strong><br />

Sysadmin<br />

G Abbildung 1: Partitionen erstellen unter Open Solaris. Die Laufwerkbezeichner<br />

unterscheiden sich signifikant von denen unter <strong>Linux</strong>, weil das Unix mit Slices<br />

arbeitet, also Partitionen in Partitionen.<br />

www.linux-magazin.de<br />

87<br />

E Abbildung 2: Ein auf Open Solaris angelegter Raid-Pool ist erfolgreich eingebunden.<br />

Sein Name lautet »mybackups«, die Raid-5-Option hat »Raidz« im<br />

»zpool create«-Kommando festgelegt.<br />

Alles in den 64-Bit-Varianten. Die verbleibende<br />

Kapazität der Hauptplatte dient<br />

der Sicherung der Images.<br />

Wie bei Dualboot üblich, muss der Anwender<br />

bei der Installation verhindern,<br />

dass die Betriebssysteme den Master Boot<br />

Record (MBR) überschreiben. Im Beispiel<br />

erstellt ihn Open Solaris, alle anderen OS<br />

nur einen Volume Boot Record in der jeweiligen<br />

Partition. Die Multiboot-Einträge<br />

schreibt der Admin in die »menu.lst« von<br />

Open Solaris.<br />

Wer hier VBR-Loader erstellt hat, dem genügen<br />

einfache Chainloader-Befehle zur<br />

Bootauswahl. Der Eintrag für Free BSD<br />

lautet beispielsweise:<br />

title "FreeBSD 8.1"<br />

root (hd0,1)<br />

chainloader +1<br />

Leicht zu erkennen: Open Solaris verwendet<br />

noch den altgedienten Grub 1.<br />

Wer die »menu.lst« aber in »/boot« sucht,<br />

wird sich schwer tun: Open Solaris legt<br />

diese in »/rpool/boot/grub/« ab.<br />

Den ZFS-Pool auf Open<br />

Solaris erstellen ...<br />

Sind alle Kandidaten installiert, geht es<br />

ans Erstellen des Raid 5. Die drei 1-TByte-<br />

Festplatten bindet der Admin im Originalzustand<br />

ein. Die Partitionierung übernimmt<br />

dann Open Solaris. Die Festplatteninformationen<br />

zeigt unter Solaris der<br />

Befehl »format« in einem Terminal an.<br />

Abbildung 1 zeigt die für <strong>Linux</strong>-Anwender<br />

wegen der verwendeten Slices etwas<br />

gewöhnungsbedürftigen Bezeichnungen<br />

der Festplatten.<br />

Der anschließende Befehl »zpool« erstellt<br />

das Raid-System (siehe Abbildung 1):<br />

zpool create mybackups Raidz c4t2d0 c4t3d0U<br />

c4t5d0<br />

Das Kommando »zpool status« aus Abbildung<br />

2 überprüft den Erfolg.<br />

Die vertrauten Befehle »mount« und »df<br />

-h« liefern weitere Informationen über den<br />

Mountpoint und die Kapazität des Raid.<br />

Standardmäßig erzeugt das System ein<br />

Directory im Wurzelverzeichnis, benannt<br />

nach dem Namen des Pools, oder bei<br />

Bedarf mit der Option »-m /Verzeichnis«<br />

individuell angepasst.<br />

Als Gesamtkapazität erscheinen knapp<br />

2 TByte, der korrekte Wert für drei Festplatten<br />

von 1 TByte im Raid-5-Verbund.<br />

Bevor sich der Pool in den anderen Betriebssystemen<br />

testen lässt, sollte der<br />

Admin noch Daten hineinkopieren.<br />

... und mit Free BSD<br />

importieren<br />

Free BSD wird jetzt (nach Open Solaris)<br />

das erste Betriebssystem, das mit dem<br />

ZFS-Pool arbeiten soll. Ob er sich für eine<br />

Grafikoberfläche oder die reine Kommandozeilenversion<br />

entscheidet, bleibt dem<br />

Admin überlassen. Alle verwendeten<br />

Unix-Derivate machten im Test keine Probleme,<br />

solange die Anwender mit GUIs<br />

wie Gnome und deren Tools arbeiteten.<br />

Befehle mit direktem Einfluss auf die<br />

Hardware, etwa die Verwaltung von Speichermedien<br />

und Netzwerkkarten, muss<br />

der Admin ohnehin meist erst nachschlagen,<br />

weil sich die Betriebssysteme in den<br />

Device-Namen unterscheiden.<br />

Den unter Open Solaris erstellten Pool<br />

importiert nicht nur unter Free BSD der<br />

Befehl »zpool import«. Er hat im Listing<br />

1 bereits einige Informationen gesammelt,<br />

den Pool »mybackups« hat er zwar erkannt,<br />

doch gibt es Inkompatibilitäten<br />

durch Versionsunterschiede. Deshalb<br />

meldet das Tool den Pool als defekt und<br />

der Import-Befehl mit »--force«-Option<br />

(»zpool import -f mybackups«) verweigert<br />

die Arbeit.<br />

Free BSD arbeitet leider noch mit einer<br />

veralteten ZFS-Version und kann diesen<br />

Pool nicht lesen. Ein neuer Pool, basierend<br />

auf einer älteren Version, muss her,<br />

doch zuvor sollen die anderen Betriebssysteme<br />

beweisen, was sie können.<br />

Kfree BSD<br />

Einen interessanten Weg, um ZFS unter<br />

<strong>Linux</strong> zu nutzen, beschreitet das Kfree-<br />

BSD-Projekt [1]. Sein Ansatz ist es, zwar<br />

die Kernel-basierte ZFS-Implementierung<br />

von Free BSD zu nutzen, jedoch dem Anwender<br />

eine bekannte Debian-Umgebung<br />

zu spendieren. Mit dem Download des<br />

»mini.iso« von [6] steht ein Installations-<br />

Tabelle 1: Benutzte ZFS-Versionen<br />

OS ZFS Zpool<br />

Open Solaris 201003 4 22<br />

Open Solaris 200906 3 14<br />

Free BSD 8.1 3 14<br />

Kfree BSD/ Debian 3 14<br />

Ubuntu 10.04 KQ Infotech 4 18<br />

Ubuntu 10.10 Fuse 4 18<br />

Debian Squeeze Fuse 4 23<br />

Debian Lenny Fuse - -


Sysadmin<br />

www.linux-magazin.de <strong>Linux</strong> und ZFS 02 /<strong>2011</strong><br />

88<br />

01 zpool import<br />

02 pool: mybackups<br />

medium zur Verfügung, das wahlweise<br />

ein Debian Lenny, Squeeze oder Sid auf<br />

einen Free-BSD-Kernel aufsetzt. So bremsen<br />

Userspace-Treiber die Leistung nicht,<br />

aber der <strong>Linux</strong>-Anwender fühlt sich<br />

(abgesehen von geringfügigen Namensanpassungen<br />

der Geräte) trotzdem fast<br />

wie zu Hause. Auch der zuvor benutzte<br />

01 zpool import<br />

02 pool: mybackups<br />

03 id: 18344450410782017931<br />

04 state: ONLINE<br />

05 status: The pool was last accessed by another system.<br />

06 action: The pool can be imported using its name or<br />

07 numeric identifier and the '‐f' flag.<br />

08 See: http://www.sun.com/msg/ZFS‐8000‐EY<br />

09 config:<br />

10<br />

11 mybackups ONLINE<br />

12 Raidz1 ONLINE<br />

13 sdb1 ONLINE<br />

14 sdc1 ONLINE<br />

15 sdd1 ONLINE<br />

03 id: 18344450410782017931<br />

04 state: ONLINE<br />

05 status: The pool was last accessed by another system.<br />

Zpool-Befehl kommt hier wieder zum<br />

Zuge, zumindest nach der Installation<br />

der Userspace-Werkzeuge mit »aptitude<br />

install zfsutils«. »zpool import« zeigt den<br />

Pool zwar an, aber auch hier erscheint<br />

die Fehlermeldung, dass es sich beim<br />

Pool um eine neuere Version handelt,<br />

exakt identisch mit Listing 1.<br />

KQ Infotech<br />

Für <strong>Linux</strong>-Anwender, die Lernaufwand<br />

scheuen, gibt es den proprietären ZFS-<br />

Treiber von KQ Infotech [2], zum Beispiel<br />

für die LTS-Version 10.04 von<br />

Ubuntu. Nach einer Registrierung steht<br />

der kostenlose Download bereit, derzeit<br />

als Debian-Pakete ohne jede Dokumentation.<br />

Diese und eine FAQ-Liste sollen<br />

laut Hersteller in Kürze auf der Webseite<br />

zu finden sein.<br />

Der erste Installationsversuch scheiterte<br />

im Test mit Fehlermeldungen. Auf eine<br />

Supportanfrage antwortete das indische<br />

Team allerdings sofort. Es arbeitete etwa<br />

06 action: The pool can be imported using its name or numeric identifier and the '‐f' flag.<br />

07 see: http://www.sun.com/msg/ZFS‐8000‐EY<br />

08 config:<br />

09<br />

200<br />

180<br />

160<br />

140<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

MByte/s<br />

125,2<br />

50,5<br />

186,2<br />

131.4<br />

Open Solaris<br />

120.1<br />

11,0<br />

154,1<br />

159,7<br />

KQ Infotech<br />

Abbildung 3: Im Iozone-Benchmark kommt auch das außer Konkurrenz antretende Ext 3 gar nicht so schlecht<br />

weg, zumindest bei Schreibzugriffen. Beim Lesen sind jedoch alle ZFS-Varianten schneller.<br />

Listing 2: »zpool import« mit<br />

KQ Infotech<br />

Listing 3: »zpool import« mit Fuse<br />

10 mybackups ONLINE<br />

11 Raidz1‐0 ONLINE<br />

12 disk/by‐id/ata‐ST31000520AS_5VX058FP‐part1 ONLINE<br />

13 disk/by‐id/ata‐Hitachi_HDS721010KLA330_GTH000PAH2W4AH‐part1 ONLINE<br />

14 disk/by‐id/ata‐SAMSUNG_HD103UJ_S13PJDWS619757‐part1 ONLINE<br />

72,6<br />

44,8<br />

162,0<br />

165,1<br />

Free BSD 8.1<br />

96,5<br />

Write Rewrite Read Reread<br />

48,7<br />

107,6<br />

108,2<br />

Debian mit<br />

Kfree BSD<br />

25,7<br />

20,2<br />

103,8<br />

104,5<br />

ZFS-Fuse<br />

75,6<br />

82,9<br />

95,1<br />

94,4<br />

Ext 3 ohne<br />

Raid<br />

eine halbe Stunde per SSH auf dem Testserver,<br />

dann war der Fehler gefunden und<br />

ZFS einsatzklar. Die Minimalinstallation<br />

des Ubuntu-10.04-Servers erwartete Awk,<br />

die Software verlangte aber das bessere<br />

Gawk. Die Supporttechniker installierten<br />

es manuell und ersetzten Awk durch<br />

einen Symlink. Die Abhängigkeitsliste<br />

im Installationspaket will der Hersteller<br />

ebenfalls bald korrigieren.<br />

Der Vorteil der KQ-Infotech-Variante ist<br />

offensichtlich: Alle Geräte tragen die typischen<br />

Devicenamen. Im Gegensatz zu<br />

den ersten beiden Varianten zeigt der Importversuch<br />

auch gleich einen Lösungsvorschlag<br />

(Listing 2). Der Import mit der<br />

»--force«-Option holt jetzt zwar den Pool,<br />

mountet ihn aber nicht. Auf Anfrage<br />

beim Hersteller erfuhren die Tester, das<br />

sei die derzeitige Standardeinstellung.<br />

Erst nach einem zusätzlichen Mountbefehl<br />

»zfs mount mybackups« klappte der<br />

Dateizugriff.<br />

Ubuntu mit ZFS-Fuse<br />

Der vierte Kandidat im Vergleich ist ein<br />

aktuelles Ubuntu 10.10. Das enthält auch<br />

die freien ZFS-Fuse-Treiber, die keinen<br />

Geschwindigkeitsrausch erwarten lassen,<br />

aber als Grundlage für eine logische Datensicherung<br />

eine pflegeleichte Lösung<br />

versprechen. Auch hier ist »zpool import«<br />

wieder der erste Befehl (Listing 3).<br />

Die Rückmeldung ist bekannt, aber hier<br />

funktioniert der Import über die »--force«-<br />

Option einwandfrei, die Daten stehen anschließend<br />

sofort zu Verfügung. Aus Sicht<br />

des Forensikers ist das die eleganteste<br />

Lösung, auch weil sie mit einem aktuellen<br />

Ubuntu sehr schnell über »aptitude<br />

install zfs-fuse« eingerichtet ist.<br />

Durchsatz<br />

Für Admins stellt sich eher die Frage<br />

nach der Performance, und dafür darf das<br />

Benchmarktool Iozone [7] herhalten. Es<br />

liegt im Quelltext vor und lässt sich deshalb<br />

für alle getesteten Betriebssysteme<br />

benutzen. Auf jedem Kandidaten setzten<br />

die Tester des <strong>Linux</strong>-<strong>Magazin</strong>s<br />

iozone ‐r 4k ‐s 10g ‐i 0 ‐i 1<br />

ab, was eine 10 GByte große Datei anlegt.<br />

Die Schreib- und Lesebefehle erfolgen bei<br />

einer Blockgröße von 4 KByte. Das File


musste laut Manpage größer als der RAM<br />

(8 GByte) sein, damit Cache-Vorgänge<br />

und Arbeitsspeicher weniger Einfluss auf<br />

die Testergebnisse nehmen. Abbildung 3<br />

zeigt die Ergebnisse des Benchmark, als<br />

Referenz eignet sich der letzte Block mit<br />

einem Ext-3-System ohne Raid.<br />

Die Ergebnisse sprechen eine deutliche<br />

Sprache: Wer Wert auf Performance legt,<br />

kommt bei ZFS im produktiven Einsatz<br />

nicht um eine Kernel-basierte Lösung wie<br />

KQ Infotech herum. Auch Apple setzt<br />

ZFS mit EWF-Images<br />

Für einen Ermittler günstig sind die ZFS-Implementierungen,<br />

die den Pool nicht automatisch<br />

mounten, weil er das Dateisystem in der Regel<br />

nachweisbar Read-only zur Verfügung stellen<br />

muss. Das erledigt die Zpool-Option »-o ro«:<br />

zpool import o ro ‐f mybackups<br />

Zpool merkt sich diese Einstellungen, weitere<br />

Attribute setzt zum Beispiel das Kommando<br />

»set«, allerdings muss dafür Umount den Pool<br />

nochmals lösen:<br />

zfs umount mybackups<br />

zfs set atime=off mybackups<br />

zfs set exec=off mybackups<br />

zfs mount mybackups<br />

»atime=off« verhindert das Verändern der Access<br />

Time, »exec=off« unterbindet das Ausführen<br />

von Programmen. Jetzt steht der logischen<br />

Datenauswertung nichts mehr im Wege. Drei<br />

typische Beispiele sind:<br />

# MD5‐Hashwerte aller Dateien:<br />

find /mybackups ‐type f ‐print0 | xargs U<br />

‐0 md5sum > mybackups_md5<br />

# Eine Dateiliste aller Dateien:<br />

find /mybackups ‐type f ‐print0 | xargs U<br />

‐0 ls ‐lisa > mybackups_ls<br />

# Dateien via Find und Xargs suchen und U<br />

kopieren (hier PDFs):<br />

find /mybackups ‐type f ‐iname "*.pdf" U<br />

‐print0 | xargs ‐0 cp ‐t /case/allpdfs U<br />

‐‐preserve<br />

Auch die History Files gehören zu den Leckerbissen<br />

besonders für Forensiker, unter<br />

ZFS macht sie der Befehl »zpoool history -il<br />

mybackups« sichtbar.<br />

Virtuelle Images<br />

Die Tests im Artikel beziehen sich ausschließlich<br />

auf physikalische Medien, der Forensiker<br />

arbeitet aber fast immer mit Images des EWF-<br />

Standards. Das Programm Xmount [8] aus den<br />

Debian-Repositories konvertiert EWF-Files virtuell<br />

in Raw-Images. Einen Bericht dazu gab es<br />

im <strong>Linux</strong> <strong>Magazin</strong> [9].<br />

in seinen neueren, auf BSD aufbauenden<br />

Betriebssystemen übrigens Kernelbasierte<br />

ZFS-Treiber ein, deren Performance<br />

angeblich nahe an die von Open<br />

Solaris herankommt. Im Test erkannte<br />

ein Macbook mit ZFS formatierte USB-<br />

Platten auch problemlos.<br />

ZFS-Fuse stellt dagegen keine Alternative<br />

dar. Die Benchmarks in Abbildung 3<br />

zeigen die mageren Ergebnisse, vor allem<br />

bei Schreibzugriffen. Die Kfree-BSD-<br />

Implementierung teilt mit Free BSD den<br />

Um herauszufinden, ob sich ein ZFS-Raid-5-<br />

Verbund auch aus EWF-Dateien wiederherstellen<br />

lässt, erstellten die Autoren drei Dd-Images<br />

unter Open Solaris. Wie die Versionsliste in<br />

Tabelle 1 zeigt, setzt Open Solaris 201003 auf<br />

die neueste Zpool-Version 22. Diese lässt sich<br />

derzeit aber nicht auf allen anderen Systemen<br />

lesen, deshalb nutzten die Autoren für den Test<br />

Images unter Open Solaris 2009.06 mit der<br />

kompatibleren Zpool-Version 14 und koppelten<br />

diese an jeweils ein Loop-Device:<br />

dd if=/dev/zero of=disk1 bs=1024k U<br />

count=100<br />

dd if=/dev/zero of=disk2 bs=1024k U<br />

count=100<br />

dd if=/dev/zero of=disk3 bs=1024k U<br />

count=100<br />

lofiadm ‐a disk1 /dev/lofi/1<br />

lofiadm ‐a disk2 /dev/lofi/2<br />

lofiadm ‐a disk3 /dev/lofi/3<br />

Zuletzt erzeugt Zpool mit<br />

zpool create testpool Raidz /dev/lofi1 U<br />

/dev/lofi/2 /dev/lofi/3<br />

den Testpool und der Admin kopiert ein paar<br />

Daten hinein. Die forensische Auswertung soll<br />

danach in Ubuntu 10.04 mit den KQ-Infotech-<br />

Treibern erfolgen.<br />

Dafür ordnet Losetup jedem Raw-Image ein<br />

Loopback-Device zu:<br />

losetup /dev/loop1 disk1<br />

losetup /dev/loop2 disk2<br />

losetup /dev/loop3 disk3<br />

»zpool import« listet den Testpool und erlaubt<br />

Import und Mount:<br />

zpool import ‐f testpool<br />

zfs set readonly=on testpool<br />

zfs set atime=off testpool<br />

zfs set exec=off testpool<br />

zfs mount testpool<br />

Der Testpool ist lesbar, die forensischen Attribute<br />

sind gesetzt, das ZFS-Raid kann somit<br />

problemlos ausgewertet werden.<br />

gravierenden Nachteil, dass sich aktuelle<br />

Pool-Versionen nicht mounten lassen.<br />

Zur Analyse bestehender Systeme taugt<br />

es deshalb weniger.<br />

Während Admins primär an der Leistung<br />

orientiert sind und ihre Pools selbst<br />

erstellen, muss der Forensiker bei sichergestellten<br />

Systemen Lesezugriff und<br />

Schreibschutz gewährleisten und mit<br />

Images arbeiten (Kasten „ZFS mit EWF-<br />

Images“). Das klappt mit KQ Infotechs<br />

Treibern, der Fuse-Treiber dagegen erlaubte<br />

im Test unter Ubuntu 10.10 kein<br />

erfolgreiches Read-only-Mounten des<br />

Raid-Pools und konnte den Testpool aus<br />

den virtuellen Images nicht finden.<br />

Besser auf Version 4 warten<br />

Wer noch kein ZFS-fähiges Betriebssystem<br />

installiert hat, sollte sich auf jeden Fall für<br />

eines mit ZFS in Version 4 entscheiden.<br />

Die KQ-Infotech-Lösung scheint nicht nur<br />

für Forensiker das derzeitige Optimum<br />

zu sein, sondern auch für Admins, die<br />

bestmögliche Performance benötigen und<br />

bei der gewohnten Device-Syntax bleiben<br />

wollen.<br />

Bis auf den Rewrite-Wert können sich die<br />

hier gemessenen Werte durchaus sehen<br />

lassen, sie liegen nur knapp unter denen<br />

von Open Solaris. Den vielversprechenden<br />

Ansatz von Kfree BSD, ein Debian<br />

auf einen Kernel von Free BSD aufzusetzen,<br />

sollten anspruchsvolle Admins erst<br />

nach einer Aktualisierung auf Version 4<br />

in Betracht ziehen.<br />

n<br />

Infos<br />

[1] Kfree BSD: [http://www.linux-magazin.de/<br />

NEWS/Debian-Squeeze-unterstuetzt-ZFS<br />

-mit-kFreeBSD]<br />

[2] Proprietärer ZFS-Treiber von KQ Infotech:<br />

[http://zfs-kqinfotech.com]<br />

[3] ZFS via Fuse: [http://www.linux-magazin.<br />

de/NEWS/ Nativer-ZFS-Support-fuer-<strong>Linux</strong>]<br />

[4] Ulrich Gräf, „ZFS“: <strong>Linux</strong> Technical Review<br />

02/ 07, S. 126<br />

[5] CDDL: [http:// hub.OpenSolaris.org/bin/<br />

download/ Main/ licensing/cddllicense.txt]<br />

[6] Kfree-BSD-Wiki: [http://wiki.debian.org/<br />

Debian_GNU/ kFreeBSD]<br />

[7] Iozone: [http://www.iozone.org]<br />

[8] Xmount: [https://www.pinguin.lu]<br />

[9] Hans-Peter Merkel, Markus Feilner, „Kreuz<br />

und quer“: <strong>Linux</strong>-<strong>Magazin</strong> 10/ 09, S. 90<br />

<strong>Linux</strong> und ZFS 02/<strong>2011</strong><br />

Sysadmin<br />

www.linux-magazin.de<br />

89


Forum<br />

www.linux-magazin.de Winterrätsel 02 /<strong>2011</strong><br />

92<br />

Rückblick auf das vergangene Jahr in Quizform<br />

Winterrätsel<br />

Seufzend auf das verflossene Jahr zurückblicken fällt leicht. Das ganz und gar nicht einfache Winterrätsel<br />

fordert hingegen heraus: Wer wurde wo Community-Chef, wer musste gehen? Was erschütterte Industrien, was<br />

Regierungen? Wer erhielt Ehrungen und wer hatte die ultimative Antwort parat? Nils Magnus, Wolfgang Drotschmann<br />

Januar<br />

1<br />

Einer der frühen Kernelentwickler tritt bei einem neuen Arbeitgeber<br />

im Januar seinen Job an und krempelt dort gleich die<br />

Dateisysteme um. Eine andere Abteilung dieses Unternehmens<br />

bringt erstmals eine eigene Hardware heraus. Welche Süßspeise<br />

stand Pate bei der dazu entwickelten Software-Release?<br />

2<br />

Ein Dotnet-Befürworter für <strong>Linux</strong> verlässt im Januar seinen Arbeitgeber.<br />

Dieses Schicksal teilt er mit dem Community-Manager<br />

eines Projekts, das das gleiche Unternehmen maßgeblich<br />

unterstützt. Welches Tier ist der Botschafter dieses Projekts?<br />

Februar<br />

3<br />

Stühlerücken beim Distributionshersteller: Weil der freundliche<br />

Diktator nicht mehr Chef sein will, überlässt er seinen Titel<br />

seiner Stellvertreterin. Deren Platz nimmt für nur einige Monate<br />

ein Dokumentenverwalter ein und kümmert sich ums Operative.<br />

In welchem Datenformat sieht er nun seine berufliche Zukunft?<br />

4<br />

Hochzeit unterwegs: Zwei mobile Projekte tun sich zusammen,<br />

um künftig schönere Oberflächen und stabiles <strong>Linux</strong> auf<br />

Smartphones & Co. zu zaubern. Später im Jahr feiern die Entwickler<br />

die offizielle Version in einer Sportstätte. Welche Sportart<br />

kommt dort ohne kugelförmige Geräte aus?<br />

März<br />

5<br />

Im Lichte der Abenddämmerung verlässt ein Open-Source-<br />

Herold seinen bis dahin sonnigen Arbeitsplatz, doch findet er<br />

schon bald Unterschlupf bei einem Wächterrat für Lizenzen.<br />

Welchen Begriff prägte die Organisation?<br />

6<br />

Auf der Cebit ehrt eine internationale<br />

Jury ein Projekt für seine Innovation,<br />

denn es hatte das Wiki-Prinzip auf einen<br />

ganz anderen Bereich als die bisherigen<br />

Lexikon-Lemmata übertragen. Zu welchem<br />

Suchdienst wechselt der Gründer des Projekts<br />

im Laufe des Jahres?<br />

April<br />

7<br />

Nicht das I-Pad, sondern eine heimische Entwicklung will erster<br />

Teilnehmer im Sandkasten der Tablet-PCs werden. Das füllt in<br />

den kommenden Monaten zumindest die Technik-Klatschspalten<br />

mit Ankündigungen und Skandälchen. Als Ehrenmitglied welcher<br />

Vereinigung gibt sich später im Jahr fatalerweise der Impresario der<br />

viel diskutierten Kampagne aus?<br />

8<br />

Eine würdevollere Ehrung nimmt der Gründer einer europäischen<br />

Lobbyorganisation für Nicht-Open-Source-Software<br />

entgegen. Damit ist er bereits der zweite Deutsche, der für<br />

diese Tätigkeiten ausgezeichnet wird. Welches Projekt begründete<br />

der erste Ordensträger?<br />

Mai<br />

9<br />

Turbulent verläuft der Monat für Fedora: Mit leichter Verspätung<br />

gibt das Projekt Version 13 „Goddard“ heraus und<br />

kündigt Version 14 „Laughlin“ an. Erst später im Jahr kommt<br />

noch Fedora 15 „Lovelock“ dazu. Auch beim Personal gibt es einen<br />

Stabwechsel. In welcher Programmiersprache faxte der neue Projektleiter<br />

früher gelegentlich seiner späteren Frau Liebesbriefe?<br />

10<br />

Vier Studenten sind die Sammelwut sozialer Netzwerke<br />

wie Facebook & Co. leid, brauchen aber Geld, um eine<br />

dezentralere Version zu programmieren. Das bekommen<br />

sie dann auch reichlich. Wie nennen sie ihre Server?<br />

Juni<br />

11 Ein dritter prominenter Redner stellt gar die binäre Antwort<br />

Stelldichein auf dem <strong>Linux</strong>tag: Microsoft verkündet, fortan<br />

zu den Guten zu gehören, Google entwickelt eigene Codecs.<br />

auf das Leben, das Universum und den ganzen Rest in Aussicht. Wo<br />

hausen ihrem Namen nach die putzigen Maskottchen, die für die<br />

Antwort Pate stehen?<br />

12<br />

Den Kernelentwicklern scheint ein Dateisystem für große<br />

Datenmengen besonders suspekt zu sein: Es gibt bis heute<br />

in den offiziellen Quellen keine Kern-Implementierung für<br />

<strong>Linux</strong>, nur als Modul im Userspace. Im Laufe des Jahres kommen<br />

aber zwei native Implementationen dazu. Welche Lizenz verhindert<br />

bis heute die Aufnahme des Ursprungscode in den Vanilla-Kernel?


So funktioniert’s<br />

Meist lassen sich die Fragen durch ein einzelnes Wort beantworten, sonst zählt das erste Wort,<br />

bei Namen der Nachname. Jeweils der erste Buchstabe ist auf [http://linux-magazin.de/winter] oder in<br />

das unten abgedruckte Diagramm einzutragen. Beide berechnen die Lösung durch die angegebene Addition. Dabei gilt:<br />

A µ 0, B µ 1, … Ist eine Summe größer als das Äquivalent des Z, gibt es einen Überlauf zum A. Beispiel: X + D = B.<br />

+<br />

E<br />

=<br />

+<br />

Juli<br />

13<br />

Die Release einer in Deutschland beheimateten <strong>Linux</strong>-Distribution<br />

bringt eine der ersten Aufgaben für ihren neuen<br />

Community-Manager aus den Niederlanden. Bei welchem<br />

anderen Projekt arbeitete er vorher lange mit?<br />

14<br />

Obwohl die neue Version einer Software nun auch 64-Bit-<br />

Code ausführt, nützt sie <strong>Linux</strong>-Programmen gar nichts. Wie<br />

heißt eine Software für Solaris, die vor über 15 Jahren eine<br />

ähnliche Funktion umsetzte?<br />

August<br />

Ein Webprojekt, das angetreten war, E-Mail und Kommunikation<br />

zu revolutionieren, schlägt ein paar Wellen – weil<br />

15 seine Entwickler es einstellen. Deutlich höheren Wellengang<br />

hingegen verursacht deren Idee, eine andere Software in<br />

anderen Bereichen einzuführen. Welche deutsche Politikerin stellt<br />

sich an die Spitze der Bedenkenträger?<br />

16<br />

So richtig zufrieden sind die Mitglieder eines Steuerungsgremiums<br />

nicht mit ihrem neuen Sponsor und besiegeln so<br />

faktisch das Ende einer freien Betriebssystem-Distribution.<br />

Ganz aufgeben will eines ihrer Mitglieder aber noch nicht und ändert<br />

darum später die Basis für seine Live-Distribution. Wie heißt diese<br />

neue Grundlage?<br />

September<br />

17<br />

Ein Virus lässt nicht nur Experten, sondern auch Industrieanlagen<br />

rotieren. Welches Modell zum Überwachen und<br />

18<br />

Steuern nutzt die Malware, um ihr Unwesen zu treiben?<br />

Als ein Projekt mit den langsamen Reaktionen seines Sponsors<br />

nicht mehr zufrieden ist, vollzieht es das Schisma des<br />

Jahres – fast genau ein Jahrzehnt nach seiner Gründung.<br />

Der damalige Spender hostete die Quellen bei der Firma eines Entwicklers,<br />

der als Urvater welches Servers gilt?<br />

Oktober<br />

+<br />

D<br />

=<br />

+<br />

+<br />

L<br />

=<br />

+<br />

+<br />

S<br />

=<br />

+<br />

+<br />

P<br />

=<br />

+<br />

+<br />

U<br />

=<br />

19<br />

Zum vierten Mal in diesem Jahr veröffentlicht ein Auswanderer<br />

eine stabile Version – neuerdings mit einer Rüstung<br />

für Anwendungen. Welche Modellbezeichnung trägt ein<br />

Erbstück, das ihm in der Heimat ein Statistikprofessor vermachte?<br />

20<br />

Stühlerücken in Projekten und Unternehmen: MySQL-<br />

Veteran Kaj Arnö geht zu SkySQL, Mozilla bekommt einen<br />

neuen Chef, der erste Marketingoffizier des Open-Office-<br />

Projekts verlässt das Boot, und eine Distribution besetzt den Posten<br />

des Kassenwarts mit ihrem ehemaligen Chef. Vor seiner Promotion<br />

studierte der auf einem fernen Kontinent. In welcher Stadt?<br />

+<br />

+<br />

M<br />

=<br />

+<br />

+<br />

J<br />

=<br />

+<br />

+<br />

A<br />

=<br />

+<br />

+<br />

R<br />

=<br />

+<br />

+<br />

V<br />

=<br />

+<br />

+<br />

H<br />

=<br />

+<br />

+<br />

U<br />

=<br />

+<br />

+<br />

R<br />

=<br />

+<br />

+<br />

G<br />

=<br />

November<br />

Aufregung erzeugt die Ankündigung, in einer populären<br />

Distribution mittelfristig eine zentrale Desktop-Kompo-<br />

21 nente zu ersetzen. Die war in der Vergangenheit schon<br />

mehrfach Spielball von Forks und Neugründungen. Welcher heutige<br />

Intel-Entwickler wurde einst sogar von der Entwicklung eines Teilzweiges<br />

ausgeschlossen?<br />

22<br />

Die Kasse klingelt: Für ein erkleckliches Sümmchen<br />

wechseln die Besitzer eines Unternehmens, das auch<br />

Heimat für eine <strong>Linux</strong>-Distribution ist. Wer unterzeichnete<br />

nur einige Monate zuvor ein ähnliches Angebot, das die Firmenleitung<br />

damals ablehnte?<br />

Dezember<br />

+<br />

+<br />

R<br />

=<br />

+<br />

+<br />

J<br />

=<br />

+<br />

+<br />

V<br />

=<br />

+<br />

+<br />

S<br />

=<br />

23 hatte Anfang des Jahres bereits berichtet, dass deren<br />

Großes Aufsehen erregt das Wirken einer Plattform zum<br />

Management bestimmter Dokumente. Das <strong>Linux</strong>-<strong>Magazin</strong><br />

Protagonisten eine Reihe von Gesetzesänderungen befürworteten.<br />

In welchem Land sollen diese Reformen ihre Wirkung entfalten?<br />

24<br />

Glänzende Aussichten prognostiziert sich selbst ein Tool,<br />

das seine Entwickler langfristig zum Betriebssystem ausbauen<br />

wollen (und das nicht der Emacs ist). Sie geben<br />

bekannt, dass sich dessen Nutzerzahlen binnen Jahresfrist verdreifacht<br />

hätten. Wie bezeichnen sie das dazu passend entworfene<br />

limitierte Test-Hardware-Modell?<br />

+<br />

+<br />

R<br />

=<br />

+<br />

+<br />

M<br />

Fachbücher zu gewinnen<br />

Wer die Fragen korrekt beantwortet und samt Lösungssatz<br />

einsendet, nimmt an der Verlosung teil.<br />

Unter den besten Einsendern verlost die Redaktion<br />

jeweils zwei Exemplare der drei Neuerscheinungen<br />

von Open Source Press:<br />

„Cyberwar“ von Sandro Gaycken fragt,<br />

wer im Netz eigentlich gegen wen kämpft<br />

und mit welchen Waffen. Harmonischer<br />

geht es beim Open-Source-Entwickeln<br />

zu: GRML-Projektleiter Michael Prokopp<br />

beschreibt die Regeln und Vorgehensweisen.<br />

An Praktiker richtet sich Stefan<br />

Schäfers „Root-Server“. Er erklärt die wichtigsten Schritte<br />

zum eigenen Rechner beim Hoster.<br />

Die meisten Fragen lassen sich durch ein Wort beantworten. Bei Namen<br />

ist das der Nachname, ansonsten das erste Wort. Der Lösungssatz drückt<br />

einen Wunsch aus. Wer ihn und die Antworten der Fragen bis zum 31.<br />

Januar <strong>2011</strong> an [winter@linux-magazin.de] schickt, nimmt an der Verlosung<br />

teil. Das <strong>Linux</strong>-<strong>Magazin</strong> veröffentlicht die Namen der Gewinner.<br />

Der Rechtsweg ist ausgeschlossen.<br />

=<br />

+<br />

+<br />

K<br />

=<br />

+<br />

+<br />

F<br />

=<br />

+<br />

+<br />

Y<br />

=<br />

Winterrätsel 02/<strong>2011</strong><br />

Forum<br />

www.linux-magazin.de<br />

93


PRAXISORIENTIERTE ARTIKEL,<br />

WORKSHOPS UND TESTS<br />

ALS MAGAZIN<br />

FÜR DIE PRAXIS<br />

präsentiert <strong>Linux</strong>User die Inhalte<br />

weitgehend in Form lösungsorientierter<br />

Artikel mit Workshop-<br />

Charakter. Darüber hinaus<br />

liefern Software-Rezensionen,<br />

Hardware-Tests und Grundlagenbeiträge<br />

aktuelle Produktinformationen<br />

und Basiswissen zu den<br />

technischen Hintergründen.<br />

WIE OFT?<br />

<strong>Linux</strong>User erscheint<br />

12x im Jahr<br />

WAS IST DABEI?<br />

<strong>Linux</strong>User gibt es als DVD-Edition sowie<br />

als preisgünstige No-Media-Ausgabe.<br />

Auf je 108 Seiten Umfang besprechen<br />

beide Heftvarianten aktuelle Soft- und<br />

Hardware für <strong>Linux</strong>-PCs.<br />

WAS KOSTET DAS?<br />

Jahresabo ohne DVD<br />

in Deutschland: 56,10 Euro<br />

Jahresabo DVD-Version in<br />

Deutschland: 86,70 Euro<br />

KÜNDIGUNGSFRIST?<br />

Wir sind fair zu unseren Kunden - Sie<br />

können selbst entscheiden, wie lange Sie<br />

<strong>Linux</strong>User beziehen möchten. Es gibt keine<br />

Kündigungsfrist, Sie können die Zustel-<br />

lung jederzeit beenden. Geld für bereits<br />

bezahlte, aber noch nicht gelieferte<br />

Ausgaben erhalten<br />

Sie zurück!<br />

ABOVORTEILE<br />

Preisvorteil gegenüber Kioskkauf<br />

kostenlose & sichere Zustellung<br />

Zustellung vor dem offiziellen<br />

Verkaufstermin


ERSTMAL TESTEN?<br />

GELD SPAREN!<br />

SIE SPAREN 22,50€ GEGENÜBER<br />

DEM EINZELKAUF<br />

TESTEN SIE<br />

3 Ausgaben<br />

LINUXUSER<br />

FÜR NUR<br />

3 <br />

OHNE RISIKO TESTEN!<br />

Testen Sie uns sorgenfrei drei Monate lang. Nur wenn Sie 14 Tage nach Eintreffen der dritten<br />

Ausgabe nichts von sich hören lassen, erhalten Sie <strong>Linux</strong>User weiter jeden Monat frei Haus<br />

zum Vorzugspreis von € 7,23 statt € 8,50 im Einzelverkauf.<br />

Lesen Sie <strong>Linux</strong>User im Miniabo und Sie nehmen<br />

automatisch an unserem Gewinnspiel teil:<br />

GEWINNEN SIE...<br />

EINE VON DREI 7LINKS OUTDOOR-IP-KAMERAS<br />

"IPC-710IR" IM WERT VON ÜBER 500,- EURO<br />

(Verlosung am 06.12.2010)<br />

IHRE BESTELLMÖGLICHKEITEN<br />

Shop: www.linux-user.de/abo Telefon: 089/ 20959-127<br />

Fax: 089/ 20028115<br />

E-Mail: abo@linux-user.de<br />

Weitere Infos rund um <strong>Linux</strong>User finden Sie unter www.linuxuser.de


Forum<br />

www.linux-magazin.de Rechts-Rat 02/<strong>2011</strong><br />

96<br />

Leser fragen, der <strong>Linux</strong>-<strong>Magazin</strong>-Ratgeber antwortet<br />

Recht einfach<br />

Urheberrecht, Verträge, Lizenzen und so weiter: In der Serie „Rechts-Rat“ erhalten <strong>Linux</strong>-<strong>Magazin</strong>-Leser verständliche<br />

Auskünfte zu Rechtsproblemen des <strong>Linux</strong>-Alltags. Fred Andresen<br />

©designpics,123RF.com<br />

Abbildung1:BeiderNamensfindungfürSoftwarekönnendie<br />

LizenzenundRechtsprechungdifferieren.<br />

In dieser Ausgabe geht’s um juristische<br />

Termini, Programm- und Markennamen,<br />

die Weitergabe digitaler Literatur und<br />

die Zulässigkeit von Automatisierungs-<br />

Komfort.<br />

i Wasistwas:Bestand,<br />

Nutzung,Verkehr<br />

Viele Vorschriften unterscheiden zwischen Bestands-<br />

und Nutzungsdaten. Wo liegt der genaue<br />

Unterschied zwischen diesen Daten und wofür<br />

ist das wichtig?<br />

Jens K.<br />

Thema sind hier Sonderfälle bei der Speicherung<br />

von personenbezogenen Daten,<br />

die grundsätzlich in den Datenschutzgesetzen<br />

des Bundes und der Länder geregelt<br />

sind. Im IT-Bereich geht es regelmäßig<br />

um die Spezialbereiche<br />

der Tele- und Mediendienste.<br />

Die gefragte Unterscheidung<br />

ist konkret in den Bestimmungen<br />

des Telemediengesetzes<br />

(TMG, [1]) getroffen und in<br />

erster Linie für dessen Anwendungsbereich<br />

wichtig.<br />

Es handelt sich um besondere<br />

Regelungen für die Speicherung<br />

von personenbezogenen<br />

Daten seitens Informationsund<br />

Kommunikationsdiensten,<br />

sofern sie nicht reine<br />

Telekommunikation wie Telefonie<br />

sind. Vor allem umfasst<br />

das die typischen Webdienste<br />

oder E-Mail.<br />

Nach Paragraf 14 des TMG<br />

sind Bestandsdaten solche,<br />

die für die Begründung, inhaltliche<br />

Ausgestaltung oder<br />

Änderung des Vertragsverhältnisses<br />

erforderlich sind.<br />

Als Nutzungsdaten gelten dagegen nach<br />

Paragraf 15 TMG solche zur Inanspruchname<br />

und Bezahlung von Telemedien,<br />

insbesondere die Identifizierungsmerkmale<br />

oder Nutzungszeiten. Bestandsdaten<br />

sind somit all jene, die für den Vertrag<br />

nötig sind. Nutzungsdaten dienen der<br />

Abrechnung.<br />

Eine ähnliche Unterscheidung trifft das<br />

Telekommunikationsgesetz (TKG, [2]),<br />

das für die klassischen Telekommunikationsdienste<br />

wie Telefonie einschlägig ist.<br />

Hier entspricht der Begriff der Verkehrsdaten,<br />

der in Paragraf 96 TKG geregelt<br />

ist, weitgehend den Nutzungsdaten des<br />

Telemediengesetzes.<br />

Regelmäßig wird der Sonderfall herangezogen,<br />

dass bei so genannten Flatrate-<br />

Angeboten keine Erhebung von Nutzungsdaten<br />

oder Verkehrsdaten nötig<br />

und damit nicht zulässig sei. Weil die<br />

ordnungsgemäße Abrechnung aber nicht<br />

nur das bloße Vereinnahmen der Entgelte<br />

umfasst, sondern auch die Nachweise<br />

über tatsächlich bezogene Vertragsleistungen,<br />

ist auch in diesen Fällen die reine<br />

Erfassung und folgende Speicherung bis<br />

zum Ablauf zivilrechtlicher Verjährungsfristen<br />

rechtlich unproblematisch.<br />

Die Rechtsordnung sieht in solchen Situationen<br />

jedoch vor, die Daten zu sperren.<br />

Falls ein Kunde nach Wochen oder<br />

Monaten behauptet, er hätte technisch<br />

keine Möglichkeit gehabt, die Dienste zu<br />

nutzen, kann ihm der Dienstleister die effektiven<br />

Nutzungsdaten des betreffenden<br />

Zeitraums entgegenhalten.<br />

i Wienenneichmein<br />

Programm?<br />

Wenn ich freie Software ändere, muss ich das<br />

Programm dann unter dem gleichen Namen weitergeben<br />

oder darf ich das gar nicht?<br />

Andreas F.<br />

Wenn die Lizenzbestimmungen nicht<br />

explizit fordern, Bearbeitungen unter<br />

dem gleichen Namen zu veröffentlichen,<br />

wäre es gerade im Bereich gewerblich<br />

genutzter oder entwickelter Programme<br />

sinnvoll, nicht den Originalnamen zu<br />

benutzen. Das vermeidet etwaige Marken-<br />

oder Kennzeichenverletzungen. Ein<br />

Obergericht hatte vor Kurzem über einen<br />

entsprechenden Fall zu entscheiden und<br />

festgestellt, dass die GPL keine Befugnis<br />

zur Nutzung des (Marken-)Namens des<br />

Programms erteilt [3].<br />

Die Urheberrechte am Programm und die<br />

Markenrechte am Namen dürfen unabhängig<br />

voneinander bestehen. Im Normalfall<br />

umfasst das Urheberrecht auch<br />

den Werktitel, sodass Titel und Inhalt


eines Sprachwerks im Verbund einheitlichen<br />

urheberrechtlichen Schutz genießen.<br />

Weil die GPL eine „urheberrechtswirksame“<br />

Lizenz ist, liegt es nahe, dass<br />

mit ihr auch entsprechende Nutzungsund<br />

Verbreitungsrechte am Titel des Werkes<br />

umfasst wären.<br />

Das Gericht stellte jedoch vorrangig auf<br />

die eingetragene Marke ab. Der Softwarehersteller<br />

hatte sie registriert und<br />

verwehrte dem Vervielfältiger des Programms<br />

das Recht, es unter diesem Namen<br />

zu verbreiten. Der Vervielfältiger<br />

könne und solle es unter einem eigenen<br />

Namen vertreiben.<br />

Die Folge dieses Urteils wäre eine steigende<br />

Zersplitterung der Programme, die<br />

noch weit über das Problem der bereits<br />

bekannten Forks hinausreicht (Abbildung<br />

1). Das Gericht hat möglicherweise in<br />

seiner Entscheidungsfindung nicht ausreichend<br />

darauf abgestellt, ob und inwieweit<br />

eine urheberrechtliche Gestattung<br />

der Namensnutzung im Widerspruch zu<br />

markenrechtlichen Ansprüchen steht –<br />

und diese überwiegen kann.<br />

Wer im kommerziellen Bereich auf freie<br />

Software setzt, sollte sich dementsprechend<br />

absichern. Lediglich die Nutzung<br />

des Programmnamens in der Beschreibung<br />

von Software oder Dienstleistung<br />

könne – so das Gericht – keine fremde<br />

Markenrechte verletzen.<br />

i GebrauchteE-Books<br />

weiterverkaufen?<br />

Die Verlage versuchen ja, die Benutzung von<br />

E-Books der eines normalen Buches gleichzusetzen:<br />

Das per DRM geschützte E-Book kann<br />

immer nur von einer Person gelesen werden. Gebrauchte<br />

Bücher kann ich problemlos weiterverkaufen.<br />

Darf ich das auch mit E-Books? Gibt es<br />

in diesem Zusammenhang auch den „Erschöpfungsgrundsatz“?<br />

Was passiert, wenn ein E-Book<br />

als Watermark meine E-Mail-Adresse enthält, der<br />

Käufer dann Schindluder damit treibt und Raubkopien<br />

davon verkauft?<br />

Stefan A.<br />

der wirtschaftlichen Realität der Rechte-<br />

Inhaber – allein bestimmen darf, ob und<br />

wie er sein Werk nutzt, vervielfältigt, aufführt<br />

oder eben auch weitergibt. Der Erschöpfungsgrundsatz<br />

stellt aber fest, dass<br />

sich diese Urheberverwertungsrechte in<br />

einem Werkstück erschöpfen, sobald es<br />

in den Verkehr gelangt.<br />

Das bedeutet, dass zwar auch weiterhin<br />

grundsätzlich der Urheber (Rechte-Inhaber)<br />

bestimmt, wer sein Buch liest und<br />

wie und durch wen es weiterzugeben ist.<br />

Er kann dies aber nur, soweit es nicht ein<br />

konkretes Buch betrifft – das so genannte<br />

Werkstück. Dies darf der Inhaber beliebig<br />

weiterveräußern.<br />

Der Erschöpfungsgrundsatz ist dennoch<br />

systematisch als Ausnahme zu begreifen.<br />

Er hängt von verschiedenen Voraussetzungen<br />

ab: Zum einen muss das einzelne<br />

Werkstück mit Wissen und Wollen des<br />

Rechte-Inhabers in den Verkehr gelangt<br />

sein. Es muss sich also um ein rechtmäßig<br />

erworbenes Werkstück handeln und<br />

darf nicht etwa ein aus dem Safe des<br />

Verlegers entwendetes Manuskript sein.<br />

Das entscheidende Kriterium ist aber das<br />

des Werkstücks.<br />

Nach bisher herrschender Meinung handelt<br />

es sich bei einem Werkstück automatisch<br />

um etwas Körperliches: Ein Buch,<br />

das sich in die Hand nehmen, oder eine<br />

Filmrolle, die sich in einen Projektor einlegen<br />

lässt. Bei modernen digitalisierten<br />

Werken kommt es darauf an, ob diese in<br />

Verbindung mit einem Datenträger als<br />

Werkstück anzusehen sind oder nicht.<br />

Gelten DVDs, die Musik oder Filme enthalten,<br />

als solche Werkstücke, gilt für<br />

diese auch der Erschöpfungsgrundsatz.<br />

Folglich darf man Musik-CDs oder Film-<br />

DVDs beliebig weiterveräußern.<br />

Wofür der Erschöpfungsgrundsatz hingegen<br />

noch nicht gilt, sind in digitaler Form<br />

vorliegende Daten, die nur als Kopien<br />

weiterzugeben wären. Das betrifft alle<br />

urheberrechtlich geschützten Werke, die<br />

nur im Download oder per Streaming erhältlich<br />

sind. Weil hier kein körperlicher<br />

Datenträger und somit kein Werkstück<br />

vorliegt, ist der Erschöpfungsgrundsatz<br />

nicht anwendbar. Also dürfen auf diese<br />

Weise bezogene Daten nicht weiterververkauft<br />

werden – auch dann nicht, wenn<br />

der Veräußerer alle verbleibenden Kopien<br />

löscht (Abbildung 2).<br />

Doch es gibt in letzter Zeit verstärkt Tendenzen,<br />

auch digitale Downloads wie<br />

Werkstücke zu behandeln. So meinen<br />

einige Juristen, dass das Medium des<br />

Erstpeichervorgangs den Anforderungen<br />

an einen körperlich verbundenen Datenträger<br />

genügen sollte, also etwa die<br />

Festplatte, auf der die Downloads gelandet<br />

sind. Diese Ansätze berücksichtigen<br />

jedoch nur die Interessen des Publikums<br />

an möglichst ungehindertem freien Leistungstausch.<br />

Sie übersehen den ohnehin<br />

bereits strengen Ausnahmecharakter des<br />

Erschöpfungsgrundsatzes, der durch die<br />

EU-Richtlinien zum Urheberrecht eher<br />

noch strenger auszulegen ist, als ohnehin<br />

bereits der Fall.<br />

Im Ergebnis bleibt die Weitergabe heruntergeladener<br />

oder gestreamter Daten<br />

urheberrechtlich leider unzulässig. Wenn<br />

nicht ausdrücklich die Genehmigung des<br />

Urhebers oder Rechte-Inhabers vorliegt,<br />

Rechts-Rat 02/<strong>2011</strong><br />

Forum<br />

www.linux-magazin.de<br />

97<br />

Sie sprechen in diesem Zusammenhang<br />

den Erschöpfungsgrundsatz im Sinne des<br />

Paragrafen 17 Absatz 2 Urheberrechtsgesetz<br />

an [4], der das zentrale Rechtskonstrukt<br />

für dieses und ähnliche Probleme ist.<br />

Die Prinzipien des Urheberrechts besagen,<br />

dass grundsätzlich der Urheber – in<br />

©36clicks,123RF.com<br />

Abbildung2:E-BooksgeltennichtalskörperlicheDatenunddamitnichtalsWerkstücke.


Forum<br />

www.linux-magazin.de Rechts-Rat 02/<strong>2011</strong><br />

98<br />

handelt es sich bei E-Book-Inhalten<br />

ebenso wie bei Musicstore-Downloads<br />

um geschützte Werke, die Sie nicht weitergeben<br />

dürfen – weder entgeltlich noch<br />

kostenlos.<br />

i Auto-Configureund<br />

dieGPL<br />

In meinem GPL3-lizenziertem Programm befolge<br />

ich die Regel, das Automatisierbares automatisiert<br />

werden soll. Ich verwende eine Handvoll<br />

Komponenten von Nokias beziehungsweise<br />

Trolltechs Qt-Solutions-Katalog. Dafür ist der<br />

LGPL2.1 oder wahlweise der GPL3 zuzustimmen,<br />

da Komponenten die Präsenz einer Datei ».licenseAccepted«<br />

überprüfen. Normalerweise geschieht<br />

die Zustimmung beim Aufruf von »configure«<br />

im jeweiligen Komponenten-Ordner.<br />

Nun akzeptiert eines meiner Makefiles die Lizenz<br />

automatisch, etwa für »QtColorTriangle«: Die<br />

Krux liegt in Zeile 3, in welcher ich einfach den<br />

Text „license accepted“ in ».licenseAccepted«<br />

schreibe. Ist das zulässig in Anbetracht, dass<br />

die Lizenz meines Programms kompatibel ist mit<br />

den Lizenzen der Komponenten?<br />

Sebastian M.<br />

Im Prinzip ist die durchgeführte Automatisierung<br />

ja nur eine Ergänzung der Automatisierung,<br />

die bereits das ursprüngliche<br />

Configure-Skript durchführt: Auch durch<br />

Abklicken der menügeführten Abfrage<br />

kommt es zum gleichen Datei-Eintrag. Die<br />

urheberrechtliche Lizenz ist ein Vertrag,<br />

der der Zustimmung des Vertragspartners<br />

bedarf (Abbildung 3). Diese Zustimmung<br />

kann auf verschiedene Arten erfolgen,<br />

entweder ausdrücklich – also durch den<br />

explizit mündlich oder schriftlich oder<br />

in anderer Form erklärten Willen – oder<br />

konkludent, also durch eine Handlung,<br />

die den Willen des Handelnden nach außen<br />

erkennbar macht.<br />

Das Prinzip der GPL und anderer vergleichbarer<br />

Softwarelizenzen ist es ja<br />

gerade, dass diese an bestimmte Bedingungen<br />

geknüpft sind: Nur wer der<br />

Lizenz zustimmt, darf die Software als<br />

urheberrechtlich geschütztes Werk entsprechend<br />

nutzen, vervielfältigen oder<br />

weitergeben.<br />

Darüber hinaus gilt – zumindest bei<br />

den GPL-Versionen – das Prinzip der<br />

Direktlizenzierung. Das bedeutet, dass<br />

derjenige, an den Sie die übernommenen<br />

Codebestandteile weitergeben, seine<br />

©RainerPlendl,123.rf.com<br />

Abbildung3:DieAutomatisierungderAutomatisierungbirgtauchrechtlicheTücken–nichtnursprachliche.<br />

Lizenz unmittelbar von dem oder den ursprünglichen<br />

Rechte-Inhabern erhält und<br />

nicht von Ihnen. Von Ihnen bekommt<br />

der Erwerber lediglich unmittelbar die<br />

Lizenz bezüglich des von Ihnen selbst<br />

erstellten Code.<br />

Das bedeutet, dass für Sie im Verhältnis<br />

zu Ihren Lizenzgebern die Verpflichtung<br />

bestehen bleibt, den vollständigen Lizenztext<br />

unverändert an Ihre Abnehmer<br />

weiterzugeben. Das gilt jeweils für alle<br />

unterschiedlichen Lizenzen in Bezug auf<br />

die ihnen unterliegenden Code-Bestandteile<br />

(LGPL, GPL). Ist das gewährleistet,<br />

bleibt unerheblich, ob und mit welcher<br />

technischen Umsetzung Sie die Zustimmung<br />

abfragen: Schließlich muss gerade<br />

den GPL-Lizenzen nicht ausdrücklich zugestimmt<br />

werden, wie bereits Ziffer 5 der<br />

GPLv1 vorsah.<br />

Eine abweichende Verpflichtung ergibt<br />

sich allenfalls aus Ziffer 2c GPLv1 und<br />

vergleichbaren Bestimmungen. Denn bei<br />

dem Configure-Dialog handelt es sich<br />

um ein interaktives Kommando, das bei<br />

der Programmausführung Benutzereingaben<br />

entgegennimmt. Nach dieser Bestimmung<br />

müssen bei einer Bearbeitung<br />

besondere Hinweispflichten erfüllt werden:<br />

Urhebervermerke, etwa bestehende<br />

Haftungsausschlüsse, Verweis auf die<br />

GPL-Lizenzierung und der Speicherort<br />

der Lizenzbestimmungen.<br />

Diese Hinweispflichten bestehen hingegen<br />

nicht, wenn und soweit das bearbeitete<br />

Programm bereits interaktive Eingaben<br />

entgegennahm und keine solchen<br />

Hinweise enthielt. Im Umkehrschluss<br />

folgt daraus: Wenn das bearbeitete Programm<br />

derartige Hinweise enthielt, darf<br />

niemand sie unterdrücken oder umgehen.<br />

Und natürlich darf ein interaktives<br />

Programm, das solche Hinweise enthielt,<br />

entsprechend auch nicht wieder „de-interaktiviert“<br />

werden.<br />

Weil es für die Wirksamkeit der Lizenz<br />

zwar nicht auf den Accept-Vermerk ankommt,<br />

die entsprechende Abfrage aber<br />

wohl zu Recht als bei einer Benutzerinteraktion<br />

erfolgender Hinweis auf die<br />

zugrunde liegende Lizenz anzusehen ist,<br />

scheint die Unterdrückung dieses Hinweises<br />

durch die erfolgte Skript-Automatisierung<br />

als mögliche Verletzung der<br />

GPL-Bestimmungen.<br />

Dagegen mögen manche vielleicht argumentieren,<br />

dass ja das bloße Setup<br />

per Configure-Skript mit dem eigentlichen<br />

Programm kaum etwas zu tun hat.<br />

Doch wenn auch das Configure-Skript<br />

der General Public License unterliegt,<br />

dann wäre schon die bloße Umgehung<br />

eine GPL-Verletzung. (uba/ake) n<br />

Infos<br />

[1] TMG:<br />

[http://www. gesetze-im-internet.de/tmg/]<br />

[2] TKG: [http:// www.gesetze-im-internet.de/<br />

tkg_2004/]<br />

[3] Oberlandesgericht Düsseldorf, Urt. vom<br />

28.9.2010, I-20 U 41/ 09:<br />

[http://www. ifross. org/Fremdartikel/<br />

OLGDuesseldorfxtcommerce.pdf]<br />

[4] UrhG:<br />

[http://www. gesetze-im-internet.de/urhg/]


Neues bei Debian<br />

Debianopolis<br />

Debian 02/<strong>2011</strong><br />

Forum<br />

Debian ist frei und seine Entwickler sind Kosmopoliten. Das <strong>Linux</strong>-<strong>Magazin</strong> berichtet regelmäßig Interna aus<br />

der Debian-Entwicklerszene und angrenzenden Projekten. Martin Loschwitz<br />

www.linux-magazin.de<br />

99<br />

Mit der Version 6.0 Beta 2 [1] des Debian­<br />

Installers biegt die Squeeze­Release auf<br />

die Zielgerade ein. Der Beta­D­I war die<br />

letzte wichtige Bedingung für den Deep<br />

Freeze, in dem sich das neue Debian seit<br />

Dezember befindet (Abbildung 1). Neue<br />

Paketversionen aus dem Unstable­Zweig<br />

gelangen nur noch zum Testen, wenn<br />

sie den Fix für einen Release ­kritischen<br />

Fehler versprechen.<br />

Die Installationsroutine verwendet jetzt<br />

Kernel 2.6.32.27, der von den <strong>Linux</strong>­<br />

Gurus offiziell als „Longterm Stable“ deklariert<br />

ist. Der neueste Debian­Installer<br />

sieht zudem die Partitionen anderer Systeme<br />

besser und bindet sie sinnvoll in den<br />

Bootloader ein, was vielen Änderungen<br />

an dem Modul »partprobe« zu verdanken<br />

ist. Passend dazu haben die Debianer die<br />

Betriebssystemerkennung von Grub auf<br />

den aktuellen Stand gebracht, sodass der<br />

Installer Windows Vista und Konsorten<br />

möglichst problemlos sieht.<br />

Mehr Platz per Default<br />

Interessant für Admins erscheint vor<br />

allem die Partprobe­Änderung, die das<br />

Verhalten des Debian­Installers sichtbar<br />

ändert. Ab sofort macht er die Partition<br />

für das Root­Dateisystem »/« größer als<br />

bisher: Mindestens 900 MByte fordert er,<br />

sofern das Homeverzeichnis auf einer<br />

eigenen Partition landet – die meisten<br />

Admins wählen diese Aufteilung.<br />

Als Beweggrund geben die Entwickler an,<br />

Platz für die Installation eines zweiten<br />

Kernels im Wurzelverzeichnis lassen zu<br />

wollen. Dies erfordere mindestens 120<br />

MByte. Auf Servern mit großer Platte<br />

fällt der zusätzlich benötigte Platz kaum<br />

auf. Entwickler von Embedded­Systemen<br />

könnten allerdings in Bedrängnis kommen,<br />

was freien Speicher angeht.<br />

Fernab von allen technischen Details<br />

bringt die zweite Betaversion des Installers<br />

eine Widmung für Frans Pop mit.<br />

Der Debianer war über lange Jahre einer<br />

der wichtigsten Installer­Entwickler und<br />

treibende Kraft hinter allem, was Admins<br />

und Nutzer brauchten, um Debian auf<br />

die Platte zu kriegen. Frans Pop starb<br />

im August 2010. Die Entwickler setzen<br />

ihm durch die Widmung einen digitalen<br />

Gedenkstein.<br />

Automatische Architekten<br />

Einer der letzten Show­Stopper für<br />

Squeeze sind Release­kritische Fehler, die<br />

den Bau von Programmen auf unterschiedlichen<br />

Architekturen verhindern. Da<br />

nicht jeder Entwickler seine Pakete für<br />

alle Architekturen händisch aufbereiten<br />

kann, betreibt Debian ein Netzwerk von<br />

Build­Daemons. Sie stoßen den Paketbau<br />

auf noch ausstehenden Architekturen automatisch<br />

an. Einige Entwickler machen<br />

sich den Spaß, das ganze Debian­Archiv<br />

in regelmäßigen Abständen komplett<br />

durchzukompilieren. Dabei halten sie<br />

Ausschau nach der Problem­Meldung<br />

„Fails to build from source“, von Eingeweihten<br />

abgekürzt zu FTBFS.<br />

Ubuntu unterstützt weniger Architekturen<br />

als Debian, kennt das FTBFS­Problem<br />

aber ebenfalls. Weil viele Pakete<br />

in Ubuntu nicht weit vom Stamm ihrer<br />

Debian­Verwandten fallen, aber schneller<br />

und öfter gebaut werden, geben FTBFS­<br />

Probleme in Ubuntu unter Umständen<br />

Hinweise auf zu erwartende Probleme in<br />

Debian­Paketen.<br />

Lucas Nussbaum hat Ubuntu Maverick<br />

Meerkat durchgebaut und eine nach<br />

Maintainern sortierte Liste aller Fehler<br />

veröffentlich [2]. Debian­Developer können<br />

sogar die Build­Logs durchsuchen<br />

Abbildung 1: Unantastbares Interieur – das kommende<br />

Debian befindet sich mit der zweiten Beta<br />

des Installers im so genannten Deep Freeze.<br />

und so Anhaltspunkte für Probleme finden,<br />

die wohl demnächst auf sie herabkommen<br />

werden [3]. Einige Debian­<br />

Entwickler regten daraufhin regelmäßige<br />

Vergleiche zwischen Ubuntu und Debian<br />

an. Denkbar wäre, die Resultate der Logs<br />

in das debianische Package Tracking System<br />

(PTS) zu integrieren. Das wäre eine<br />

weitere, sehr nützliche Kooperation zwischen<br />

Debian und Ubuntu. (ake) n<br />

Infos<br />

[1] Neuester Installer: [http:// lists. debian. org/<br />

debian‐devel/ 2010/ 12/ msg00001. html]<br />

[2] E‐Mail von Lucas Nussbaum:<br />

[http:// lists. debian. org/ debian‐devel/ 2010/<br />

12/ msg00040. html]<br />

[3] Build‐Logs: [http:// udd. debian. org/ cgi‐bin/<br />

ubuntu_ftbfs. cgi]<br />

Der Autor<br />

Martin Gerhard Loschwitz ist<br />

Senior Technical Consultant<br />

bei Linbit und seit vielen<br />

Jahren Debian‐GNU/ <strong>Linux</strong>‐<br />

Entwickler.<br />

© Macroslk, Photocase.com


Forum<br />

www.linux-magazin.de Bücher 02/<strong>2011</strong><br />

100<br />

Bücher über NoSQL-<strong>Datenbank</strong>en und über Open NMS<br />

Tux liest<br />

Die erste Buchbesprechung passt hervorragend zum Titelthema dieser Ausgabe, denn das behandelte Werk<br />

gibt auf nur 300 Seiten eine Einführung in rund 30 NoSQL-<strong>Datenbank</strong>en. Der zweite vorgestellte Titel richtet<br />

sich an Sysadmins und widmet sich dem Systemmanagement mit Open NMS. Markus Feilner, Michael Müller<br />

Dem jüngsten Hype-Thema der <strong>Datenbank</strong>welt<br />

sachlich und detailliert auf den<br />

Grund gehen möchte das Buch „NoSQL:<br />

Einstieg in die Welt nichtrelationaler <strong>Datenbank</strong>en“<br />

von Stefan Edlich, Achim<br />

Friedland, Jens Hampe und Benjamin<br />

Brauer. Das Team um den Universitätsprofessor<br />

Edlich hat sich einer Mammutaufgabe<br />

gestellt und schafft auf knapp<br />

300 Seiten einen vollständigen Überblick<br />

über die Vielzahl der <strong>Datenbank</strong>en.<br />

<strong>Datenbank</strong>-Kategorien<br />

Dazu unterteilten die Autoren die Datenspeicher<br />

in vier Kategorien: Key-Valueund<br />

Column-Family-Systeme, Document<br />

Stores und Graphendatenbanken. Nach<br />

Grundlagen und Definitionen folgt der<br />

Einstieg in das theoretische Grundgerüst:<br />

Map-Reduce-Verfahren, CAP-Theorem,<br />

Konsistenzmodelle, Hashing, Vector<br />

Clocks und Verfahren zur Konfliktbehandlung<br />

wie Multiversion Concurrency<br />

Control (MVCC) erklärt das Buch ebenso<br />

wie das Integritätsmanagement mit Protokollen<br />

der Paxos-Familie. Die Autoren<br />

führen mit anschaulichen Grafiken auch<br />

Einsteiger korrekt und kompetent ans<br />

Thema heran.<br />

Besonders wertvoll machen das Buch<br />

aber die Kapitel 3 bis 7, die jeweils einer<br />

der vorher definierten NoSQL-Kategorien<br />

gewidmet sind. Anhand der wichtigsten<br />

Vertreter diskutieren die Autoren Hbase,<br />

Cassandra und Amazons Simple DB als<br />

Vertreter der Wide Column Stores sowie<br />

Couch DB und Mongo DB als Document<br />

Stores. Auch bei reinen Onlinesystemen<br />

wie Simple DB weichen die Autoren nicht<br />

von ihrem Schema ab, das bei jeder <strong>Datenbank</strong><br />

vom Allgemeinen über das Datenmodell,<br />

Installation, Beispiele für die<br />

wichtigsten-Operationen in mehreren<br />

Programmiersprachen bis zu einer abschließenden<br />

Bewertung reicht.<br />

Bei den Key-Value-<strong>Datenbank</strong>en finden<br />

sich Redis, Chordless und Riak, die Graphendatenbanken<br />

sind gleich mit zwölf<br />

Beispielen vertreten, darunter Sones,<br />

Neo4j und Infogrid. Die letzten beiden<br />

Kapitel des Buches zeigen weitere<br />

NoSQL-Ansätze und bieten Hilfe zur Orientierung<br />

im <strong>Datenbank</strong>wald.<br />

Als einziger negativer Aspekt an diesem<br />

Buch ist wohl seine Kürze zu nennen:<br />

Wer die Grundlagenkapitel abzieht, bekommt<br />

auf 217 Seiten fast 30 verschiedene<br />

<strong>Datenbank</strong>en vorgestellt. Dennoch<br />

hält das Werk, was der Titel verspricht,<br />

und bietet einen idealen Einstieg in die<br />

NoSQL-Welt.<br />

Open NMS praktisch<br />

„Ich möchte informiert werden, wenn<br />

eine Serverplatte einen bestimmten Füllstand<br />

erreicht.“ Solche Bedürfnisse befriedigen<br />

Netzwerkmanagement-Systeme<br />

wie Open NMS. Mit diesem freien Softwarepaket<br />

beschäftigt sich das gleichnamige<br />

Buch von Alexander Finger, Klaus<br />

Thielking-Riechert und Ronny Trommer.<br />

Nach einer kurzen Open-NMS-Historie<br />

bieten die Autoren einen „Schnellkochkurs<br />

für das Netzwerkmanagement“ mit<br />

Info<br />

Stefan Edlich, Achim<br />

Friedland, Jens Hampe,<br />

Benjamin Brauer:<br />

NoSQL<br />

Hanser 2010<br />

290 Seiten<br />

30 Euro<br />

ISBN: 978-3-446-42355-8<br />

Installation und Schnellstart. Danach<br />

geht es detaillierter um Konzepte und<br />

Konfiguration. Das Buch beschreibt das<br />

Anzapfen der unterschiedlichen Quellen,<br />

insbesondere SNMP, und die automatischen<br />

Benachrichtigungen in unterschiedlichen<br />

Eskalationsstufen via SMS<br />

oder Mail. Andere Ausgabeformate sind<br />

Maps und Reports, sowohl grafisch als<br />

auch tabellarisch.<br />

Mit zahlreichen XML-Listings der Konfigurationsdateien<br />

wendet sich dieser Titel<br />

vor allem an Praktiker: Statt abstrakter<br />

Syntaxbeschreibung lernt der Leser vornehmlich<br />

an Beispielen. Abgerundet wird<br />

das Buch durch Fallstudien, die diverse<br />

Einsatzmöglichkeiten und deren Einrichtung<br />

beschreiben. Daneben gibt es Tipps<br />

zur Störungssuche und Hinweise zur<br />

Einführung eines Netzwerkmanagement-<br />

Systems.<br />

Auch wenn Open NMS in anderen Büchern<br />

erwähnt wird, ist das vorliegende<br />

das einzige zu ausschließlich diesem<br />

Thema. Und so wird es zu einem wichtigen<br />

Nachschlagewerk. Es empfiehlt sich<br />

allerdings, den Band einmal komplett<br />

durchzuarbeiten. Nur mit diesem Wissen<br />

lässt er sich effektiv zum Nachschlagen<br />

nutzen, denn der Index fällt dürftig aus.<br />

Endlich ein Buch, das sich speziell Open<br />

NMS widmet, wenn auch mit Verbesserungspotenzial.<br />

(mhu)<br />

n<br />

Info<br />

Alexander Finger, Klaus<br />

Thielking-Riechert, Ronny<br />

Trommer:<br />

OpenNMS<br />

Dpunkt 2010<br />

380 Seiten<br />

37 Euro<br />

ISBN 978-3-89864-656-7


Auf den Punkt gebracht<br />

Leserbriefe<br />

Leserbriefe 02/<strong>2011</strong><br />

Forum<br />

Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-­magazin.­de].<br />

Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit<br />

Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.<br />

www.linux-magazin.de<br />

101<br />

Projektverwaltung<br />

01/ 11, S. 36: Ich habe „Projektverwaltungs-Software<br />

im Vergleich“ sehr aufmerksam<br />

gelesen und dabei zwar Trac,<br />

leider aber nicht das viel mächtigere<br />

Redmine gefunden. Mit Redmine lassen<br />

sich mehrere Projekte parallel verwalten,<br />

daneben zu jedem Projekt ein Repository.<br />

Die in Ruby on Rails umgesetzte Software<br />

ist unter [http://­www.­redmine.­org] erhältlich.<br />

Bernhard Schauer, per E-Mail<br />

CVS-Locking<br />

01/ 11, S. 42: Zum Artikel über Versionsverwaltung:<br />

CVS beherrscht durchaus<br />

Locking und serialisiert Commits, die<br />

gleichzeitig auf dieselben Verzeichnisse<br />

zugreifen möchten. Ein Commit sperrt<br />

erst alle beteiligten Verzeichnisse, arbeitet<br />

dann und entsperrt hinterher. Von<br />

daher ist die Behauptung der Korruption<br />

unsinnig. Allenfalls bei Dateisystem-Korruption,<br />

Reboot mitten im Commit mit<br />

manuellem Aufräumen der Locks hinterher<br />

oder Ähnlichem kann so etwas<br />

passieren. Als CVS-Liebhaber (und mit<br />

meinem Mir-BSD-Hut auf) bitte ich um<br />

Berichtigung.<br />

Thorsten Glaser, per E-Mail<br />

Kopieren für Cluster<br />

01/ 11, S. 85: Sysadmin Charly hat das<br />

Tool Cluster SSH vorgestellt, das ich auch<br />

schon länger einsetze. Ich verwende es<br />

allerdings zusammen mit Cluster SCP<br />

[https://­launchpad.­n e t/­c sc p] . Während<br />

»cssh« es erlaubt, mehrere Rechner gleichzeitig<br />

zu administrieren, kann »cscp« Dateien<br />

auf mehrere Systeme übertragen.<br />

Cluster SCP verwendet ebenfalls die in<br />

»/etc/clusters« definierten Cluster, ansonsten<br />

ist die Syntax fast die gleiche wie<br />

bei SCP. Der einzige Unterschied besteht<br />

in den Optionen, die hier ans Ende der<br />

Kommandozeile kommen:<br />

cscp Quelle Zielcluster:Ziel [Optionen]<br />

Die Cluster-Varianten von SSH und SCP<br />

zusammen erleichtern mir die Verwaltung<br />

von geclusterten oder sonstwie gleichartigen<br />

Systemen ganz erheblich.<br />

Harald Husemann, per E-Mail<br />

<strong>Linux</strong>-Organisationen<br />

01/ 11, S. 18: Zum Kommentar von Nils<br />

Magnus bezüglich <strong>Linux</strong>-Verband und<br />

Lisog: Die Bekämpfung von Softwarepatenten,<br />

die Optimierung von Vergaberichtlinien,<br />

Überzeugungsarbeit für<br />

Open-Source-Software oder die Entwicklung<br />

von Subskriptionsmodellen für Libre<br />

Office sind einige der Themen, bei denen<br />

Sie schreiben, <strong>Linux</strong>-Verband und Lisog<br />

hätten in der Vergangenheit zu wenig getan.<br />

Obwohl man über inhaltliche Details<br />

und Schwerpunkte sicher streiten kann,<br />

gebe ich Ihnen gerne recht: Es hätte mehr<br />

getan werden können, und es wäre gut,<br />

wenn mehr getan würde!<br />

Jede gute Tat braucht aber einen Täter,<br />

und ich frage mich, wem Sie hier eigentlich<br />

einen Vorwurf machen: Den<br />

Erratum<br />

12/ 10, S. 50: Anders als im Artikel „Jäger<br />

und Sammler“ behauptet, überträgt der<br />

Client nie private Schlüssel an die Rechner<br />

von Cacert. Eine widersprechende Beschreibung<br />

im Cacert-Wiki stellte sich als Bug heraus.<br />

Dank an den Leser Ralf Krüdewagen für<br />

den Hinweis.<br />

Verbandsmitgliedern und Vorständen,<br />

die neben ihrer Tätigkeit für ein Unternehmen<br />

unentgeltlich Zeit aufbringen,<br />

um sich für wichtige Verbandsziele einzusetzen?<br />

Oder denjenigen, die schlicht<br />

gar nicht in Erscheinung treten? Leider<br />

ist der Kreis der Aktiven klein, und genau<br />

das ist der Grund, warum wir eine<br />

Konsolidierung brauchen.<br />

Weiter schreiben Sie, die Mitglieder würden<br />

nicht eingebunden. Das Gegenteil<br />

ist der Fall: Die Dinge sind sowohl in der<br />

Mitgliederversammlung des <strong>Linux</strong>-Verbandes<br />

als auch bei der Lisog ausführlich<br />

und konstruktiv diskutiert worden. Die<br />

Aussage, dass der <strong>Linux</strong>-Verband eine<br />

„ausgeprägte Diskussionskultur“ hätte<br />

und die Lisog „eher patriarchalisch“ organisiert<br />

sei, halte ich für falsch. Ein Blick<br />

in die Satzungen zeigt, dass beide durch<br />

ihre Mitglieder gesteuert werden. Im Übrigen<br />

geben diejenigen den Ton an, die<br />

Zeit und andere Ressourcen aufwenden,<br />

um die Vereinsziele zu unterstützen.<br />

Peter Ganten (<strong>Linux</strong>-Verband),<br />

per E-Mail<br />

Dass die Mitglieder nicht eingebunden<br />

würden, habe ich so nicht behauptet.<br />

Andererseits waren bei der Mitgliederversammlung<br />

laut vorliegender Teilnehmerliste<br />

gerade einmal 11 von über 100<br />

Mitgliedern vertreten. Auch im Vorfeld<br />

gab es nicht den Anschein, als wolle der<br />

Verband dieses Thema in breiter Runde<br />

diskutieren. Die Bemerkung zu den Diskussionskulturen<br />

ist meine subjektive<br />

Einschätzung, wie durch die Überschrift<br />

„Kommentar“ angekündigt. Im Übrigen<br />

stehe ich einem konstruktiven Zusammengehen<br />

von Lisog und LIVE positiv gegenüber,<br />

wie mein Kommentar hoffentlich<br />

deutlich gemacht hat. (Nils Magnus) n


ADMIN-MAGAZIN<br />

FÜR ALLE IT-ADMINISTRATOREN<br />

VON WINDOWS UND LINUX<br />

ADMIN erscheint alle zwei<br />

Monate und bietet IT-Admins:<br />

■ Schwerpunktthemen zu<br />

Storage, Backup, Netzwerk,<br />

Monitoring, Virtualisierung<br />

und Security<br />

■ Howtos und Tutorials für alle<br />

IT-Administratoren von <strong>Linux</strong>,<br />

Windows und Unix<br />

■ Hilfe bei der täglichen<br />

Systemverwaltung<br />

heterogener Netze<br />

TESTEN SIE ADMIN<br />

IM MINI-ABO!<br />

Lesen Sie 2 Ausgaben für<br />

zusammen nur 9,80 !<br />

2 Hefte<br />

NUR<br />

9,80<br />

SO KÖNNEN SIE BESTELLEN:<br />

• Web: www.admin-magazin.de/abo<br />

• Telefon 089 / 2095 9127 • Fax 089 / 2002 8115<br />

• E-Mail: abo@admin-magazin.de • Shop: Shop.<strong>Linux</strong>NewMedia.de<br />

Gleich hier bestellen:<br />

www.admin-magazin.de/<br />

miniabo<br />

ABOVORTEILE<br />

• Preisvorteil gegenüber Kioskkauf<br />

• kostenlose & sichere Zustellung<br />

• Zustellung vor dem offiziellen<br />

Verkaufstermin<br />

Globusillustration: Rafa Irusta Machin, 123RF


SIE WOLLEN KEIN HEFT MEHR VERPASSEN?<br />

Abonnieren Sie ADMIN im Prämienabo!<br />

Lesen Sie das ADMIN-<strong>Magazin</strong> für<br />

nur 49,90 im Jahr statt 58,80<br />

im Einzelkauf am Kiosk!<br />

Als Prämie erhalten Sie einen Yubikey<br />

www.admin-magazin.de/jahresabo<br />

SICHERN SIE SICH<br />

IHREN GRATIS YUBIKEY!<br />

Sicher unterwegs: USB-Crypto-Key für Einmal-<br />

Passwörter mit AES-128. Funktioniert ohne spezielle Treiber<br />

mit allen Betriebssystemen. Weitere Applikationen unter www.yubico.com<br />

NEU!<br />

JETZT BESTELLEN:<br />

Versandkostenfrei!<br />

• www.admin-magazin.de/einzelheft<br />

• Telefon 089 / 2095 9127 • Fax 089 / 2002 8115<br />

• E-Mail: abo@admin-magazin.de • Shop: Shop.<strong>Linux</strong>NewMedia.de


Know-how<br />

www.linux-magazin.de Kern-Technik 02 /<strong>2011</strong><br />

104<br />

Kernel- und Treiberprogrammierung mit dem Kernel 2.6 – Folge 55<br />

Kern-Technik<br />

Mit ausgefeiltem Ressourcen-Management und eigenen Namensräumen organisiert der Kernel eine effiziente<br />

Container-Virtualisierung. Die Unterstützung im Userland könnte jedoch besser sein. Eva-Katharina Kunst, Jürgen Quade<br />

Seit IT-Urzeiten ist eine der vornehmsten<br />

Aufgaben des Betriebssystems die<br />

Virtualisierung. Galt es damals vor allem,<br />

die CPU mit ihren Registern zu virtualisieren<br />

und damit das Multitasking<br />

beziehungsweise das Multithreading zu<br />

ermöglichen, ist heute die Virtualisierung<br />

des kompletten Rechners trendy. Festplatten,<br />

DVD-Laufwerke, Netzwerkschnittstellen,<br />

Grafikkarten und Hauptspeicher<br />

stehen dem Anwender scheinbar exklusiv<br />

zur Verfügung, real aber teilt er sich die<br />

Ressourcen mit den übrigen Usern.<br />

Dank Virtualisierung lassen sich mehrere,<br />

auch unterschiedliche Betriebssysteme<br />

auf der Hardware gleichzeitig betreiben,<br />

ohne Umbooten zu müssen. Auf einer<br />

leistungsfähigen Hardware konsolidieren<br />

Unternehmen Server, was typischerweise<br />

den Wartungs- und Administrationsaufwand<br />

reduziert.<br />

Das Hauptargument für die Virtualisierung<br />

ist aber meist eine erhöhte Sicherheit, die<br />

Systemverwalter zum einen durch die damit<br />

verbundene Isolierung der Systeme,<br />

zum anderen durch die reduzierte<br />

Komplexität erreichen.<br />

Sie handeln damit gemäß dem<br />

Motto: Eine Betriebssysteminstanz<br />

– ein Dienst.<br />

Ins Gefängnis<br />

Dabei gibt es verschiedene Ansätze:<br />

so genannte Container-<br />

Virtualisierung, Hypervisor-<br />

Technik und Hardware-Emulation<br />

(siehe Kasten „Virtualisierungstechniken“).<br />

Die Variante, die dabei die geringsten<br />

Ressourcen benötigt,<br />

ist die Container-Virtualisierung<br />

(siehe Abbildung 1). Die<br />

Idee hinter dieser Technik ist,<br />

möglichst viele Ressourcen gemeinsam<br />

zu nutzen. So verwenden beispielsweise<br />

die virtualisierten Systeme denselben<br />

Betriebssystemkern und häufig auch<br />

dieselben Systemprogramme. Das spart<br />

Speicher und CPU-Zeit.<br />

Diese Art der Virtualisierung ist – da sie<br />

sehr wenig zusätzliche Ressourcen benötigt<br />

– schon lange in Gebrauch, beispielsweise<br />

unter dem Namen Chroot.<br />

Allerdings virtualisiert Chroot im Wesentlichen<br />

nur das Root-Filesystem. Linus<br />

Torvalds hat dagegen in den letzten<br />

Jahren seinen Betriebssystemkern mit<br />

einer fast vollständigen Container-Virtu-<br />

Tabelle 1: Namensräume<br />

alisierung ausgestattet. Dabei hat er zwei<br />

wesentliche Technologien integriert: Kontrollgruppen<br />

und Namensräume.<br />

Mit Hilfe der Control Groups lassen sich<br />

Rechenprozesse einer virtuellen Umgebung,<br />

dem Container beziehungsweise<br />

auch nur einem Namensraum zuordnen.<br />

Sie binden aber auch die Jobs fest an<br />

einen bestimmten Prozessorkern einer<br />

Multicore-Maschine [1] oder limitieren<br />

vorhandene Speicher-Ressourcen. Aus<br />

dem Userland wird dies alles über ein<br />

virtuelles Filesystem gesteuert.<br />

Täuschungsmanöver<br />

Normalerweise sind die Datenstrukturen<br />

für den kompletten Kernel eindeutig,<br />

etwa sein Name oder die von ihm vergebenen<br />

Prozess-IDs. Die Namespaces<br />

isolieren die Betriebsmittel, indem sie<br />

es Anwendern erlauben, Bereiche einzurichten,<br />

in denen die Bezeichner eine<br />

neue Gültigkeit besitzen. Inzwischen<br />

sind sieben Namensräume realisiert, die<br />

Tabelle 1 auflistet.<br />

Innerhalb eines »UTS«-Namespace vergibt<br />

der <strong>Linux</strong>-Anwender individuelle<br />

Domainnamen, Nodenamen, eine Release,<br />

eine Version und schließlich den<br />

Maschinennamen – kurzum die Informationen,<br />

die er sonst per System call<br />

»uname()« ausliest. »USER« steht für<br />

eigene User-IDs, »NET« für virtuelle<br />

Flag Namensraum Neu instanzierte Objekte<br />

CLONE_NEWIPC IPC Messages, Mailboxes und Shared Memory<br />

CLONE_NEWNET NET Netzwerkgeräte, Routen und Sockets<br />

CLONE_NEWNS MNT Mountpoints (nur zum Lesen)<br />

CLONE_NEWPID PID, PROC Prozess-IDs und zugehöriges Proc-Filesystem<br />

CLONE_NEWUTS UTS Systemnamen und -informationen<br />

CLONE_NEWUSER USER User-IDs


Kernel Userspace<br />

Appl.<br />

PID<br />

IPC<br />

UTS<br />

NET<br />

USER<br />

PROC<br />

MOUNT<br />

Appl.<br />

globaler<br />

Namensraum<br />

Appl.<br />

Appl.<br />

PID<br />

IPC<br />

UTS<br />

NET<br />

USER<br />

PROC<br />

MOUNT<br />

Container mit<br />

eigenen<br />

Namensräumen<br />

Appl.<br />

Netzwerkgeräte, Routen und Sockets.<br />

»PROC« erzeugt einen Container mit eigenem<br />

Proc-Filesystem. Da der Kernel<br />

Objekte der Interprozess-Kommunikation<br />

ebenfalls über Namen referenziert, stellt<br />

»IPC« einen zugehörigen Namensraum<br />

für Shared-Memory, Messages und Semaphore<br />

bereit. »MNT« schließlich instanziert<br />

unabhängige Mountpoints.<br />

Dreh- und Angelpunkt, um Namensräume<br />

zu nutzen, ist der Systemcall »clone()«.<br />

<strong>Linux</strong> erzeugt damit neue Rechenprozesse.<br />

Den gewünschten Namensraum<br />

steuert der Code beim Erzeugen über<br />

Flags, die die Container-Virtualisierung<br />

in »linux/sched.h« bereitstellt.<br />

Mit Root-Rechten ausgestattet ruft der<br />

Applikationsprogrammierer »clone()«<br />

auf und übergibt beispielsweise das Flag<br />

»CLONE_NEWPID«. Der Kernel erstellt<br />

daraufhin einen neuen Namensraum<br />

für den Kindprozess. Das Programm in<br />

Appl.<br />

PID<br />

IPC<br />

UTS<br />

NET<br />

USER<br />

PROC<br />

MOUNT<br />

Container mit<br />

eigenen<br />

Namensräumen<br />

G Abbildung 2: Die Prozesse, die virtualisierte Jobs abarbeiten, haben zwei PIDs: eine im<br />

globalen Namensraum sowie die PID in der virtualisierten Umgebung. Der Kindprozess im Beispielprogramm<br />

hat aus Elternsicht die PID 7055. Das Kind selbst meint, es besitze die PID 1.<br />

F Abbildung 1: LXC legt innerhalb von Containern eigene Namensräume an, mit denen Applikationen<br />

eine Reihe von Systemressourcen unabhängig vom restlichen Kernel benennen dürfen.<br />

Listing 1 verdeutlicht dies zusammen<br />

mit Abbildung 2. Der<br />

Elternprozess gibt die PID des erzeugten<br />

Kindes (7055) und die eigene (7054) aus.<br />

Der Kindprozess zeigt dagegen nur die<br />

eigene PID an.<br />

Innenansichten<br />

Aus Sicht des Kindprozesses ist diese<br />

1, da der Aufruf einen neuen Namensraum<br />

erzeugt und der Kindprozess die<br />

erste freie ID bekommt. Im Hostsystem<br />

bekommt diese PID normalerweise der<br />

Init-Prozess. Das Beispiel verdeutlicht,<br />

dass der Kindprozess durch den neuen<br />

Namensraum zwei PIDs besitzt: einmal<br />

die PID im globalen Namensraum und<br />

einmal die PID im Container.<br />

Um das selbst zu testen, kompilieren<br />

Experimentierfreudige den Code und<br />

starten das entstehende Programm als<br />

Superuser. Um zusätzlich andere Namensräume<br />

zu aktivieren, verknüpfen sie<br />

Virtualisierungstechniken<br />

Auch wenn es so aussieht: Festplatten, Grafikkarten<br />

oder auch Prozessoren sind nicht immer<br />

real. Immer häufiger bekommen Betriebssysteme<br />

oder Applikationen virtuelle Hardware<br />

vorgesetzt. Die Virtualisierung unterscheidet<br />

das Host- vom Gastsystemen. Der Host kontrolliert<br />

real die Hardware. Er erzeugt die virtuelle<br />

Sicht, auf die seine Gäste bauen. Sie setzen<br />

hierbei drei Basistechnologien ein:<br />

n Container-Virtualisierung: Das Betriebssystem<br />

schafft durch eigene Namensräume<br />

eine virtuelle Umgebung (Container). Gastsysteme<br />

nutzen den Betriebssystemkern<br />

des Hostsystems. Beispiel: <strong>Linux</strong> Container<br />

LXC, Open VZ.<br />

n Hypervisor-Technik: Eine als Hypervisor bezeichnete<br />

Systemkomponente kontrolliert<br />

die eigentliche Hardware. Die Prozessorhersteller<br />

Intel und AMD unterstützen diese<br />

Art der Virtualisierung in modernen Prozessoren<br />

durch besondere Technologien (VT-x<br />

und Pacifica). Oft ist der Hypervisor mit<br />

dem Hostsystem verbandelt. Die Technik<br />

ermöglicht es, eine Hardware gleichzeitig<br />

von unterschiedlichen Betriebssystemen<br />

verwenden zu lassen. Beispiele: VMware,<br />

Virtualbox.<br />

n Hardware-Emulation: Hier wird eine Hardware,<br />

ein Rechner emuliert. Sehr vorteilhaft<br />

ist, dass die Architektur des emulierten<br />

Rechners (Gastsystem) sich komplett<br />

von der Architektur des Hostsystems<br />

unterscheiden kann. Dem stehen jedoch<br />

eine niedrige Arbeitsgeschwindigkeit des<br />

Gastsystems und eine hohe Auslastung des<br />

Hostsystems gegenüber. Beispiel: Qemu.<br />

die »CLONE_NEWTyp«-Flags beim Aufruf<br />

von »clone()« per bitweisem ODER<br />

miteinander. Der Kernel repräsentiert die<br />

Namespaces durch jeweils eigene Datenstrukturen,<br />

die den zugehörigen Namensraum<br />

eindeutig beschreiben. Mit Einzug<br />

der Container-Virtualisierung hat Linus<br />

Torvalds den Prozess-Controllblock als<br />

beschreibende Instanz für einen Rechenprozess<br />

modifiziert (Abbildung 3).<br />

Informationen wie beispielsweise die PID<br />

oder die UIDs sind nicht mehr direkt im<br />

Prozess-Kontrollblock (PCB) abgelegt,<br />

sondern nur noch über Zeiger auf die<br />

neuen Datenstrukturen erreichbar. Um<br />

Speicherplatz zu sparen, haben die Entwickler<br />

die Namensräume vom PCB aus<br />

jedoch nicht einzeln verlinkt, sondern<br />

über die dazwischen eingeschobene Datenstruktur<br />

»struct nsproxy« semantisch<br />

zusammengefasst. Ein einzelner Zeiger<br />

Listing 1: Namensräume anlegen<br />

01 #include <br />

02 #include <br />

03 #include <br />

04 #include <br />

05 #include <br />

06<br />

07 int main(int argc, char **argv, char **envp)<br />

08 {<br />

09 pid_t pid;<br />

10 int status;<br />

11<br />

12 pid = syscall(__NR_clone, CLONE_NEWPID | SIGCHLD,<br />

13 0, 0, 0);<br />

14 if (pid == 0) {<br />

15 printf("Kind‐Thread: ");<br />

16 } else {<br />

17 printf("Eltern‐Thread (Kind‐PID %d): ", pid);<br />

18 }<br />

19 printf("eigene PID: %d\n", getpid());<br />

20 wait(&status);<br />

21 return 0;<br />

22 }<br />

Kern-Technik 02/<strong>2011</strong><br />

Know-how<br />

www.linux-magazin.de<br />

105


Know-how<br />

www.linux-magazin.de Kern-Technik 02 /<strong>2011</strong><br />

106<br />

Prozess-Kontrollblock Namensraum<br />

UTS<br />

struct uts_namespace<br />

IPC<br />

struct ipc_namespace<br />

struct nsproxy<br />

MOUNT<br />

struct mnt_namespace<br />

UIDs<br />

NET<br />

struct net<br />

struct task_struct<br />

PID<br />

PROC<br />

USER<br />

struct pid_namespace struct vfsmount<br />

struct cred<br />

Abbildung 3: Der Prozess-Kontrollblock enthält Zeiger auf die zugehörigen Namensräume.<br />

(8 Byte auf einem 64-Bit-System) gibt<br />

damit Zugriff auf sechs der sieben Namensräume.<br />

Neben der Speicherplatzersparnis<br />

ist das schnelle Kopieren des<br />

PCB ein weiterer Vorteil. Der Kern legt<br />

den Namensraum für eigene UIDs in der<br />

Datenstruktur »struct cred« (Credentials)<br />

ab und verlinkt sie direkt im PCB.<br />

Informationen zum virtualisierten Proc-<br />

Filesystem finden Entwickler über die<br />

»struct pid_namespace«.<br />

Hineingeboren<br />

Beim Systemstart instanziert der Kernel<br />

für jeden Namensraum ein Objekt. Der<br />

so geschaffene globale Namensraum ist<br />

über die Variablen »init_pid_ns«, »init_<br />

user_ns«, »init_ipc_ns« und »init_net«<br />

für jede Kernelkomponente erreichbar.<br />

Die Threads im System referenzieren ihn.<br />

1<br />

4<br />

1<br />

2<br />

3<br />

4<br />

struct nsproxy<br />

struct nsproxy<br />

Globaler Namensraum<br />

Kopieren der Struktur »nsproxy«<br />

Neuanlegen der Namensräume<br />

Umbiegen der Zeiger auf die neuen<br />

Namensräume<br />

Eintrag im Prozess-Kontrollblock<br />

Neuer Namensraum<br />

Abbildung 4: Der Kernel legt neue Namensräume effizient an,<br />

indem er vorzugsweise Zeiger kopiert.<br />

3<br />

Auch neu erzeugte Threads – erben sie<br />

doch die Umgebung vom Eltern-Thread<br />

– verwenden den globalen Namensraum.<br />

Ruft jedoch ein Thread den Systemcall<br />

»clone()« auf und setzt eines der Clone-<br />

Flags (mit Ausnahme von »CLONE_NEW-<br />

USER«), erzeugt dies ein neues Objekt<br />

vom Typ »struct nsproxy« und füllt es<br />

zunächst mit dem alten Inhalt durch Kopieren<br />

der Zeiger. Je nach Flag generiert<br />

<strong>Linux</strong> dann neue Namensräume und<br />

verbiegt die Zeiger in »nsproxy« auf sie<br />

(siehe Abbildung 4).<br />

Torvalds hat auch die Systemaufrufe modifiziert:<br />

Sie greifen jetzt über »nsproxy«<br />

ausschließlich auf die virtuelle Sicht zu.<br />

Im Kernel zählt jedoch überwiegend der<br />

globale Namensraum, wenngleich interne<br />

Kernel-Schnittstellen – mit einem<br />

zusätzlichen Namensraum-Parameter<br />

ausge stattet – die Objekt-Adressierung<br />

innerhalb eines Containers<br />

ermöglichen.<br />

init_uts_ns Darüber hinaus hat der Kernel<br />

init_ipc_ns viele Detailänderungen erfahren,<br />

um die Containerinit_net<br />

Virtualisierung praxisreif zu<br />

init_pid_ns<br />

machen. Ein Zeiger im Superblock<br />

des Proc-Filesystems<br />

2 etwa referenziert den PID-<br />

Namensraum, abgelegt im<br />

Element »s_sf_info«. Da es bei<br />

der Darstellung von Netzwerkinterfaces<br />

im Sys-Filesystem<br />

zu Problemen kam, haben die<br />

Entwickler mit Kernel 2.6.36<br />

ein so genanntes Sysfs-Tagging<br />

eingeführt [2].<br />

Um mittels Namensräumen<br />

und Cgroups zu isolieren und<br />

damit zu virtualisieren, benötigen<br />

Anwender die LXC-<br />

Userspace-Tools aus dem Debian-Paket<br />

»lxc«. Sie sorgen dafür, die Umgebung<br />

vorzubereiten und den Container so zu<br />

konfigurieren, dass darin Programme ablaufen<br />

[3]. Die wichtigsten Kommandos<br />

sind »lxc_checkconfig«, »lxc_execute«,<br />

»lxc_start« und »lxc_console«.<br />

Die Werkzeug-Suite unterscheidet Anwendungs-<br />

und Systemcontainer. Den<br />

ersten dürfen Anwender ohne weitere<br />

Installation direkt verwenden. Er führt<br />

Kommandos in einem isolierten Container<br />

aus. Der zweite virtualisiert hingegen<br />

komplette Systeme. Wer ihn einsetzt,<br />

muss nicht nur ein rudimentäres System<br />

installieren, sondern zugleich noch dafür<br />

sorgen, dass die benötigten Dienste<br />

starten. Anders als bei der Hypervisor-<br />

Technik bootet ein Systemcontainer nämlich<br />

nicht klassisch – schließlich ist der<br />

verwendete Betriebssystemkern ja bereits<br />

aktiv. Die dazu notwendigen Administrationskenntnisse<br />

vermittelt der LXC-<br />

Workshop in diesem Heft.<br />

Mit Sicherheit<br />

Die LXC-Container-Virtualisierung basiert<br />

auf <strong>Linux</strong>-Namensräumen. So arbeitet<br />

der Kernel Rechenprozesse isoliert ab.<br />

Seine Schnittstellen, nämlich Zusatzflags<br />

beim Aufruf des Systemcalls »clone()«<br />

und das Cgroup-Filesystem, sind übersichtlich.<br />

Der Kernel hat damit einiges<br />

für erhöhte Sicherheit bei kaum gestiegenem<br />

Ressourcenbedarf getan. Im Userland<br />

warten Anwender dagegen noch auf<br />

feiner geschliffene Werkzeuge, um die<br />

Virtualisierung zu vereinfachen. (mg) n<br />

Infos<br />

[1] Eva-Katharina Kunst, Jürgen Quade,<br />

„Kern-Technik“, Folge 41: <strong>Linux</strong>-<strong>Magazin</strong><br />

09/ 08, S. 88<br />

[2] Eric Biederman, „Sysfs-Tagging“: Kernel-<br />

Dokumentation: [http://lxr.free-electrons.<br />

com/source/ Documentation/filesystems/<br />

sysfs-tagging. txt]<br />

[3] <strong>Linux</strong>-Container LXC: [http://lxc.sf.net]<br />

Die Autoren<br />

Eva-Katharina Kunst, Journalistin, und Jürgen<br />

Quade, Professor an der Hochschule Niederrhein,<br />

sind seit den Anfängen von <strong>Linux</strong> Fans von Open<br />

Source. Demnächst erscheint die dritte Auflage<br />

ihres Buches „<strong>Linux</strong> Treiber entwickeln“.


OpenSUSE 11.3<br />

- ganz easy!<br />

Print oder<br />

PDF-Download<br />

NUR 14,90<br />

Der Einstieg in <strong>Linux</strong> war nie so einfach:<br />

Mit OpenSuse 11.3 erhalten Sie eine aktuelle<br />

und leicht zu installierende Version<br />

des freien Betriebssystems – und mit<br />

diesem Buch auf 180 Seiten alles, was<br />

Sie für die ersten Schritte benötigen.<br />

Aus dem Inhalt:<br />

• Installation von der Buch-DVD<br />

• Die grafi sche Oberfl äche von <strong>Linux</strong><br />

• Sicher ins Internet mit <strong>Linux</strong><br />

• Tipps zur Hardware-Einrichtung<br />

• Arbeiten mit der Kommandozeile<br />

• Hilfe bei der <strong>Linux</strong>-Community finden<br />

Der Autor: Hans-Georg Eßer arbeitet<br />

seit Mitte der 90er Jahre mit <strong>Linux</strong>. Er<br />

hat 2000 die Zeitschrift <strong>Linux</strong>User und<br />

2003 das Einsteigermagazin Easy<strong>Linux</strong><br />

gegründet. Easy<strong>Linux</strong> betreut er noch<br />

heute als Chefredakteur.<br />

Jetzt bestellen:<br />

Shop: http://shop.linuxnewmedia.de/Buch (versandkostenfrei als Print-Version)<br />

Telefon: +49 (89) 993 41 - 0 • Fax: +49 (89) 993 41 - 199 • E-mail: order@linuxnewmedia.de<br />

Inhalt, Probekapitel, Kauf der PDF-Version: www.easylinux.de/opensuse-buch


Know-how<br />

www.linux-magazin.de SQL-Injection 02 /<strong>2011</strong><br />

108<br />

SQL-Injection legt Newsletter lahm<br />

Reingespritzt<br />

Inn gewisser Weise passt der folgende Beitrag zum Schwerpunkt dieser <strong>Magazin</strong>s-Ausgabe, demonstriert er<br />

doch am lebenden Webapplikations-Objekt die Verwundbarkeit einer <strong>Datenbank</strong>. Tobias Eggendorfer<br />

Das Injizieren eigener Daten in Richtung<br />

Server passiert wie beim Cross-Site-Scripting<br />

über die HTTP-Parameter der Webseite-URL<br />

[3]. Serverseitig arbeitet ein<br />

CGI-Skript, das die Parameter entgegennimmt<br />

und zu einem Select-Statement in<br />

SQL umarbeitet. Und genau dabei lauern<br />

die Fallstricke.<br />

Erstmal Anpiksen<br />

© Gertie G., Photocase.com<br />

Die Sache begann sehr alltäglich: Im<br />

Zuge einer Wohnungssuche hatte ich<br />

mich irgendwann beim Immobilienmakler<br />

Immosky [1] für dessen Newsletter<br />

angemeldet. Als ich einige Zeit später<br />

eine Unterkunft gefunden hatte, wollte<br />

die nunmehr überflüssigen Empfehlungsschreiben<br />

wieder abbestellen. Ein<br />

Abmelden-Link im Newsletter führte<br />

mich zur Webseite des Schweizer Unternehmens.<br />

Die gab sich überraschend<br />

gesprächig: Offensichtlich für Debugging-<br />

Zwecke zeigte sie das SQL-Statement an,<br />

das meine Newsletter-Zusendung eben<br />

deaktiviert hatte.<br />

Die Debugausgabe auf dem Produktivsystem<br />

lässt mich aufmerken werden: Webprogrammierer,<br />

denen so was egal ist,<br />

haben bestimmt noch Leichen im Keller.<br />

Auf mich wirkt die Debugausgabe wie<br />

eine Einladung zum Angriff. Sie hilft mir<br />

beim Einstieg, denn sie zeigt genau das<br />

SQL-Statement, das der <strong>Datenbank</strong>server<br />

später abarbeiten wird. So sehe ich, welche<br />

Get- oder Post-Parameter wo in der<br />

Anfrage landen, ob die Webapplikation<br />

die Eingabe filtert und ob sie Sonderzeichen<br />

richtig schützt. Wer die Fehlermeldungen<br />

aus Abbildung 1 studiert, erfährt,<br />

dass Immosky einen Windows-Server<br />

mit PHP benutzt, der mehrere virtuelle<br />

Webserver anbietet und ohne Passwort<br />

per ODBC-Treiber aus PHP auf eine lokale<br />

MySQL-<strong>Datenbank</strong> zugegreift. Per<br />

Firebug [2] findet der Angreifer ferner<br />

aus den HTTP-Headern heraus, dass der<br />

Anbieter PHP 4.2.2 auf einem IIS 6.0 einsetzt<br />

– beide nicht aktuell und womöglich<br />

für bekannte Exploits empfänglich.<br />

Meine Neugier auf fremden Webseiten zu<br />

befriedigen, versuche ich sehr sorgfältig<br />

zu organisieren. Lehne ich mich zu weit<br />

aus dem Fenster, droht Strafe wegen Ausspähens<br />

von Daten (siehe Kasten „Gesetzeslage“).<br />

Zwar ist das nur dann illegal,<br />

wenn die Daten besonders gesichert<br />

sind. Doch schreiben die StGB-Kommentare,<br />

dass es mehr auf den Wunsch des<br />

Betreibers nach Sicherung als auf deren<br />

tatsächliche Güte ankommt.<br />

Einen Schaden soll der erste Test aus juristischen,<br />

aber auch aus taktischen Gründen<br />

nicht anrichten – Hacker versuchen<br />

unterm Radar zu bleiben. Das gelingt,<br />

wenn ich die in der URL übergebenen <strong>Datenbank</strong>parameter<br />

um ein neutrales Element<br />

ergänze, also eines, dass das Ergebnis<br />

der Abfrage nicht verändert. So ergibt<br />

»A OR FALSE« wieder »A«. Der Debugcode<br />

in Abbildung 2 beweist, dass ich die<br />

Anfrage geeignet modifiziert habe.<br />

Ein Cracker hätte die Bedingung im Parameter<br />

um »OR TRUE« ergänzt, was logisch<br />

immer »TRUE« ergibt. Praktische<br />

Folge: Die Immosky-Website hätte alle<br />

ihre Newsletterabonnements gekündigt.<br />

Den Erfolg erkennt der böswillige Angreifer<br />

an der möglicherweise höheren Laufzeit<br />

der Abfrage, wenn die <strong>Datenbank</strong> in<br />

allen Datensätzen ein Feld ändert.<br />

Eigene Daten<br />

reinströmen lassen<br />

Ich darf annehmen, dass die Immobiliendatenbank<br />

keinen Schaden nimmt, wenn<br />

ich versuche, mehr Datensätze zu sehen,<br />

als die aktuellen Suchkriterien eigentlich<br />

hergeben. Eine breiter angelegte, vom<br />

Anbieter vorgesehene Suche zeigt diese<br />

Daten nämlich ebenso an.<br />

Beim Testen hilf mir der Trick mit »OR<br />

TRUE«: Akzeptiert das darunterliegende


Gesetzeslage<br />

Paragraf 202a StGB: Ausspähen von Daten<br />

(1) Wer unbefugt sich oder einem anderen Zugang<br />

zu Daten, die nicht für ihn bestimmt und<br />

die gegen unberechtigten Zugang besonders gesichert<br />

sind, unter Überwindung der Zugangssicherung<br />

verschafft, wird mit Freiheitsstrafe bis<br />

zu drei Jahren oder mit Geldstrafe bestraft.<br />

(2) Daten im Sinne des Absatzes 1 sind nur solche,<br />

die elektronisch, magnetisch oder sonst<br />

nicht unmittelbar wahrnehmbar gespeichert<br />

sind oder übermittelt werden.<br />

Paragraf 263a StGB: Computerbetrug<br />

(1) Wer in der Absicht, sich oder einem Dritten<br />

einen rechtswidrigen Vermögensvorteil<br />

zu verschaffen, das Vermögen eines anderen<br />

dadurch beschädigt, daß er das Ergebnis eines<br />

Datenverarbeitungsvorgangs durch unrichtige<br />

Gestaltung des Programms, durch Verwendung<br />

unrichtiger oder unvollständiger Daten, durch<br />

unbefugte Verwendung von Daten oder sonst<br />

durch unbefugte Einwirkung auf den Ablauf<br />

beeinflußt, wird mit Freiheitsstrafe bis zu fünf<br />

Jahren oder mit Geldstrafe bestraft.<br />

Skript die Injection, darf ich auf eine umfangreichere<br />

Ausgabe hoffen. Falls durch<br />

den Angriff ein Syntaxfehler entsteht,<br />

kommt entweder eine hilfreiche Fehlermeldung<br />

oder gar keine Ausgabe. So finde<br />

ich durch Versuch und Irrtum heraus,<br />

welche Parameter in das SQL-Statement<br />

eingehen und welche für andere Zwecke<br />

gedacht sind. Tatsächlich zeigt sich auch<br />

die Suchfunktion anfällig diesen Vorstoß,<br />

wie Abbildung 3 beweist.<br />

Durch Experimente und in Kenntnis der<br />

booleschen Rechenregeln kriege ich sogar<br />

heraus, wie die einzelnen Suchparameter<br />

geklammert sind. Bei Immosky<br />

bietet sich an, zwei Suchparameter in<br />

der Suchmaske zu setzen und dann nur<br />

Paragraf 303a StGB: Datenveränderung<br />

(1) Wer rechtswidrig Daten (§ 202a Abs. 2)<br />

löscht, unterdrückt, unbrauchbar macht oder<br />

verändert, wird mit Freiheitsstrafe bis zu zwei<br />

Jahren oder mit Geldstrafe bestraft.<br />

Paragraf 303b StGB: Computersabotage<br />

(1) Wer eine Datenverarbeitung, die für einen<br />

anderen von wesentlicher Bedeutung ist, dadurch<br />

erheblich stört, dass er<br />

1. eine Tat nach § 303a Abs. 1 begeht,<br />

2. Daten (§ 202a Abs. 2) in der Absicht, einem<br />

anderen Nachteil zuzufügen, eingibt oder übermittelt<br />

oder<br />

3. eine Datenverarbeitungsanlage oder einen<br />

Datenträger zerstört, beschädigt, unbrauchbar<br />

macht, beseitigt oder verändert,<br />

wird mit Freiheitsstrafe bis zu drei Jahren oder<br />

mit Geldstrafe bestraft.<br />

(2) Handelt es sich um eine Datenverarbeitung,<br />

die für einen fremden Betrieb, ein fremdes Unternehmen<br />

oder eine Behörde von wesentlicher<br />

Bedeutung ist, ist die Strafe Freiheitsstrafe bis<br />

zu fünf Jahren oder Geldstrafe.<br />

einen mit »OR TRUE« zu erweitern. So<br />

lassen sich SQL-Injections verfeinern.<br />

Nur autoaggressiv<br />

Wer nicht über fremde Webseiten herfallen<br />

will, der experimentiert besser mit<br />

ei genen. Ein Beispiel in PHP zeigt Listing<br />

1, eines in Perl das Listing 2. Beide<br />

Skripte besitzen nur einen verwundbaren<br />

Parameter, »name«, der ohne Eingabekontrolle<br />

in die SQL-Query wandert. Beide<br />

Programme geben Feedback, indem sie<br />

das SQL-Statement und die erreichte Ausgabe<br />

auf einer Seite zeigen.<br />

PHP birgt für den Angreifer einen Nachteil:<br />

Es ist nicht möglich, in einem<br />

»mysql_query()«-Aufruf mehr als einen<br />

SQL-Befehl per Semikolon getrennt mitzuschicken.<br />

Bei Perl gilt das nicht, wenn<br />

das Skript statt der verwendeten Prepare-<br />

Execute-Kombination direkt mit »do« arbeitet.<br />

Das ist nützlich, wenn die Injection<br />

zum Beispiel gleich einen neue Nutzer<br />

mit Admin-Rechten anlegen soll.<br />

Schutz gegen Injections<br />

Zwei Maßnahmen kann jeder Webprogrammierer<br />

gegen SQL-Injections ins Feld<br />

führen: Zum einen soll te er jede Eingabe<br />

zum Beispiel per regulärem Ausdruck<br />

prüfen, ob sie formal zu lässig ist. Sind<br />

Wertebereiche der übergebenen Parameter<br />

bekannt, bezieht er die mit ein. Zum<br />

anderen können fast alle Sprachen Zeichenketten<br />

so umformen, dass sie keine<br />

Gefahr mehr für die <strong>Datenbank</strong> darstellen.<br />

Dazu verpacken sie kritische Sonderzeichen.<br />

Aus doppelten Gänsefüßchen<br />

wird damit etwa »&quot;«. Das leistet in<br />

Perl die DBI-Funktion »quote()« und in<br />

PHP »mysql_real_escape_string()«. Wer<br />

Listing 1 und 2 in Betrieb hat, darf das<br />

gleich ausprobieren, indem er »$name« in<br />

beiden Skripten escaped und dann mit<br />

SQL-Injections experimentiert. Dabei helfen<br />

Cheat-Sheets wie [4], [5].<br />

Während Listing 1 nichts in der Richtung<br />

besitzt, betreibt das Perl-Skript<br />

ein ausbaufähiges Fehlerhandling. Statt<br />

der Ausgabe auf der Webseite per »die«<br />

würde sich eine automatische Mail an<br />

den Admin besser machen. Dem Nutzer<br />

reicht der Hinweis »Kommen Sie später<br />

wieder, wir haben ein Problem« aus. Eine<br />

eingebundene Funktion kann genau das<br />

leisten – mit dem Vorteil, dass der Admin<br />

jeden Fehler mitbekommt. Nebenbei eig-<br />

SQL-Injection 02/<strong>2011</strong><br />

Know-how<br />

www.linux-magazin.de<br />

109<br />

Abbildung 1: Die überflüssigen Fehlermeldungen verraten weitere Informationen<br />

über den Server – eine prima Einstieghilfe für Hacker.<br />

Abbildung 2: Die SQL-Injection funktioniert offenbar. In diesem Beispiel bleibt<br />

der Angriff bewusst ohne Auswirkung auf die <strong>Datenbank</strong>.


Know-how<br />

www.linux-magazin.de SQL-Injection 02 /<strong>2011</strong><br />

110<br />

Abbildung 3: Die offensichtlich unsinnigen Angebote beweisen: Auch die Suche ist angreifbar.<br />

net sich der Mechanismus als Frühwarnsystem<br />

für versuchte SQL-Injections.<br />

Bei Seiten, die keine Daten vom Benutzer<br />

brauchen, sollte zudem der <strong>Datenbank</strong>user<br />

des Skriptes nur Leserechte auf die<br />

<strong>Datenbank</strong> haben. Allerdings ist das in<br />

der Praxis selten möglich, da schon ein<br />

Gästebuch nach Schreibzugriff verlangt.<br />

Nicht die leichte Schulter!<br />

Durch die Debugdaten auf der Immosky-<br />

Seite war der Weg zur SQL-Injection besonders<br />

einfach zu entdecken. Bei besser<br />

präparierten Anbietern hilft qualifiziertes<br />

Raten: Welche Parameter könnten in eine<br />

Query Eingang finden? Dabei unterstüt-<br />

zen Fehlermeldungen, die Interna offenlegen.<br />

Betreiber wie Immosky sollten sich<br />

vor Augen führen, dass echte, invasiv<br />

geführte SQL-Angriffe eine <strong>Datenbank</strong><br />

völlig ruinieren können. Abhilfe bringt<br />

ein ordentliches Escaping der Webseiten-<br />

Parameter. Webprogrammierer dazu zu<br />

motivieren ist das Ziel dieses Artikels.<br />

Für das eigene System bieten Multiinjector<br />

[6] und andere Tools automatische<br />

Brute-Force-SQL-Injections an. Wer einen<br />

Test mit diesen Tools übersteht, dürfte gegen<br />

einen Großteil der Standardangriffe<br />

gewappnet sein – hundertprozentig sicher<br />

ist das aber natürlich nicht.<br />

Im Zuge der Recherchen zu diesem Beitrag<br />

hat das <strong>Linux</strong>-<strong>Magazin</strong> den Betreiber<br />

des Portals kontaktiert. Immosky reagier te<br />

darauf bislang nicht. Kurz vor Drucklegung<br />

des Hefts waren allerdings – Zufall<br />

oder nicht – die Debugausgaben beim<br />

Abmelden des Newsletters verschwunden.<br />

Die Redaktion wird dem Anbieter<br />

eine Woche vor Veröffentlichung den Artikel<br />

zu Verfügung stellen. (jk) n<br />

Infos<br />

[1] Immosky: [http://www.immosky.de]<br />

[2] Firebug: [https://addons.mozilla.org/de/<br />

firefox/addon/ 6683/]<br />

[3] Tobias Eggendorfer, „Web-Sicherheitslücken<br />

am Beispiel eines Onlineshops“,<br />

<strong>Linux</strong>-<strong>Magazin</strong> 12/ 10, S. 100<br />

[4] SQL Injection Cheat Sheet I: [http://ferruh.<br />

mavituna.com/sql-injection-cheatsheet-oku]<br />

[5] SQL Injection Cheat Sheet II:<br />

[http:// michaeldaw. org/ sql-injection-cheatsheet#mysql]<br />

[6] Multiinjector:<br />

[http://code. google.com/p/multinjector/]<br />

Der Autor<br />

Tobias Eggendorfer ist freiberuflicher IT-Berater<br />

und Professor für angewandte Informatik und IT-<br />

Forensik [http:// www.eggendorfer.info]. Bei Experimenten<br />

zu Artikeln staunt er immer wieder,<br />

wie nachlässig Unternehmen mit Sicherheitslücken<br />

umgehen. Die meisten ignorieren nämlich<br />

seine Hinweise auf Schwachstellen.<br />

Listing 1: Injection-Dummy in PHP<br />

01 <br />

02 <br />

03 SQL‐Inject<br />

04 <br />

05 <br />

06 <br />

07


Entwickler als Gewissen der informationstechnischen Gesellschaft<br />

Retter der Nation<br />

Einführung 02/<strong>2011</strong><br />

Programmieren<br />

Anwender hinterfragen selten die technischen Grundlagen ihner Software, geschweige denn den Quellcode.<br />

Diese Aufgabe übernehmen Entwickler und Architekten – und damit wichtige Verantwortung. Nils Magnus<br />

Inhalt<br />

112 Xtext<br />

Eigene Sprachen sind einfacher zu<br />

lernen als komplexe Konfigurationsanweisungen,<br />

beispielsweise bei Netfilter.<br />

Xtext hilft beim Entwurf domainspezifischer<br />

Sprachen und spart dem<br />

Admin das Schreiben eigener Parser.<br />

118 Perl-Snapshot<br />

Laut Statistik ist Mike Schilli der fleißigste<br />

Perl­Comitter. Das ist natürlich – wie<br />

jede Erhebung – vermutlich gelogen.<br />

Mehr Wahrheit bringt R ans Licht, das aus<br />

Coderepositories Statistiken erzeugt.<br />

Informatiker befinden sich auf dem<br />

Rückzug. Nach den Zahlen der Gesellschaft<br />

für Informatik (GI) nehmen im<br />

aktuellen Semester zwar drei Prozent<br />

mehr Studierende ein Informatikstudium<br />

auf, über alle Fächer betrachtet<br />

studieren jedoch vier Prozent mehr als<br />

im Vorjahr. Das bedeutet, dass der Anteil<br />

der Informatiker unter den Akademikern<br />

abnimmt.<br />

Angesichts des proklamierten Fachkräftemangels<br />

und veritabler Gehaltsperspektiven<br />

verwundert das schon etwas.<br />

Die GI, das Sprachrohr der akademischen<br />

Informatiker, prophezeit immerhin glänzende<br />

Berufsaussichten für die Absolventen.<br />

Der Median des Jahresbruttogehalts<br />

für Hochschulabsolventen weist<br />

sie mit guten 45 000 Euro regelmäßig als<br />

Mitglieder der Spitzengruppe aus.<br />

Aber der schnöde Mammon oder das<br />

Wissen, zur Stärkung des nationalen<br />

Wirtschaftsstandorts beizutragen, reichen<br />

offenbar nicht als alleiniger Grund<br />

für diejenigen, die vor der Berufswahl<br />

stehen. Vielleicht kann stattdessen dies<br />

die Entscheidungsfindung erleichtern:<br />

Wer sich für die Informationstechnik<br />

entscheidet, übernimmt bei moralischer<br />

Eignung auch eine wichtige gesellschaftliche<br />

Verantwortung.<br />

Denn quer durch die Bevölkerung<br />

zieht sich ein merkwürdiger<br />

Widerspruch: Die<br />

Sensibilität für manches<br />

Datenschutzthema ist hierzulande<br />

im internationalen<br />

Vergleich hoch – siehe die<br />

emotional geführt Debatte<br />

um Google Street View. Andererseits<br />

beobachten Datenschützer<br />

mit wachsender<br />

Besorgnis die Naivität, die<br />

manch Anwender an den Tag<br />

legt, sei es beim freizügigen<br />

Gebrauch von Facebook, bei<br />

gespeicherten Klartextpasswörtern<br />

in Browsern oder<br />

dem datenschutztechnisch<br />

unreflektierten Gebrauch von<br />

Rabattkarten an Tankstellen und Supermarktkassen,<br />

in Google-Accounts oder<br />

allzu laxen I-Phone-Einstellungen.<br />

Gespaltene Gesellschaft<br />

In einem Artikel der ZEIT berichten zwei<br />

Anwenderinnen von ihrem Bemühen,<br />

sich von einem Profi zeigen zu lassen,<br />

welche Privacy-Probleme ihnen womöglich<br />

drohen [1]. Der Experte schlägt eine<br />

Reihe von Maßnahmen vor. Eine lautet,<br />

<strong>Linux</strong> auf dem Notebook zu installieren,<br />

eine andere, mehr über Hintergründe<br />

wie RFID, Bluetooth im Auto oder Firefox-Privacy-Addons<br />

herauszufinden. Die<br />

Ratsuchenden zeigen sich von der drohenden<br />

Umstellung und den technischen<br />

Details wenig begeistert: „So etwas kann<br />

nerven. Die meisten Anwender wollen<br />

Technik nur benutzen, nicht verstehen“,<br />

seufzen sie.<br />

Das ist eine recht verständliche, auf jeden<br />

Fall aber eine verbreitete Einstellung.<br />

Ebenso nachvollziehbar ist jedoch der<br />

Ruf mancher Entwickler und Experten<br />

Abbildung 1: Informatikern winken nicht nur beruflicher Erfolg und<br />

ein gesichertes Einkommen. Nur ihr Verantwortungsbewusstsein<br />

ermöglicht eine aufgeklärte Informationsgesellschaft.<br />

nach mehr Verständnis der Anwender<br />

für technische Hintergründe – sie kann<br />

allerdings nicht als alleinige Lösung herhalten.<br />

IT-Systeme sollten so entworfen<br />

und implementiert sein, dass Anwender<br />

die Chance haben, sie sicher zu benutzen<br />

– auch ohne den Sourcecode gelesen zu<br />

haben. Aber in einer komplexen Gesellschaft<br />

sind die Bürger auf die Ergebnisse<br />

von Experten angewiesen.<br />

Hier sind die IT-Experten gefordert: Sie<br />

müssen Bedrohungen qualifizieren, sie<br />

dem Anwender erklären und Gegenmaßnahmen<br />

bewerten. Wenn die Ausbildung<br />

als Fachinformatiker oder das Studium an<br />

Berufsakademien und Hochschulen an<br />

diese wichtige Verantwortung erinnert,<br />

ist die Zeit der (IT-)Helden gekommen.<br />

Vielleicht kommen dann auch wieder<br />

mehr Studierende.<br />

n<br />

Infos<br />

[1] Susanne Gaschke, „Alufolie für den Personalausweis“:<br />

Die ZEIT, Ausgabe 49/ 2010:<br />

[http://zeit. de/ 2010/49/Datensicherheit]<br />

© Cathy Yeulet, 123RF.com<br />

www.linux-magazin.de<br />

111


Programmieren<br />

www.linux-magazin.de Xtext 02 /<strong>2011</strong><br />

112<br />

Xtext generiert IPtables-Regeln<br />

Selbst modelliert<br />

Manches wichtige Softwarepaket verwendet eigenwillige Syntax auf der Kommandozeile oder in Konfigurationsdateien.<br />

Dieser Artikel zeigt am Beispiel IPtables, wie sich mit Hilfe des Framework Xtext eine vereinfachte<br />

Konfigurationssprache samt Skriptgenerator bauen lässt. Volker Wegert<br />

© Aleksandr Frolov, 123RF.com<br />

Werkzeuge zur Parser-Generierung gehören<br />

seit Urzeiten zum Inventar der<br />

Unix-Betriebssysteme. Im praktischen<br />

Einsatz geben sich mächtige Tools wie<br />

Bison und Yacc aber leider oft sperrig<br />

und sind daher hauptsächlich in großen<br />

Projekten zu finden. Im Kielwasser der<br />

modellgetriebenen Entwicklung sind jedoch<br />

in den letzten Jahren alternative<br />

Werkzeuge entstanden, die sich durchaus<br />

auch für kleinere Aufgaben außerhalb<br />

der klassischen Software-Entwicklung<br />

verwenden lassen.<br />

Firewall nach Modell<br />

Mit Xtext [1] stellt dieser Artikel ein<br />

Werk zeug zur Erstellung Domänen-spezifischer<br />

Sprachen (DSL) vor. Als Beispiel<br />

erarbei tet er eine Sprache für Firewallregeln<br />

und produziert schließlich mit Hilfe<br />

eines Generators ein IPtables-Skript.<br />

Naturgemäß lässt sich die Komplexität<br />

eines flexiblen Konzepts wie IPtables<br />

durch Ändern der Beschreibungsform<br />

nicht verringern. Allenfalls erhält man<br />

eine ähnlich komplexe, aber besser lesbare<br />

Konfiguration. Allein das bedeutet<br />

aber bei mancher Software schon einen<br />

nicht zu verachtenden Fortschritt.<br />

Einen echten Mehrwert kann allerdings<br />

erzielen, wer die für den gewünschten<br />

Einsatzzweck invarianten Bestandteile<br />

identifiziert und fest in den Generator<br />

einbaut. Dadurch muss die Sprache nur<br />

noch die eigentlichen Nutzinformationen<br />

aufnehmen und lässt sich schneller erstellen<br />

und erlernen. Gleichzeitig senkt<br />

dieses Vorgehen die Wahrscheinlichkeit<br />

von Fehlbedienungen.<br />

Um das Modellieren einer Firewall etwas<br />

einfacher zu gestalten, gelten für<br />

das Beispiel in diesem Artikel die im<br />

Kasten „Annahmen für die Firewall“<br />

formulierten Einschränkungen. Die hier<br />

beschriebene Lösung kann sicher nicht<br />

mit spezialisierten Tools wie Ferm [2]<br />

konkurrieren. Anhand dieses Beispiels<br />

lässt sich aber die Arbeit mit Xtext gut<br />

erläutern. Oft hilft es, sich zu Beginn der<br />

Arbeit einen Grobentwurf der gewünschten<br />

Sprache zu erstellen. Anhand dieser<br />

Skizze fällt es dann leichter, die Grammatik<br />

zu schreiben, die zur Grundlage aller<br />

weiteren Schritte wird.<br />

Abbildung 1 zeigt ein Beispiel der geplanten<br />

Firewall-Sprache. Sie enthält die Namen<br />

für Skript und Netzwerk-Schnitt stellen,<br />

die symbolischen Namen für Rechner<br />

und Netze sowie die Dienste-Definitionen.<br />

Den letzten Teil bilden die Regeln<br />

für ein- und ausgehende Verbindungen.<br />

So aufgeschrieben ist die Konfiguration<br />

der Firewall auch ohne tiefe Kenntnis der<br />

IPtables-Syntax verständlich.<br />

Grammatik<br />

Listing 1 bildet die Grundlage der Grammatik<br />

und sieht einer um Steuerinformationen<br />

angereicherten erweiterten<br />

Backus-Naur-Form ähnlich. Die beiden<br />

Kopfzeilen hat Xtext automatisch erzeugt.<br />

Die erste Produktionsregel der<br />

Grammatik legt das Wurzelelement der<br />

künftigen Eingabedateien fest. Aus dieser<br />

Regel entsteht später ein Elementtyp<br />

namens »Model«.<br />

Zeile 5 bewirkt, dass der Typ ein Attribut<br />

»scripts« erhält, das aus beliebig vielen<br />

»Script«-Elementen besteht. Die »Script«-<br />

Produktionsregel ab Zeile 7 legt die Syntax<br />

dieses Elements fest: das Schlüsselwort<br />

»script« gefolgt vom Namen des<br />

Skripts. Auch hier bewirkt die Notation<br />

»name =STRING«, dass der Typ »Script«<br />

später ein Attribut »name« zur Aufnahme<br />

von Zeichenketten enthält.<br />

Da hier aber kein Quantor wie »*« angegeben<br />

ist, kann dieses Attribut anders<br />

als »scripts« nur genau einen Namen auf-


Annahmen für die Firewall<br />

n Es handelt sich um eine einfache IPv4-<br />

Firewall zwischen Standorten.<br />

n Die Firewall hat je genau ein internes und<br />

ein externes Interface.<br />

n Rechner, Netze und Dienste sollen durch<br />

symbolische Namen identifiziert werden.<br />

n Alle beteiligten Netzbereiche sind disjunkt,<br />

NAT findet nicht statt.<br />

n Es werden nur TCP- und UDP-Regeln auf<br />

Port-Basis erstellt.<br />

n Nur explizit konfigurierte Verbindungen<br />

zwischen den angegebenen Standorten<br />

sind zugelassen.<br />

n Externe Zugriffe auf die Firewall sind verboten,<br />

interne Zugriffe sind erlaubt.<br />

Xtext 02/<strong>2011</strong><br />

Programmieren<br />

www.linux-magazin.de<br />

113<br />

nehmen. Die Zeilen 9 bis 12 enthalten<br />

keine wesentlichen Neuerungen bis auf<br />

den Typ »ID«, der einen (Java-)Bezeichner<br />

ohne Anführungszeichen darstellt,<br />

wogegen »STRING«-Attribute in Anführungszeichen<br />

angegeben sind. Die Zeilen<br />

13 und 14 enthalten jeweils Gruppen:<br />

Die runden Klammern in Verbindung<br />

mit dem Quantor »?« erlauben es, die<br />

gesamte Regelgruppe für ein- oder ausgehende<br />

Verbindungen wahlweise anzugeben<br />

oder auszulassen.<br />

Die Zeilen 17 und folgende definieren<br />

einen Typ zur Angabe von IPv4-Adressen.<br />

Die Zeilen 20 und 21 beschreiben<br />

einen Aufzählungstyp zur Angabe des<br />

Protokolls. Dabei sind »TCP« und »UDP«<br />

die sprachintern verwendeten Werte, die<br />

Abbildung 1: Ein Prototyp der gewünschten Firewall-Sprache dient als Grundlage für die Arbeit mit Xtext.<br />

Literale »tcp« und »udp« werden bei der<br />

Ein- und Ausgabe verwendet. Die Zeilen<br />

23 bis 27 definieren einfache zusammengesetzte<br />

Typen zur Angabe symbolischer<br />

Rechner- und Netzwerknamen. Zeile 30<br />

zeigt eine Besonderheit von Xtext: »[Typname]«<br />

definiert einen Verweis auf Elemente<br />

dieses Typs.<br />

Die Produktionsregel »Endpoint« enthält<br />

eine weitere Besonderheit: Die Literale<br />

»host« und »net« sind eine Konzession an<br />

den Parser, der ansonsten nicht zwischen<br />

einem Verweis auf einen Rechner oder<br />

auf ein Netzwerk (jeweils in Form einer<br />

ID) unterscheiden könnte und bei der Generierung<br />

eine entsprechende Warnung<br />

ausgeben würde.<br />

Die Definition eines Dienstes ab Zeile 32<br />

mag zunächst unübersichtlich wirken,<br />

enthält aber nichts wesentlich Neues.<br />

Protokolle und Portnummern lassen sich<br />

entweder als einfacher Wert oder als<br />

kommaseparierte Werteliste in Klammern<br />

angegeben, daher die etwas umfangreichere<br />

Regel. Bei der Definition einer Regel<br />

ist ein Unterschied zwischen den Zei-<br />

Listing 1: Xtext-Grammatik<br />

01 grammar org.myfirewall.MyFirewall with org.eclipse.xtext.common.Terminals<br />

02 generate myFirewall "http://www.myfirewall.org/MyFirewall"<br />

03<br />

04 Model:<br />

05 scripts+=Script*;<br />

06<br />

07 Script:<br />

08 'script' name=STRING '{'<br />

09 'interfaces internal' ifInternal=ID 'external'<br />

ifExternal=ID ';'<br />

10 hosts+=HostAlias*<br />

11 networks+=NetworkAlias*<br />

12 services+=ServiceDefinition*<br />

13 ('allow incoming {' incomingRules+=Rule+ '}')?<br />

14 ('allow outgoing {' outgoingRules+=Rule+ '}')?<br />

15 '}';<br />

16<br />

17 IPAddress:<br />

18 byte1=INT '.' byte2=INT '.' byte3=INT '.' byte4=INT;<br />

19<br />

20 enum Protocol:<br />

21 TCP='tcp' | UDP='udp';<br />

22<br />

23 HostAlias:<br />

24 'host' name=ID '=' ip=IPAddress ';';<br />

25<br />

26 NetworkAlias:<br />

27 'net' name=ID '=' ip=IPAddress '/' cidrSuffix=INT ';';<br />

28<br />

29 Endpoint:<br />

30 ('host' host=[HostAlias]) | ('net' network=[NetworkAlias]);<br />

31<br />

32 ServiceDefinition:<br />

33 'service' name=ID '='<br />

34 ('proto' (protocols+=Protocol |<br />

35 '(' protocols+=Protocol (',' protocols+=Protocol)+<br />

')'))?<br />

36 ('port' (ports+=INT |<br />

37 '(' ports+=INT (',' ports+=INT)+ ')'))? ';';<br />

38<br />

39 Rule:<br />

40 source=Endpoint 'to' destination=Endpoint ':'<br />

41 services+=[ServiceDefinition] (',' services+=<br />

[ServiceDefinition])* ';';


Programmieren<br />

www.linux-magazin.de Xtext 02 /<strong>2011</strong><br />

114<br />

Xtext installieren<br />

Voraussetzung für die Installation von Eclipse<br />

und Xtext ist lediglich eine Java-Laufzeitumgebung,<br />

wobei sich mindestens Version<br />

5 empfiehlt. Leider gibt es mit den in den<br />

gängigen Distributionen enthaltenen Eclipse-<br />

Paketen immer wieder Probleme – vor allem<br />

sind sie in der Regel veraltet. Zu empfehlen<br />

ist dagegen das Paket „Eclipse Modeling<br />

Tools“ von [3].<br />

Nach dem ersten Start sind über »Help |<br />

Install Modeling Components« die Pakete<br />

Xpand und Xtext nachzuinstallieren. Nach<br />

der Installation stellt man in den globalen<br />

Einstellungen unter »General | Workspace«<br />

die Standardkodierung von Textdateien auf<br />

UTF-8 um, damit es keine Schwierigkeiten mit<br />

den von Xtext verwendeten Guillemets («»)<br />

gibt. Um die Übersicht nicht zu verlieren, ist<br />

es außerdem ratsam, im Package Explorer die<br />

Option »Link with Editor« (das Icon mit den<br />

zwei Pfeilen) zu aktivieren.<br />

Der generierte Editor ist – insbesondere<br />

in Relation zum bisher investierten Aufwand<br />

– schon sehr ansehnlich, aber bei<br />

Weitem noch nicht perfekt: Die Produktionsregel<br />

»IPAddress« beispielsweise erlaubt<br />

es, beliebige Integerwerte in den<br />

Bytes anzugeben und damit auch Adreslen<br />

40 und 41 wichtig: Während die<br />

Dienste-Definitionen in eckigen Klammern<br />

stehen und daher referenziert werden,<br />

sind die Endpunkte als direkte Attribute<br />

in die Regel eingefügt. Die Grammatik<br />

ist schon so gut wie alles, was man für<br />

eine erste Version des Editors benötigt.<br />

Wer sie praktisch mit Eclipse und Xtext-<br />

Tools umsetzen möchte, findet im Kasten<br />

„Xtext installieren“ Hinweise.<br />

Der Befehl «File | New Project | Xtext<br />

Project« legt neben dem Hauptprojekt<br />

auch noch ein Projekt zur Aufnahme des<br />

generierten Editors mit dem Suffix ».ui«<br />

Listing 2: IP-Adressen<br />

an. Außerdem erzeugt er in der Voreinstellung<br />

ein Generator-Projekt, das später<br />

benötigt wird. Xtext kann etwas empfindlich<br />

auf ungewöhnliche Schreibweisen<br />

reagieren, deshalb sollten Einsteiger<br />

als Projektnamen »org.myfirewall« und<br />

als Sprachnamen »org.myfirewall.My-<br />

Firewall« wählen. Der Wizard öffnet nach<br />

der Anlage der Projekte die Xtext-Datei,<br />

die die Beschreibung der Grammatik aus<br />

Listing 1 aufnimmt.<br />

Editor nach Maß<br />

Neben der Sprachdefinition befindet<br />

sich eine Datei mit der Endung ».mwe2«.<br />

Diese Steuerdatei der Modeling Workflow<br />

Engine legt Parameter zur Generierung<br />

der Programmkomponenten fest. In<br />

dieser Datei entfernt der DSL-Entwickler<br />

die Kommentarzeichen vor dem letzten<br />

Abschnitt »project wizard«, um einen<br />

Wizard zur Anlage eines neuen Firewall-<br />

Projekts zu erhalten. Bei dieser Gelegenheit<br />

fügt er auch die Zeile<br />

fragment = org.eclipse.xtext.generatorU<br />

.validation.CheckFragment {}<br />

innerhalb des »language«-Blocks ein – zur<br />

Verwendung später mehr. Ein Rechtsklick<br />

auf die Workflow-Datei und »Run As |<br />

MWE2 Workflow« startet die Generierung<br />

der Programmkomponenten.<br />

Bei der ersten Generierung bietet Xtext<br />

an, automatisch den Antlr-Parsergenerator<br />

herunterzuladen, was der Anwender<br />

bejaht. Aufgrund lizenzrechtlicher Bedenken<br />

darf die Eclipse Foundation diese<br />

Komponente nicht in ihren Produkten<br />

ausliefern. Details dazu finden sich in der<br />

Xtext-Dokumentation unter [4].<br />

Nach erfolgreicher Generierung lässt sich<br />

der erstellte Editor schon starten, indem<br />

man unter »Run | Run Configurations ...«<br />

eine neue Konfiguration des Typs »Eclipse<br />

Application« anlegt. In der neuen Instanz<br />

ist ein »MyFirewall«-Projekt einzurichten<br />

– danach steht der Editor zum Ausprobieren<br />

bereit: Syntax-Hervorhebung, automatische<br />

Code-Vervollständigung und<br />

viele andere Funktionen sind jetzt schon<br />

benutzbar (Abbildung 2).<br />

Nun ist noch eine Änderung bezüglich<br />

der Datei »META-INF/MANIFEST.MF«<br />

im Hauptprojekt erforderlich. Auf der<br />

Registerkarte »Dependencies« wählt der<br />

Xtext-Anwender den Eintrag »org.eclipse.<br />

xtext.xtend« und schaltet mit der Drucktaste<br />

»Properties« die Option »Optional«<br />

aus sowie die Option »Reexport...« an.<br />

Danach markiert er nacheinander noch<br />

alle drei Projekte und wählt aus deren<br />

Kontextmenü »Configure | Add Xpand/<br />

Xtend Nature«.<br />

Gültigkeitsprüfung<br />

01 context IPAddress ERROR "Not a valid IP address":<br />

02 byte1 >= 0 && byte1 = 0 &&<br />

03 byte2 = 0 && byte3 = 0 && byte4


Abbildung 3: Erweiterte Prüfungen mit integrierter<br />

Anzeige der Ergebnisse im Editor sind mit der Sprache<br />

Check leicht zu erstellen.<br />

sen wie 172345.26.5.1234 zu schreiben.<br />

Dieses Problem behebt eine Prüfregel,<br />

die in der Sprache Check formuliert wird.<br />

Check gehört zur Familie der Sprachen<br />

um Xtend und Xpand und verwendet<br />

die gleiche funktionale Notation. Dabei<br />

kommt ein automatisch aus der Grammatik<br />

abgeleitetes Meta-Modell zum Einsatz.<br />

Die Check-Referenz ist unter [5]<br />

online verfügbar.<br />

In die Datei »MyFirewallFastChecks.chk«,<br />

die im Paket »org.myfirewall.validation«<br />

zu finden ist, fügt der Entwickler am Anfang<br />

die Anweisung »import myFirewall;«<br />

ein, um das generierte Ecore-Modell zu<br />

importieren. Anschließend trägt er die<br />

Zeilen aus Listing 2 ein. Diese Prüfung<br />

wirkt auf alle Instanzen von »IPAddress«<br />

und gibt eine Fehlermeldung aus, wenn<br />

die formulierte Bedingung nicht erfüllt ist<br />

(Abbildung 3).<br />

Generator<br />

Um aus der Beschreibung der Firewallregeln<br />

ein ausführbares Shellskript zu<br />

erzeugen, sind weitere Arbeiten im Generator-Projekt<br />

zu erledigen. Vor der eigentlichen<br />

Textgenerierung sind noch ein<br />

paar Hilfsmittel nötig, die mit der Sprache<br />

Xtend realisiert werden. Diese Sprache<br />

stammt – wie viele der hier vorgestellten<br />

Projekte – aus dem Projekt Open<br />

Architecture Ware und ist mittlerweile<br />

zusammen mit Check und Xpand in ein<br />

Eclipse-Projekt umgezogen. Die Xtend-<br />

Ausdrücke finden in der Datei »templates/Extensions.ext«<br />

Platz.<br />

Um die IP-Adressen als Text auszugeben,<br />

reicht ein einfacher Ausdruck (Listing<br />

3). Der erste Parameter lässt sich unabhängig<br />

von seinem Namen auch als aktuell<br />

bearbeitetes Objekt »this« bezeichnen.<br />

Zum Erzeugen der Kommentare ist<br />

der Name des Rechners oder Netzwerks<br />

erforderlich, auf den ein Endpunkt verweist.<br />

Da Xtend zu den funktionalen<br />

Sprachen zählt, hat die Fallunterscheidung<br />

die Form eines ternären Operators<br />

(Listing 4). Gleichermaßen erforderlich<br />

ist die IP-Adresse des Rechners beziehungsweise<br />

die des Netzwerks, letztere<br />

in CIDR-Notation (Listing 5). Mit diesen<br />

drei Ausdrücken im Werkzeugkoffer geht<br />

es an die Generierung.<br />

Es werde Skript<br />

Die Regeln zur Erzeugung der Ausgabedateien<br />

formuliert der Entwickler in der<br />

Sprache Xpand. Diese Sprache ist speziell<br />

auf die Vorlagen-Erstellung ausgerichtet.<br />

Bei der Ausführung werden alle Textinhalte<br />

in die Ausgabe übertragen, mit<br />

Ausnahme der Kommandos, die durch<br />

Guillemets («») gekennzeichnet sind.<br />

Ein Bindestrich vor dem schließenden<br />

Guillemet verhindert, dass der folgende<br />

Zeilenumbruch in der Ausgabedatei landet.<br />

Listing 6 zeigt den Inhalt der Datei<br />

»templates/Template.xpt« des Firewall-<br />

Generators.<br />

Die Datei besteht aus zwei Vorlagen namens<br />

»main« und »rule«. Eine Vorlage<br />

Xtext 02/<strong>2011</strong><br />

Programmieren<br />

www.linux-magazin.de<br />

115<br />

Listing 6: Xpand-Template<br />

01 «IMPORT org::myfirewall::myFirewall»<br />

02 «EXTENSION templates::Extensions»<br />

03<br />

04 «DEFINE main FOR Script‐»<br />

05 «FILE name‐»<br />

06 #!/bin/sh<br />

07<br />

08 # no network address translation<br />

09 /sbin/iptables ‐t nat ‐F<br />

10 /sbin/iptables ‐t nat ‐P PREROUTING ACCEPT<br />

11 /sbin/iptables ‐t nat ‐P POSTROUTING ACCEPT<br />

12<br />

13 # prepare filtering tables<br />

14 /sbin/iptables ‐t filter ‐F<br />

15 /sbin/iptables ‐t filter ‐P INPUT REJECT<br />

16 /sbin/iptables ‐t filter ‐P OUTPUT ACCEPT<br />

17 /sbin/iptables ‐t filter ‐P FORWARD REJECT<br />

18<br />

19 # always allow inbound connections from loopback and the internal network<br />

20 /sbin/iptables ‐t filter ‐A INPUT ‐‐in‐interface lo ‐‐jump ACCEPT<br />

21 /sbin/iptables ‐t filter ‐A INPUT ‐‐in‐interface «ifInternal» ‐‐jump<br />

ACCEPT<br />

22<br />

23 # enable connection tracking<br />

24 /sbin/iptables ‐t filter ‐A FORWARD ‐‐match state ‐‐state INVALID ‐‐jump<br />

DROP<br />

25 /sbin/iptables ‐t filter ‐A FORWARD ‐‐match state ‐‐state<br />

ESTABLISHED,RELATED ‐‐jump ACCEPT<br />

26<br />

27 # inbound connections<br />

28 «FOREACH incomingRules AS rule‐»<br />

29 «EXPAND rule(ifExternal, ifInternal) FOR rule‐»<br />

30 «ENDFOREACH‐»<br />

31<br />

32 # outbound connections<br />

33 «FOREACH outgoingRules AS rule‐»<br />

34 «EXPAND rule(ifInternal, ifExternal) FOR rule‐»<br />

35 «ENDFOREACH‐»<br />

36 «ENDFILE‐»<br />

37 «ENDDEFINE»<br />

38<br />

39 «DEFINE rule(String fromInterface, String toInterface) FOR Rule‐»<br />

40 # from «source.getName()» to «destination.getName()»<br />

41 «FOREACH services AS service‐»<br />

42 «FOREACH service.protocols AS protocol‐»<br />

43 «FOREACH service.ports AS port‐»<br />

44 /sbin/iptables ‐t filter ‐A FORWARD ‐‐in‐interface «fromInterface»<br />

‐‐out‐interface «toInterface» \<br />

45 ‐‐source «source.getAddress()»<br />

‐‐destination «destination.getAddress()» \<br />

46 ‐‐protocol «protocol» ‐‐dport «port»<br />

‐‐jump ACCEPT<br />

47 «ENDFOREACH‐»<br />

48 «ENDFOREACH‐»<br />

49 «ENDFOREACH‐»<br />

50 «ENDDEFINE»


Programmieren<br />

www.linux-magazin.de Xtext 02 /<strong>2011</strong><br />

116<br />

Abbildung 4: Als Ergebnis der Arbeit mit dem Modelling-Tool liegt das fertige IPtables-Skript vor.<br />

der Xtend-Ausdrücke zur Anwendung.<br />

Zum Auswerten dieser Regeln dient die<br />

Modeling Workflow Engine. Dazu muss<br />

der Programmierer noch die Workflow-<br />

Datei im Verzeichnis »src/workflow« des<br />

Generators anpassen, indem er die Slot-<br />

Angabe »greetings« durch »scripts« und<br />

die Typangabe »Greeting« durch »Script«<br />

ersetzt. Außerdem kommt die Vorlage<br />

»main« für jedes Skript statt für jede Begrüßung<br />

zum Einsatz:<br />

expand = "templates::Template::mainU<br />

FOREACH scripts"<br />

Jetzt lässt sich die Generierung starten,<br />

indem man in der zweiten Eclipse-Instanz<br />

des Firewall-Projekts aus dem Kontextmenü<br />

der Workflow-Datei »Run As |<br />

MWE2 Workflow« wählt. Das Ergebnis<br />

»setup-firewall.sh« findet sich im Verzeichnis<br />

»src-gen« (Abbildung 4).<br />

Ausblick<br />

Das hier vorgestellte Konzept lässt sich<br />

flexibel auf beliebige andere Szenarien<br />

anwenden, in denen eine oder mehrere<br />

Textdateien aus einer Beschreibung entstehen<br />

sollen. Dabei können durchaus<br />

auch Konfigurationsdateien für verschie-<br />

ist jeweils mit Bezug zu einer Klasse des<br />

Ecore-Modells definiert und wird für eine<br />

Instanz dieser Klasse ausgewertet. Im<br />

vorliegenden Beispiel gibt es in der Modelldatei<br />

eine »script«-Anweisung mit einem<br />

festgelegten Skriptnamen, sodass die<br />

Vorlage »main« einmal für dieses Skript<br />

angewendet wird. Der »FILE«-Block legt<br />

den Namen der Ausgabedatei fest – in<br />

diesem Fall wird er aus dem Attribut der<br />

»Script«-Klasse übernommen.<br />

Die Zeilen 6 bis 27 übernimmt das Template<br />

unverändert. Dann arbeitet der Generator<br />

die Regeln für die eingehenden und<br />

ausgehenden Verbindungen ab, indem er<br />

für jede Regel die Vorlage »rule« mit der<br />

Anweisung »EXPAND« anwendet. Dabei<br />

sind die Netzwerkschnittstellen jeweils<br />

aus Sicht der Regel angegeben.<br />

Die Regelbearbeitung generiert zunächst<br />

einen Kommentar, wobei einer der zuvor<br />

angelegten Xtend-Ausdrücke zum Einsatz<br />

kommt. Durch die Angabe in Zeile<br />

2 sind diese Ausdrücke so verwendbar,<br />

als wären sie Operationen der Klassen<br />

selbst. Drei geschachtelte Schleifen sorgen<br />

dann dafür, dass der Generator für<br />

jede Kombination aus Protokoll und Port<br />

eines jeden Dienstes einen »iptables«-<br />

Aufruf erzeugt. Auch hier kommen wiedene<br />

Anwendungszwecke (Netzwerk-<br />

Konfiguration, Routing, Firewall, MTA<br />

oder Webserver) aus einem zentralen<br />

Modell erzeugt werden. Die Entwicklung<br />

eines solchen Werkzeugs bietet sich vor<br />

allem für Admins an, die regelmäßig<br />

Systeme nach einem wiederkehrenden<br />

Schema konfigurieren. (mhu) n<br />

Infos<br />

[1] Xtext: [http://www.eclipse.org/Xtext/]<br />

[2] Ferm: [http:// ferm.foo-projects.org]<br />

[3] Eclipse-Downloads:<br />

[http://www. eclipse.org/downloads]<br />

[4] Xtext-Referenz: [http://www.eclipse.org/<br />

Xtext/documentation/latest/xtext.html]<br />

[5] Referenz zu Xtend, Xpand und Check:<br />

[http://help. eclipse.org/helios/index.jsp?<br />

topic=/org. eclipse. xpand.doc/help/core_<br />

reference. html]<br />

[6] Listings zu diesem Artikel:<br />

[http://www. linux-magazin.de/ static/<br />

listings/magazin/ <strong>2011</strong>/02/xtext/]<br />

Der Autor<br />

Volker Wegert ist SAP-R/ 3-Entwickler bei einem<br />

großen deutschen Klinikkonzern und beschäftigt<br />

sich in seiner Freizeit mit Modellierungs- und<br />

Generierungstechniken.


FÜR ECHTE<br />

FANS!<br />

James Thew, Fotolia<br />

Zeige Flagge für Ubuntu!<br />

• die aktuelle Ausgabe Ubuntu User 01/<strong>2011</strong><br />

(inkl. 3 Aufkleber Ubuntu User)<br />

• einen Schal mit eingesticktem Ubuntu User<br />

• eine Mütze mit eingesticktem Ubuntu User<br />

• einen Kugelschreiber mit Ubuntu User<br />

UBUNTU<br />

user<br />

FAN-PAKET<br />

nur<br />

19,80 €<br />

• einen Aufkleber mit “Maverick Meerkat”, dem<br />

Maskottchen von Ubuntu 10.10<br />

• eine Postkarte mit “Maverick Meerkat”, dem<br />

Maskottchen von Ubuntu 10.10<br />

JETZT ONLINE BESTELLEN:<br />

• www.ubuntu-user.de/fan-paket<br />

• Telefon 089 / 2095 9127 • Fax 089 / 2002 8115 • E-Mail: abo@ubuntu-user.de


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 02/<strong>2011</strong><br />

118<br />

Kurzweilige Repository-Statistiken mit Perl und R<br />

Datumsarithmetik<br />

Perls Git-Repository enthält alle Commits, seit Larry Wall Perl 1987 aus der Taufe hob. Das Statistik-Tool R gewinnt<br />

aus den historischen Daten überraschende Informationen und stellt sie grafisch dar. Michael Schilli<br />

Change-Flag (»M«: modified, »A«: added,<br />

»R«: removed) zeilenweise auflistet.<br />

Kopfzeilen beginnen mit »commit«, damit<br />

der später gebaute Parser sie leicht von<br />

Dateizeilen unterscheiden kann. Nach<br />

dem Aufruf des obigen Shell-Einzeilers<br />

schnappt sich Listing 1 die Daten und<br />

formt sie in ein CSV-Format um, mit dem<br />

das Statistiktool R später weiterarbeitet.<br />

Perl als Hilfsarbeiter<br />

© Dagmar Fischer, Photocase.com<br />

Es kann vielleicht nicht jeder nachvollziehen,<br />

aber zumindest für mich hat es<br />

etwas Erhebendes, die vollständige Historie<br />

des Perl-Kerns vor Augen zu haben.<br />

Welche Dateien hat Larry Wall anno 1987<br />

eingecheckt? Wer schickte das erste Patch<br />

ein? Was enthielt es? Das Kommando »git<br />

log« zeigt erste Ergebnisse sofort an (Abbildung<br />

1) und benötigt nur wenige Sekunden,<br />

um sich bis zum Anfang des Projekts<br />

vorzuarbeiten. Das funktioniert sogar<br />

ohne Internetverbindung und selbst auf<br />

einem Netbook. Alle Informationen sind<br />

in einem 120 MByte großen Repository<br />

versteckt, das »git« von [git://perl5.git.<br />

perl.org/perl.git] bezieht. Dass Git herkömmliche<br />

Versionskontrollsysteme wie<br />

Subversion aus dem Feld schlägt, wundert<br />

nur Unwissende.<br />

Geballte Information<br />

Die geballte Informationsladung des Perl-<br />

Repository hilft nicht nur interessierten<br />

Programmierern die Entwicklung des<br />

Projekts mitzuverfolgen. Moderne Statistiktools<br />

extrahieren daraus Trends und<br />

stellen sie grafisch ansprechend dar. Bereits<br />

mit Shell-Bordmitteln wie<br />

git log ‐‐oneline | wc ‐l<br />

lässt sich feststellen, dass seit dem Perl-<br />

Gründungsjahr 1987 genau 38 206 Commits<br />

aufeinander folgten. Die Option<br />

»--oneline« schrumpft dabei das Ausgabeformat<br />

auf eine Zeile pro Commit. Für<br />

eine tiefergehenden Auswertung hilft dies<br />

nicht viel, da wertvolle Informationen<br />

wie modifizierte Dateien, das genaue<br />

Datum oder Autoren- und Committer-E-<br />

Mail nicht in der Ausgabe erscheinen. Ein<br />

Aufruf von »git log« wie<br />

git log ‐‐name‐status ‐‐date=raw U<br />

‐‐pretty='format:commit,%ae,%at,%ce' U<br />

> perl‐git‐log.txt<br />

produziert eine umfangreichere Ausgabe.<br />

Jeder Commit enthält in diesem Format<br />

eine oder mehrere Dateien, die Git unterhalb<br />

der Kopfzeile jeweils nach einem<br />

Auch der Perl-Snapshot kann sich nicht<br />

immer nur auf die Sprache Perl beschränken.<br />

Im Bereich der Statistik glänzt die<br />

Sprache R [2] mit geschwindigkeitsoptimierten<br />

Datentransformationen, einer<br />

reichen Auswahl an Grafikbibliotheken<br />

und einem CPAN-ähnlichen Entwicklernetzwerk<br />

namens CRAN.<br />

In R geschriebene Skripte sind erstaunlich<br />

kompakt, allerdings dauert es einige<br />

Zeit, bis Neulinge die neuen Paradigmen<br />

und Datenstrukturen durchschauen [3].<br />

Perl hingegen glänzt im Umwandeln von<br />

Datenformaten, daher arbeitet es hier mit<br />

dem Skript »log2csv« in Listing 1 nur als<br />

Zubringer, indem es die Logdaten des Git-<br />

Repository in kommaseparierte Einträge<br />

wie in Abbildung 2 umformt [4].<br />

Hierzu kämmt sich »log2csv« zeilenweise<br />

durch die vorher von 5 MByte auf ein<br />

halbes MByte komprimierte Logdatei<br />

»perl-git-log.txt.bz2«. Trifft es in Zeile 20<br />

auf die Kopfzeile eines Commit, speichert<br />

es dessen Eckdaten wie den Autor des<br />

Patch, den Unix-Zeitstempel und die E-<br />

Mail-Adresse des ausführenden Committers<br />

in drei außerhalb der While-Schleife<br />

deklarierten Variablen.<br />

Entdeckt Zeile 23 dann eine Zeile mit einem<br />

Dateivermerk (zum Beispiel »M Dateiname«),<br />

trennt sie das vorangehende<br />

Flag mittels eines regulären Ausdrucks


ab und speichert den Namen der modifizierten<br />

Datei in »$file«. Die Methode<br />

»print()« des CPAN-Moduls Text::CSV in<br />

Zeile 25 reicht die durch Kommata getrennten<br />

Felder anschließend an die Ausgabedatei<br />

»perl-git-log.csv« weiter. Dort<br />

stehen dann zu jeder modifizierten Datei<br />

im Repository die Felder Autor, Committer<br />

und Zeitstempel.<br />

Das CPAN-Modul Text::CSV (beziehungsweise<br />

die geschwindigkeitsoptimierte<br />

Version Text::CSV_XS) maskiert eventuell<br />

auftretende Sonderzeichen automatisch,<br />

damit das kommaseparierte Ausgabeformat<br />

intakt bleibt. Der Konstruktoraufruf<br />

in Zeile 9 setzt das Flag »binary«, damit<br />

sämtliche Ascii-Zeichen erlaubt sind.<br />

Die EOL-Option legt den Zeilentrenner<br />

im Ausgabeformat fest und erhält den<br />

Wert »$/« zugewiesen, also den in der<br />

jeweiligen Perl-Installation gültigen Zeilenumbruch.<br />

Abbildung 1: Das Git-Repository des Perl-Projekts enthält alle Commits, seit Larry Wall 1987 es aus der Taufe<br />

hob. Für die Zeitreise braucht die Versionskontrolle nur Sekunden.<br />

Abbildung 2: Die erzeugte CSV-Datei, die Commits in einzelne Dateien aufspaltet und die Grundlage zur<br />

statistischen Analyse in R darstellt.<br />

Perl-Snapshot 02/<strong>2011</strong><br />

Programmieren<br />

www.linux-magazin.de<br />

119<br />

Eine Testfahrt mit R<br />

Die 8,5 MByte große CSV-Datei lässt sich<br />

nun mit dem Statistiktool R einlesen und<br />

weiterverarbeiten. Der in Abbildung 3<br />

gezeigte Testlauf mit R illustriert, wie<br />

das Tool von der Unix-Kommandozeile<br />

aus anläuft. Nach einigen einführenden<br />

Informationen wartet der Interpreter mit<br />

dem Prompt »>« auf Eingaben.<br />

Das obligatorische »print("hello r")« ruft<br />

die Print-Funktion auf, die den ihr überreichten<br />

String an die Standardausgabe<br />

weiterleitet. Zu beachten ist, dass R bei<br />

Funktionsaufrufen stets auf Klammern<br />

beharrt und am Zeilenende eines Kommandos<br />

kein Semikolon steht. Die Ausgabe<br />

des »print()«-Kommandos besteht<br />

aus einer Zeile, was R mit einem vorangestellten<br />

»[1]« anzeigt. Hier bestätigt sich<br />

gleich ein übler Verdacht: Arrays – oder<br />

„Vektoren“ in R-Sprech – beginnen in R<br />

bei 1 und nicht bei 0.<br />

Um eines der vorgestellten R-Skripte abzuspielen,<br />

dient der Aufruf »source("testprog.r")«<br />

im R-Interpreter, wie die dritte<br />

Eingabe in Abbildung 3 zeigt. Alternativ<br />

liegt der R-Distribution das Programm<br />

»Rscript« bei, das man als »#!/usr/bin/<br />

Rscript« an den Kopf eines ausführbaren<br />

Skripts stellen kann, damit der Kernel bei<br />

dessen Start automatisch den R-Interpreter<br />

aufruft und ihm den Programmcode<br />

zur Ausführung übergibt.<br />

Eine interaktive Interpreter-Session beendet<br />

der User mit der Funktion »q()«,<br />

woraufhin R nachfragt, ob es den aktuellen<br />

Interpreter-Status auf der Festplatte<br />

ablegen soll. Antwortet der User mit »y«,<br />

schreibt R den Wert aller bekannten Daten<br />

in ein Verzeichnis ».RData« und liest<br />

sie nach einem Neustart wieder ein, damit<br />

der User genau dort fortfahren kann,<br />

wo er vorher aufgehört hat.<br />

Mit Daten jonglieren<br />

Das Kommando »read.csv()« in Abbildung<br />

4 liest die CSV-Datei in R ein.<br />

Punkte in Funktions- oder Variablennamen<br />

in R dienen lediglich der Strukturierung<br />

und haben keine syntaktische Bedeutung.<br />

Die Funktion gibt im Erfolgsfall<br />

eine Datenstruktur vom Typ Dataframe<br />

Listing 1: »log2csv«<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use local::lib;<br />

04 use Text::CSV;<br />

05<br />

06 my $logfile = "perl‐git‐log.txt.bz2";<br />

07 my $csvfile = "perl‐git‐log.csv";<br />

08<br />

09 my $csv = Text::CSV_XS‐>new ( { binary => 1, eol => $/ } ) or<br />

10 die "Cannot use CSV: ", Text::CSV‐>error_diag();<br />

11<br />

12 open my $logfh, "bzip2 ‐dc $logfile |" or die "$logfile: $!";<br />

13 open my $csvfh, ">$csvfile" or die "$csvfile: $!";<br />

14<br />

15 my($dummy, $author, $time, $committer);<br />

16<br />

17 $csv‐>print( $csvfh, ["time", "file", "author", "committer"] );<br />

18<br />

19 while( ) {<br />

20 if( /^commit/ ) {<br />

21 chomp;<br />

22 ($dummy, $author, $time, $committer) = split /,/, $_;<br />

23 } elsif( /^(\w)\s+(.*)/ ) {<br />

24 my $file = $2;<br />

25 $csv‐>print( $csvfh, [$time, $file, $author, $committer] ) or<br />

26 die "print failed: ", Text::CSV‐>error_diag();<br />

27 }<br />

28 }<br />

29<br />

30 close $logfh or die "$logfile: $!";<br />

31 close $csvfh or die "$csvfile: $!";


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 02/<strong>2011</strong><br />

120<br />

Abbildung 3: Der Testlauf mit R führt über den Aufruf der Print-Funktion und das<br />

Ausführen der Datei »testprog.r«.<br />

zurück, einer Art <strong>Datenbank</strong>tabelle. Die<br />

Spalten geben die Struktur vor, die Zeilen<br />

entsprechen jeweils einem Datensatz.<br />

Die Zuweisung zur Variablen »commits«<br />

erfolgt mit dem Operator » data=c("one", "two", "three",<br />

"two", "one", "two")<br />

> table(data)<br />

data<br />

one three two<br />

2 1 3<br />

Das Codestück oben zeigt außerdem, wie<br />

R mit der Funktion »c()« (von „concatenate“)<br />

einen Vektor aus Einzelelementen<br />

zusammenbaut. Die zweite Kommandozeile<br />

in Abbildung 5 setzt das eben<br />

Gelernte in einer Zeile zusammen und<br />

zeigt die am häufigsten veränderten Dateien<br />

im Repository an. Dazu klassifiziert<br />

»table(files)« die in den Commits aufgelisteten<br />

Dateien und legt für jede einen<br />

Zähler an, der die Anzahl ihrer Nennungen<br />

kumuliert.<br />

Abbildung 4: In R lässt sich die CSV-Datei leicht einlesen und in eine Datenstruktur<br />

verwandeln.<br />

Die Funktion »sort()« sortiert die »table()«-<br />

Zähler dann in aufsteigender Reihenfolge,<br />

und »tail« mit der Option »n = 20L« holt<br />

die letzten 20 Einträge, also die mit den<br />

höchsten Zählern, hervor. Wie im interaktiven<br />

R-Interpreter üblich, zeigt dieser<br />

das Ergebnis schön strukturiert an, falls<br />

der Rückgabewert einer Funktion keiner<br />

Variablen zugewiesen wurde. R verfügt<br />

außerdem über eine brauchbare Hilfefunktion,<br />

die ein Fragezeichen, gefolgt<br />

von einer Funktion (etwa »?tail«) in<br />

Marsch setzt.<br />

Ein Bild sagt mehr<br />

Diese kurze Einführung in R sollte genügen,<br />

um einige interessante Graphen zu<br />

zeichnen, die die Aktivitäten im Perl-Repository<br />

erhellen. Listing 2 erzeugt aus<br />

der Datenstruktur mit den 20 meistgeänderten<br />

Dateien ein Diagramm als Datei<br />

Frequenzzähler<br />

Die R-Funktion »table()« nimmt einen<br />

Vektor entgegen und gibt eine Daten-<br />

Listing 2: »file-plot.r«<br />

1 commits


Perl-Snapshot 02/<strong>2011</strong><br />

Programmieren<br />

www.linux-magazin.de<br />

121<br />

Abbildung 6: Meistmodifizierte Dateien als Histogramm.<br />

Abbildung 7: Die Grafik zeigt die Anzahl der pro Jahr modifizierten Dateien.<br />

im PNG-Format. Zeile 5 bereitet die Ausgabe<br />

der nachfolgenden Plot-Funktion<br />

durch »png(file="files.png")« vor und<br />

leitet das Diagramm in die Datei »files.<br />

png« um. Ohne diese Zeile würde R ein<br />

Grafikfenster öffnen und das Schaubild<br />

dort ohne Umschweife anzeigen.<br />

Die ab Zeile 6 aufgerufene Funktion<br />

»plot()« aus dem R-Standardrepertoire<br />

macht klar, dass R keine ellenlangen Parameterlisten<br />

braucht, um professionell<br />

aussehende Diagramme zu zeichnen.<br />

Achsenbeschriftung, maximale und minimale<br />

Werte – für alles findet es sinnvolle<br />

Standardwerte. Dies heißt jedoch nicht,<br />

dass R unflexibel wäre, im Gegenteil,<br />

jedes Detail einer Grafik wie die Achsenform<br />

und -lage, die Werteanzahl pro<br />

Skala, Farben, Fonts und so weiter kann<br />

der User nach Gusto umdefinieren. Parameter<br />

nehmen R-Funktionen im Format<br />

»par=value«, durch Kommata getrennt,<br />

entgegen. Abbildung 6 zeigt den Dataframe<br />

»data« im Histogrammformat.<br />

Zahn der Zeit<br />

Um die Aktivität im Repository über die<br />

vergangenen 23 Jahre aufzuzeigen, erweitert<br />

Listing 3 die im Unix-Sekunden-<br />

Format vorliegende Zeitstempelkolumne<br />

»commits$time« um eine neue Spalte<br />

»commits$year«, die das 4-stellige Jahr<br />

des jeweiligen Zeitstempels anzeigt.<br />

Hierzu wandelt die eingebaute R-Funktion<br />

»as.POSIXlt()« den Unix-Zeitstempel<br />

unter Angabe des Referenzdatums<br />

»1970-01-01« in den nativen Datumstyp<br />

»POSIXlt« (Posix local time) um. Aus<br />

diesem extrahiert dann die Funktion<br />

»format()« unter Angabe des Platzhalters<br />

»%Y« die vierstellige Jahreszahl des<br />

jeweiligen Datums.<br />

Diese neue Kolonne mit 140 000 Jahreszahlen<br />

transformiert die Funktion »table()«<br />

dann in eine Datenstruktur, die zu<br />

jeder Jahreszahl einen Zähler enthält. Die<br />

in Zeile 13 aufgerufene Funktion »plot()«<br />

ist dann so schlau, die Datenstruktur<br />

ohne weitere Angaben in das Diagramm<br />

in Abbildung 7 zu pferchen. Die Zeile<br />

14 gibt dann lediglich noch die beiden<br />

Achsenbeschriftungen »Year« und »Files<br />

Modified« vor.<br />

Wer genau hinsieht, der bemerkt, dass<br />

die Linien die eingezeichneten Datenpunkte<br />

nicht berühren, sondern kurz<br />

vorher aus- und hinterher wieder einsetzen.<br />

Dies ist ein Merkmal der Option<br />

»type="b"«, wer durchgezogene Linien<br />

bevorzugt, nimmt »o«.<br />

Weitere Optionen finden sich auf der<br />

Manualseite, die per Kommando »?plot«<br />

im R-Interpreter erscheint. Dort erfährt<br />

der Interessierte auch, dass »plot()« keineswegs<br />

nur »table()«-Ausgaben druckt,<br />

sondern auch mit zwei Vektoren für die<br />

X- und Y-Werte des Graphen arbeitet.<br />

Allgemein versucht R zu erraten, was der<br />

User meinen könnte, und nimmt diesem<br />

dabei oft erstaunlich viel Arbeit ab.<br />

Ein aufwändiges Bild sagt<br />

noch mehr<br />

Abbildung 9 zeigt die fleißigsten Perl-<br />

Autoren und ihre Aktivitäten über die<br />

im Repository erfassten 23 Jahre Perl.<br />

Da es Git 1987 noch nicht gab, wurden<br />

die Daten natürlich rückwirkend aus<br />

dem bis dahin benutzten Versionskontrollsystem<br />

eingespielt. Listing 4, dessen<br />

R-Code das Mehrfachdiagramm erzeugt,<br />

sucht zunächst die fleißigsten Autoren<br />

und merkt sich nur jene, die für mehr als<br />

5000 File-Commits verantwortlich zeichnen.<br />

Die Funktion »subset()« erledigt dies<br />

elegant mittels »subset(au, au > 5000)«<br />

in Zeile 14.<br />

Die Variable »au« ist vom Datentyp »table«<br />

mit allen Autoren aller Commits.<br />

Die als zweiter Parameter hereingereichte<br />

Bedingung filtert alle nicht darauf passenden<br />

Einträge aus. Als Spezialität von<br />

R gelten Vektoroperationen wie »au ><br />

5000«, die nicht nur kurz und bündig,<br />

sondern auch hocheffizient Massenoperationen<br />

vornehmen.<br />

Zeile 17 ruft »table()« mit zwei Parametern,<br />

»commits$author« und »commits$year«,<br />

auf und erzeugt damit eine Datenstruktur,<br />

die allen Kombinationen aus Autor<br />

Listing 3: »files-per-year.r«<br />

01 commits


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 02/<strong>2011</strong><br />

122<br />

G Abbildung 8: Das hintere Ende des Dataframe kurz vor dem Plotten.<br />

E Abbildung 9: Das Diagramm zeigt die Committer mit mehr als 5000 File Commits<br />

und ihre aktiven Jahre.<br />

und Jahr einen Zähler zuordnet. Zum<br />

einfacheren Zeichnen formen Zeile 18<br />

und 19 mittels »as.data.frame()« einen<br />

Dataframe, die Zeilen 20 und 21 weisen<br />

den noch unbenannten Kolumnen durch<br />

einen linksseitigen »names()«-Aufruf die<br />

Namen »author«, »year« und »files« zu.<br />

Zu diesem Zeitpunkt enthält die Variable<br />

»files.by.auth.year« noch die Daten<br />

aller Autoren, aber die Zeile 23 extrahiert<br />

daraus die Untergruppe der vorher<br />

in »au« ermittelten fleißigsten Autoren<br />

und weist das Ergebnis wieder »files.<br />

Infos<br />

[1] Listings zu diesem Artikel:<br />

[ftp://www. linux-magazin.de/pub/listings/<br />

magazin/ <strong>2011</strong>/ 02/ Perl]<br />

[2] The R Project for Statistical Computing:<br />

[http://www. r-project.org]<br />

[3] Owen Jones, Robert Maillardet, Andrew<br />

Robinson, „Introduction to Scientific<br />

Programming and Simulation Using R“:<br />

Chapman and Hall/ CRC, 2009<br />

[4] Fun with numbers: [http://blog.moertel.<br />

com/articles/ 2007/ 06/21/talk-fun-with<br />

-numbers-r-and-perl-and-imdb-data]<br />

[5] Deepayan Sarkar, „Lattice: Multivariate<br />

Data Visualization with R (Use R)“: Springer,<br />

2008<br />

by.auth.year« zu.<br />

Das hintere Ende<br />

des Zwischenergebnisses<br />

zeigt die<br />

Abbildung 8.<br />

Die etwas komplexe<br />

Grafik zeichnet<br />

diesmal nicht »plot()«, sondern die<br />

Funktion »xyplot()« aus der Grafik-Library<br />

»lattice«, die Zeile 1 mit »library("lattice")«<br />

vorher eingebunden hat<br />

[5]. Am wichtigsten ist der erste Parameter,<br />

der im Format »y ~ x | g« vorliegt,<br />

wobei »x« und »y« jeweils einen Vektor<br />

mit X- beziehungsweise Y-Werten enthalten<br />

und »g« die verschiedenen Gruppen<br />

angibt, für die jeweils ein eigenes Diagramm<br />

zu zeichnen ist. Im vorliegenden<br />

Fall weisen alle drei in den Dateframe<br />

»files.by.auth.year«, der im Parameter<br />

Der Autor<br />

Michael Schilli arbeitet als Software-Engineer bei<br />

Yahoo in Sunnyvale, Kalifornien. Er hat die Bücher<br />

„Goto Perl 5“ (auf Deutsch)<br />

und „Perl Power“ (auf Englisch)<br />

für Addison-Wesley<br />

geschrieben und ist unter<br />

[mschilli@perlmeister. com]<br />

zu erreichen.<br />

»data« übergeben wird. Das Layout legt<br />

mit »c(1, 5)« fest, dass pro Display fünf<br />

Diagramme übereinander liegen.<br />

Da sich die Jahreszahlen am unteren<br />

Ende ins Gehege kämen, dreht der<br />

»scales«-Parameter sie in Zeile 32 um 45<br />

Grad. »type=l« legt den Linientyp der<br />

Grafiken fest, »xlab« bzw »ylab« bestimmen<br />

die Achsenlegende. Jedes Panel in<br />

Abbildung 9 ist dann einem der fünf<br />

fleißigsten Autoren zugeordnet, die Liniengraphen<br />

zeigen jeweils die Anzahl der<br />

vom Committer modifizierten Dateien.<br />

Installation<br />

Ubuntu installiert den R-Interpreter folgendermaßen:<br />

sudo aptitude install r‐base‐core<br />

Die zur Aufbereitung der Daten genutzten<br />

Perl-Module stehen ebenfalls schon<br />

fertig als »libtext-csv-perl« und »libtext-csv-xs-perl«<br />

bereit. (jcb) n<br />

Listing 4: »authors-by-year.r«<br />

01 library("lattice")<br />

02<br />

03 commits


7,90€<br />

100 Seiten <strong>Linux</strong><br />

+ DVD<br />

Jetzt am Kiosk!<br />

Ja, ich bestelle <strong>Linux</strong>User Spezial 01/<strong>2011</strong> zum Preis von 7,90.<br />

Vorname, Name<br />

Straße<br />

Firma<br />

PLZ/Ort<br />

Abteilung<br />

Coupon ausschneiden und an<br />

<strong>Linux</strong> New Media AG, Putzbrunner Str. 71, 81739 München senden<br />

Schneller bestellen per: Tel.: 089 / 99 34 11–0 E-Mail: order@linuxnewmedia.de<br />

Fax: 089 / 99 34 11–99<br />

http://www.linuxuser.de/spezial<br />

E-Mail<br />

Ja, bitte informieren Sie mich über weitere Neuheiten aus dem Bereich <strong>Linux</strong><br />

und OpenSource<br />

<strong>Linux</strong> New Media AG, Putzbrunner Str. 71, 81739 München, Vorstand: Brian Osborn, Hermann Plank, Aufsichtsrat: Rudolf Strobl (Vorsitz), Handelsregister: HRB 129161 München


Service<br />

www.linux-magazin.de IT-Profimarkt 02/<strong>2011</strong><br />

124<br />

PROFI<br />

MARKT<br />

Sie fragen sich, wo Sie maßgeschneiderte<br />

<strong>Linux</strong>-Systeme und kompetente<br />

Ansprechpartner zu Open-Source-Themen<br />

finden? Der IT-Profimarkt weist Ihnen<br />

als zuverlässiges Nachschlagewerk<br />

den Weg. Die hier gelisteten Unternehmen<br />

beschäftigen Experten auf ihrem<br />

Gebiet und bieten hochwertige Produkte<br />

und Leistungen.<br />

Die exakten Angebote jeder Firma entnehmen<br />

Sie deren Homepage. Der ersten<br />

Orientierung dienen die Kategorien<br />

Hardware, Software, Seminaranbieter,<br />

Systemhaus, Netzwerk/TK und Schulung/Beratung.<br />

Der IT-Profimarkt-Eintrag<br />

ist ein Service von <strong>Linux</strong>-<strong>Magazin</strong><br />

und <strong>Linux</strong>User.<br />

Online-Suche<br />

Besonders bequem finden Sie einen<br />

<strong>Linux</strong>-Anbieter in Ihrer Nähe über die<br />

neue Online-Umkreis-Suche unter:<br />

[http://www.it-profimarkt.de]<br />

Informationen<br />

fordern Sie bitte an bei:<br />

<strong>Linux</strong> New Media AG<br />

Anzeigenabteilung<br />

Putzbrunner Str. 71<br />

D-81739 München<br />

Tel.: +49 (0)89/99 34 11-23<br />

Fax: +49 (0)89/99 34 11-99<br />

E-Mail: anzeigen@linux-magazin.de<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl<br />

4= Fachliteratur 4= Seminaranbieter 5 = Software 5 = Software 6 = Schulung/Beratung 6 = Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de 3 3 3 3<br />

imunixx GmbH UNIX consultants 01468 Moritzburg, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de 3 3 3 3 3<br />

future Training & Consulting GmbH Leipzig 04315 Leipzig, Kohlgartenstraße 15 0341-6804100 www.futuretrainings.com 3<br />

future Training & Consulting GmbH Halle 06116 Halle (Saale), Fiete-Schulze-Str. 13 0345-56418-20 www.futuretrainings.com 3<br />

future Training & Consulting GmbH Chemnitz 09111 Chemnitz, Bahnhofstraße 5 0371-6957730 www.futuretrainings.com 3<br />

TUXMAN <strong>Linux</strong> Fan-Shop 10367 Berlin, Möllendorffstr. 44 030-97609773 www.tuxman.de 3 3 3 3 3<br />

Hostserver GmbH 10405 Berlin, Winsttraße 70 030 47 37 55 50 www.hostserver.de 3<br />

Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de 3 3 3 3 3<br />

<strong>Linux</strong> Information Systems AG Berlin 12161 Berlin, Bundesallee 93 030-818686-03 www.linux-ag.com 3 3 3 3 3<br />

elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com 3 3 3 3<br />

future Training & Consulting GmbH Berlin 13629 Berlin, Wernerwerkdamm 5 030-34358899 www.futuretrainings.com 3<br />

verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de 3 3 3<br />

i.based: Systemhaus GmbH & Co.KG 18439 Stralsund, Langenstr. 38 03831-2894411 www.ibased.de 3 3 3 3 3<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de 3 3 3 3<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 25 040-27863190 www.sybuca.de 3 3 3 3 3<br />

iTechnology GmbH c/ o C:1 Solutions GmbH 22083 Hamburg, Osterbekstr. 90 c 040-52388-0 www.itechnology.de 3 3 3 3<br />

UDS-<strong>Linux</strong> - Schulung, Beratung, Entwicklung 22087 Hamburg, Lübecker Str. 1 040-45017123 www.uds-linux.de 3 3 3 3 3 3<br />

Comparat Software-Entwicklungs- GmbH 23558 Lübeck, Prießstr. 16 0451-479566-0 www.comparat.de 3 3<br />

future Training & Consulting GmbH Wismar 23966 Wismar, Lübsche Straße 22 03841-222851 www.futuretrainings.com 3<br />

Dr. Plöger & Kollegen secom consulting<br />

GmbH & Co. KG<br />

24105 Kiel, Waitzstr. 3 0431-66849700 www.secom-consulting.de 3 3 3 3 3<br />

talicom GmbH 30169 Hannover, Calenberger Esplanade 3 0511-123599-0 www.talicom.de 3 3 3 3 3<br />

futureTraining & Consulting GmbH Hannover 30451 Hannover, Fössestr. 77 a 0511-70034616 www.futuretrainings.com 3<br />

Servicebüro des grafischen Gewerbes 31789 Hameln, Talstraße 61 05151-774800 www.service4graphic-trade.com 3<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net 3 3 3 3 3<br />

MarcanT GmbH 33602 Bielefeld, Ravensberger Str. 10 G 0521-95945-0 www.marcant.net 3 3 3 3 3 3<br />

Hostserver GmbH 35037 Marburg, Biegenstr. 20 06421-175175-0 www.hostserver.de 3<br />

OpenIT GmbH 40599 Düsseldorf, In der Steele 33a-41 0211-239577-0 www.OpenIT.de 3 3 3 3 3<br />

UD Media GmbH 41460 Neuss, Schwannstraße 1 01805-880-900 www.udmedia.de 3 3<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr.<br />

(S.126)


elevant ■ verlässlich ■ kompetent<br />

■ Virtualisierung<br />

■ Monitoring<br />

■ Storage und<br />

Backup<br />

Technical Review<br />

Keine Zeit, um Berge von Datenmüll nach<br />

Info-Nuggets zu durchsieben?<br />

Dann lassen sie doch den Abraum liegen!<br />

Die Technical Review bietet Know-how pur.<br />

■ High Availability<br />

■ Groupware<br />

Ihre Inhalte sind<br />

- von ausgewiesenen Spezialisten geschrieben,<br />

- von einer kompetenten Fachredaktion ausgewählt,<br />

- von namhaften Experten mehrfach geprüft.<br />

■ Server Based<br />

Computing<br />

■ Spam<br />

■ Performance<br />

und Tuning<br />

Eine Quelle für alle Fälle.<br />

Wer weiß, was Wissen wert ist, muss nicht lange überlegen.<br />

Registrieren Sie sich gleich unter<br />

www.technicalreview.de<br />

Einen Probeartikel<br />

Ihrer Wahl gibt es gratis.<br />

■ <strong>Datenbank</strong>en<br />

Maxim Kazmin, 123RF<br />

■ Security<br />

■ Mobility<br />

■ Migration<br />

www.technicalreview.de


Service<br />

www.linux-magazin.de IT-Profimarkt 02/<strong>2011</strong><br />

126<br />

IT-Profimarkt<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 124)<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

4= Seminaranbieter 5 = Software 6 = Beratung<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de 3 3 3 3 3<br />

<strong>Linux</strong>hotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de 3<br />

Herstell 45888 Gelsenkirchen, Wildenbruchstr. 18 017620947146 www.herstell.info 3 3 3 3<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensource-training.de 3<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de 3 3 3 3<br />

LWsystems GmbH & Co. KG 49186 Bad Iburg, Tegelerweg 11 05403-5556 www.lw-systems.de 3 3 3 3 3 3<br />

Systemhaus SAR GmbH 52499 Baesweiler, Arnold-Sommerfeld-Ring 27 02401-9195-0 www.sar.de 3 3 3 3 3 3<br />

uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de 3 3 3 3 3<br />

LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de 3 3 3 3 3<br />

Computerdienste Roth 60433 Frankfurt, Anne-Frank-Straße 31 069-95209247 www.computerdienste-roth.de 3 3 3 3<br />

saveIP GmbH 64283 Darmstadt, Schleiermacherstr. 23 06151-666266 www.saveip.de 3 3 3 3 3<br />

LAMARC EDV-Schulungen u. Beratung GmbH 65193 Wiesbaden, Sonnenberger Straße 14 0611-260023 www.lamarc.com 3 3 3 3<br />

ORDIX AG 65205 Wiesbaden, Kreuzberger Ring 13 0611-77840-00 www.ordix.de 3 3 3 3 3<br />

<strong>Linux</strong>Haus Stuttgart 70565 Stuttgart, Hessenwiesenstrasse 10 0711-2851905 www.linuxhaus.de 3 3 3 3 3<br />

comundus GmbH 71332 Waiblingen, Schüttelgrabenring 3 07151-5002850 www.comundus.com 3 3 3<br />

Veigel <strong>Linux</strong> Software Development 71723 Großbottwar, Frankenstr. 15 07148-922352 www.mvlsd.de 3 3 3 3<br />

Intra2net AG 72072 Tübingen, Mömpelgarderweg 8 07071-56510-30 www.intra2net.com 3 3 3 3<br />

future Training & Consulting GmbH<br />

Reutlingen<br />

72770 Reutlingen, Auchterstraße 8 07121-14493943 www.futuretrainings.com 3<br />

Manfred Heubach EDV und Kommunikation 73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de 3 3 3 3<br />

eBIS GmbH 74080 Heilbronn/ Neckar, Neckargartacher Str. 94 07131-39500 www.ebis.info 3 3 3 3 3<br />

Waldmann EDV Systeme + Service 74321 Bietigheim-Bissingen, Pleidelsheimer Str. 25 07142-21516 www.waldmann-edv.de 3 3 3 3 3<br />

in-put Das <strong>Linux</strong>-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-83044-98 www.in-put.de 3 3 3 3 3 3<br />

Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de 3 3 3<br />

Gendrisch GmbH 81679 München, Cuvilliesstraße 14 089-38156901-0 www.gendrisch.de 3 3 3 3 3<br />

<strong>Linux</strong> Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com 3 3 3 3 3<br />

Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de 3 3 3 3 3<br />

B1 Systems GmbH 85088 Vohburg, Osterfeldstrasse 7 08457-931096 www.b1-systems.de 3 3 3 3 3<br />

ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de 3 3 3 3 3<br />

Bereos OHG 88069 Tettnang, Kalchenstraße 6 07542-9345-22 www.bereos.eu 3 3 3 3 3<br />

alpha EDV Systeme GmbH 88250 Weingarten, Liebfrauenstr. 9 0751-46265 www.alpha-edv.de 3 3 3 3 3<br />

OSTC Open Source Training and Consulting<br />

GmbH<br />

90425 Nürnberg, Delsenbachweg 32 0911-3474544 www.ostc.de 3 3 3 3 3 3<br />

Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de 3 3 3<br />

pascom - Netzwerktechnik GmbH & Co.KG 94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.de 3 3 3 3 3<br />

fidu.de IT KG 95463 Bindlach, Goldkronacher Str. 30 09208-657638 www.linux-onlineshop.de 3 3 3 3<br />

Computersysteme Gmeiner 95643 Tirschenreuth, Fischerhüttenweg 4 09631-7000-0 www.gmeiner.de 3 3 3 3 3<br />

RealStuff Informatik AG CH-3007 Bern, Chutzenstrasse 24 0041-31-3824444 www.realstuff.ch 3 3 3<br />

CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch 3 3 3<br />

EBP Gasser CH-4208 Nunningen, Winkel 6 0041-61793-0099 www.ebp-gasser.ch 3 3 3 3 3<br />

Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 +41 44 454 20 10 www.syscon.ch 3 3 3 3 3<br />

Helvetica IT AG CH-8890 Flums, Bahnhofstrasse 15 0041-817331567 www.helvetica-it.com 3 3 3<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr.<br />

n


Seminare<br />

<strong>Linux</strong>-<strong>Magazin</strong><br />

ACADEMY<br />

Online-Training der<br />

<strong>Linux</strong>-<strong>Magazin</strong> Academy<br />

Prüfungsvorbereitung<br />

für LPIC 1 & 2<br />

Besorgen Sie sich Brief und<br />

Siegel für Ihr <strong>Linux</strong>-<br />

Knowhow mit der<br />

LPI-Zertifizierung.<br />

- Training für die Prüfungen<br />

LPI 101 und 102<br />

- Training für die Prüfungen<br />

LPI 201 und 202<br />

SPAREN SIE MIT<br />

PAKETPREISEN!<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/lpic<br />

Zum Aktionspreis!<br />

<strong>Linux</strong>-Zertifizierung in kompakter Form:<br />

CLA*-Bootcamp<br />

am 14.02.-18.02.<strong>2011</strong> in Bensheim!<br />

*(Certified <strong>Linux</strong> Administrator)<br />

Weitere Infos unter<br />

info@in-time.com oder 0 62 51-800 800!<br />

in-time IT Training Center<br />

Darmstädter Str. 63 | 64625 Bensheim<br />

www.in-time.com<br />

X25<br />

Seminare / Markt 02/<strong>2011</strong><br />

Service<br />

www.linux-magazin.de<br />

127<br />

<strong>Linux</strong>-<strong>Magazin</strong><br />

Academy_1-9h_Anzeige_LPIC.indd 1<br />

ACADEMY<br />

20%<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/wordpress<br />

01.09.2010 15:41:58 Uhr<br />

Treue-Rabatt für<br />

Abonnenten<br />

Online-Training der<br />

<strong>Linux</strong>-<strong>Magazin</strong> Academy<br />

Erfolgreicher Einstieg in<br />

WordPress 3.0<br />

Ansprechende Webseiten, Blogs<br />

und Shops einfach selber erstellen<br />

❚ Installation in 5 Minuten<br />

❚ Designs ändern<br />

❚ Optimieren für Suchmaschinen<br />

❚ Funktionen erweitern<br />

❚ Benutzerrechte festlegen<br />

❚ Geld verdienen mit Werbung<br />

❚ Besucher analysieren<br />

❚ Sicherheit und Spam-Schutz<br />

UNIX-C-C++ Java<br />

Seminare<br />

in Nürnberg<br />

(oder inhouse)<br />

UNIX/<strong>Linux</strong><br />

UNIX/<strong>Linux</strong>-Aufbau<br />

C, C-Aufbau<br />

C++<br />

OOA/OOD (mit UML)<br />

Java<br />

Perl, XML<br />

weitere Kurse auf Anfrage, Telephonhotline<br />

Dipl.-Ing.<br />

Christoph Stockmayer GmbH<br />

90571 Schwaig/Nbg • Dreihöhenstraße 1<br />

Tel.: 0911/505241 • Fax 0911/5009584<br />

EMail: sto@stockmayer.de<br />

http://www.stockmayer.de<br />

fahrschule_weber.indd 1<br />

22.01.2007 15:10:01 Uhr<br />

<strong>Linux</strong>-<strong>Magazin</strong><br />

_Anzeige_wordpress.indd 1<br />

©mipan, fotolia<br />

ACADEMY<br />

20%<br />

02.09.2010 16:24:36 Uhr<br />

Treue-Rabatt für<br />

Abonnenten<br />

Online-Training<br />

IT-Sicherheit<br />

Grundlagen<br />

Themen:<br />

- physikalische Sicherheit<br />

- logische Sicherheit<br />

• Betriebssystem<br />

• Netzwerk<br />

- Sicherheitskonzepte<br />

- Sicherheitsprüfung<br />

Inklusive Benutzer- und<br />

Rechteverwaltung, Authentifizierung,<br />

ACLs sowie<br />

wichtige Netzwerkprotokolle<br />

und mehr!<br />

<strong>Linux</strong>-<strong>Magazin</strong><br />

ACADEMY<br />

Online-Training der<br />

<strong>Linux</strong>-<strong>Magazin</strong> Academy<br />

Monitoring mit Nagios<br />

Netzwerk überwachen<br />

leicht gemacht (Auszug):<br />

20%<br />

❚ das Webfrontend<br />

❚ Überwachung von<br />

Windows/<strong>Linux</strong>/Unix<br />

❚ Strukturieren der Konfiguration<br />

❚ Überwachen von<br />

SNMP-Komponenten<br />

❚ Addons Nagvis,<br />

Grapher V2, NDO2DB Mit vielen<br />

Treue-Rabatt für<br />

Abonnenten<br />

Praxisbeispielen<br />

OpenSource Training Ralf Spenneberg<br />

Schulungen direkt vom Autor<br />

Andrew Prinz (Siemens AG) empfiehlt<br />

unseren Kurs "Firewall Lösungen mit<br />

<strong>Linux</strong>":<br />

Dieser Kurs war sehr<br />

interessant und informativ. Die<br />

Thematik wurde sehr gut und<br />

anschaulich durch Herrn<br />

Spenneberg vermittelt. Einer<br />

der kurzweiligsten Kurse, die<br />

ich besucht habe.<br />

Freie Distributionswahl:<br />

SuSE, Fedora, Debian, CentOS oder<br />

Ubuntu (NEU)<br />

Ergonomische Arbeitsplätze<br />

Echte Schulungsunterlagen mit Übungen<br />

Bücher als Begleitmaterial<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/sicherheit<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/nagios<br />

Am Bahnhof 3­5<br />

48565 Steinfurt<br />

Tel. : 02552 638755<br />

Fax: 02552 638757<br />

Weitere Informationen unter www.os­t.de<br />

Academy_1-9h_Security.indd 1<br />

18.11.2010 LM_Anzeige_1-9h_Anzeige_Nagios.indd 12:37:52 Uhr<br />

1<br />

03.09.2010 10:43:40 Uhr


Service<br />

www.linux-magazin.de Inserenten 02/<strong>2011</strong><br />

128<br />

Inserentenverzeichnis<br />

1&1 Internet AG http:// www.einsundeins.de 11, 34<br />

1blu AG http:// www.1blu.de 51<br />

ADMIN http:// www.admin-magazin.de 102<br />

Ancud IT-Beratung GmbH http:// www.EOSD<strong>2011</strong>.de 43<br />

DFN-Cert Services GmbH http:// www.dfn-cert.de 61<br />

Easy<strong>Linux</strong> http:// www.easylinux.de 107<br />

Fernschule Weber GmbH http:// www.fernschule-weber.de 127<br />

Happyware GmbH http:// www.happyware.de 19<br />

Hetzner Online AG http:// www.hetzner.de 132<br />

In-Time IT-Training Center http:// www.in-time.com 127<br />

IT-Profimarkt http:// www.it-profimarkt.de 67<br />

<strong>Linux</strong> Technical Review http:// www.linuxtechnicalreview.de 125<br />

<strong>Linux</strong> User Spezial http:// www.linux-user.de/ spezial 123<br />

<strong>Linux</strong>-Onlineshop/ Fidu http:// www.linux-onlineshop.de 131<br />

<strong>Linux</strong>User http:// www.linuxuser.de 94<br />

Mittwald CM Service GmbH & Co. KG http:// www.mittwald.de 23<br />

Netclusive GmbH http:// www.netclusive.de 9<br />

Open Source Press GmbH http:// www.opensourcepress.de 59<br />

Org.-Team der Chemnitzer <strong>Linux</strong>-Tage http://chemnitzer.linux-tage.de 49<br />

PlusServer AG http:// www.plusserver.de 68, 74, 84, 90<br />

SolvetecIT Services GmbH http:// www.solvetec.de 21<br />

Spenneberg Training & Consulting http:// www.spenneberg.com 127<br />

Stockmayer GmbH http:// www.stockmayer.de 127<br />

Strato AG http:// www.strato.de 1, 2, 17<br />

Thomas Krenn AG http:// www.thomas-krenn.com 25<br />

<strong>Linux</strong>-Hotel http:// www.linuxhotel.de 15<br />

<strong>Linux</strong>-<strong>Magazin</strong> http:// www.linux-magazin.de 41, 56<br />

<strong>Linux</strong>-<strong>Magazin</strong> Academy http:// www.academy.linux-magazin.de 127<br />

<strong>Linux</strong>-<strong>Magazin</strong> Online http:// www.linux-magazin.de 47<br />

Ubuntu User http:// www.ubuntu-user.de 117<br />

UDS <strong>Linux</strong> Schulung, Beratung, Entwicklung http:// www.udslinux.de 127<br />

Einem Teil dieser Ausgabe liegen Beilagen des ADMIN_<strong>Magazin</strong>s (http:// www.adminmagazin.de)<br />

und des <strong>Linux</strong> Technical Review (http:// www.linuxtechnicalreview.de) bei. Wir<br />

bitten unsere Leser um freundliche Beachtung.<br />

Veranstaltungen<br />

15.09.2010-15.05.<strong>2011</strong><br />

V Concurso Universitario de Software Libre<br />

Nacional, Spain<br />

http://www.concursosoftwarelibre.org<br />

24.-29.01.<strong>2011</strong><br />

linux.conf.au <strong>2011</strong><br />

Brisbane, Australia<br />

http://lca<strong>2011</strong>.linux.org.au<br />

29.-31.01.<strong>2011</strong><br />

Fedora Users and Developers Conference <strong>2011</strong><br />

Tempe, Arizona<br />

Veranstalter: Fedora<br />

http://fedoraproject.org/wiki/FUDCon:Tempe_<strong>2011</strong><br />

01.-03.02.<strong>2011</strong><br />

O’Reilly Strata Conference<br />

Santa Clara, CA, USA<br />

http://strataconf.com/strata<strong>2011</strong><br />

01.-04.02.<strong>2011</strong><br />

FOSS Lviv-<strong>2011</strong><br />

Nationale Iwan-Franko-Universität<br />

Lemberg, Ukraine<br />

02.-03.02.<strong>2011</strong><br />

Cloud Expo Europe<br />

London, UK<br />

http://www.cloudexpoeurope.com<br />

05.-06.02.<strong>2011</strong><br />

FOSDEM <strong>2011</strong><br />

Brussels, Belgium<br />

http://www.fosdem.org/<strong>2011</strong>/<br />

07.-09.02.<strong>2011</strong><br />

SharePoint Technology Conference<br />

San Francisco, CA USA<br />

http://www.sptechcon.com<br />

14.-17.02.<strong>2011</strong><br />

Mobile World Congress<br />

Barcelona, Spain<br />

http://www.mobileworldcongress.com<br />

15.-17.02.<strong>2011</strong><br />

USENIX FAST ’11<br />

San Jose, CA, USA<br />

http://www.usenix.org/events/fast11/<br />

25.-27.02.<strong>2011</strong><br />

SCALE 9x<br />

Los Angeles, CA, USA<br />

http://www.socallinuxexpo.org/scale9x/<br />

01.-02.03.<strong>2011</strong><br />

<strong>2011</strong> <strong>Linux</strong> Foundation End User Summit<br />

Jersey City, NJ, USA<br />

http://events.linuxfoundation.org/events/end-usersummit<br />

01.-05.03.<strong>2011</strong><br />

CeBIT <strong>2011</strong><br />

Messegelände<br />

Hannover<br />

http://www.cebit.de<br />

07.-08.03.<strong>2011</strong><br />

SANS WhatWorks in Application Security Summit <strong>2011</strong><br />

San Francisco, CA USA<br />

http://www.sans.org/appsec-<strong>2011</strong>/<br />

07.-09.03.<strong>2011</strong><br />

AnDevCon San Francsico<br />

San Francisco, CA USA<br />

http://www.andevcon.com<br />

07.-10.03.<strong>2011</strong><br />

DrupalCon Chicago<br />

Chicago, IL USA<br />

http://chicago<strong>2011</strong>.drupal.org<br />

09.-17.03.<strong>2011</strong><br />

PyCon <strong>2011</strong><br />

Atlanta, GA, USA<br />

http://us.pycon.org<br />

14.-19.03.<strong>2011</strong><br />

CSUN <strong>2011</strong><br />

San Diego, CA, USA<br />

http://www.csunconference.org<br />

19.-20.03.<strong>2011</strong><br />

Chemnitzer <strong>Linux</strong>-Tage <strong>2011</strong><br />

Hörsaal- und Seminar-Gebäude<br />

der Technischen Universität Chemnitz<br />

http://chemnitzer.linux-tage.de<br />

22.-24.03.<strong>2011</strong><br />

CTIA Wireless <strong>2011</strong><br />

Orlando, FL, USA<br />

http://www.ctiawireless.com<br />

23.-25.03.<strong>2011</strong><br />

POSSCON <strong>2011</strong><br />

Columbia, SC, USA<br />

http://posscon.org<br />

25.-27.03.<strong>2011</strong><br />

Indiana <strong>Linux</strong>Fest<br />

Indianopolis, IN, USA<br />

http://www.indianalinux.org<br />

26.03.<strong>2011</strong><br />

Augsburger <strong>Linux</strong>-Infotag <strong>2011</strong><br />

Hochschule Augsburg<br />

http://www.luga.de/Aktionen/LIT-<strong>2011</strong><br />

26.03.-04.04.<strong>2011</strong><br />

SANS <strong>2011</strong><br />

Orlando, FL USA<br />

http://www.sans.org/sans-<strong>2011</strong><br />

28.-31.03.<strong>2011</strong><br />

Web 2.0 Expo SF<br />

San Francisco, CA, USA<br />

http://www.web2expo.com/webexsf<strong>2011</strong><br />

30.03.-01.04.<strong>2011</strong><br />

USENIX NSDI ’11<br />

Boston, MA USA<br />

http://www.usenix.org/events/nsdi11/<br />

04.04.<strong>2011</strong><br />

<strong>2011</strong> High Performance Computing Financial Markets<br />

Grand Central Station, NY, USA<br />

http://www.flaggmgmt.com/linux/


Impressum<br />

<strong>Linux</strong>-<strong>Magazin</strong> eine Publikation der <strong>Linux</strong> New Media AG<br />

Redaktionsanschrift Putzbrunner Str. 71<br />

81739 München<br />

Tel.: 089/993411-0<br />

Fax: 089/993411-99 oder -96<br />

Internet<br />

www.linux-magazin.de<br />

E-Mail<br />

redaktion@linux-magazin.de<br />

Geschäftsleitung<br />

Chefredakteur<br />

stv. Chefredakteur<br />

Redaktion<br />

Aktuell, Forum<br />

Brian Osborn (Vorstand), bosborn@linuxnewmedia.de<br />

Hermann Plank (Vorstand), hplank@linuxnewmedia.de<br />

Jan Kleinert (V.i.S.d.P.), jkleinert@linux-magazin.de (jk)<br />

Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Ulrich Bantle, ubantle@linuxnewmedia.de (uba)<br />

Mathias Huber, mhuber@linuxnewmedia.de (mhu)<br />

Anika Kehrer, akehrer@linuxnewmedia.de (ake)<br />

Software, Programmierung Oliver Frommel, ofrommel@linuxnewmedia.de (ofr)<br />

Sysadmin, Know-how<br />

Ständige Mitarbeiter<br />

<strong>Linux</strong>-<strong>Magazin</strong> Online<br />

Grafik<br />

Bildnachweis<br />

DELUG-DVD<br />

Chefredaktionen<br />

International<br />

Produktion<br />

Onlineshop<br />

Abo-Infoseite<br />

Abonnenten-Service<br />

ISSN 1432 – 640 X<br />

Jens-Christoph Brendel, jbrendel@linuxnewmedia.de (jcb)<br />

Markus Feilner, mfeilner@linuxnewmedia.de (mfe)<br />

Nils Magnus, nmagnus@linuxnewmedia.de (mg)<br />

Fred Andresen (fan), Zack Brown, Hans-Georg Eßer (hge),<br />

Heike Jurzik (hej), Kristian Kißling (kki), Daniel Kottmair (dko),<br />

Charly Kühnast, Martin Loschwitz, Jürgen Manthey (Schlussredaktion),<br />

Jan Rähm (jrx), Michael Schilli, Carsten Schnober<br />

(csc), Mark Vogelsberger, Uwe Vollbracht, Britta Wülfing (bwü)<br />

Ulrich Bantle (Chefred.), ubantle@linuxnewmedia.de (uba)<br />

Mathias Huber, mhuber@linuxnewmedia.de (mhu)<br />

Anika Kehrer, akehrer@linuxnewmedia.de (ake)<br />

Klaus Rehfeld (Layout)<br />

Judith Erb (Art Director)<br />

xhoch4, München (Titel-Illustration)<br />

Rf123.com, Fotolia.de, Photocase.com, Pixelio.de und andere<br />

Thomas Leichtenstern, tleichtenstern@linuxnewmedia.de (tle)<br />

<strong>Linux</strong> <strong>Magazin</strong>e International<br />

Joe Casad (jcasad@linux-magazine.com)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Poland<br />

Artur Skura (askura@linux-magazine.pl)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Spain<br />

Paul C. Brown (pbrown@linux-magazine.es)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Brasil<br />

Rafael Peregrino (rperegrino@linuxmagazine.com.br)<br />

Christian Ullrich, cullrich@linuxnewmedia.de<br />

shop.linuxnewmedia.de<br />

www.linux-magazin.de/Produkte<br />

Lea-Maria-Schmitt<br />

abo@linux-magazin.de<br />

Tel.: 07131/27 07 274<br />

Fax: 07131/27 07 78 601<br />

CH-Tel: +41 43 816 16 27<br />

Preise<br />

Deutschland Ausland EU Österreich Schweiz<br />

Einzelpreis 4 5,95 (siehe Titel) 4 6,70 Sfr 11,90<br />

DELUG-DVD-Ausgabe 4 8,50 (siehe Titel) 4 9,35 Sfr 17,—<br />

Mini-Abo (3 Ausgaben) 4 3,— 4 3,— 4 3,— Sfr 4,50<br />

Jahresabo (12 Ausgaben) 4 63,20 4 75,40 4 71,50 Sfr 126,10<br />

Jahresabo + Jahres-DVD 4 69,90 4 81,40 4 78,50 Sfr 136,10<br />

Jahresabo DELUG 1 4 87,90 4 99,90 4 96,90 Sfr 161,90<br />

Kombi-Abo Easy 2 4 89,70 4 111,40 4 101,30 Sfr 179,10<br />

Kombi-Abo Easy + beide Jahres-DVDs 4 103,10 4 125,40 4 114,50 Sfr 199,10<br />

Kombi-Abo User 3 4 116,60 4 142,— 4 131,10 Sfr 229,90<br />

Kombi-Abo User + beide Jahres-DVDs 4 129,90 4 155,— 4 144,60 Sfr 249,90<br />

Mega-Kombi-Abo 4 4 143,40 4 173,90 4 163,90 Sfr 289,40<br />

Kombi-Abo ADMIN 5 4 99,90 4 124,90 4 111,50 Sfr 199,90<br />

Kombi-Abo ADMIN + beide Jahres-DVDs 4 113,30 4 138,30 4 124,90 Sfr 219,90<br />

Kombi-Abo ADMIN + DELUG DVD<br />

+ beide Jahres-DVDs 4 136,60 4 165,70 4 151,70 Sfr 259,90<br />

1<br />

mit Jahres-DVD und DELUG-Mitgliedschaft (monatl. DELUG-DVD)<br />

2<br />

mit Easy<strong>Linux</strong>-Abo<br />

3<br />

mit <strong>Linux</strong>User-Abo (No Media)<br />

4<br />

mit <strong>Linux</strong>User-Abo (DVD) und beiden Jahres-DVDs, inkl. DELUG-Mitgliedschaft (monatl.<br />

DELUG-DVD)<br />

5<br />

mit ADMIN-Abo<br />

Schüler- und Studentenermäßigung: 20 Prozent gegen Vorlage eines Schülerausweises<br />

oder einer aktuellen Immatrikulationsbescheinigung. Der aktuelle Nachweis ist bei<br />

Verlän gerung neu zu erbringen. Andere Abo-Formen, Ermäßigungen im Ausland etc.<br />

auf Anfrage.<br />

Adressänderungen bitte umgehend mitteilen, da Nachsendeaufträge bei der Post nicht<br />

für Zeitschriften gelten.<br />

Pressemitteilungen presse-info@linux-magazin.de<br />

Marketing und Vertrieb<br />

Anzeigenleitung,<br />

Hubert Wiest, hwiest@linuxnewmedia.de<br />

Vertrieb und Marketing Tel.: +49 (0)89 / 99 34 11 – 23<br />

Fax: +49 (0)89 / 99 34 11 – 99<br />

Mediaberatung D, A, CH Petra Jaser, anzeigen@linuxnewmedia.de<br />

Tel.: +49 (0)89 / 99 34 11 – 24<br />

Fax: +49 (0)89 / 99 34 11 – 99<br />

Mediaberatung UK, Irland Penny Wilby, pwilby@linux-magazine.com<br />

Tel.: +44 (0)1787 211100<br />

Mediaberatung USA Joanna Earl, jearl@linuxnewmedia.com<br />

Tel.:+1 785 727 5275<br />

Ann Jesse, ajesse@linuxnewmedia.com<br />

Tel.: +1 785 841 8834<br />

Pressevertrieb<br />

Druck<br />

MZV, Moderner Zeitschriften Vertrieb GmbH<br />

Ohmstraße 1, 85716 Unterschleißheim<br />

Tel.: 089/31906-0, Fax: 089/31906-113<br />

Vogel Druck und Medienservice GmbH, 97204 Höchberg<br />

Der Begriff Unix wird in dieser Schreibweise als generelle Bezeichnung für die Unixähnlichen<br />

Betriebssysteme verschiedener Hersteller benutzt. <strong>Linux</strong> ist eingetragenes<br />

Marken zeichen von Linus Torvalds und wird in unserem Markennamen mit seiner<br />

Erlaubnis verwendet.<br />

Eine Haftung für die Richtigkeit von Veröffentlichungen kann trotz sorgfältiger Prüfung<br />

durch die Redaktion vom Verlag nicht übernommen werden. Mit der Einsendung von<br />

Manus kripten gibt der Verfasser seine Zustimmung zum Abdruck. Für unverlangt<br />

eingesandte Manuskripte kann keine Haftung übernommen werden.<br />

Das Exklusiv- und Verfügungsrecht für angenommene Manuskripte liegt beim Verlag. Es<br />

darf kein Teil des Inhalts ohne ausdrückliche schriftliche Genehmigung des Verlags in<br />

irgendeiner Form vervielfältigt oder verbreitet werden.<br />

Copyright © 1994 – <strong>2011</strong> <strong>Linux</strong> New Media AG<br />

Impressum 02/<strong>2011</strong><br />

Service<br />

www.linux-magazin.de<br />

129<br />

Krypto-Info<br />

GnuPG-Schlüssel der <strong>Linux</strong>-<strong>Magazin</strong>-Redaktion:<br />

pub 1024D/44F0F2B3 2000-05-08 Redaktion <strong>Linux</strong>-<strong>Magazin</strong><br />

<br />

Key fingerprint = C60B 1C94 316B 7F38 E8CC E1C1 8EA6 1F22 44F0 F2B3<br />

Public-Key der DFN-PCA:<br />

pub 2048R/7282B245 2007-12-12,<br />

DFN-PGP-PCA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 39 D9 D7 7F 98 A8 F1 1B 26 6B D8 F2 EE 8F BB 5A<br />

PGP-Zertifikat der DFN-User-CA:<br />

pub 2048R/6362BE8B (2007-12-12),<br />

DFN-PGP-User-CA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 30 96 47 77 58 48 22 C5 89 2A 85 19 9A D1 D4 06<br />

Root-Zertifikat der CAcert:<br />

Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/<br />

Email=support@cacert.org<br />

SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33<br />

MD5 Fingerprint=A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B<br />

GPG-Schlüssel der CAcert:<br />

pub 1024D/ 65D0FD58 2003-07-11 [expires: 2033-07-03]<br />

Key fingerprint = A31D 4F81 EF4E BD07 B456 FA04 D2BB 0D01 65D0 FD58<br />

uid CA Cert Signing Authority (Root CA) <br />

Autoren dieser Ausgabe<br />

Fred Andresen Rechtsrat 96<br />

Christoph Baudson Web-Globus 70<br />

Zack Brown Zacks Kernel-News 18<br />

Tobias Eggendorfer Reingespritzt 108<br />

Bernd Erk Schöne neue Bank 28<br />

Peter Kreußel Schöne neue Bank 28<br />

Michael Kromer Sichere Neun 38<br />

Eva-Katharina Kunst Eingedost 82<br />

Eva-Katharina Kunst Kern-Technik 104<br />

Charly Kühnast Kurz über lang 81<br />

Martin Loschwitz Debianopolis 99<br />

Hans-Peter Merkel Hindernislauf 86<br />

Mathias Meyer Frischer Wind 42<br />

Caspar Clemens Mierau Vertraut und doch neu 36<br />

Michael Müller Tux liest 100<br />

Sven Pöhler Replication Reloaded 52<br />

Jürgen Quade Eingedost 82<br />

Jürgen Quade Kern-Technik 104<br />

Michael Schilli Datumsarithmetik 118<br />

Carsten Schnober Projekteküche 78<br />

Daniel Schäfer Forum geht’s? 62<br />

Peter Stamm Web-Globus 70<br />

Mark Vogelsberger InSecurity News 20<br />

Uwe Vollbracht Tooltipps 76<br />

Volker Wegert Selbst modelliert 112


Service<br />

www.linux-magazin.de <strong>Vorschau</strong> 3/<strong>2011</strong> 1/<strong>2011</strong> 12/2010 02/<strong>2011</strong><br />

130<br />

<strong>Vorschau</strong><br />

3/<strong>2011</strong> Dachzeile<br />

MAGAZIN<br />

Morgens UMTS, mittags LAN, abends WLAN<br />

© Maksym Yemelyanov, 123RF.com<br />

Neue Wege zum Desktop<br />

Allen technischen Vorteilen zum Trotz setzen sich native <strong>Linux</strong>-<br />

Desktops am Markt nicht durch. Das ist ärgerlich, hilft aber<br />

den Admins nicht weiter, die sich jeden Tag mit ihrem Pool an<br />

aufwändig zu wartenden Windows-PCs herumschlagen.<br />

Das nächste <strong>Linux</strong>-<strong>Magazin</strong> weist mehrere Wege aus der Misere,<br />

die – je nach Situation vor Ort – einzeln oder in Kombination<br />

den Administrationsaufwand und die Kosten reduzieren. Im<br />

Kern geht es ums Vereinheitlichen und Zentralisieren: Serverbased<br />

Computing, Clouds, Webapplikationen und virtualisierte<br />

Client-Hardware. Nebenbei untersucht die Redaktion, ob das<br />

anstehende Chrome OS etwas zum Gelingen beitragen kann.<br />

Überschrift<br />

8:10 Uhr in der S-Bahn zum Flughafen, 14:30 Uhr einer Niederlassung,<br />

21:15 Uhr allein im Hotel – Nomaden führen ein unstetes<br />

Leben. Mitreisenden <strong>Linux</strong>-Notebooks gehts nicht besser –<br />

Devices und Routen oszillieren im Takt ihrer Besitzer, was offenen<br />

Verbindungen schlecht bekommt. Eine Bestandsaufnahme.<br />

Grafischer Überbau für Postfix und Dovecot<br />

Das neue Verwaltungsfrontend Vboxadm will beim Management<br />

virtueller Mailuser und deren Mailboxen helfen. Wer<br />

mag, kann Passwörter und Abwesenheitsnotizen nach RFC<br />

3834 zugleich auch über den Webmailer Roundcube verwalten.<br />

Das nächste <strong>Magazin</strong> vergleicht den Newcomer mit anderen<br />

Management-GUIs für moderne Mailserver.<br />

Sleuthkit 3.2<br />

Die Toolsammlung kratzt auch gelöschte Informationen von<br />

der Festplatte. Das kommende Heft schaut der neuesten Version<br />

der Detektivin über die Schulter, wenn sie nicht nur auf Ext2-<br />

oder Ext3-Partitionen verschwundene Files wiederherstellt.<br />

Die Ausgabe 3/<strong>2011</strong><br />

erscheint am 3. Februar <strong>2011</strong><br />

Ausgabe 02/<strong>2011</strong><br />

erscheint am 20.01.<strong>2011</strong><br />

© Flaivoloka, sxc.hu<br />

Programmieren<br />

Schon ein kleines Skript erleichtert oftmals<br />

lästige Alltagsarbeiten. <strong>Linux</strong> erweist<br />

sich in vielen Fällen als die richtige<br />

Plattform für das Programmieren von<br />

ausgewachsenen Projekten. Viele Werkzeuge,<br />

wie Compiler, Debugger, IDEs<br />

und Versionskontrollsysteme, bringt es<br />

bereits von vorneherein mit. So sparen<br />

Sie Lizenzkosten und arbeiten zudem mit Mitteln, die gut getestet<br />

sind. Unser Schwerpunkt in der kommenden Ausgabe beleuchtet anhand<br />

von einigen prominenten Beispielen, wie Sie die Vorzüge der<br />

vorhandenen Tools für Ihre Zwecke am besten einsetzen.<br />

Hardware-Check<br />

Mit einem kleinen Tool enthüllen Sie die Geheimnisse der Hardware,<br />

Ihres Systems. Ob USB-Controller, Mainboard oder RAM – zu allen<br />

Komponenten erhalten Sie detaillierte Informationen, die manchmal<br />

mehr enthüllen als die Datenblätter des Herstellers.<br />

Fernbedienung<br />

Mit einer kleinen App verwandeln Sie ein Android-Smartphone in<br />

eine praktische Fernbedienung, mit der Sie kinderleicht auf einem<br />

stationären Player Videos abspielen, die Musikwiedergabe aus der<br />

Ferne steuern und alle anderen erdenklichen Aufgaben mit einem<br />

einfachen Klick in der mobilen Anwendung erledigen. So verschmelzen<br />

die beiden Welten auf ideale Weise miteinander.<br />

Schicker Access Point<br />

Der Huawei E5 erweist sich als eine praktische<br />

Alternative zum USB-Stick für den mobilen<br />

Zugang zum Netz. Der kombinierte<br />

WLAN-UMTS-Router verfügt über eine<br />

Fülle von Funktionen und erlaubt zudem<br />

noch den schnellen Aufbau eines<br />

drahtlosen, lokalen Netzwerks. Dank<br />

Profilmanagement gehen Sie so komfortabel<br />

auf der ganzen Welt in Funknetzwerken<br />

schnell online.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!