Archive

Archive for the ‘IBM’ Category

Thinkfan an Thinkpad t430s mit Fedora 19

September 4th, 2013 No comments

Thinkfan mit Fedora 19 ist kein großes Hexenwerk.

 

metalfan

 

An sich läuft der Lüfter schon im “OutOfTheBox” Setting sehr ruhig und das ganze Gerät ist nahezu lautlos.

Meine Config in /etc/thinkfan.conf sieht wie folgt aus:

 

sensor /sys/devices/platform/coretemp.0/temp3_input
sensor /sys/devices/platform/coretemp.0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp2_input

## My first config

(0,     0,      60)
(1,     58,     63)
(2,     59,     65)
(3,     60,     66)
(4,     61,     67)
(5,     62,     68)
(7,     63,     32767)

In der /etc/defaults/thinnnk

 

Jetzt kommt der Trick mit systemd:

 

Mein Defaultinstall fiel direkt auf die Nase.

Ich habe den Inhalt der Datei /usr/lib/systemd/system/thinkfan.service wie folgt geändert:

 

[Unit]Description=simple and lightweight fan control program

[Service]ExecStart=/usr/sbin/thinkfan -q -n

[Install]WantedBy=multi-user.target

 

Weitere Tunings:

 

In der /etc/default/thinkfan habe ich ein etwas knackigeres Regelverhalten eingetragen:

DAEMON_ARGS=”-q -b 1 -s 3″

START=yes

Hier kann es zwar zu einem kurzzeitigen “Hochdrehen” des Lüfters kommen, aber so bleibt das Gerät zumindest angenehm kühl ;-)

######################################################

RPM Pakete für thinkfan gibt es  <HIER>

Einen schönen Einstieg zu “Fedora auf dem Thinkpad gibt es <HIER>

Categories: IBM, Linux / Unix / foo Tags:

IBM GPFS – Debian Cluster config

July 1st, 2013 No comments

### Vorbereiten ###

Zum Install von GPFS

Die beiden GPFS Nodes müssen passwortlos miteinander und mit sich selbst via SSH kommunizieren können. Die im ersten Schritt erstellten SSH Keys pflanzen wir nun in die gegenseitigen authorized_keys files des andern Clusternodes.

 

node1# ssh node1 date

node1# ssh node2 date

node2# ssh node1 date

node2# ssh node2 date

 

Cluster

 

Kurzer Test und Abnicken des Hostkeys in beide Richtungen.

Um in Zukunft Ruhe zu haben erstellen wir eine .hushlogin im Home.

 

touch $HOME/.hushlogin

 

 

### Cluster erstellen ###

 

Beispielhaft erstellen wir einen Cluster aus zwei Nodes.

 

Jetzt legen wir uns eine Nodelist an.

Also eine Liste in der die Clusternodes und deren Verwendung aufgeführt ist.

 

epgpfs01.server.lan:quorum

epgpfs02.server.lan:quorum

 

Jetzt das Command:

 

mmcrcluster -N /root/GPFS/nodelist -p epgpfs01 -s epgpfs02

 

 

root@gpfs01:~/GPFS-Files# mmcrcluster -N /root/GPFS-Files/nodelist -p gpfs01 -s gpfs02

mmcrcluster: Command successfully completed

mmcrcluster: Warning: Not all nodes have proper GPFS license designations.

Use the mmchlicense command to designate licenses as needed.

mmcrcluster: Propagating the cluster configuration data to all

affected nodes. This is an asynchronous process.

root@gpfs01:~/GPFS-Files#

 

 

Jetzt können wir checken ob der Cluster sauber gebaut wurde:

 

root@gpfs01:~/GPFS-Files# mmlscluster

===============================================================================

| Warning: |

| This cluster contains nodes that do not have a proper GPFS license |

| designation. This violates the terms of the GPFS licensing agreement. |

| Use the mmchlicense command and assign the appropriate GPFS licenses |

| to each of the nodes in the cluster. For more information about GPFS |

| license designation, see the Concepts, Planning, and Installation Guide. |

===============================================================================

GPFS cluster information

========================

GPFS cluster name: gpfs01

GPFS cluster id: 1300000000000000077

GPFS UID domain: gpfs01

Remote shell command: /usr/bin/rsh

Remote file copy command: /usr/bin/rcp

 

GPFS cluster configuration servers:

———————————–

Primary server: gpfs01

Secondary server: gpfs02

 

Node Daemon node name IP address Admin node name Designation

————————————————————————————–

1 gpfs01 10.30.4.229 gpfs01 quorum

2 gpfs02 10.30.4.230 gpfs02 quorum

 

root@gpfs01:~/GPFS-Files#

 

 

####################################

—> Unter den beiden Remotecommands (rsh & rcp) kann mittels -r “remote Shell” und -R “Remote File Copy” auch in die verschlüsselte Variante scp und ssh geändert werden – hier sollte man allerdings den kompletten Pfad angeben!

####################################

 

Weil wir natürlich eine Lizenz haben schalten wir den nervigen Banner aus.

 

root@gpfs01:~/GPFS-Files# mmchlicense server –accept -N gpfs01,gpfs02

The following nodes will be designated as possessing GPFS server licenses:

gpfs01

gpfs02

mmchlicense: Command successfully completed

mmchlicense: Propagating the cluster configuration data to all

affected nodes. This is an asynchronous process.

root@gpfs01:~/GPFS-Files#

 

 

### Cluster starten & Stoppen ###

 

Um den Cluster zu starten und zu stoppen benötigen wir drei Commands:

 

mmstartup

mmshutdown

mmgetstate

 

Ich denke die Commands sprechen für sich ;)

 

-a Gilt jeweils für ALLE

-N Gilt für einzelne Nodes oder eine Reihe von Nodes durch Commata getrennt

 

 

root@ep-gpfs01-data:~/GPFS-Files# mmgetstate -a

Node number Node name GPFS state

——————————————

1 gpfs01 down

2 gpfs02 down

root@gpfs01:~/GPFS-Files#

Starten:

root@gpfs01:~/GPFS-Files# mmstartup -a

Wed Jun 26 17:43:23 CEST 2013: mmstartup: Starting GPFS …

root@gpfs01:~/GPFS-Files#

 

Status:

root@gpfs01:~/GPFS-Files# mmgetstate -a

Node number Node name GPFS state

——————————————

1 gpfs01 active

2 gpfs02 active

root@gpfs01:~/GPFS-Files#

 

 

### NSD ###

 

Jetzt ist Zeit die NetworkSharedDisks zu bauen.

Dafür schneide ich mir aus dirct attached SAS Storage ein paar Disks zu je 450gb.

 

Die Disks liegen unter /dev/cciss

Wichtig: LIES MICH (falls eure NSDs nicht direkt in /dev/ liegen)

 

  • c0d1
  • c0d2
  • c0d3
  • c0d4
  • c0d5
  • c0d6

 

Da wir hier ein kleines Setup haben und auch nicht zwingend auf ausgelagerte Metadaten angewiesen sind lege ich diese auf den gleichen Disks ab.

 

Wie schon beim Clusterbau benötigen wir nun ein File, welches die NSDs und ihre Verwendung definiert.

 

 

#DiskName:ServerList::DiskUsage:FailureGroup:DesiredName:StoragePool

/dev/cciss/c0d1:::dataAndMetadata::nsd1:

/dev/cciss/c0d2:::dataAndMetadata::nsd2:

/dev/cciss/c0d3:::dataAndMetadata::nsd3:

/dev/cciss/c0d4:::dataAndMetadata::nsd4:

/dev/cciss/c0d5:::dataAndMetadata::nsd5:

/dev/cciss/c0d6:::dataAndMetadata::nsd6:

 

Jetzt können wir mittels des File unser NSDs erstellen.

Da im obigen File die zweite Spalte frei blieb sehen beide Clusternodes alle Disks.

 

root@gpfs01:~/GPFS-Files# mmcrnsd -F /root/GPFS-Files/NDSfile

mmcrnsd: Processing disk cciss/c0d1

mmcrnsd: Processing disk cciss/c0d2

mmcrnsd: Processing disk cciss/c0d3

mmcrnsd: Processing disk cciss/c0d4

mmcrnsd: Processing disk cciss/c0d5

mmcrnsd: Processing disk cciss/c0d6

mmcrnsd: Propagating the cluster configuration data to all

affected nodes. This is an asynchronous process.

root@gpfs01:~/GPFS-Files#

 

Ob das alles erfolgte prüfen wir mit mmlsnsd

 

root@gpfs01:~/GPFS-Files# mmlsnsd

File system Disk name NSD servers

—————————————————————————

(free disk) nsd1 (directly attached)

(free disk) nsd2 (directly attached)

(free disk) nsd3 (directly attached)

(free disk) nsd4 (directly attached)

(free disk) nsd5 (directly attached)

(free disk) nsd6 (directly attached)

root@gpfs01:~/GPFS-Files#

 

 

### Filesystem erstellen ###

 

Hier gibts jetzt einige Optionen, die aber super gut in der Manpage erklärt sind, daher nehm ich beispielhaft nur eine einfache Variante:

mmcrfs /GPFS fs1 -F /root/GPFS-Files/NSDfile -B 64k

 

Jetzt noch schnell mounten:

 

root@gpfs01:~# mmmount all -a

Mon Jul 1 10:23:55 CEST 2013: mmmount: Mounting file systems …

root@gpfs01:~#

 

Der Mount macht an sich keine großartigen Probleme, der df-h zeigt jetzt auf beiden Nodes ein Filesystem und im Endeffekt wars das dann schon =)

Categories: IBM, Linux / Unix / foo Tags:

IBM GPFS auf Debian – mmcrfs – No such device

June 28th, 2013 No comments

Ich nutze für meine GPFS Tests HP Hardware.

Aus dem angehängten Disk Array schneide ich mir mittels hpacucli Raid5s zurecht und möchte die in GPFS nutzen. Typischerweise linkt hpacucli seine Devices nach /dev/cciss/*.

 

sharing

 

 

root@gpfs01:/dev/cciss# ls -la

total 0

drwxr-xr-x 2 root root 260 Jun 26 18:12 .

drwxr-xr-x 15 root root 2960 Jun 26 17:43 ..

brwxrwxr-x 1 root disk 104, 0 Jun 26 11:11 c0d0

brwxrwxr-x 1 root disk 104, 1 Jun 26 11:11 c0d0p1

brwxrwxr-x 1 root disk 104, 2 Jun 26 11:11 c0d0p2

brwxrwxr-x 1 root disk 104, 3 Jun 26 11:11 c0d0p3

brwxrwxr-x 1 root disk 104, 5 Jun 26 11:11 c0d0p5

brwxrwxr-x 1 root disk 104, 16 Jun 27 17:58 c0d1

brwxrwxr-x 1 root disk 104, 32 Jun 27 17:58 c0d2

brwxrwxr-x 1 root disk 104, 48 Jun 27 17:58 c0d3

brwxrwxr-x 1 root disk 104, 64 Jun 27 17:58 c0d4

brwxrwxr-x 1 root disk 104, 80 Jun 27 17:58 c0d5

brwxrwxr-x 1 root disk 104, 96 Jun 27 17:58 c0d6

root@gpfs01:/dev/cciss#

 

Meine Reihe GPFS Devices ist die c0d1-6.

Im Diskfile gebe ich den absoluten Pfad der Disk an, somit sieht ein Eintrag wie folgt aus:

 

/dev/cciss/c0d1:::dataAndMetadata::gpfs1nsd:

 

Jetzt bauen wir die NSDs

 

root@gpfs01:~/GPFS-Files# mmcrnsd -F /root/GPFS-Files/NSDfile -v no

UTF-8: unknown locale

UTF-8: unknown locale

mmcrnsd: Processing disk cciss/c0d1

mmcrnsd: Processing disk cciss/c0d2

mmcrnsd: Processing disk cciss/c0d3

mmcrnsd: Processing disk cciss/c0d4

mmcrnsd: Processing disk cciss/c0d5

mmcrnsd: Processing disk cciss/c0d6

mmcrnsd: Propagating the cluster configuration data to all

affected nodes. This is an asynchronous process.

root@gpfs01:~/GPFS-Files#

 

Die NSDs werden dann sauber erstellt.

 

root@gpfs01:~/GPFS-Files# mmlsnsd

File system Disk name NSD servers

—————————————————————————

(free disk) gpfs1nsd (directly attached)

(free disk) gpfs2nsd (directly attached)

(free disk) gpfs3nsd (directly attached)

(free disk) gpfs4nsd (directly attached)

(free disk) gpfs5nsd (directly attached)

(free disk) gpfs6nsd (directly attached)

root@gpfs01:~/GPFS-Files#

 

Will man nun ein FS erstellen läuft man in folgenden Fehler:

 

root@gpfs01:~/GPFS-Files# mmcrfs fs1 -F NSDfile -T /gpfs -B 512K -A yes

Unable to open disk ‘ gpfs5nsd on node ep-gpfs01-data.

No such device

Unable to open disk ‘gpfs3nsd’ on node ep-gpfs01-data.

No such device

Unable to open disk ‘gpfs2nsd’ on node ep-gpfs01-data.

No such device

Unable to open disk ‘gpfs4nsd’ on node ep-gpfs01-data.

No such device

Unable to open disk ‘ gpfs1nsd’ on node ep-gpfs01-data.

No such device

Unable to open disk ‘gpfs6nsd’ on node ep-gpfs01-data.

No such device

Error accessing disks.

mmcrfs: tscrfs failed. Cannot create fs1

mmcrfs: Command failed. Examine previous error messages to determine cause.

root@gpfs01:~/GPFS-Files#

 

Das hat mich einen guten Tag gekostet, weil ich davon ausging, dass GPFS die Disks ja schon durch den obigen Task kennt und ich mit „Systemdevices“ nichts mehr zu tun habe. Leider ist dem nicht so, da auch der Devicescan nur die Devices in /dev erkannte, aber nicht in dessen Subfoldern.

Also muss man dem GPFS irgendwie beibringen auch in Subfoldern zu suchen.

 

Aus den Sample-Configs nimmt man sich die nsddevices, editiert die einfach passend und schubst sie nach /var/mmfs/etc/

 

root@gpfs01:~# cp /usr/lpp/mmfs/samples/nsddevices.sample /var/mmfs/etc/nsddevices

 

In die nsddevices gibt man an der richtigen Stelle folgenden Fetzen an:

 

osName=$(/bin/uname -s)

 

if [[ $osName = Linux ]]

then

for x in /dev/cciss/c0d* ; do

echo “$x generic”

done

fi

 

Mit dem kleinen Hack-Dings sind nun die, die wir brauchen sichtbar. Kleiner Benefit meiner Faulheit: Es sind nur die, die vom RAID-Controller kommen für GPFS sichtbar ;)

 

root@gpfs01:~/GPFS-Files# mmdevdiscover

/dev/cciss/c0d0 generic

/dev/cciss/c0d0p1 generic

/dev/cciss/c0d0p2 generic

/dev/cciss/c0d0p3 generic

/dev/cciss/c0d0p5 generic

/dev/cciss/c0d1 generic

/dev/cciss/c0d2 generic

/dev/cciss/c0d3 generic

/dev/cciss/c0d4 generic

/dev/cciss/c0d5 generic

/dev/cciss/c0d6 generic

root@gpfs01:~/GPFS-Files#

 

Jetzt klappt dann auch der mmcrfs!

root@gpfs01:~/GPFS-Files# mmcrfs /gpf1 /dev/gpfs1 -F NSDfile -B 256K

The following disks of gpfs1 will be formatted on node ep-gpfs01-data:

gpfs1nsd: size 471859200 KB

gpfs2nsd: size 471859200 KB

gpfs3nsd: size 471859200 KB

gpfs4nsd: size 471859200 KB

gpfs5nsd: size 471859200 KB

gpfs6nsd: size 471859200 KB

Formatting file system …

Disks up to size 4.5 TB can be added to storage pool system.

Creating Inode File

Creating Allocation Maps

Creating Log Files

Clearing Inode Allocation Map

Clearing Block Allocation Map

Formatting Allocation Map for storage pool system

Completed creation of file system /dev/gpfs1.

mmcrfs: Propagating the cluster configuration data to all

affected nodes. This is an asynchronous process.

root@gpfs01:~/GPFS-Files#

 

Categories: IBM, Linux / Unix / foo Tags:

IBM GPFS 3.5.0.10 auf Debian Squeeze

June 25th, 2013 No comments

Wir benötigen mindestens Kernel 2.6.32 – also entweder ein Debian 6 oder was vergleichbares, aber bitte wirklich auf 2.6er Kernel achten!

Bei den Tests hat sich ergeben, dass die 3er Kernel, insbsondere Debian 7, noch nicht unterstützt werden. Die Unterstützung für Debian 7 soll zum Release von GPFS 4 kommen.

 

Cluster

 

Zum auflösen der Abhängigkeiten isntallieren wir folgende Pakete:

 

build-essential

linux-headers (für den verwendeten kernel *G*)

ksh

gawk

libaio1

 

GPFS kommt in zwei Stufen:

Der GPFS Folder mit der Basis und dem Update/Patch.

 

Im GPFS_3.5 BASE-Folder benötigen wir nur die gpfs_install-3.5.0-0_x86_64

 

Im aktuellen Patch liegen *.rpm, wie auch *.deb Pakete.

Wir benötigen nur die *.deb Pakete.

 

Nach einem Übertrag der Pakete müssen wir noch ein wenig Vorarbeit leisten.

 

Der Hostname muss in der /etc/hosts eingetragen werden:

 

10.10.10.1 gpfstest gpfstest.fritz.box

 

Als Rootuser muss auch unser SSH-Key ohne Passphrase funktionieren und in der eigenen authorized_keys eingetragen sein.

 

Jetzt können wir den Installer mittels ./gpfs_install-3.5.0-0_x86_64 –text-only anwerfen. Drollig ist allerdings, dass der Installer nicht wirklich installiert, sondern nur nach /usr/lpp/ entpackt.

 

Nachdem der Installer durchgelaufen ist liegen in /usr/lpp/mmfs/3.5 die eigentlichen Pakete…

 

Ein beherztes dpkg -i *.deb installiert das Base 3.5 GPFS letztendlich.

 

root@gpfstest:/usr/lpp/mmfs/3.5# dpkg -l | grep gpfs

ii gpfs.base 3.5.0-3 General Parallel File System

ii gpfs.docs 3.5.0-3 General Parallel File System

ii gpfs.gpl 3.5.0-3 General Parallel File System

ii gpfs.msg.en-us 3.5.0-3 General Parallel File System

 

 

Die Updates aus dem “Updatefolder” können nun ebenfalls mit dpkg -i *.deb installiert werden.

 

root@gpfstest:/usr/lpp/mmfs/3.5# dpkg -l | grep gpfs

ii gpfs.base 3.5.0-10 General Parallel File System

ii gpfs.docs 3.5.0-10 General Parallel File System

ii gpfs.gpl 3.5.0-10 General Parallel File System

ii gpfs.msg.en-us 3.5.0-10 General Parallel File System

 

 

In /usr/lpp/mmfs/src können wir nun mit der eigentlichen Arbeit anfangen:

 

make Autoconfig

make World

make InstallImages

Danach sollten die Module und Co sauber gebaut sein und alles laufen.

Checkt das mit mmfsenv

 

root@gpfstest ~# /usr/lpp/mmfs/bin/mmfsenv

Unloading modules from /lib/modules/2.6.32-5-amd64/extra

Loading modules from /lib/modules/2.6.32-5-amd64/extra

Module Size Used by

mmfs26 1612545 0

mmfslinux 260046 1 mmfs26

tracedev 26157 2 mmfs26,mmfslinux

mmfsenv: This node does not belong to a GPFS cluster.

mmfsenv: The GPFS configuration information is incorrect or not available.

root@gpfstest ~#

 

Jetzt ist ein GPFS auf dem System vorhanden.

Den $PATH sollte man noch um /usr/lpp/mmfs/bin erweitern.

 

Weiter gehts HIER – Clusterconfig & FS erstellen

 

###########

Schönen Dank auch an meinen Kollegen Sascha, der die erste, sehr ausführliche, Version der Installanleitung geschrieben hat.

Diese könnt ihr HIER einsehen

 

 

 

 

Categories: IBM, Linux / Unix / foo Tags: