(English) multipathing on IBM BladeCenter with IBM DS3200

I recently had to install Ubuntu (10.04 LTS to be precise) on a HS21 Blade installed in an IBM BladeCenter E and attached to an IBM DS3200 Storage using SAS. The storage was attached to the server using 2 SAS-Connections, so using multipath to protect against hardware failure was an good thing to implement. But unfortunately using multipathing on Linux is not quite straight forward and the list of easy-to-follow howtos is sparse (a good example i mostly used is found here). Another problem was, that the system has no local storage and so had to boot from the SAN aswell. So here is how i created my configuration and made the System boot and work.

Continue reading (English) multipathing on IBM BladeCenter with IBM DS3200

htop

Als “moderne” alternative für das doch oft benutze top wurde ich jetzt auf htop aufmerksam gemacht:

htop ist ein ncurses-basiertes Terminalprogramm, dass genau wie top laufende Programme anzeigt. Aber wo top aufhöhrt geht htop noch viel weiter:Screenshot of htop

  • killen, renicen von mehreren Prozessen per Tastendruck ohne auch nur an PIDs denken zu müssen
  • horizontales und vertikales scrollen
  • Maussupport
  • anzeige der Prozesse als Baum (finde ich persönlich sehr nützlich)
  • verstecken von Kernelprozessen
  • und ausserdem ist es noch schön bunt ;)

Links gibt es natürlich den obligatorischen Screenshot. Alles in allem ist htop wohl eine echte alternative zu dem guten alten top und definitiv einen Blick wert, zumal die installation einfach nur ein “sudo apt-get install htop” ist.

CentOS für ALIX-Boards

Joe hat mir einen netten Kommentar hinterlassen, wie man ALIX-Boards und Gehäuse kommt, wenn man in den USA lebt.

Die Gehäuse bekommt man im Shop von Netgate.

Zusätzlich hat er auch noch ein CentOS-Image für ALIX-Boards erstellt, welches passend ist, wenn man mehr machen möchte als nur das Vyatta-übliche Routing und Firewall. Für eine Anleitung und den Download-Link, besucht einfach sein blog (englisch).

Sierra Wireless UMTS-Modem

Hier jetzt noch die Konfiguration, wie ich mein Sierra Wireless-Modem (MC8790) konfiguriert habe.

Leider konnte ich das Modem nicht direkt mit vyatta konfigurieren. Das Problem ist, dass die Verbindung niemals automatisch erstellt werden darf – eine Einwahl kostet immerhin für den jeweiligen Tag gleich 5€. Deswegen habe ich die Konfiguration manuell angelegt. Nachteil dabei ist natürlich, dass man dann keine weiteren Konfigurationen, wie z.B. eine Firewall, nicht direkt über vyatta hunzufügen kann.

Das Modem selbst ist mittels mini-PCIe verbaut und nutzt USB 2.0 connectivity. Das heisst, das das Modem im Grunde nur ein intern verbautes USB-Gerät ist und als solches auch gehandelt wird.

Bei meinem MC8790 brauchte ich ausserdem eine rechte aktuelle Kernel-Version – 2.6.30 nutze ich momentan. Ob auch ältere Versionen unterstützt werden, weiss ich leider nicht. Deswegen habe ich momentan eine Vyatta-Version direkt aus dem git-repository. Mittlerweile gibt es allerdings auch von der VC6 eine alpha direkt auf CD, das macht das ein bisschen einfacher :) .

Nach Installation und booten des Routers habe ich mich erstmal Vergewissert, dass das Modem korrekt erkannt wurde:

vyatta@vyatta:~$ lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 1199:683c Sierra Wireless, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Das Modem wurde also erkannt, einmal noch mittels dmesg geprüft, ob der Treiber auch geladen wurde:

[   16.945727] usbcore: registered new interface driver usbserial
[   16.945808] USB Serial support registered for generic
[   16.946068] usbcore: registered new interface driver usbserial_generic
[   16.946084] usbserial: USB Serial Driver core
[   16.986380] USB Serial support registered for Sierra USB modem
[   16.986478] sierra 1-2:1.0: Sierra USB modem converter detected
[   17.029253] cs5535_gpio: base=0x6100 mask=0xb003c66 major=251
[   17.048506] usb 1-2: Sierra USB modem converter now attached to ttyUSB0
[   17.048581] sierra 1-2:1.1: Sierra USB modem converter detected
[   17.056541] usb 1-2: Sierra USB modem converter now attached to ttyUSB1
[   17.056616] sierra 1-2:1.2: Sierra USB modem converter detected
[   17.059656] usb 1-2: Sierra USB modem converter now attached to ttyUSB2
[   17.059725] sierra 1-2:1.3: Sierra USB modem converter detected
[   17.064442] usb 1-2: Sierra USB modem converter now attached to ttyUSB3
[   17.064504] sierra 1-2:1.4: Sierra USB modem converter detected
[   17.066123] usb 1-2: Sierra USB modem converter now attached to ttyUSB4
[   17.066195] sierra 1-2:1.5: Sierra USB modem converter detected
[   17.067960] usb 1-2: Sierra USB modem converter now attached to ttyUSB5
[   17.068033] sierra 1-2:1.6: Sierra USB modem converter detected
[   17.069120] usb 1-2: Sierra USB modem converter now attached to ttyUSB6
[   17.069194] usbcore: registered new interface driver sierra
[   17.069209] sierra: v.1.3.3:USB Driver for Sierra Wireless USB modems

