Vorweg: ich fühle mich Heute nicht sehr gut, könnte sein dass ich Fieber habe. Da kommt man auf die merkwürdigsten Ideen… :-)

openDB

openDB

Ich habe hier ziemlich viele Filme auf DVD und BluRay. Leute haben schon behauptet dass wir bestimmt besser ausgestattet wären als viele Dorfvideotheken. Das lasse ich mal so im Raum stehen, aber bedingt durch die vielen Filme und mein ausgesprochenes Siebhirn ist vor einiger Zeit schon eine DVD-Verwaltung fällig geworden. Meine Suche — unter anderem hier im Blog — hat mich zu OpenDB gebracht. Seitdem ich das damals installiert habe wurde es offenbar nicht mehr aktualisiert… tut aber auch nicht not, da es nach wie vor exakt das macht was ich mir vorgestellt habe.

Vor mir liegt also eine MySQL-Datenbank in der viele Filme, deren IMDB-Bewertungen und die mitwirkenden Schauspieler gelistet sind. Und mein vollgeschnoddertes Gehirn stellt mir die Frage: welcher Schauspieler hat wohl in den bestbewerteten Filmen mitgewirkt?

Die Struktur der Datenbank ist nicht unbedingt ideal für so eine Abfrage, daher hat es fast eine halbe Stunde gedauert bis ich dieses kleine Monster hatte („Ein Kerlchen von erlesener Hässlichkeit“ hätte meine Mathelehrerin wohl dazu gesagt. :-) ):

select count(1) filme, round(avg(ia1.attribute_val),2) durchschnitt, ia2.attribute_val schauspieler
from item_attribute ia1
join item_attribute ia2 on ia1.item_id=ia2.item_id
join item i on i.id=ia1.item_id
join item_instance ii on ia1.item_id=ii.item_id
where ia1.s_attribute_type='IMDBRATING'
and ia2.s_attribute_type='ACTORS'
group by ia2.attribute_val
having filme>=10
order by durchschnitt desc
limit 30;

Die besten, der besten...

Die besten, der besten…

Mit der Einschränkung ‚having filme>=10‘ sehe ich mir nur Schauspieler an von denen ich mindestens zehn Filme hier habe. Ohne so einen Filter würde man wohl nur Leute finden die in Shawshank Redemption oder dem Paten mitgespielt haben, sonst aber nirgends. Erst hatte ich den Filter bei 5, da gab es aber immer noch viel zu viele (mir) unbekannte Namen, wenig Stars.

Das Ergebnis mit beiden Filtern ist im nebenstehenden Screenshot zu sehen. Man bedenke: Datenbasis sind ausschließlich die Filme die ich original hier habe (ja, da sind wirklich keine Kopien dabei!). Und bewertet wurde nicht die Leistung der Personen, sondern die der Filme in denen sie gespielt haben. Ich muss beispielsweise gestehen dass mir John Rhys-Davies erstmal nichts gesagt hat. Es reicht aber, dass er in zwei Indiana-Jones- und drei Herr-der-Ringe-Filmen mitgespielt hat (als Sallah bzw. Gimli), damit er die eine Liste anführt. Alfred Hitchcock war ein großartiger Regisseur, durch seine kleinen Cameo-Auftritte steht er aber auch als Schauspieler an der Spitze der Liste.

Apropos Regisseur: wenn ich nicht nach Schauspielern sondern nach Regisseuren auswerte — vielleicht ist das fairer — führt bei einem Filter von 5 Sergio Leone die Liste an, gefolgt von Akira Kurosawa und Charlie Chaplin.

Oh, und wo ich gerade dabei bin… hier nochmal eine Liste der Schauspieler von denen ich die meisten Filme habe. War dann nur noch eine Fingerübung:

Bruce Willis (38), Samuel L. Jackson (24), Robert De Niro (21), Tom Cruise (21), Johnny Depp (21), Brad Pitt (19), Morgan Freeman (16), Harvey Keitel (15), Nicole Kidman (15), Matt Damon (15), Leonardo DiCaprio (14), Harrison Ford (14), Mel Gibson (14), Bess Flowers (14), Steve Buscemi (13).

Die Reihenfolge gibt komischerweise meine persönliche Meinung von deren Können überhaupt nicht wieder… Robert De Niro, Al Pacino oder auch Sean Connery halte ich für deutlich fähiger als Bruce Willis, dabei sind die letzten beiden nicht mal in der Top15…

