Archiv ‘Linux’

Samstag, 10. Februar 2007

Erste Schritte mit Openfiler


No Program Associated
Originally uploaded by emeidi.

Auf der Arbeit sind wir netzwerktechnisch ein Entwicklungsland: File-Server? Nada. Domäne mit Active Directory? Neumodisches Zeugs. Erst in letzter Zeit erreichen die Datenmengen aber ein kritisches Mass und der Zugriff auf selbe Daten über das Netzwerk wird immer mehr nachgefragt.

Bisher waren die wenigsten willig, einen Server anzuschaffen, weshalb man sich darauf beschränkte, Dateien zwischen Clients auszutauschen – mit allen Fallstricken und Unzulänglichkeiten (heterogene Umgebung: Mac OS X, Windows 2000, Windows XP Home, das nur die störende „einfachen Dateifreigabe“ mitbringt, Windows XP Professional). Nach einer gewissen Zeit mit dieser suboptimalen Lösung sind Entscheidungsträger bald bereit, etwas „brauchbareres“ auf die Beine zu stellen: Den eigenen File-Server.

Für mich ist klar, dass so etwas (jedenfalls auf die Software bezogen) möglichst wenig kosten sollte. Und so kommt man hier um Linux nicht herum, wenn man sich nicht mit Microsoftschen CALs oder einem Hardware-Zwangskauf bei Apple herumschlagen möchte.

Obwohl ich Debian bevorzuge, würde diese Distribution – wie viele andere auch – einiges an Handarbeit von mir verlangen. Ausserdem wäre ein GUI in diesem Falle von Vorteil, damit ich gewisse administrative Aufgaben (das Erfassen von Benutzern, das Ändern von Passwörtern) an die Gruppenverantwortlichen abgeben könnte. Ich hoffe nur, das sich mich so nicht in den Schlamassel reite …

Jedenfalls informierte ich mich überblicksartig über die momentane Marktsituation an Open-Source NAS-Software und wurde doppelt fündig:

  • FreeNAS – basierend auf FreeBSD
  • Openfiler – basierend auf CentOS/rPath Linux
  • Nachtrag: NASLite – rudimentär; die benötigten Features (User-Management, Quota etc.) fehlen in der kostenlosen Version

Entschieden habe ich mich der Lektüre einiger Blog-Beiträge für Openfiler, da es dort als „reifer“ als FreeNAS charakterisiert wurde. Ausserdem wäre es von Vorteil, wenn der TSM-Client installiert werden könnte. Von diesem habe ich nur Linux-RPMs.

Tücken bei der Installation

Zuerst einmal erstaunte mich, dass das Booten ab der Installationsdisk keinerlei Probleme bereitete (Kernel 2.6.x erkannte den Intel SATA-Controller ohne Mühe).

Leider schweigt sich der Installer aber bei der Partitionierung über das richtige vorgehen aus. Wer – wie ich bei diesem Kleinprojekt – nur eine fette Festplatte im Rechner sitzen hat, kommt um eine manuelle Partitionierung nicht herum. Führt man die automatische Einteilung der Festplattenbereiche aus, gibt es später keinen Platz zum Erstellen der Volumengruppe(n) (/ belegt dann neben der /boot und SWAP-Partition einfach den übrigbleibenden Platz). Deshalb hier mein Rat:

  • /boot – 100MB
  • / (Root) – 4096MB
  • SWAP – 1024MB

conary updateall

Wer denkt, dass die Installations-Disk bereits alle nötigen Programme und Einstellungen enthält, täuscht sich. Will man mit Openfiler so richtig loslegen, muss das System nun zuerst noch über das Internet „aktualisiert“ werden. Hierzu ruft man den Befehl

conary updateall

auf.

Proxy?

Wer wie ich hinter einem Proxy sitzt, beisst sich die Zähne aus, wenn er das Einmaleins der Proxy-Konfiguration unter Linux nicht oder nur ungenügend kennt. Wichtig ist vor dem Ausführen obigen Befehls, eine Umgebungsvariable zu setzen:

export http_proxy="http://proxy.domain.tld:80/"

Wobei ich zuerst vergass, den export auszuführen. Das setzen der Variable alleine bringt noch nichts, sie muss auch noch exportiert werden (was auch immer das bedeutet/bewerkstelligt).

Lokaler LDAP

conary updateall bewirkt, dass unter Services nun plötzlich noch einige neue Einträge dazukommen, unter anderem auch LDAP. Dies benötigt man, um eine selbständige (= lokale) Benutzerverwaltung aufzusetzen.