So weit, so gut – das Modem bietet 7 serielle Ports – ttyUSB0-7. Davon sind einige als Modem ansprechbar – bei mir genau eins, da mein Router nur einen SIM-Socket hat.

Da es viel zu aufwändig wäre, alle Modems mit allen seriellen Geschwindigkeiten auszuprobieren, habe ich dafür wvdial verwendet. wvdial wird allerdings nicht direkt von vyatta mitgeliefert – aber vyatta ist auch “nur” ein Debian, deswegen kann man entweder:

  • die Pakete und deren Abhängigkeiten  herunterladen und mittels dpkg installieren
  • oder eine neue apt-Source hinzufügen und dann von einem debian-mirror die Pakete ziehen.

Da ich ja Faul bin habe ich einfach letzteres gemacht ;)

Bei vyatta dazu einfach in den configure-Modus wechseln und folgende Konfig anlegen:

system {
    [...]
    package {
        [...]
        repository lenny {
            components main
            distribution lenny
            url http://ftp.informatik.rwth-aachen.de/ftp/pub/Linux/debian/
        }
    }
}

Aus Gründen der Übersichtlichkeit habe ich die anderen Parameter aus den sektionen system und package einfach durch [...] ersetzt.

Jetzt ein “commit” und “save”, um die neuen Werte zu speichern und dann wieder mit “exit” auf die Shell. Dann mit “sudo -s” root werden und mittels “apt-get update” einmal die Paketquellen aktualisieren. Jetzt kann man mittels “apt-get install wvdial” einfach wvdial installieren.

Als nächstes muss das passende Modem gefunden werden. Dazu einfach als root auf der Shell “wvdialconf” eingeben. Das Programm testet alle Serial-Devices mit allen Geschwindigkeiten und INIT-Optionen und wartet auf eine passende Antwort von dem Modem.