Naja, vielleicht sagt das ja doch alles nichts aus. Vielleicht sollte ich mir mal die Datenbasis der IMDB besorgen (ja, das geht.) und darauf Auswertungen fahren. Nicht nur auf mein eigenes Regal. Zumindest hat es mir geholfen, eine Weile nicht nur über die Schnodderei nachzudenken… :-)

Login, bitte

Login, bitte

Aus Gründen die ich später sicher nochmal erläutern werde möchte ich ein Dokumentenmanagementsystem (DMS) installieren. Die Wahl fällt Heute auf Alfresco, einem kommerziell entwickelten System von dem es eine kostenlos nutzbare Community-Version gibt.

Haken an der Sache: das ist eine Java-Anwendung, und die drückt ganz schön auf mein kleines Heimserverchen. Um es nicht zu sehr ausarten zu lassen möchte ich nach Möglichkeit kein volles KVM installieren, sondern in einem OpenVZ-Container (wir erinnern uns: ich habe Proxmox auf meinem Server installiert). Problem dabei: in OpenVZ habe ich nur 32-Bit-Gäste, und der vergleichsweise einfach zu bedienende Installer von Alfresco läuft nur auf 64 Bit.

Also zu Fuss. Und da ich zwar mehrere Anleitungen gefunden habe, keine davon aber wirklich alle meine Probleme gelöst hat, schreibe ich hier mal zusammen was ich gemacht habe. Ich installiere erstmal nur das Basispaket, Zusatzmodule kommen bei Bedarf später nach.

Noch ein Disclaimer vorweg: alles was hier steht ist gefährliches Halbwissen! Meine Erfahrungen mit Alfresco beschränken sich auf wenige Stunden Spielerei, auch Java und Tomcat sind für mich kein Heimspiel. Was ich aufgeschrieben habe hat zumindest auf den ersten Blick für mich funktioniert. Mit dem Ergebnis habe ich noch nicht viel Zeit verbracht. Es kann also durchaus sein dass ich Quatsch geschrieben habe. Falls jemandem Fehler oder Verbesserungen einfallen wäre ich sehr dankbar für einen kurzen Hinweis. Falls mir noch was auffällt werde ich einen entsprechenden Nachtrag schreiben.

  • Maschine anlegen. Ich gebe erstmal nur 1,5GB RAM, dazu 5GB Festplatte.
  • Debian installieren. Debian 7.0 ist mittlerweile so gut wie stabil, also gibt es direkt Wheezy. Dazu das übliche: Apt-Cache eintragen und alles erstmal aktualisieren.
  • Datenbank anlegen. Ich nutze MySQL, die Datenbank liegt auf einem anderen Server. ‚create database alfresco‚.
  • Benötigte Pakete installieren: apt-get install libreoffice openjdk-7-jre imagemagick tomcat7 mysql-client libmysql-java zip‚. Die Java-Version scheint wirklich wichtig zu sein, mit Version 6 hatte ich kein Glück beim vollständigen Anlegen der Datenbank.
  • Die SWFTools kennt Debian zwar als Paket, hier fehlt dann allerdings das essentiell wichtige pdf2swf. Wir ziehen uns die Sourcen (Version 0.9.1, 0.9.2 bringt einen Fehler bei der Installation) und compilieren klassisch mit ./configure && make && make install. Voraussetzung hierfür: apt-get install zlib1g-dev libjpeg62-dev libgif-dev libfreetype6-dev g++ make.
  • Alfresco herunterladen. Wir brauchen das Paket für die manuelle Installation, aktuell also alfresco-community-4.2.c.zip.
  • Den Inhalt des Paketes unter /opt/alfresco auspacken.
  • Sicherstellen dass Tomcat nicht läuft, damit der uns nicht in die Quere kommt: /etc/init.d/tomcat7 stop
  • Dateien und Verzeichnisse vorbereiten:

    # cp -r /opt/alfresco/web-server/shared/ /var/lib/tomcat7/
    # cp -r /opt/alfresco/web-server/webapps/ /var/lib/tomcat7/
    # cp -r /opt/alfresco/bin/ /var/lib/tomcat7/
    # ln -s ../../java/mysql-connector-java.jar /usr/share/tomcat7/lib/
    # mv /var/lib/tomcat7/shared/classes/alfresco-global.properties.sample /var/lib/tomcat7/shared/classes/alfresco-global.properties
    # mv /var/lib/tomcat7/shared/classes/alfresco/web-extension/share-config-custom.xml.sample /var/lib/tomcat7/shared/classes/alfresco/web-extension/share-config-custom.xml
    # mkdir /opt/alfresco/alf_data
    # chown -R tomcat7:tomcat7 /var/lib/tomcat7/ /opt/alfresco/alf_data/

  • Konfigurationsdatei /var/lib/tomcat7/shared/classes/alfresco-global.properties anpassen. Hier nur die geänderten Zeilen:

    dir.root=/opt/alfresco/alf_data
    db.username=alfresco
    db.password=GEHEIMESPASSWORT
    ooo.exe=/usr/bin/soffice
    ooo.enabled=true
    jodconverter.officeHome=/usr/lib/libreoffice/
    jodconverter.portNumbers=8101
    jodconverter.enabled=true
    img.root=/usr
    img.exe=/usr/bin/convert
    swf.exe=/usr/local/bin/pdf2swf
    db.driver=org.gjt.mm.mysql.Driver
    db.url=jdbc:mysql://DATENBANKSERVER/alfresco?useUnicode=yes&characterEncoding=UTF-8

  • Speichermanagement für Tomcat anpassen, in /etc/default/tomcat7 folgende Einstellungen hinzufügen:
    JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=512m -Xms128m -Xmx768m -Dalfresco.home=/opt/alfresco -Dcom.sun.management.jmxremote"
  • Tomcat starten: /etc/init.d/tomcat7 start