Folgende Einstellungen müssen unter Services > LDAP Settings gemacht sein, bevor man den Service unter Services mit Enable aktivieren kann:

Base DN:       dc=openfiler,dc=nas 
Root bind DN:  cn=Manager,dc=openfiler,dc=nas 
Root Password: ***

Wer will, dass die Benutzer über dieselbe, aber etwas abgespeckte Web-Oberfläche ihr Passwort ändern können, aktiviert zudem Allow users to set password.

Danach wechselt man auf Account > Authentication und gibt folgende Angaben ein:

[X] Use LDAP

                    [ ] Use TLS
Server:             127.0.01 
Base DN:            dc=openfiler,dc=nas 
Root bind DN:       cn=Manager,dc=openfiler,dc=nas 
Root bind password: ***
                    [X] Login SMB server to root DN

[ ] Use Windows Domain controller and authentication

...
Domain / Workgroup: WORKGROUP
...

(Das Häkchen bei Login SMB server to root DN ist nach einem Reload nicht mehr gesetzt, LDAP scheint aber trotzdem zu funktionieren).

Wie hiess mein Share noch gleich?

Beim Erstellen von Shares sollte man darauf achten, bei Override SMB share name den gewünschten Namen einzutragen (bei mir steht in diesem Formular drei Mal dasselbe). Ansonsten werden die Namen der Shares aus dem Volumennamen zusammengesetzt (bspw. \\192.168.0.1\main.staff.Test).

GUI und Usability

Die Oberfläche kommt auf den ersten Blick aufgeräumt daher. Die Einteilung der Rubriken erscheint (grösstenteils) logisch, die Bedienung ist simpel. Manchmal ist die Aufteilung dennoch verwirrend:

Die Einstellung für die Samba-WORKGROUP suche ich vergebens unter Services > SMB Settings. Dort kann man vieles einstellen, das aber nicht. Ich versuche dann, per SSH auf File-Ebene die Vorlagen-Datei zu suchen und die Workgroup dort manuell einzutragen. Das schlägt leider fehl, anscheinend wird die gefundene Datei nicht zur Generierung der smb.conf herangezogen.

Erst am zweiten Tag entdecke ich in einem Forumsbeitrag den wesentlichen Tipp: Diese Einstellung ist unter Authentication zu machen, so unlogisch es klingt. Zwar habe ich dort LDAP aktiviert, die Einstellungen unter Active Directory werden aber dennoch berücksichtigt; jedenfalls, wenn man dort eine Workgroup setzt.

Auch ist die starke vertikale Aufteilung störend. Eine horizontale Leiste mit Buttons würde die Bedienung (teilweise!) optimieren. Komisch finde ich zuweilen, dass mal Buttons, mal normale HTML-Links als Befehle daherkommen. Eine gewisse Konsistenz wäre hier von Vorteil.

Ein kurzer Blick auf den (PHP-)Code

Naja … Umwerfend finde ich ihn nicht gerade, den PHP-Code (ich habe mir zwei Files angeschaut). Ob das durchgehend so ist, entzieht sich aber meiner Kenntnisse. Aber es scheint jedenfalls zu funktionieren.

Kleine Community

Verglichen mit Debian oder PHP verfügt Openfiler über keine grosse, aktive Nutzergemeinde, die sich gegenseitig unterstützt. Es gibt ein (schlecht besuchtes) Forum sowie eine Mailingliste, auf der sich das Geschehen moderat in Grenzen hält.

Bugs

  • Home-Directories für die Benutzer werden nicht erstellt, obwohl diese Option unter Services > SMB Settings aktiviert wurde. Leider konnte mir bei diesem Problem noch niemand helfen. Nachtrag: Der Fehler wurde mittlerweile gefunden. Wer es wagt, legt Hand an das entsprechende PHP-Script an und hardcodet die Variable in die entsprechende Zeile.
  • Zugriffsprobleme mit Windows 2000 (vgl. Screenshot). Mit Windows XP und Mac OS X klappte alles vorzüglich. Was war das Problem? Windows 2000 scheint mit einem fehlenden Workgroup-Namen mächtig ins Straucheln zu geraten. Sobald die Workgroup eingetragen war, liessen sich die Shares (\\192.168.0.1\Share) resp. der Überblick über die Shares (\\192.168.0.1) ohne Komplikationen anzeigen. Mysteriös!

Tags:
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Dienstag, 6. Februar 2007

Inflight Entertainment Systems run Linux


DSCF0655.jpg
Originally uploaded by emeidi.