root@vyatta:~# wvdialconf
Editing `/etc/wvdial.conf'.

Scanning your serial ports for a modem.

[Ausgabe gekürzt]

Found a modem on /dev/ttyUSB3.
Modem configuration written to /etc/wvdial.conf.
ttyUSB3<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
ttyUSB4<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
ttyUSB5<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
ttyUSB6<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"

wvdialconf sagt einem im Prinzip hier direkt, dass man /dev/ttyUSB3 als Modem mit 9600 baud verwenden kann.

Da das Modem jetzt gefunden ist, bietet es sich an, von der SIM-Karte den simlock zu entfernen, weil sonst muss man nach jedem reboot den PIN wieder eingeben. Alternativ lässt sich das aber auch über ein chatscript machen. Bei mir habe ich einfach den simlock entfernt. Dazu habe ich noch minicom installiert (apt-get install minicom). Bei minicom zuerst einmal eine default-config anlegen. Dazu einfach “minicom -s” aufrufen. Hier im 3. Menüpunkt “Serial Port Setup” die Einstellungen für den Seriellen Port hinterlegen. Wichtig sind im Grunde die Punkte “Serial Device” und “Bps/Par/Bits”, so dass die Konfig danach wie folgt aussieht:

A -    Serial Device      : /dev/ttyUSB3
B - Lockfile Location     : /var/lock
C -   Callin Program      :
D -  Callout Program      :
E -    Bps/Par/Bits       : 9600 8N1
F - Hardware Flow Control : No
G - Software Flow Control : No

Dann das ganze als “dfl” speichern und minicom beenden. Danach nochmal minicom starten, diesmal allerdings als “minicom -o”. Das “-o” bewirkt, dass minicom nicht versuchen soll, das Modem zu initialisieren. Das machen wir selbst (XXXX dabei gegeben den PIN der Karte ersetzen):

ATZ
OK
AT+CPIN=XXXX
OK
AT+CLCK="SC",0,"XXXX"
OK

Jetzt bucht sich das Modem automatisch ins Netz ein und ist auch sofort verwendbar. Jetzt sind es nur noch 2 kleine Schritte, bis das Modem voll verwendbar ist! :)

Als nächstes muss ein ChatScript angelegt werden. In diesem stehen die nötigen AT-Befehle, um eine Datenverbindung aufzubauen. Bei Vyatta liegen diese in ” /opt/vyatta/share/ppp/network/”. Ich habe dort eine Datei namens “vodafone.it” für meine Konfiguration angelegt, die folgendermaßen aussieht:

ECHO ON
TIMEOUT 60
ABORT ERROR
ABORT BUSY
ABORT VOICE
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "NO DIAL TONE"
ABORT "NO ANSWER"
'' ATZ
OK AT+CGDCONT=1,"IP","web.omnitel.it"
OK ATD*99#
CONNECT ''

Wichtig hierbei ist eigentlich lediglich der “AT+CGDCONT”-Befehlt, der die Verbindungsspezifischen eingenschaften für den Datenkontext festlegt: 1 steht für die erste Konfiguration, IP steht für eine IP-Session und web.omnitel.it ist der APN-Name. Um den APN für den eigenen Provider herauszufinden, muss man ein wenig googlen – mit den Suchbegriffen “APN” und dem Providernamen ist untern den ersten 2-3 Ergebnissen der APN-Name zu finden. :)

Jetzt fehlt nur noch die Konfiguration für den pppd selbst. In “/etc/ppp/peers/” habe ich dafür eine Datei “wlm99″ angelegt mit folgendem Inhalt:

ipparam "wlm99 "
usepeerdns
/dev/ttyUSB3
9600
lcp-echo-failure 0
debug
nodefaultroute
ipcp-max-failure 4
ipcp-accept-local
ipcp-accept-remote
noauth
crtscts
lock
persist
linkname wlm99
connect '/usr/sbin/chat -v -t6 -f /opt/vyatta/share/ppp/network/vodafone.it'

Das sind meist auch die Optionen, die vyatta hier nutzen würde – es gibt allerdings 2 Wichtige unterschiede:

  1. vyatta kümmert sich nicht darum, die Verbindung zu starten (das war ja eine der Anforderungen, die ich hatte)
  2. Das Modem nutzt 9600 baud – Vyatta hat im Quellcode hardcoded 115200 baud stehen, was mit meinem Modem nicht funktioniert.

Das wars. Von dem Router selbst aus, sollte sich die Verbindung nun mit einem “pppd call wlm99″ starten lassen:

root@vyatta:~# pppd call wlm99
ATZ
OK
AT+CGDCONT=1,"IP","web.omnitel.it"
OK
ATD*99#
CONNECT
Serial connection established.
using channel 2
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB3
[ausgabe gekürzt]
Could not determine remote IP address: defaulting to 10.64.64.64
Script /etc/ppp/ip-pre-up started (pid 24095)
Script /etc/ppp/ip-pre-up finished (pid 24095), status = 0x0
Cannot determine ethernet address for proxy ARP
local  IP address 109.115.28.106
remote IP address 10.64.64.64
primary   DNS address 83.224.65.134
secondary DNS address 83.224.66.134

… und endlich online! :) Die Einwahl hat funktioniert und man ist verbunden. Hier in Italien bekommt man von Vodafone sogar direkt noch eine “richtige” öffentliche IP zugewiesen. In Deutschland hat man meist eine IP aus dem privaten 10.0.0.0/8-Netzblock.

Wer jetzt allerdings noch mit Geräten hinter dem Router die Verbindung nutzen möchte, muss noch eine NAT einrichten. Das lässt sich wieder über Vyatta einstellen, die Konfiguration dafür sieht so aus:

service {
    [...]
    nat {
        rule 1 {
            outbound-interface wlm99
            type masquerade
        }
    }
}

Noch ein “commit” und ein “save” – damit ist auch die NAT eingerichtet und der Router ist voll verwendbar.

SuSE studio

Wer schonmal eine bootbare Linux-CD selber erstellen wollte, weiss, dass es nicht immer ganz einfach ist. Und wenn man dann noch eine “mal eben” “ganz schnell” mit speziellen Paketen oder Features benötigt, kommt man doch ins schwitzen :)

Aber dafür gibt es jetzt SuSE Studio – eine Online Platform, die einem eine bootbare SuSE CD erstellt.

Meine bisherigen Spielereien haben sich auf ein paar zusätzliche Pakete wie z.B. openvpn oder sudo in der Live-Umgebung beschränkt, allerdings hat das soweit Problemlos funktioniert. Und für die Konfiguration kann man einfach ein Overlay, bestehend aus einzelnen Dateien oder tarballs mit übernahme der Dateirechte,  hochladen.

Mit einem klick auf “Build” wird einem dann in ca. 3 Minuten eine LiveCD erstellt und man kann die ISO herunterladen.

Praktisch! :)