Danach kann man seinen Browser ganz vorsichtig auf http://SERVERNAME:8080/share oder http://SERVERNAME:8080/alfresco loslassen. Nicht vorschnell aufgeben, der erste Aufruf kann durchaus mehrere Minuten dauern. Die Zeit kann man sich zum Beispiel damit vertreiben, in der Datenbank nachzusehen ob tatsächlich die nötigen Tabellen angelegt werden. Direkt nach dem Laden der Startseite sind in der DB schon 102 Tabellen und mehrere Tausend Datensätze vorhanden.

Genau hier hat mich übrigens der Fehlerteufel eine Weile in Schach gehalten: in meinen ersten Anläufen hatte ich openjdk-6-jre installiert, so wie die meisten (zugegeben: teils alten) Howtos raten. Das führt neben einem Riesenhaufen Logs — die für einen nicht-Java-affinen Menschen erstmal nichtssagend sind — zu genau 20 Tabellen in der Datenbank, und dazu dass man unter /alfresco nur eine Fehlermeldung präsentiert bekommt. Darauf, das mal mit Java 7 zu testen muss man erstmal gestossen werden:-(

Wenn die Startseite (endlich!) sauber lädt kann man sich mit admin:admin anmelden und anfangen zu überlegen was man mit so einem schönen, neuen, großen Spielzeug anfangen kann… Aber das ist eine andere Geschichte, und die soll ein anderes Mal erzählt werden… ;-)

Geholfen haben mir bei der Installation hauptsächlich diese beiden Anleitungen, sowie dieser Thread im Support-Forum. Den Rest habe ich mir zusammengegoogled. Danke an alle die Ihr Wissen im Netz teilen!

Nachtrag (05.03.): Aufgrund eines Fehlers im Zusammenspiel zwischen Flash und dem Browser habe ich Flash-Upload abgeschaltet. Sonst hätte ich in der Weboberfläche keine Dateien hochladen können. Nutzen kann man Alfresco auch anders, aber wenn schon… Um abzuschalten in der Datei /var/lib/tomcat7/shared/classes/alfresco/web-extension/share-config-custom.xml den Wert adobe-flash-enabled auf false setzen und den Tomcat durchstarten.

Gruselige Benutzeroberfläche

Gruselige Benutzeroberfläche

Vor einigen Jahren habe ich mal nach einer Möglichkeit gesucht, einen USB-Stick zu bauen mit dem man mehrere Boot-Images starten kann. Leider ohne Erfolg.

Ideal fände ich eine Lösung bei der ich nur noch ISO-Files auf den Stick legen muss, meinetwegen noch mit einem Skript das die ISOs dann beim Bootloader anmeldet. So etwas scheint es aber nicht zu geben, und das scheint mit den gängigen Bootloadern auch nicht ohne weiteres möglich zu sein.

Jetzt habe ich mir aber ein Programm angesehen das der Lösung zumindest nahe kommt: mit Multisystem kann man sich einen Stick erstellen von dem mehrere Systeme gebooted werden können.

