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 />
GeoInformatik, 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 />
MapsLö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 GISStandards<br />
beherrscht, haben solche KachelServices<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 JavascriptBibliothek,<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. ZoomFunktion mit<br />
Mausrad, SlippyMap, Kachelung, Web<br />
MapServiceUnterstützung (WMS, [4]),<br />
aber auch temporäre Objekte und eine<br />
umfangreiche Webbasierte Rendering<br />
Engine gehören dazu.<br />
Die Konfiguration erfolgt über eine recht<br />
einfache Syntax, die der Administrator<br />
in einer HTMLSeite hinterlegt. Listing<br />
1 zeigt das wohl einfachste HalloWelt<br />
Beispiel aus der Dokumentation, eine<br />
Weltkarte im Vollbild, generiert aus<br />
WMSLinks. Für kompliziertere Beispiele<br />
sind gute JavascriptKenntnisse erforderlich.<br />
Mit steigender Funktionalität der<br />
Anwendungen kann das schnell recht<br />
anspruchsvoll werden.<br />
Als reiner JavascriptKartenviewer 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 GeoInhalte.
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 />
GISBereich 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 MapbenderWiki)<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 />
LoggingURLs 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 WebGUI per Mausklick ein,<br />
in der Regel kommen hier die langen<br />
WMSURLs zum Einsatz.<br />
Mapfish<br />
Das Projekt Mapfish ist das jüngste im<br />
Vergleich und bietet SoftwareEntwicklern<br />
ein Framework zur Erstellung komplexer<br />
WebGISAnwendungen (Abbildung 3).<br />
Mapfish unterstützt zahlreiche Programmiersprachen<br />
und kombiniert etablierte<br />
Komponenten aus dem OpenSource<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 />
gomapfishframework1.2.py nosite<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 />
RESTAPI für unterschiedliche Sprachen,<br />
Entwickler fühlen sich hier schnell wohl.<br />
Die MapbenderCodebasis 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 GeoExtBibliotheken bieten<br />
die gleichen AufklappFenster, Zoomefdarauf<br />
folgenden Prompt »(env)« prüft<br />
Pythons »paster«Kommando den Erfolg<br />
der Installation (Listing 2).<br />
Die umfangreiche JavascriptToolbox bindet<br />
der Anwender mit dem Paster ein,<br />
ebenso die Webservices, für die eine<br />
PostGIS<strong>Datenbank</strong> notwendig ist. Die<br />
LayerKonfiguration findet dabei in ».ini«<br />
Dateien statt, alles fein säuberlich dokumentiert<br />
auf [3].<br />
Die Unterschiede<br />
Open Layers ist eine JavascriptBibliothek<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 />
WebGISAnwendungen. 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 />
JavascriptDateien und GeoExtKomponenten<br />
[11]. Das sind mächtige, mit der<br />
ExtJSJavascriptBibliothek 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 MapbenderClient bringt ebenfalls<br />
eigenes Javascript mit, das auf der<br />
schlanken JqueryBibliothek [12] basiert.<br />
Standardmäßig nutzt er seinen eigenen<br />
Kartenviewer, die Widgets wie die Suchmodule<br />
oder zur Digitalisierung fußen<br />
auf JqueryUIKomponenten, einer Bibliothek<br />
aus populären JqueryPlugins, 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 Mapbendereigenen<br />
Anwendungslogik.<br />
Daten editieren mit dem<br />
Mapfish-Server<br />
Der MapfishServer erlaubt es, räumliche<br />
Daten über eine RESTSchnittstelle<br />
einzufügen, zu aktualisieren, abzufragen<br />
und zu löschen. Damit unterscheidet<br />
sich Mapfish stark von Mapbender,<br />
das keine eigene GeodatenHaltung hat<br />
und verteilte Architekturen bedient. Das<br />
RESTProtokoll von Mapfish ist sowohl<br />
in Python, PHP und Java als auch in<br />
Ruby implementiert. Der MapfishServer<br />
erweitert das PythonFramework Pylons<br />
[14] und benutzt GISBibliotheken wie<br />
Shape ly [15] oder das PythonSQLToolkit<br />
SQL Alchemy [9].<br />
Der MapbenderServer ist in PHP implementiert<br />
und orchestriert oder administriert<br />
außer OGCkonformen 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 GISMethoden<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 Web2.0Gimmicks der<br />
JqueryBibliothek. 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 />
ExtJSBibliothek, 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 OsgeoCommunity.<br />
Open Layers unterliegt<br />
einer BSDLizenz, 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 OpenLayersObjekte 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 DefactoStandard<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 GISfremde 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 SqueezeRelease auf<br />
die Zielgerade ein. Der BetaDI 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 UnstableZweig<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 DebianInstaller<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 DebianInstallers sichtbar<br />
ändert. Ab sofort macht er die Partition<br />
für das RootDateisystem »/« 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 EmbeddedSystemen<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 InstallerEntwickler 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 ShowStopper für<br />
Squeeze sind Releasekritische 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 />
BuildDaemons. Sie stoßen den Paketbau<br />
auf noch ausstehenden Architekturen automatisch<br />
an. Einige Entwickler machen<br />
sich den Spaß, das ganze DebianArchiv<br />
in regelmäßigen Abständen komplett<br />
durchzukompilieren. Dabei halten sie<br />
Ausschau nach der ProblemMeldung<br />
„Fails to build from source“, von Eingeweihten<br />
abgekürzt zu FTBFS.<br />
Ubuntu unterstützt weniger Architekturen<br />
als Debian, kennt das FTBFSProblem<br />
aber ebenfalls. Weil viele Pakete<br />
in Ubuntu nicht weit vom Stamm ihrer<br />
DebianVerwandten 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 />
DebianPaketen.<br />
Lucas Nussbaum hat Ubuntu Maverick<br />
Meerkat durchgebaut und eine nach<br />
Maintainern sortierte Liste aller Fehler<br />
veröffentlich [2]. DebianDeveloper können<br />
sogar die BuildLogs 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 »"«. 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 />
PerlComitter. 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 35<br />
48565 Steinfurt<br />
Tel. : 02552 638755<br />
Fax: 02552 638757<br />
Weitere Informationen unter www.ost.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.