Gesehen habe ich das auf der dänischen Ännes (mein Kosename am Ende der Reise: „die laute Änne“) Screen. Es blieb genug Zeit, ein „Screenshot“ zu machen – danach löste eine nette Flight Attendant einen Reboot dieses Terminals aus.

Heute nun kam ich auf diesen Schnappschuss vom November 2006 zurück, als ich via reddit.com (das bessere Digg?) auf ein ähnliches Bild stiess:

linux linux everywhere

Als ich soeben Ännes Fehlermeldung transkribierte …

svc: bad direction 2020176320, dropping request
Launching /engine.cram/airsurf
c00ed
svgalib: Signal 11: Segmentation fault received
Segmentation fault

Please press Enter to activate this console.

… liess es mich nicht locker und ich bemühte Google, um etwas über /engine.cram/airsurf zu erfahren. Und siehe da, ein andere Geek hat tatsächlich bereits in seinem Blog darüber berichtet:

During the 12 hour flight I was hoping to watch “March of the Penguins” but had to put up with watching “Reboot of the Penguins” instead – the flight attendants mentioned that this is not an isolated incident.

Quelle: Flying with the BSOP (Black Screen of Penguin)

Und hier noch der direkte Link auf das Photo:

Cathay Pacific CX888 Linux Inflight Entertainment System CRASH

Übrigens: Das IES von Swiss im Airbus A340 (LX041) gefiel mir sowohl optisch als auch in der Benutzerführung deutlich besser als dasjenige von ANA in der Boeing 747 (NH-210) …

Nachtrag: Die Software in den Inflight-Systemen ist nicht über alle Zweifel erhaben …

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 13. November 2006

bibtool unter Mac OS X kompilieren

Was habe ich mir eben die Zähne ausgebissen: Wenige Stunden vor meiner bevorstehenden Reise nach Japan wollte ich mein MacBook derart herrichten, dass es meine in LaTeX geschriebene „Diskussionsgrundlage“ für das diessemestrige Seminar korrekt ausgibt (so bin ich etwas flexibler und könnte das Dokument – WLAN im Land der aufgehenden Sonne vorausgesetzt – später versenden als geplant).

Das Problem

Leider hatte ich auf meinem PowerMac nur eine PPC-Version von bibtool herumliegen (ich konnte mich noch knapp daran erinnern, dies eigenhändig aus den Sourcen kompiliert zu haben). Unter Mac OS X 10.4 Tiger brach aber bereits das configure-Script ab:

checking for tcl configuration file... configure: warning: not found. Ensure that a properly installed tclsh is on your path.
configure: error: ./configure failed for BibTcl

Die Lösung

Bei einem kurzen Vergleich mit dem anscheinend funktionierenden Binary auf meinem PowerMac entdeckte ich den kleinen Unterschied in den Versionen: Die configure-Meldung erschien beim konfigurieren von Version 2.46, auf dem PowerMac war aber eine „2.48alpha“ installiert.

Nach einer kurzen Suche fand im Package-Verzeichnis von Debian die gesuchte Version und lud mir mit dem Link [bibtool_2.48alpha.2.orig.tar.gz] die Quellen herunter.

Und siehe da – dieses Mal funktionierte die Konfiguration auf Anhieb. Ich vermute, dass sich die Debian-Package-Maintainer der „wüsten“ configure-Datei angenommen haben. Nötig scheint es durchaus zu sein: Auf einer Mailingliste beschwert sich ein Profi wortreich:

[…] the configure script is not well constructed nor well
documented, as it provides no way to turn support for certain things
(like Tcl) completely off and does not tell you wether they can
actually *be* turned off or not… But I think you also realized this
during your trails. Apart from that, the developer seems unaware of the
existence of Mac OS X, as through out the scare documentation he makes
no mention of it as one of the UNIX (or UNIX like, however you may have
it) operating systems where BibTool has been tested, and then proceeds
to give some Macintosh installation instructions which smell pre-X (Mac
OS 9, 8, 7, etc) to me. So, given this state of affairs, it is no
wonder to me the package just flat out fails to even configure on Mac
OS X…!

Quelle: MacOSX-TeX Digest #842 – Sunday, November 16, 2003

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 7. November 2006

apache2: php4 als Modul, php5 als CGI (Parallelbetrieb)

Im Netz gibt es eine Menge „How-Tos“ zu diesem Thema, weshalb ich hier primär auf diese ausführlichen Anleitungen verweisen möchte:

MySQL

Wer php5 mit MySQL sprechen lassen möchte, achtet darauf, dass er