Größter Haken beim Bau des individuellen Sticks ist dabei die Benutzeroberfläche. Von weitem sieht die zwar nett aus, damit zu arbeiten ist aber wirklich eine Herausforderung. Und damit meine ich nicht dass es eine steile Lernkurve gibt weil das Programm komplex ist, sondern schlicht weil die Oberfläche nichts taugt. Dass man die Größe der meisten Fenster nicht verändern kann ist dabei das kleinste Übel…

Das Ergebnis zählt

Das Ergebnis zählt

Aber mit einem kleinen HowTo — wie es sich zum Beispiel im Ubuntu-Wiki findet — kommt man doch zum Ziel. So habe ich jetzt einen kleinen aber stabilen 8GB-Stick (SanDisk Cruzer Pop) im Portemonnaie von dem ich wahlweise Ubuntu, einen Debian-Installer oder mein bevorzugtes ich-muss-was-machen-ohne-von-CD-zu-booten-System Grml starten kann. Letzteres wird nicht aktiv von Multisystem unterstützt, das hat erst Probleme gemacht: die 96-Bit-Variante (ja, Grml hat sowas! :-D) tut’s nicht, stattdessen habe ich jetzt die 32- und die 64-Bit-Version auf dem Stick. Kommt am Ende auf’s gleiche raus.

Multisystem ‚weiß‘ wie es die einzelnen ISOs behandeln muss um sie mit einem zentralen Bootloader starten zu können. Dazu ist für jedes unterstützte ISO eine Konfiguration hinterlegt, man kann dem Programm also auch nicht beliebige Systeme vor werfen. Die Ubuntu-Images liegen jetzt einfach als ISO auf dem Stick, ich weiss nicht ob ich die einfach austauschen könnte. Grml wird wie ein ‚richtiges‘ Debian behandelt und komplett ausgepackt auf den Stick gelegt. Der Traum vom Stick mit mehreren bootfähigen ISOs ist also immer noch nicht erfüllt.

Alternativ habe ich mir übrigens auch MultiCD angesehen, aber nicht wirklich ausprobiert. Wenn ich das richtig verstehe kann man damit nur CDs oder DVDs bauen, keine Sticks.

Falls doch noch jemand eine Idee hat wie man den Stick so bestücken kann wie ich mir das vorgestellt hatte: immer her damit!

Der Plan steht

Der Plan steht

Erstaunlich, dass ich mich damit noch nie befasst habe: Fritzing ist ein Programm mit dem man komfortabel kleinere Elektronikprojekte zeichnen kann. Und zwar nicht (nur) als Schaltplan.

Einsteiger in die Materie Elektronik sind meiner Ansicht nach gut beraten, sich ein Steckbrett und ein paar Bauteile zu kaufen und loszulegen. Will man denen vermitteln wie eine Schaltung auszusehen hat, oder wollen sie Fragen zu ihrem Projekt stellen, wird es schwierig. Ein ordentlicher Schaltplan würde vielleicht helfen, vom Steckbrett auf den Plan zu abstrahieren ist aber nicht jedermanns Sache.

An dieser Stelle kommt Fritzing zum Einsatz. Man kann mit der Software auch richtige Schaltpläne zeichnen, die besondere Stärke liegt aber im einfachen Zeichnen von Breadboards und den darauf aufgebauten Schaltungen.

Gestern habe ich beispielsweise einen Arduino Nano geordert. Sobald der hier ist werde ich die abgebildete Schaltung aufbauen, da ich etwas mit dem Sensor spielen möchte. Anhand des Bildes kann ich jedermann klar machen was ich vorhabe, und wie der Aufbau aussehen wird.

Meine größeren Schaltungen werde ich wohl weiterhin mit KiCAD zeichnen, trotzdem glaube ich dass â‚£ritzing meinen Werkzeugkasten auf jeden Fall bereichern wird.

Heute habe ich mich (unter anderem) mit einem Problem beschäftigt das auf den ersten Blick trivial aussieht. Ich zumindest habe bislang keine Lösung gefunden die mir wirklich gefällt. Mal sehen ob was dabei rauskommt wenn ich das hier ‚crowdsource’… :-)

Aufgabenstellung: Zähle, wie viele Prozesse eines bestimmten Programmes schon länger als 30 Minuten laufen.

Klingt einfach, oder?

Die Ausgaben von ps zu parsen erscheint mir dabei aber zu fehleranfällig. Da müsste man zu viel berücksichtigen: Prozesse die vielleicht länger als einen Tag laufen, Prozesse die über Mitternacht gelaufen sind… ich habe nicht getestet wie es aussieht wenn man an der Zeitzone rumspielt… Nein, das kann nicht der richtige Ansatz sein.

Meine erste echte Lösung sieht zwar hässlich originell aus, funktionierte aber im Test (zu Demozwecken suche ich mal nach meinem Firefox):

echo | killall -i --older-than 30m firefox 2> /dev/null | tr -cd '?' | wc -c

Mit -i ist killall ‚interaktiv‘, fragt also zu jedem gefundenen Prozess freundlich nach ob es zuschlagen soll. Mit dem reingepipten echo beantwortet es sich diese Frage immer negativ. Der Rest der Zeile zählt im Prinzip wie oft killall gefragt hat ob es töten soll.

Blöd ist, dass die auf einem etwas älteren RHEL laufen soll. Anders als bei Ubuntu kennt killall da die Option –older-than noch nicht.

Der zweite Lösungsansatz funktioniert leider nur auf den ersten Blick, dafür aber auch auf dem alten Red Hat:

find /proc/[0-9]* -maxdepth 1 -name status -mmin +30 | xargs egrep "^Name:\sfirefox$" | wc -l

Ich suche also alle Prozesse die schon länger als 30 Minuten laufen, und suche in deren status-Datei nach dem Namen meines Prozesses. Die Ergebnisse werden dann wieder gezählt. Alternativ könnte man statt in der status- auch in der cmdline-Datei suchen, in meinem echten Einsatz übersehe ich damit dann auch Zombies (die werden separat betrachtet). Leider funktioniert dieser Ansatz nicht wirklich zuverlässig. Es sieht so aus als ob der Kernel den Dateien im Proc-Verzeichnis bisweilen einen neuen Timestamp gibt — obwohl der Prozess nicht gestartet oder beendet wurde. Ein Schuss in den Ofen, also. :-(

Wie macht man sowas? Ich meine, wenn man eine zuverlässige Lösung mit Bordmitteln haben will? Gibt es da ein passendes Tool das ich noch nicht kenne? Oder hilfreiche Optionen für gängige Tools? Wenn ich die Suchmaschine meiner Wahl frage finde ich eine Menge Lösungen, aber die sind entweder auch wackelig, oder sie bestehen darauf direkt alles zu töten…

Zwischendurch mal was nützliches für alle die — wie ich — viel in Unix-Shells unterwegs sind. Insbesondere für die die — wie ich — auch gerne mal ‚Einzeiler‘ schreiben die über mehrere Bildschirmzeilen gehen… :-)

Das Kommando fc steht für ‚fix command‘, damit wird die zuletzt ausgeführte Zeile zur Bearbeitung im Editor geöffnet. Also idealerweise im Vim. Da kann man komfortabel seine Änderungen vornehmen, direkt nach Beendigung des Editors wird das Kommando ausgeführt. Zumindest die Bash und die Zsh (letztere ist die interaktive Shell meiner Wahl) können das.

Ich persönlich kannte das vorher noch nicht. Hilfreich wäre es schon in wirklich vielen Situationen gewesen: ich neige wie gesagt dazu komplexe Shell-Zeilen zusammenzubauen. Wenn ich mit einem Ergebnis zufrieden bin schiebe ich es oft mittels echo in eine Datei, um die dann zum Shellskript umzuformen. Wenn ich mit fc eh in den Editor wechsele kann ich nicht nur von vornherein sauberer schreiben, sondern bei Bedarf mit ‚:w tollesskript.sh‘ direkt in eine Datei sichern.

Eigentlich ist es schade drum:

root:~# stat /var/log/installer.log.1 | grep Modify
Modify: 2002-12-03 21:03:20.000000000 +0100

Das Debian auf meinem Heimserver habe ich vor genau zehn Jahren, einem Monat, einem Tag und ein paar Stunden installiert. Vor einem halben Jahr habe ich das einem Arbeitskollegen erzählt, er hat es mir nicht geglaubt — vermutlich übersteigt das die wildesten Fantasien eines Windows-Admins… :-)
Wenn ich mich recht erinnere war das meine erste Debian-Installation überhaupt, vorher liefen da ein SuSE, ein Mandrake und ein Red-Hat Linux. Ich meine, mich auch noch dunkel an ein Halloween Linux erinnern zu können.
Damals müsste das eine Hardware in Pentium-Klasse gewesen sein, sicher nicht mehr als 166MHz. An den Speicher und die Festplatte kann ich mich nicht mehr erinnern.
Sicher ist es nicht weiter schwer, ein System zehn Jahre am Leben zu erhalten. Das Ding hat aber eine bewegte Geschichte hinter sich. Mal abgesehen davon dass es immer wieder auf neuere Hardware umgezogen ist hatte es im Laufe der Zeit schon folgende Funktionen:

  • Durchgehend hat es Basis-Dienste für mein Netz bereitgestellt: NFS, DNS (Bind), DHCP, Web (Apache)… sogar ein NIS lief da.
  • Kuriosester Einsatz war wohl der als Wecker: Weckzeit mit Barcode-Scanner programmiert, dann Wecken mit abwechseln MP3 und Zeitansage (Sprachsynthese mit Mbrola). :-D
  • Es war mal ein Fax-Server (Hylafax) und ein Drucker-Server (erst ohne, später mit Cups).
  • Es war mal ein Anrufbeantworter (Vbox3).
  • Es war mal ein Videorecorder (VDR). Seit der Server in den Keller gewandert ist habe ich im Wohnzimmer einen Festplattenlosen Rechner der per PXE vom Server booted.
  • Ursprünglich war nur eine Platte drin. Dann mal mehrere separate, dann RAID5, seit ein paar Jahren RAID1.
  • Da liefen mal Teile eines Konfigurationsvorschlags von der c’t, mit Virtualisierung einer Endian Firewall per UML (User Mode Linux).
  • Der nächste Virtualisierungsansatz hiess Xen, auch wieder mit einer Endian Firewall. Zusätzlich aber mit einer vierfach-Netzwerkkarte.
  • Irgendwann fand ich Endian doof, um das FreeBSD-basierte pfSense nutzen zu können habe ich Xen durch KVM ersetzt.
  • Und um die Sache spannender zu machen habe ich neben KVM auch Linux-Vserver eingesetzt.

Wohlgemerkt: alles ohne das Betriebssystem neu zu installieren! Das System habe ich Heute abgeschaltet, und so wie es aussieht endgültig. :-(

Nicht erschrecken: ich bin mit Debian als Serversystem mehr als zufrieden. Und nein, ich werde mein Heimnetz nicht abschalten. :-)

Aber die Grundlage wird eine andere. Ich hatte ja schon erwähnt dass mir Proxmox VE gut gefällt. Nicht zuletzt weil es auf Debian basiert. Hier und da gibt es Verbesserungspotential, aber im Moment scheint mir das für mich die beste Lösung zu sein.
Ich habe in den letzten zwei Wochen viel Zeit in den Umbau gesteckt. Proxmox auf der Umweltsau installiert, erst die KVM-Virtualisierten Systeme — zwei FreeBSD und ein Ubuntu — rübergeholt, dann die Vserver. Letztere mussten ja auch noch an OpenVZ angepasst werden.
Heute kam der finale Schritt: ich habe meinen Hauptserver virtualisiert. Also oben genanntes Debian-System. Das siecht jetzt erstmal als KVM vor sich hin. Noch macht es DNS, DHCP und Web, Backups der anderen Systeme, und ein paar andere Kleinigkeiten. Nach und nach werde ich es seiner Dienste berauben und dann wirklich entsorgen.
Aber vorher warte ich ein paar Tage ab ob die ganze Geschichte so auf dem neuen Server funktioniert. Wenn nicht kann ich die alte Kiste mit wenig Aufwand wieder anschalten. Wenn doch wird da auch ein Proxmox installiert, und ich migriere die ganzen virtuellen Maschinen zurück. Auf Dauer will ich die Umweltsau doch nicht 24/7 laufen lassen…

Geht auch in Google Maps

Geht auch in Google Maps

Einige werden die Funktion schon kennen, ich habe mal in einem Podcast davon gehört. Da wurde ein Firefox-Entwickler nach der seiner Meinung nach sinnvollsten Funktion gefragt die zu wenige Benutzer kennen. Das war eben diese Schlüsselwortsuche.
Ich gestehe dass ich Websuchen immer noch in Google durchführe. Im Firefox drücke ich also [Strg+k] und gebe direkt meine Suchbegriffe ein.
Wenn ich was anderes suchen möchte könnte ich natürlich die entsprechende Suchmaschine zu meinem Browser dazu konfigurieren und im Suchfeld mit [Strg+Pfeiltaste] das gewünschte aussuchen. Ich persönlich mag das nicht.
Schicker finde ich den Ansatz mit den Schlüsselwörtern: dazu rufe ich die Seite auf auf der ich suchen möchte. Wikipedia zum Beispiel. Im Suchfeld mache ich einen Rechtsklick und wähle „Ein Schlüsselwort für diese Suche hinzufügen…“. Das öffnet den Dialog mit dem ich ein Lesezeichen anlegen kann. Hier vergebe ich jetzt ein Schlüsselwort, beispielsweise ‚wp‘. Sinnigerweise habe ich diese Art von Lesezeichen in einem bestimmten Ordner versammelt, aber das ist Geschmackssache. In den Lesezeichen findet sich dann etwas in der folgenden Form:

http://de.wikipedia.org/w/index.php?search=%s&title=Spezial%3ASuche

Das ist die URL die durch die Suche angesprochen würde. Der Platzhalter %s markiert hier die Stelle an der der Suchbegriff stehen müsste. Wikipedia-Suchen mache ich jetzt einfach indem in ich mit [Strg-L] in die URL-Zeile springe und da etwas wie ‚wp hendiadyoin‘ ein und komme direkt auf der passenden Seite raus.
Das funktioniert mit den meisten Suchmaschinen, Shops oder sonstigen Webseiten. Lediglich Google Maps hat sich bislang dagegen gewehrt. Grund ist wohl die Art in der Maps arbeitet, durch den Parameter output=js kommt die Antwort in einem etwas speziellen Format. Ich habe gerade die URL des Lesezeichens für die Schnellsuche etwas eingedampft. So klappt es auch mit Google Maps:

http://maps.google.com/maps?q=%s

Jetzt gebe ich in der URL-Zeile einfach nur ‚map siehdichum‘ ein und sehe direkt wo der Ort mit diesem malerischen Namen liegt. :-)

Vor einer Weile schrieb ich ja schon dass mich Proxmox VE ziemlich überzeugt hat. In der Zwischenzeit habe ich nicht mehr allzu viel damit gespielt, jetzt denke ich dass ich das vielleicht einfach mal über die Feiertage zur Grundlage meines Netzes mache… ein weiser Kollege aus München (der hier vielleicht sogar bisweilen rein sieht) hat mir mal die goldenen Worte „wenn Scheiße, dann Scheiße mit Schwung“ mitgegeben… :-)

Ich habe einen zweiten Server hier der in etwa so mächtig ist wie der bestehende. Darauf habe ich ein Proxmox installiert. Die KVM-virtualisierten Systeme waren einfach. Einfach eine passende VM auf Proxmox anlegen und die Laufwerksimages austauschen. Schwieriger sind die paravirtualisierten Maschinen, da hier eine völlig andere Technik eingesetzt wird. Beim Umstieg von Linux-Vserver auf OpenVZ müssen ein paar Extra-Schritte gemacht werden. Ansatzweise ist das auch hier beschrieben, aber ich gebe mal meine eigene Erfahrung wieder.

An dieser Stelle sei kurz angemerkt: OpenVZ ist mir leicht suspekt. Proxmox wäre wesentlich sympathischer wenn es mit Vservern arbeiten würde, aber man kann nicht alles haben.

Also hier kurz ein Log, falls noch jemand vor einem ähnlichen Problem stehen sollte — oder falls ich mich in einem halben Jahr (oder Morgen… :-) ) frage wie ich das gemacht habe.

Erstmal habe ich auf dem alten Server das Root-Verzeichnis des Vservers zusammengetart. Dann auf dem Proxmox-System eine virtuelle Maschine angelegt die in etwa dem alten System entspricht (ID 103). Weiterhin gibt es einen Container mit einem einfachen Debian (ID 104, erstellt nach dem Proxmox-Template für Debian Squeeze) und eine virtuelle Maschine bei der ich bereits in der /etc/network/interfaces konfiguriert habe dass eth0 per DHCP konfiguriert werden soll.

Folgendes ist dann zu tun:

root@proxmox:/var/lib/vz/private# scp server:/mnt/system/vservers/vserver.tar .
root@proxmox:/var/lib/vz/private# tar xf vserver.tar
root@proxmox:/var/lib/vz/private# rm -rf 103
root@proxmox:/var/lib/vz/private# mv vserver 103
root@proxmox:/var/lib/vz/private# rm -rf 103/dev
root@proxmox:/var/lib/vz/private# cp -a 104/dev/ 103/
root@proxmox:/var/lib/vz/private# cp 104/etc/inittab 103/etc/
root@proxmox:/var/lib/vz/private# cp 102/etc/network/interfaces 103/etc/network/
root@proxmox:/var/lib/vz/private# chroot 103
root@proxmox:/# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@proxmox:/# exit

Also, was passiert hier?

  • Das Tar-File der Maschine wird vom alten Server bezogen und entpackt.
  • Die Dateien der Temporären virtuellen Maschine (ID 103) werden entsorgt und durch den Verzeichnisbaum der alten Maschine ersetzt.
  • Vserver mounten das /dev-Verzeichnis des Host-Systems, also wird das duch eine Kopie aus dem Template-System (ID 104) ersetzt.
  • Die /etc/inittab wird ebenfalls übernommen, anderenfalls fehlt ein Eintrag (1:2345:respawn:/sbin/getty 38400 tty1) der zu einer Fehlermeldung führt nach der der Init-Prozess nicht mehr weiß was er tun soll (no more processes left in this runlevel).
  • Aus ID 102 wird die /etc/network/interfaces kopiert, die enthält die Konfiguration nach der eth0 per DHCP konfiguriert werden soll.
  • Ich habe mir nie die Mühe gemacht den Vservern ein Root-Passwort zu verpassen, da ich bei Bedarf einfach per ‚vserver enter…‘ eingestiegen bin. Das muss nachgeholt werden.

Danach kann ich den Container booten, und bis jetzt sieht alles so aus als ob es funktionieren würde… falls noch was zu ergänzen ist werde ich das zu gegebener Zeit nachholen.

Proxmox' Weboberfläche

Proxmox‘ Weboberfläche

In der Regel habe ich keine Angst vor ‚großer‘ Software. Naja, Angst hatte ich auch nicht vor Opennebula. Aber trotzdem habe ich kapituliert. :-(
Ich habe da jetzt ein paar Abende drauf verwendet, aber das scheint doch nicht die richtige Waffe für mein Ziel zu sein. Und der Aufwand das Ding einfach nur zum Spaß zum laufen zu bringen schien mir dann irgendwann zu hoch zu sein. Eigentlich bin ich auf der Suche nach etwas in der Art eines VMware ESX-Servers — nur halt in Open Source. Etwas womit man sich schnell mal bei Bedarf eine virtuelle Maschine klicken kann um irgendwas auszuprobieren.
Nach meinem Eindruck ist Opennebula eher dazu geeignet, sich schnell mal eben 20 oder 50 Maschinen zu klicken. Allerdings scheint es da nötig zu sein die Maschinen vorher als Abbild vorzubereiten. Mal eben das ISO einer neuen Distribution ziehen und booten ist da nicht im Fokus.
Heute habe ich mir ein Proxmox VE installiert, und ich muss sagen: bis jetzt bin ich begeistert!
Die Installation war ein Kinderspiel: auf dem ISO ist ein Debian Squeeze mit fertig installiertem Proxmox. Während der Installation werden nur die Einstellungen für das Netzwerk, ein Hostname und ein Root-Passwort erfragt. Danach kann man die vergebene IP ansurfen und hat eine übersichtliche Weboberfläche in der man sich die Maschinen zusammenklicken kann.
Viel habe ich damit noch nicht gemacht, daher hier nur ein paar Stichworte die ich bis jetzt nennen kann:

  • Wahlweise Virtualisierung mit KVM (um nicht-Linux-Systeme zu betreiben) oder OpenVZ (um Ressourcen zu schonen). Beides geht parallel!
  • Bedienung vollständig über die Webschnittstelle
  • Für OpenVZ gibt es eine Menge Templates mit vorkonfigurierten Systemen, bspw. mit fertig installierten (Web-)Anwendungen. Es scheint nicht allzu schwer zu sein, eigene Templates zu bauen.
  • Eingebaute Backup-Funktionalität: man kann schnell einen Snapshot einer Maschine anlegen, oder auch regelmäßige Sicherungen planen.

Sicher gibt es da noch viel zu entdecken. Ich werde mich da auf jeden Fall noch eingehend mit beschäftigen. Als nächstes sollte ich versuchen rauszufinden wie ich meinen laufenden Debian-Server virtualisieren kann, und wie ich die bestehenden virtuellen Maschinen Proxmox-kompatibel machen kann. Bis jetzt sieht das nach einer echt vielversprechenden Basis für mein Heimnetz aus.