Handbücher

Ich habe eine mehr oder weniger geheime Leidenschaft – ich lese gerne Handbücher resp. Fachbücher.

Und zwar gedruckte Handbücher.

Handbuchalarm

Was heißt lesen… ich neige zum Querlesen bzw. neumodisch „Speedreading“. Fachbücher mit mehreren hundert oder tausend Seiten schrecken mich nicht ab, es hat sich gezeigt, dass ich diese Bücher relativ flott durchgelesen und akzeptabel genug gespeichert habe.

Bedeutet übersetzt: Ich weiß noch was drin steht, kann für Details darauf zurückkommen und kann genug anwenden, ohne ständig nachzulesen.

Ganz allgemein lerne ich sowieso viel besser über theoretische Grundlagen, ich bin kein großer Freund von Schulungen oder von „Erarbeiten“ (oder gar, gruselig, Teamlernen) – das ergibt sich dann nach der theoretischen Lektüre von ganz alleine. Oder auch nicht, meine Art die Dinge zu filtern: was ich lese und anwenden möchte, behalte ich gut. Das, was ich lese und nicht interessant finde, lösche ich nach einer gewissen Zeit wieder aus meinem Kopf.

Allerdings lese ich überwiegend Handbücher in gedruckter Form, zumindest so weit es „Neuland“ betrifft.

So auch bei einigen Themenbereichen in der z/OS-Administration. Dort habe ich nach meinem Verständnis noch nicht so viel Erfahrung/Wissen aufgebaut, hier gilt es Dokumente zu inhalieren.

IBM-Handbücher

Kommen wir zu einem sehr speziellen Thema. Die Handbücher der Firma IBM. Sie produziert unfassbar viele Seiten Material. Weil sie unglaublich in die Tiefe geht und wirklich einfach jeden Spezialfall abhandelt.

Man könnte sagen: Die Handbücher sind Weltklasse. (Aber gleichzeitig auch manchmal so dermaßen umfassend, dass sie nicht hilfreich sind – dazu zu einer anderen Zeit mal was).

Aber leider sind sie auch weltklasseumfangreich. Praktisch alle zur Verfügung gestellten Werke enthalten viele hundert Seiten Material. Größtenteils so im Bereich 500 bis 700 Seiten pro Thema. Für ein Produkt oder einen größeren Themenbereich kommen da gut und gerne 15, 20 oder mehr solcher „Büchlein“ zum Einsatz. Also weit über 5.000 Seiten (eine Auswahl von Lektüre, die ich gerade besonders wichtig für mich finde, liegen hier 7.158 Seiten vor mir – noch in PDF-Form).

In gedruckter Form habe ich diese Bücher noch nie zu Gesicht bekommen, gerüchteweise gab es die mal – sogar von der IBM selbst.

Da ich aber ein Verrückter bin, habe ich nach Möglichkeiten gesucht diese PDFs in gedruckte und gebundene Form zu bringen, ohne, dass mein armer HP-Drucker den Geist aufgibt oder ich meine Ersparnisse räumen muss.

Ach ja. Ausschließlich in englischer Sprache. Aber die sollten wir als Verrückte zumindest lesend sowieso sehr gut beherrschen, sonst wird es sehr mager, was spannende Fachbücher angeht…

Sedruck

Die Firma Sedruck bietet den Service an, dass wir PDF-Dateien hochladen, professionell drucken und binden lassen können.

Für ein 650-Seiten-Handbuch verursacht das bei einer Leimbindung Kosten in Höhe von etwa 40€ – ein Betrag, den ich noch als „akzeptabel“ bezeichnen möchte, vor allem, wenn ich mir die Druckqualität angeht: Beim Thema Toleranzwerte beim Zeilensatz zeigt Sedruck durchaus so mancher Großdruckerei, wie das zu machen ist.

Kann den Service bisher eigentlich nur empfehlen. Falls ihr auch so seid, dass ihr gerne Papier im Regal stehen und verstauben habt 😉

Stuhl

Ganz anderes Thema – ich habe endlich einen neuen Bürostuhl Zuhause. Hatte vorübergehend einen sehr bequemen Lederstuhl, der aber leider nach wenigen Minuten immer weiter „abgesunken“ ist. Die Druckfeder war offenbar undicht… und schlussendlich ist es so weit gekommen, dass ich im 30-Sekunden-Takt den Stuhl wieder in Ausgangshöhe beförden musste.

Das war natürlich kein Zustand. Also heute (Samstag) beim Ikea gewesen und „Markus“ (oder so) gekauft.

Klingt jetzt komisch, aber ist so: Auf Markus sitzen ist sehr schön. Ich werde jetzt dem Stuhl einen neuen Namen geben müssen, ich sitze doch lieber auf… Harald 😀 😀

Mainframe im Terminal: MVS 3.8

Puh – gestern habe ich noch ein etwas längeres Tutorial durchgearbeitet, wo sehr genau beschrieben wird, wie man das schon in die Tage gekommene MVS 3.8 in Hercules zum Laufen bekommt.

MVS 3.8

Das MVS 3.8 ist eine Vor-Vor-Vorläuferversion des heute üblichen z/OS für richtige Mainframes von IBM.

IBM hat die Software lizenzfrei ins Netz gestellt. Inklusive der notwendigen Bänder, um sich ein eigenes System zu generieren.

Jay Moseley hat dazu ein ausführliches Tutorial veröffentlicht, was Schritt für Schritt erklärt, wie man das System innerhalb von Hercules zum Laufen bekommt. Er erklärt auch sehr gut, wieso und warum. Man sollte das wirklich komplett lesen, so erfährt man einiges über die Grundlagen des MVS und wie eine Mainframe aufgebaut ist.

Hier läuft jetzt eine richtige Mainframe-Emulation inklusive Systemkonsole und RPF (quasi ein sehr schmales ISPF) – man braucht in den späteren Schritten einen 3270-Emulator dafür (bspw. TN3270), die ersten laufen mit SSH.

systemkonsole
systemkonsole
rpf / ispf
rpf / ispf
hercules mvs 3.8
hercules mvs 3.8

Eine einfache Variante eines jes2-Verwaltungstools ist auch dabei (queue):

queue
queue

Compiler und so an Bord

Das so installierte MVS hat sogar einen Cobol-Compiler an Bord 🙂 Außerdem natürlich Assembler und sonstige Tools. Auch IEBGENER soll dabei sein – habe ich noch nicht getestet.

Kann ich nur empfehlen, ist eine spannende Lektüre und ein Abenteuer.

Mainframe im Terminal: CentOS 4.7 Repository lokal

Da CentOS 4.7 schon längere Zeit nicht mehr aktuell ist und auch die Repositories schon in den Vault verschoben wurden, habe ich ein wenig Sorge, dass die Repositories irgendwann komplett aus dem Netz verschwunden sein könnten. Also dachte ich, dass ein lokales Repository doch eine gute Idee wäre.

Spiegeln des offiziellen Repositories

Das erste, was wir tun müssen, ist natürlich eine passende Freigabe auf unserem Server einrichten. Bei mir ist das „/volume1/centos„.

Also spiegeln wir mal fleißig… wir brauchen aber nicht alles, wir brauchen nur die Repositories für S390 und S390x. Also bauen wir uns doch erst einmal eine Liste von URLs, die wir spiegeln möchten.

http://vault.centos.org/4.7/addons/s390x/
http://vault.centos.org/4.7/addons/s390/
http://vault.centos.org/4.7/centosplus/s390x/
http://vault.centos.org/4.7/centosplus/s390/
http://vault.centos.org/4.7/contrib/s390x/
http://vault.centos.org/4.7/contrib/s390/
http://vault.centos.org/4.7/extras/s390x/
http://vault.centos.org/4.7/extras/s390/
http://vault.centos.org/4.7/os/s390x/
http://vault.centos.org/4.7/os/s390/
http://vault.centos.org/4.7/testing/s390x/
http://vault.centos.org/4.7/testing/s390/
http://vault.centos.org/4.7/updates/s390x/
http://vault.centos.org/4.7/updates/s390/
http://vault.centos.org/RPM-GPG-KEY-centos4

Wer nur die 32/31-bit Variante benötigt, lässt einfach die „s390x“-URLs weg – und umgekehrt. In meinem Fall habe ich beide Varianten gespiegelt.

Diese Liste lassen wir jetzt per wget spiegeln.

cd /volume1/centos
wget --mirror --convert-links --no-parent -i liste.dat

Das dauert jetzt „ein wenig“. Sind ja immerhin ein paar hundert MB, genauer:

du -h vault.centos.org
[...]
5.0G    vault.centos.org

Neues Repository in CentOS einbinden

Wir haben ja vor der Spiegelaktion schon die passenden Freigaben auf unserem Server erstellt. Da wir mit einem Unix arbeiten, bietet sich da natürlich eine NFS-Freigabe an.

Die möchten wir jetzt auf unserem Mainframe auch nutzen. Also mounten wir das Baby:

showmount -e 192.168.0.200
Export list for 192.168.0.200:
/volume1/centos   192.168.*

Und einbinden

mkdir -p /var/yum
mount 192.168.0.200:/volume1/centos /var/yum

Den „mount“ könnten wir noch in „/etc/rc.local“ eintragen, damit das Repository nach einem Neustart auch noch eingebunden ist… ich habe dann bei dieser Gelegenheit noch in „/etc/hosts“ meine NAS dem Namen nach bekanntgegeben.

Repository in Yum einbinden

Dann müssen wir noch die Einstellungen für yum anpassen:

vim /etc/yum.repos.d/CentOS-Base.repo

Darin dann alle http://vault.centos.org gegen file:///var/yum/vault.centos.org tauschen (bitte baseurl und gpgkey!).

Wenn du übrigens da gerade in der Konfiguration herumbastelst, kannst du die beiden Repositories für „Extras“ und „Plus“ auch noch einschalten, indem du „enabled=1“ setzt.

Testlauf

Jetzt sind wir so weit… probieren wir es doch auch aus:

[root@hercules64 yum]# yum update
Setting up Update Process
Setting up repositories
update                    100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
contrib                   100% |=========================|  951 B    00:00
centosplus                100% |=========================|  951 B    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================|  951 B    00:00
Reading repository metadata in from local files
primary.xml.gz            100% |=========================|  196 B    00:00
primary.xml.gz            100% |=========================|  199 B    00:00
No Packages marked for Update/Obsoletion

Das war zu erwarten, habe ja gerade erst ein Update gemacht. Deshalb installieren wir mal etwas testweise:

[root@hercules64 yum]# yum install mc
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mc to pack into transaction set.
mc-4.6.1-0.8.5.s390x.rpm  100% |=========================|  35 kB    00:00
---> Package mc.s390x 1:4.6.1-0.8.5 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 mc                      s390x      1:4.6.1-0.8.5    base              1.7 M

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 1.7 M

Scheint zu funktionieren 🙂

midnight commander mainframe
midnight commander mainframe

Aufräumen

Wenn man es jetzt ganz genau nimmt, könnten wir die gespiegelten Repositories doch noch ein wenig aufräumen, beispielsweise die KDE- und Gnome-Pakete entfernen (und auch sonstige X-Sachen). Wir bauen ja einen Server und keine Klickibunti-Maschine für Weicheier 🙂

Aber Vorsicht: Nicht alle Pakete, die dem Namen nach für die GUI zuständig sind, sind auch tatsächlich entbehrlich. Beispielsweise wird das GnomeVFS durchaus auch für die manche Konsolenprogramme gebraucht… ja das ist eine Seuche, aber es ist nun mal so.

 

Mainframe im Terminal: Besonderheiten eines Mainframes

Die Mainframe-Welt unterscheidet sich in sehr vielen Ecken von der uns üblicherweise bekannten Client-Server- oder Desktop-Welt.

Hier einige Beispiele.

Hardware – CPUs

Ein Beispiel ist der Umgang mit Hardware, hier mal als Beispiel die CPUs.

CPUs können mehrere Zustände haben:

offline CPU ist hardwaremäßig im Rechner aber momentan nicht aktiv
online CPU ist aktiviert – aber wird noch nicht genutzt
Hercules: „cpu X„, „cf“ (cf ist ein Switch, online/offline)
started CPU ist sogar gestartet, jetzt können Prozesse die CPU auch tatsächlich nutzen
Hercules: „cpu X„, „start
stopped CPU ist gestoppt
Hercules: „cpu X„, „stop

Bei einem PC ist es üblicherweise so, dass eine eingebaute CPU auch immer aktiv/started ist. Beim Mainframe können CPUs verfügbar gehalten werden und zwar ohne, dass sie tatsächlich genutzt werden.

Das hat natürlich primär mit Geld zu tun – jede aktive CPU kostet Geld und auch die darauf laufende Software kann entsprechend nach verfügbarer Leistung (MIPS) lizenziert sein. Andere Gründe können aber auch Betriebskosten sein (eine CPU läuft mit Strom, gell).

Spezial-CPUs

Darüberhinaus ist eine CPU nicht gleich eine CPU.

CPUs können genereller Natur sein. Aber es gibt auch CPUs, die für bestimmte Aufgaben optimiert sind – beispielsweise für das Ausführen von Java-Programmen. Eine Optimierung hat entsprechende Vorteile

  • dadurch, dass sie nicht zu allem fähig sind, sind sie günstiger (interessanterweise sind die spezialisierten CPUs regelmäßig nur logisch spezialisiert: sie könnten im Prinzip alles, man kann sie von einer spezialisierten CPU durchaus in eine generelle CPU per Befehl umschalten)
  • ihre Spezialisierung führt dazu, dass sie bestimmte Aufgaben schneller/effizienter erledigen können: sie müssen sich ja nicht mit allem befassen sondern nur mit bestimmten Aufgaben
  • bestimmte CPUs sind nur für I/O zuständig, auch deshalb können Mainframes gigantischen Datendurchsätze erreichen
  • eine Auslastung von 100% ist bei Mainframes möglich und auch wünschenswert – ohne, dass dabei das System de fakto nicht mehr nutzbar ist (versucht das mal bei einem PC… selbst 80% ist da je nach Aufgabenstellung schon ein Problem)

Andere Hardware

Auch bei anderer Hardware läuft es im Prinzip so ab. Festplatten können verbaut sein, werden aber (noch?) nicht genutzt.

Fast alles kann bei einem Mainframe im laufenden Betrieb verändert werden, nur wenige Komponenten brauchen eine „stehende“ Maschine. Das ist für Hochverfügbarkeit natürlich ein riesiger Vorteil – und die PC-Welt hat einige Dinge nach teilweise Jahrzehnten übernommen (bspw. bestimmte RAID-Typen).

Ausfalltoleranz

Diese hohe mögliche Dynamik wirkt sich auch auf die Fehlertoleranz aus: Da einzelnen Komponenten recht schmerzfrei ein- und ausgeschaltet werden können, können defekte Komponenten kurzerhand „deaktiviert“ und ausgetauscht werden. Und das ohne, dass das Gesamtsystem irgendwie nennenswert beeinträchtigt wird: klar, eine fehlende Komponenten kann durchaus bspw. Folgen für die Performance haben, aber das ist ja verschmerzbar, wenn trotzdem weiterhin alle 10.000 Mitarbeiter weiterarbeiten können.

Man möchte sich gar nicht vorstellen, welche Kosten es verursachen würde, wenn durch ein Systemproblem 10.000 Mitarbeiter für eine Stunde nicht arbeiten könnten – jeder mit Taschenrechner kann das grob überschlagen:

10.000 * 50 EUR tatsächliche Mitarbeiterkosten/Stunde = 1/2 Mio EUR

Natürlich hat nicht jedes Unternehmen derart viele Mitarbeiter, aber ein paar tausend ist für größere Unternehmen durchaus eine realistische Annahme.

Mainframe im Terminal: Apache2 läuft

Was hat man von einem lauffähigen Mainframe, wenn er nicht etwas ähm „sinnvolles“ tun kann?

Also bauen wir uns doch einen süßen virtuellen Webserver auf, der uns eine Billigseite anzeigt…

Apache2 aktivieren

In /etc/httpd/conf.d legen wir einfach eine kleine Konfiguration an (bitte vorher dran denken mit SSH auf das CentOS innerhalb des Hercules zu verbinden):

<VirtualHost *:80>
ServerName www.mainframe.de
SetEnv HOST www.mainframe.de
DocumentRoot "/var/www/html/mainframe"
<Directory "/var/www/html/mainframe">
    Options MultiViews FollowSymLinks ExecCGI
    #Options Indexes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

Dann erstellen wir eine Billigseite innerhalb des DocumentRoots:

mkdir -p /var/www/html/mainframe
vim /var/www/html/mainframe/index.php
mainframe index.php
mainframe index.php

Und dann den Apache2 starten…

service httpd start

Alternativ ginge auch

apachectl start

Voilá

Und schon, vom Mac aus, auf dem Hercules selbst läuft,…

mainframe apache
mainframe apache

Den Domainnamen „www.mainframe.de“ gibt es natürlich schon, deshalb übersteuere ich den in meiner lokalen hosts-Datei:

192.168.0.125   www.mainframe.de

Service dauerhaft starten

In die /etc/rc.local (der CentOS) tragen wir einfach das Starten des Apaches ein:

# Apache httpd starten
/usr/sbin/apachectl start

Demoseite

Leider habe ich IPv6 im CentOS/CTC0-Interface noch nicht zum Laufen bekommen, sonst würde ich hier den Link posten, damit ihr alle mal gucken könnt 🙂

Aber dank DSlite, einem Rechner hinter einem Router und einer Emulation mit Host-Networking und IPv4-Tunnel… ähm… ne. Das bekomme ich heute Abend nicht mehr hin…

Zwischenzeitlich hat das Hercules schon über 500 Milliarden Instruktionen ausgeführt… vielleicht sollte ich eine zweite virtuelle CPU zuschalten 🙂