./configure ... --with-mysql=/usr/include/mysql ...

angibt. Bei mir war noch die Installation von

apt-get install libmysql-dev

nötig, um mysql.h zu erhalten.

php5 mit .htaccess aktivieren

Wer nur in einzelnen Verzeichnissen php5 laufen lassen möchte, erstelle folgende .htaccess-Datei:

Action application/x-httpd-php5 /cgi-php/php
AddHandler application/x-httpd-php5 .php

In der /etc/apache2/httpd.conf steht als Ergänzung:

<Directory /usr/local/php5/bin>
Options ExecCGI
AllowOverride None
</Directory>

ScriptAlias /cgi-php/   /usr/local/php5/bin/

Natürlich treten Konfigurationsänderungen an der httpd.conf erst in Kraft, nachdem man folgenden Befehl ausgeführt hat:

apache2ctl graceful

Wenn sich apache2 über mangelnde ‚Action‘ beschwert:

.htaccess: Invalid command 'Action', perhaps mis-spelled or defined by a module not included in the server configuration

tut man gut daran, in /etc/apache2/mods-enabled einen Symlink zu erstellen:

ln -s ../mods-available/actions.load

Nun sollten Scripts in diesem Verzeichnis und dessen Unterverzeichnissen mit dem CGI von php5 geparst werden.

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 24. Oktober 2006

Wenn es update-initramfs zu eng wird …

… könnte man beim nächsten Reboot des Debian GNU/Linux-Servers eine böse Überraschung erleben. Wie ich heute Nachmittag:

Es war wieder mal an der Zeit, ein

apt-get upgrade

durchzuführen. Folgende Fehlermeldung beunruhigte mich keinesfalls, was sich als fahrlässig herausstellte:

Setting up initramfs-tools (0.83) ...
update-initramfs: Generating /boot/initrd.img-2.6.17-2-686
W: mdadm: unchecked configuration file: /etc/mdadm/mdadm.conf
W: mdadm: please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz .
I: mdadm: auto-generated temporary mdadm.conf configuration file.
I: mdadm: will start all available MD arrays from the initial ramdisk.
I: mdadm: use `dpkg-reconfigure --priority=low mdadm` to change this.

gzip: stdout: No space left on device
dpkg: error processing initramfs-tools (--configure):
 subprocess post-installation script returned error exit status 1

(Im Grunde bestand kein Anlass, den Server zu rebooten – aber irgendwie liess mich die Fehlermeldung dann doch nicht locker).

Prompt kam die Kiste nicht mehr hoch. Der Grund:

VFS: Cannot open root device "888" or unknown-block(8,8)
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on unknown-block(8,8)

(die Fehlermeldung habe ich aus dem Netz kopiert, bei mir stand etwas sehr ähnliches …)

Zum Glück hatte ich noch meinen alten 2.4er-Kernel rumliegen, der anstandslos bootete. Ein Blick auf die Partitionen offenbarte das Übel:

ALPHA:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6             958M  879M   30M  97% /
udev                   10M  116K  9.9M   2% /dev
devshm                507M  4.0K  507M   1% /dev/shm
/dev/sda1              16M  0  0  100% /boot
/dev/sda7              92M  4.1M   83M   5% /tmp
/dev/sda9             942M  493M  402M  56% /home
/dev/sdb1             4.2G  3.1G  938M  77% /var
/dev/md0              459G  247G  189G  57% /multimedia

Kein Wunder, dass update-initramfs abkrachte. Zurück blieb ein halbfertiges Ramdisk-Image. Glücklicherweise war die vorangehende Version auch unter /boot zu finden – soweit ich mich erinnern kann mit einem .dpkg-bak am Ende. Schwuppdiwupp, das verkrüppelte Image gelöscht, das alte unbenannt und schon kam die Kiste auch wieder mit dem 2.6er Kernel hoch.

Dennoch war mir nicht wohl dabei – alles schien reibungslos zu funktionieren, doch aus einem bestimmten Grund musste ja das Image neu erstellt werden. Ich entschied mich deshalb, das Image erneut zu generieren, stellte aber vorher sicher, dass im /boot-Verzeichnis dieses Mal genügend Platz vorhanden war. Dann ging’s los:

ALPHA:/boot# dpkg-reconfigure linux-image-2.6.17-2-686
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
W: mdadm: unchecked configuration file: /etc/mdadm/mdadm.conf
W: mdadm: please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz .
I: mdadm: auto-generated temporary mdadm.conf configuration file.
I: mdadm: will start all available MD arrays from the initial ramdisk.
I: mdadm: use `dpkg-reconfigure --priority=low mdadm` to change this.
Not updating initrd symbolic links since we are being updated/reinstalled 
(2.6.17-9 was configured last, according to dpkg)

Ob es gefruchtet hat? Ich hoffe es. Beim nächsten Test-Reboot klappte alles wie am Schnürchen. Falls ich einmal Zeit habe, nehme ich mich auch noch der mdadm-Fehlermeldungen an (RAID10).

Guet Nacht!

Nachtrag

Vielleicht hat Kollege Liechti wirklich recht: Heute „klepfe“ man bei einer Linux-Installation alles auf eine Partition, rät er … Ich überleg’s mir mal.

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Freitag, 20. Oktober 2006

Linux-Server klonen und Hostnamen anpassen

Vor etwa zwei Wochen habe ich mir auf der Arbeit einen Debian Linux-Server klonen lassen, der unter VMWare ESX läuft. Den Klon habe ich dann für andere Aufgaben angepasst – nur ein grosses Problem hatte ich bis heute: Mails kamen mit dem alten Hostnamen daher.

Selbstverständlich hatte ich den Hostnamen in /etc/hostname gleich nach dem Klon-Vorgang geändert. Ein Reboot änderte aber nichts an der Sache, dass die Mails der Cron-Jobs immer noch den Absender des alten Servers trugen. Woran konnte das liegen?

Die nächsten paar Tage machte ich mir keine Gedanken mehr, bis mir heute die zündende Idee kam, doch einmal die exim4 Konfiguration anzuschauen. Und siehe da, dort fand sich der alte Hostname weitere zwei Male erwähnt. In der Datei /etc/exim4/update-exim4.conf.conf (kein Typo, was haben sich die Debian-Entwickler wohl dabei gedacht?) müssen folgende Zeilen auch noch angepasst werden:

...
dc_other_hostnames='domain.tld'
dc_readhost='domain.tld'
...

Danach noch ein

/etc/init.d/exim4 restart

und das Testmail

echo "Test" | mail -s "Test" "name@server.tld"

kam endlich mit korrektem Absender an.

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 4. Oktober 2006

BSG – der Countdown läuft

Diesen Freitag ist es soweit – die dritte Staffel von Battlestar Galactica geht (vorerst in den USA) On Air. Dank bittorrent werde ich wohl spätestens am Samstag-Abend über ein ca. 300MB grosses .avi-File auf meinem RAID10 liegen haben. Dessen Inhalt? Geheimnis!

NZZ Folio

Wer bis zum Beginn der neuen Staffeln nicht warten kann, lese doch das NZZ Folio dieses Monates.

Beruhigt haben mich unter anderem folgende Aussagen:

Sex and the City

In meiner Wahrnehmung war das einfach eine gewöhnliche Sitcom. Sie konnte nie den selbstauferlegten Anspruch erfüllen, sexy und provozierend zu sein. […] Ich finde die Personen in „Sex and the City“ überzeichnet und gleichzeitig beliebig.

Desperate Housewives

Ich habe die Serie nie verstanden. […] er [der Autor] hatte ein tolle Idee: eine Leiche, die aus dem Off das Leben ihrer Freundinnen kommentiert. […] man ist sich in der Branche einig, dass die zweite Staffel Schwächen im Skript hat.

Quelle: NZZ Folio, 10/2006, „Der Serientäter“, S. 28ff.

Jä so, erstes Geheimnis gelüftet. Die Frauenstimme war mir desöfteren aufgefallen, konnte aber keine Erklärung dafür finden.

[…] die Geschichte vom edlen Wilden, der sich durch die moderne Zivilisation staunt, ist gut für jene Sorte Zuschauer, die Rousseau für eine Disco in Moskau halten.

Quelle: NZZ Folio, 10/2006, „Teleshopping“, S. 22.

[…] Ausserdem bedient man sich der Halbbildverdoppelung und einiger Filtereffekte, wodurch das auf Digitalvideo gedrehte Material körniger und damit filmischer wirkt.

Quelle: NZZ Folio, 10/2006, „Die Drama-Dosis“, S. 60.

Als ich GZSZ vor kurzem das erste Mal seit Jahren geguckt habe (nicht freiwillig, meine bessere Hälfte bestand darauf), fiel mir sofort das „andere“ Bild auf. Sie konnte es mir nicht erklären. Aber dafür gibt es ja das NZZ Folio!

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 27. September 2006

/dev/lp0 fehlt

Kleine Nachwehen begleiten meinen Umstieg auf den 2.6er-Kernel – das Drucken funktioniert seit dem Umstieg nicht mehr richtig. Genauer gesagt: Nach jedem Neustart tat sich trotz einer langen Druck-Queue nichts mehr. Nach einigen Nachforschungen erkannte ich die Hauptursache: /dev/lp0 fehlt! Doch wieso nur?

Ein …

mknod -m 660 /dev/lp0 c 6 0

… löste das Problem zwar in Luft auf – doch das konnte nicht der Weisheit letzter Schluss sein. Diesen Befehl bei jedem Neustart von Hand (!) auszuführen war dann wohl doch zuviel des Guten.

Einige Nachforschungen ergaben dann den finalen Hinweis:

The only explanation I can immediately think of for this is that in your
previous kernel, parallel port support was compiled into the kernel
whereas in your 2.6.8 build you have built it as a module.

Quelle: switching to kernel 2.6 – manual „modprobe lp“ to dev /dev/lop

Ach sooo, ja, meinen 2.4.25er hatte ich damals ja mit Ach und Krach selber „gebacken“!

Die Lösung

Die manuelle Erstellung von /dev/lp0 kann man sich sparen, indem man ein …

modprobe lp

… ausführt. Um das ganze zu automatisieren, genügt ein Eintrag lp auf einer neuen Zeile in der Datei /etc/modules, und beim nächsten Reboot sollte auch dieses Modul geladen und mein LPRng wieder ordungsgemäss funktionieren. Hoffen wir es.

Nebenbei

Endlich bin ich hisax_fcpcipnp losgeworden – die Fritz!Card habe ich schon lange dem Elektro-Schrott übergeben, doch aus missglückten Tests (ich hasse proprietäre, vorkompilierte Treiber, liebe AVM!) waren wohl einige Überreste im System liegen geblieben. Und so begrüsste mich bei jedem Neustart folgende Zeilen:

ISDN subsystem Rev: 1.1.2.3/1.1.2.3/1.1.2.2/1.1.2.3/1.1.2.2/1.1.2.2 loaded
HiSax: Linux Driver for passive ISDN cards
HiSax: Version 3.5 (module)
HiSax: Layer1 Revision 2.46.2.5
HiSax: Layer2 Revision 2.30.2.4
HiSax: TeiMgr Revision 2.20.2.3
HiSax: Layer3 Revision 2.22.2.3
HiSax: LinkLayer Revision 2.59.2.4
hisax_isac: ISAC-S/ISAC-SX ISDN driver v0.1.0
hisax_fcpcipnp: Fritz!Card PCI/PCIv2/PnP ISDN driver v0.0.1

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 14. September 2006

Tivoli Storage Manager (TSM) unter Debian Linux

Soeben habe ich den Tivoli Storage Manager Client unter Debian Linux installiert. Hier eine kurze Anleitung, um die wenigen Fallstricke gekonnt zu umschiffen:

Binaries

Zuerst benötigt man die Binaries. In meinem Fall hiess die gesuchte Datei TSM534C_LINUX86.tar und war satte 76MB gross. Diese wird freundlicherweise im Intranet bereitgestellt.

Man bezieht das Ding am Besten so:

cd /tmp
wget "http://www.domain.ch/TSM534C_LINUX86.tar"
tar xvf TSM534C_LINUX86.tar

Do you speak RPM? No!

Nun sollte man im /tmp-Verzeichnis einige Files rumliegen haben:

server:/tmp# ls -l
total 102239
-rw-r-----  1 root bin    186681 2006-04-26 10:01 LICENSE.TXT
-rw-r--r--  1 root bin     27011 2006-04-26 10:01 README_api_enu.htm
-rw-r--r--  1 root bin     92708 2006-04-26 10:01 README_enu.htm
-rw-r--r--  1 root bin     59366 2006-04-26 10:01 README_hsm_enu.htm
-rwxr-----  1 root bin     16846 2006-04-26 10:01 README.NEWDSMSCOUTD
-rw-r--r--  1 root bin   2195792 2006-04-26 10:05 TIVsm-API64.i386.rpm
-rw-r--r--  1 root bin   5324235 2006-04-26 09:59 TIVsm-API.i386.rpm
-rw-r--r--  1 root bin  16593919 2006-04-26 09:59 TIVsm-BA.i386.rpm
-rw-r--r--  1 root bin  55224942 2006-04-26 10:00 TIVsm-HSM.i386.rpm

Da schlägt doch des Debian-Aficionados Herz höher – wer liebt sie nicht, die RPMs? RHEL – das ist was für fehlgelenkte Windows-Admins! Hier im Debian-Land spricht man apt-get, dpkg und .deb.

alien, daher!

Glücklicherweise hat sich die Entwickler-Community diesem Problem angenommen:

apt-get install alien

und danach:

alien -d TIVsm-API.i386.rpm
alien -d TIVsm-BA.i386.rpm

Im /tmp liegen nun zwei neue Dateien herum:

server:/tmp# ls -l | grep .deb
total 102239
-rw-r--r--  1 root root  5313996 2006-09-14 20:10 tivsm-api_5.3.4-1_i386.deb
-rw-r--r--  1 root root 16580418 2006-09-14 20:10 tivsm-ba_5.3.4-1_i386.deb

Jetzt geht’s los!

Jetzt wird wieder in die Hände gespuckt, denn wir installieren uns das IBM-Produkt … *sing*

dpkg -i tivsm-api_5.3.4-1_i386.deb
dpkg -i tivsm-ba_5.3.4-1_i386.deb

Konfigurationsdateien

Unter /opt/tivoli/tsm/client/ba/bin erstellt man nun noch die zwei Konfigurationsdateien dsm.opt und dsm.sys mit folgendem Inhalt:

cat dsm.opt
SERVERNAME              xxx.yyy.ch

… und …

cat dsm.sys
SERVERNAME              xxx.yyy.ch
TCPSERVERADDRESS        10.0.6.70
PASSWORDACCESS          GENERATE

SCHEDLOGNAME            /var/log/tsm/schedule.log
ERRORLOGNAME            /var/log/tsm/error.log

Der Sinn eines korrekten Hostnamens

Als ich dsmc nun starten wollte, gab es diese blöde Fehlermeldung:

ANS1353E Session rejected: Unknown or incorrect ID entered

Auch das setzen der Variable NODENAME in dsm.opt resp. dsm.sys brachte nicht den gewünschten Effekt:

ANS1036S Invalid option 'NODENAME' found in options file '/opt/tivoli/tsm/client/ba/bin/dsm.opt'

… weshalb ich nicht darum herum kam, dem Server endlich den richtigen Hostnamen zu verpassen:

echo xxx.yyy.ch > /etc/hostname
/bin/hostname -F /etc/hostname

Als ich nun dsmc ausführte, war ich nach der Eingabe des Passwortes drin! Heureka.

Ohne Scheduler läuft nichts!

Deshalb nun noch der obligatorische Eintrag in /etc/inittab:

itsm::once:/usr/bin/dsmc sched > /dev/null 2>&1

… und beim nächsten Neustart sollte der Scheduler geladen werden (hoffentlich, ausprobiert habe ich es nicht – diese Datei war mir bisher unbekannt).

Um den Scheduler ohne Neustart zu laden, genügt folgender Shell-Befehl:

nohup dsmc schedule 2> /dev/null &

Drei Probleme und Lösungen

Fehler 1: Beim Starten von dmsc erscheint folgende Fehlermeldung:

dsmc: error while loading shared libraries: libgpfs.so: cannot open shared object file: No such file or directory

Es ist nötig, die Datei /etc/ld.so.conf zu erstellen (wenn sie noch nicht existiert) und folgende Zeile einzufügen:

/opt/tivoli/tsm/client/api/bin/

Danach müssen die „shared objects“ neu eingelesen werden:

ldconfig

Fehler 2: Beim Starten von dmsc erscheint folgende Fehlermeldung:

dsmc: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Es fehlt das Debian-Paket libstdc++5:

apt-get install libstdc++5

Fehler 3: Beim Starten von dmsc erscheint folgende Fehlermeldung:

ANS9999E amsgrtrv.cpp(3087): Message No 11000 could not be found.
ANS9999E amsgrtrv.cpp(3087): Message No 11000 could not be found.
ANS0101E Unable to open English message repository 'dsmclientV3.cat'.

Ein symbolischer Link fehlt:

server:/opt/tivoli/tsm/client/ba/bin# ln -s ../../lang/en_US/

/etc/init.d/tsm

Zieht man statt der inittab ein Start-Script unter /etc/init.d/ vor, sollte dies ungefähr folgendermassen aussehen (Dank: Reto):

#!/bin/sh 

if [ $1 = "start" ]; then 
        /usr/bin/nohup /usr/bin/dsmc schedule 2> /dev/null &
        echo "Starting ADSM scheduler"
else 
        if [ $1 = "stop" ]; then 
                pid=`/bin/ps -e | /bin/grep dsmc | /bin/sed -e 's/^ *//' -e 's/ .*//'` 
                if [ "${pid}" != "" ]; then 
                        echo "Stopping ADSM scheduler" 
                        /usr/bin/kill ${pid} 
                fi 
        fi
fi

Dank

Tags:
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Donnerstag, 31. August 2006

MySQL über SSH tunneln

Heute habe ich die lang ersehnte Instanz auf einem VMWare ESX-Server erhalten und werde in den nächsten Tagen Web-Sites von einem Solaris-System auf LAMP (Debian, Apache2, PHP4, MySQL 4.0) migrieren.

Bereits wenige Stunden nach der Installation von Debian stand ich vor einem grösseren Problem: Wie kopiere ich eine über 50 MB grosse Datenbank-Tabelle vom einen auf den anderen Server? (Achtung: Es steht hier jetzt nicht zur Diskussion, ob ich die Daten richtig normalisiert habe …) Und zwar selbständig, ohne den Sysadmin der Solaris-Kiste anzuflehen, mir das Tabellenfile zum Download zur Verfügung zu stellen? Auch phpMyAdmin kam nicht in Frage: Das Ding ist gut und recht – nur würde sich die Applikation garantiert an der Grösse der Textdateien verschlucken. Wenn nicht beim Download, dann spätestens beim Upload.

Was nun? SSH ist – wie so oft – die Lösung. Das Konzept ist simpel: Auf dem Zielrechner tunnle ich Anfragen über einen bestimmten Port via SSH auf den Solaris-Rechner und habe so Zugriff auf die zu migrierende Datenbank, als würde ich lokal am Server angemeldet sein.

Drei einfache Schritte sind nötig, um eine Datenbank-Tabelle von Server A nach Server B zu verschieben:

Port Forwarding über SSH Tunnel einrichten

Auf Server B erstellt man in der Datei ~/.ssh/config eine neue SSH-Konfiguration:

Host <irgendeine Wunschbezeichnung>
Hostname <IP Server A>
User <SSH-Benutzernamen auf Server A>
Localforward <beliebiger, nicht verwendeter Port> localhost:3306

Die IP nach Hostname entspricht der IP des Servers A, auf dem die zu spiegelnde Datenbank liegt. Nach User steht der Name eines gültigen SSH-Users auf Server A. 3307 ist der lokale Port (auf Server B, der auf Server A geforwardet wird und dort auf Port 3306 endet (dem MySQL-Port, notabene).

Ist die Textdatei gespeichert, braucht man nur noch die Verbindung zu starten:

ssh <irgendeine Wunschbezeichnung>

Man sollte nicht verblüfft sein, wenn alles wie eine normale Verbindungsaufnahme zu einem SSH-Server daherkommt. Man loggt sich wie gewohnt ein und lässt die Session laufen (Verbindung nicht trennen!). Es ist von Vorteil, wenn diese Verbindung in einem screen-Terminal geöffnet wurde.

Dump anlegen

Die Verbindung besteht nun also. Port 3307 steht bereit, Daten zu empfangen und diese an Server A weiterzuleiten.

Nun gut, auf was warten wir? Spätestens jetzt sollte man das Package mysql-client installieren, da darin mysqldump enthalten ist. Genau dieses verwenden wir nun, um die Tabelle in eine Datei ins lokalen Filesystem des Servers B zu speichern:

mysqldump -h 127.0.0.1 -P 3307 -u <MySQL-Benutzernamen Server A> -p <MySQL-Datenbank Server A> --tables <MySQL-Tabelle Server A> > /tmp/dump.sql

mysqldump nimmt nun Verbindung mit dem Datenbankserver auf. Nachdem man das korrekte Passwort übermittelt hat, wird der Dump schnurstracks in das entsprechende File übertragen. Nach kaum einer Minute waren 50MB an Daten über die Leitung transferiert und in /tmp/dump.sql gespeichert worden.

Dump einspielen

Die SSH-Verbindung zu Server A kann nun gekappt werden. Jetzt bleibt nur noch eines übrig: Den Dump in die Datenbank auf Server B einzulesen. Nichts leichter als das:

mysql -u <MySQL-Benutzernamen Server B> -p <MySQL-Datenbank Server B> < /tmp/dump.sql

Sind bis hierhin keine Fehlermeldungen aufgetaucht, ist die Tabelle nun auch auf Server B anzutreffen.

PS: Ob Kollege Torquie seine unzählige Gigabytes umfassende SAP-Datenbanken auf dieselbe Art spiegelt? *grins*

Nützliche Links

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen