Korrigieren von „falschen“ LVM Spiegelungen

Mirrored logical volume from practice

In Teil III unserer Artikel-Reihe „AIX LVM: Mechanik von migratepv“ zeigen wir wie inkorrekte Spiegelung von Logical Volumes online korrigiert werden kann. Dazu sind lediglich die Kommandos migratelp und migratepv, sowie ein gutes Verständnis der Arbeitsweise dieser Kommandos notwendig.

Hier die Links zu den Artikeln der Reihe:

AIX LVM: Mechanik von migratepv (Part I)

AIX LVM: Mechanik von migratepv (Part II)

AIX LVM: Mechanik von migratepv (Part III)

Fehler: Every mirror pool must contain a copy of the logical volume

Der Versuch ein ungespiegeltes LV in einer VG mit Mirror Pools anzulegen resultiert in dem folgenden Fehler:

# mklv -t jfs2 -p copy1=DC1 datavg01 10
0516-1829 mklv: Every mirror pool must contain a copy of
        the logical volume.
0516-822 mklv: Unable to create logical volume.
#

Die Ursache ist das Attribut Mirror Pool Strictness der VG, welches auf ‚super-strict‚ gesetzt ist. Im Artikel Mirror Pools: Verstehen der Mirror Pool Strictness wird die Bedeutung der Mirror Pool Strictness anhand von Beispielen untersucht.

Fehler: Mirror pools must be defined

Beim Anlegen eines gespiegelten Logical Volumes ist die folgende Fehlermeldung aufgetreten:

# mklv -c 2 -t jfs2 datavg01 10
0516-1814 lcreatelv: Mirror pools must be defined for each copy when strict mirror
        pools are enabled.
0516-822 mklv: Unable to create logical volume.
#

Ursache dafür ist das die Mirror Pool Strictness für die Volume Group gesetzt ist. In dem Artikel Mirror Pools: Verstehen der Mirror Pool Strictness  wird dies genauer untersucht und erläutert.

Neuer Artikel Einführung in Mirror Pools

Viele IT-Umgebungen betreiben Ihre Systeme in mehr als einem Rechenzentrum. Um im Falle eines Ausfalls eines kompletten Rechenzentrums trotzdem keinen Datenverlust zu haben, werden die Daten zwischen 2 oder mehr Rechenzentren gespiegelt. Die Spiegelung kann dabei durch das Storage realisiert sein (storage based mirroring) oder durch einen Volume Manager (LVM im Falle von AIX) auf dem Server (host based mirroring). Im Artikel Mirror Pools: Einführung betrachten wir Spiegelungen mittels AIX Logical Volume Manager und Mirror Pools. Dabei soll gezeigt werden, wie mit Hilfe von Mirror Pools das korrekte Spiegeln von Logical Volumes realisiert werden kann. In größeren Umgebungen mit vielen Physical Volumes ist das Einhalten einer korrekten Spiegelung ohne Mirror Pools schwierig und für den Administrator eine Herausforderung.

Nicht vergessen AIX-rpm zu aktualisieren

Kürzlich, bei der Installation von Python3 aus der AIX-Toolbox mittels YUM, sind wir auf folgende Fehlersituation gestoßen:

# yum install python3
...
--> Finished Dependency Resolution
Error: Package: python3-3.7.1-1.ppc (AIX_Toolbox)
           Requires: libssl.a(libssl.so.1.0.2)
Error: Package: python3-3.7.1-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
#

Python3 benötigt die Version 1.0.2 von libssl.so und libcrypto.so, die beiden Libraries können aber nicht gefunden werden. Diese beiden Bibliotheken können entweder über das RPM-Paket openssl, in der passenden Version, bereitgestellt werden oder über AIX. Wenn die AIX-Toolbox verwendet wird, wird typischerweise das Paket openssl nicht installiert, sondern es werden die OpenSSL-Bibliotheken von AIX genutzt. Daher ist in unserem Fall das OpenSSLRPM-Paket nicht installiert. Die Bibliotheken werden dann über BFF Pakete des AIX Betriebssystems zur Verfügung gestellt.

Die Information, welche Libraries von AIX zur Verfügung gestellt werden, wird über das virtuelle RPM-Paket AIX-rpm bereitgestellt:

# rpm -q --provides AIX-rpm | egrep "lib(ssl|crypto)"
libcrypto.a(libcrypto.so)
libcrypto.a(libcrypto.so.0.9.8)
libcrypto.a(libcrypto.so.1.0.0)
libcrypto.a(libcrypto64.so)
libcrypto.a(libcrypto64.so.0.9.8)
libcrypto.a(libcrypto64.so.1.0.0)
libcrypto.so.0.9.7
libcrypto_compat.a(libcrypto.so)
libcrypto_compat.a(libcrypto.so.0.9.8)
libcrypto_compat.a(libcrypto64.so)
libcrypto_compat.a(libcrypto64.so.0.9.8)
libssl.a(libssl.so)
libssl.a(libssl.so.0.9.8)
libssl.a(libssl.so.1.0.0)
libssl.a(libssl64.so)
libssl.a(libssl64.so.0.9.8)
libssl.a(libssl64.so.1.0.0)
libssl3.a(libssl3.so)
libssl3.so
libssl_compat.a(libssl.so)
libssl_compat.a(libssl.so.0.9.8)
libssl_compat.a(libssl64.so)
libssl_compat.a(libssl64.so.0.9.8)
#

Die Ausgabe zeigt, das dem Paket AIX-rpm die Versionen 0.9.8 und 1.0.0 der beiden benötigten Bibliotheken bekannt sind, die benötigte Version 1.0.2 ist aber anscheinend nicht verfügbar. Wir schauen kurz in das zugehörige Archiv /usr/lib/libssl.a (bzw. /usr/lib/libcrypto.a) herein:

# ar -X any t /usr/lib/libssl.a
libssl.so
libssl.so.0.9.8
libssl.so.1.0.0
libssl.so.1.0.2
libssl.so
libssl.so.0.9.8
libssl.so.1.0.0
libssl.so.1.0.2
libssl64.so
libssl64.so.0.9.8
libssl64.so.1.0.0
#

Das Archiv stellt offensichtlich auch die Version 1.0.2 zur Verfügung. Diese Information wird aber über das RPM-Paket AIX-rpm nicht geliefert. Das liegt daran, das offensichtlich eine neuere Version von openssl.base installiert wurde, das AIX-rpm Paket aber nicht aktualisiert wurde. Das RPM-Paket hat aktuell die folgende Version:

# rpm -q AIX-rpm
AIX-rpm-7.1.5.15-6.ppc
#

Wir aktualisieren das Paket jetzt mit dem Kommando updtvpkg (update virtual package):

# updtvpkg
Please wait...
# 
# rpm -q AIX-rpm
AIX-rpm-7.1.5.30-7.ppc
#

Die Versionsnummer hat sich jetzt von 7.1.5.15-6 auf 7.1.5.30-7 geändert! Wir lassen uns erneut anzeigen, welche Libraries von AIX über AIX-rpm bereitgestellt werden:

# rpm -q --provides AIX-rpm | egrep "lib(ssl|crypto)"
libcrypto.a(libcrypto.so)
libcrypto.a(libcrypto.so.0.9.8)
libcrypto.a(libcrypto.so.1.0.0)
libcrypto.a(libcrypto.so.1.0.2)
libcrypto.a(libcrypto64.so)
libcrypto.a(libcrypto64.so.0.9.8)
libcrypto.a(libcrypto64.so.1.0.0)
libcrypto.so
libcrypto.so.0.9.7
libcrypto.so.1.0.0
libcrypto_compat.a(libcrypto.so)
libcrypto_compat.a(libcrypto.so.0.9.8)
libcrypto_compat.a(libcrypto64.so)
libcrypto_compat.a(libcrypto64.so.0.9.8)
libssl.a(libssl.so)
libssl.a(libssl.so.0.9.8)
libssl.a(libssl.so.1.0.0)
libssl.a(libssl.so.1.0.2)
libssl.a(libssl64.so)
libssl.a(libssl64.so.0.9.8)
libssl.a(libssl64.so.1.0.0)
libssl.so
libssl.so.1.0.0
libssl3.a(libssl3.so)
libssl3.so
libssl_compat.a(libssl.so)
libssl_compat.a(libssl.so.0.9.8)
libssl_compat.a(libssl64.so)
libssl_compat.a(libssl64.so.0.9.8)
#

Nach der Aktualisierung des virtuellen Pakets AIX-rpm, steht jetzt auch in der RPM-Datenbank das libssl.so und libcrypto.so auch in der Version 1.0.2 verfügbar sind.

Die Installation von Python3 verläuft jetzt erfolgreich:

# yum install python3
...
Is this ok [y/N]: y
...
Installed:
  python3.ppc 0:3.7.1-1                                                                                       

Dependency Installed:
  bzip2.ppc 0:1.0.6-3  expat.ppc 0:2.2.4-1  info.ppc 0:6.4-1  libffi.ppc 0:3.2.1-3  libstdc++.ppc 0:6.3.0-2
  ncurses.ppc 0:6.1-2

Dependency Updated:
  readline.ppc 0:7.0-5                                                                                        

Complete!
#

Daher bei Updates von BFF Paketen die Aktualisierung von AIX-rpm nicht vergessen!

MDS Report schnell auf der Kommandozeile anzeigen

Viele AIX und Power System Administratoren nutzen Microcode Discovery Services, um die Versionsstände von Adapter Firmware und System Firmware regelmäßig zu überprüfen. Dabei sind in der Regel die folgenden Schritte notwendig:

– Herunterladen des aktuellen Catalog Files catalog.mic.

– Ausführen von Inventory Scout zur Erzeugung des Microcode Upload Files.

– Upload des Microcoad Upload Files nach IBM http://www14.software.ibm.com/support/customercare/mds/mds

Dabei wird in vielen Fällen der Upload über einen Browser durchgeführt. Die Auswertung bekommt man dann im Browser in Form einer HTML-Ausgabe. Alternativ kann man aber auch den Upload z.B. mit Hilfe von curl durchführen und als Resultat die Daten im JSON-Format anfordern.

$ curl -F "mdsData=@ms01-vio1.mup;type=multipart/form" -F "format=json" -H "Expect:" http://www14.software.ibm.com/support/customercare/mds/mds -o ms01-vio1.mup

Im zurück gelieferten JSON-File stehen alle Informationen, die ansonsten im Browser angezeigt werden.

Mit einem kleinen Skript lässt sich das JSON-File relativ leicht in lesbarer ASCII-Form darstellen. Dazu haben wir das Skript mds_report in unserem Download-Bereich (https://powercampus.de/download) zur Verfügung gestellt. Als Argument erwartet das Skript ein Microcode Upload File, hier eine Beispiel-Ausgabe:

$ mds_report ms01-vio1.mup
ms01-vio1.mup upload microcode upload file to IBM ... uploaded

Microcode by Host

ms01-vio1
IP Addr: X.X.X.X
Model: 8205-E6D   Serial: XXXXXX
Microcode catalog: 2020.07.30

DEVICES          INSTALLED        LATEST           RECOMMEND   PKGNAME
system           AL770_126        AL770_126        None        8231-E1D; 8231-E2D; 8246-L1D; 8246-L1T; 8246-L2D; 8246-L2T; 8202-E4D; 8205-E6D; 8268-E1D; 8493-SV6 HV16 System Firmware
sissas0          0422003f         0422003f         None        PCI Express x8 Ext Dual-x4 3Gb SAS RAID Adapter (CCIN: 574E)
ent0,1,2,3       10080180         10240310         Update      4-Port Gigabit Ethernet PCI-Express Adapter
ent4,5,6,7       0400401800007    0400401800009    Update      PCIe2 2-Port 10GbE SFP+Copper or 10GbE SR Adapter
fcs0,1,2,3       210301           210313           Update      PCIe2 4-Port 8Gb Fibre Channel Adapter, FC 5729
fcs4,5,6,7       0320080270       0325080271       Update      8Gb PCIe2 Low Profile 4-Port FC Adapter
hdisk0,1         37343138         37343139         Update      Savvio 15K.3 146/300GB SAS Disk Drive
cd0              RA65             RA65             None        SATA DVD-RAM Drive RMBO0140512

Microcode by Type

IMPACT        SEVERITY    RELDATE       LATEST           PKGNAME
Security      SPE         2018.05.27    AL770_126        8231-E1D; 8231-E2D; 8246-L1D; 8246-L1T; 8246-L2D; 8246-L2T; 8202-E4D; 8205-E6D; 8268-E1D; 8493-SV6 HV16 System Firmware
Usability     ATT         2013.06.06    0422003f         PCI Express x8 Ext Dual-x4 3Gb SAS RAID Adapter (CCIN: 574E)
Usability     ATT         2019.06.20    10240310         4-Port Gigabit Ethernet PCI-Express Adapter
Usability     ATT         2016.11.14    0400401800009    PCIe2 2-Port 10GbE SFP+Copper or 10GbE SR Adapter
Usability     ATT         2019.06.17    210313           PCIe2 4-Port 8Gb Fibre Channel Adapter, FC 5729
Usability     ATT         2020.01.28    0325080271       8Gb PCIe2 Low Profile 4-Port FC Adapter
Function      ATT         2019.04.30    37343139         Savvio 15K.3 146/300GB SAS Disk Drive
New           NEW         2014.10.24    RA65             SATA DVD-RAM Drive RMBO0140512
$

Die Ausgabe lehnt sich stark an die Ausgabe im Browser an. Im ersten Abschnitt „Microcode by Host“ werden die Update Empfehlungen für die System Firmware und Adapter Firmware ausgegeben. Im zweiten Abschnitt „Microcode by Type“ werden Impact und Severity, sowie das Release Date der letzten verfügbaren Firmware Version ausgegeben.

Ist der Zugriff ins Internet nur über einen Proxy möglich, dann kann der Proxy über das Argument -x angegeben werden, wie im folgenden Beispiel gezeigt:

$ mds_report -x http://10.0.0.217:1234 ms07-vio1.mup
ms07-vio1.mup upload microcode upload file to IBM ... uploaded

Microcode by Host

ms07-vio1
IP Addr: X.X.X.X
Model: 8408-44E   Serial: XXXXXXX
Microcode catalog: 2020.07.30

DEVICES          INSTALLED        LATEST           RECOMMEND   PKGNAME
system           SV860_138        SV860_215        Update      8247-21L, 8247-22L, 8247-42L, 8284-21A, 8284-22A, 8286-41A, 8286-42A, 8408-44E, 8408-E8E, 5148-21L, 5148-22L - system-v860.60
sissas0          15511800         19512900         Update      PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
ses0,1,2,3       1D0B             1D0B             None        SAS Enclosure Services for Power 8 4U High Function DASD backplane 8408-E8E
pdisk0,1         37363135         37363142         Update      BP5XX15KHDD 15KRPM 73/146/300/600GB SAS Disk Drive
fcs0,1           00010000020025201919  00012000040025700015  Update      PCIe2 2-Port 16Gb FC Adapter
fcs2,3,4,5       0320080270       0325080271       Update      8Gb PCIe2 Low Profile 4-Port FC Adapter

Microcode by Type

IMPACT        SEVERITY    RELDATE       LATEST           PKGNAME
Security      HIPER       2020.03.04    SV860_215        8247-21L, 8247-22L, 8247-42L, 8284-21A, 8284-22A, 8286-41A, 8286-42A, 8408-44E, 8408-E8E, 5148-21L, 5148-22L - system-v860.60
Availability  ATT         2020.02.25    19512900         PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
New           NEW         2015.06.03    1D0B             SAS Enclosure Services for Power 8 4U High Function DASD backplane 8408-E8E
Function      ATT         2020.04.16    37363142         BP5XX15KHDD 15KRPM 73/146/300/600GB SAS Disk Drive
Usability     ATT         2020.02.18    00012000040025700015  PCIe2 2-Port 16Gb FC Adapter
Usability     ATT         2020.01.28    0325080271       8Gb PCIe2 Low Profile 4-Port FC Adapter
$

Möchte man das Skript häufiger verwenden, dann sollte man den Proxy in das Skript selbst eintragen, hierzu gibt es die Variable PROXY, die man dann wie folgt setzen kann:

$ grep ^PROXY mds_report
PROXY="http://10.0.0.217:1234"
$

Die Angabe eines Proxies über die Option -x ist dann nicht mehr notwendig.

Wird das Skript als root auf einem AIX-System ausgeführt, wird automatisch die Proxy-Konfiguration von ESA (Electronic Service Agent) übernommen.

Benötigt man die URLs für den Download der Firmware sollte man die Option -u (show download URLs) verwenden. Die Links für die Firmware Versionen werden dann am Ende der Ausgabe aufgelistet, hier ein Beispiel:

$ mds_report -u ms03-vio1.mup
/appdata/daten/fk450/aix/mds/virt-aix23-vio1.mup upload microcode upload file to IBM ... uploaded

Microcode by Host

ms03-vio1
IP Addr: X.X.X.X
Model: 9009-22A   Serial: XXXXXXX
Microcode catalog: 2020.07.30

DEVICES          INSTALLED        LATEST           RECOMMEND   PKGNAME
system           VL910_144        VL940_050        Update      9008-22L; 9009-22A; 9009-41A; 9009-42A; 9223-22H; and 9223-42H-system
sissas0          19511400         19512900         Update      PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
pdisk0           36383035         36383035         None        AL14SE 600/1200/1800 GB 4K Hard Disk Drive
pdisk1,2         41374B30         41374B30         None        Ultrastar C15K600-5xx
fcs0,1,2,3,4,5,6,7  00011000040041500005  00012000040025700015  Update      PCIe3 4-Port 16Gb FC Adapter

Microcode by Type

IMPACT        SEVERITY    RELDATE       LATEST           PKGNAME
Availability  SPE         2020.05.21    VL940_050        9008-22L; 9009-22A; 9009-41A; 9009-42A; 9223-22H; and 9223-42H-system
Availability  ATT         2020.02.25    19512900         PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
Data          HIPER       2016.12.01    36383035         AL14SE 600/1200/1800 GB 4K Hard Disk Drive
Function      ATT         2015.08.18    41374B30         Ultrastar C15K600-5xx
Usability     ATT         2020.02.18    00012000040025700015  PCIe3 4-Port 16Gb FC Adapter

Downloads

http://www.ibm.com/support/fixcentral/quickorder?product=ibm/power/900922A&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=01VL940_050_027
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=40145679_20200224110413_GRP
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=1354333840_20161130155709_GRP
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=1448849004_20150813164908_GRP
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=427029183_20200213134040_GRP
$

Ein Lauf des Skripts dauert in der Regel unter 1 Sekunde!

Wir haben das Skript unter AIX, Linux und MacOS getestet. Unter MacOS gibt es in der Regel keine ksh93. Dafür unterstützt aber die installierte ksh alle notwendigen Features die vom Skript mds_report benötigt werden. Tauscht man den Interpreter in der ersten Zeile des Skripts gegen ksh aus, dann läuft das Skript auch auf einem Mac.

Eine gute Beschreibung zu Inventory Scout und MDS findet man hier: http://gibsonnet.net/blog/cgaix/html/MDS%20reports.html (Chris Gibson)

Wie man Inventory Scout automatisieren kann, findet man in unserem Artikel Automatisierung von Inventory Scout

 

nmon_printer: schneller Blick in NMON-Dateien

Viele Administratoren setzen NMON zum Sammeln von Performance-Daten auf AIX-Systemen ein. Die gesammelten Daten können dann z.B. mit dem NMON-Analyzer graphisch visualisiert werden. Alternativ kann man natürlich auch njmon einsetzen. Manchmal möchte man einen schnellen Blick in eine NMON-Datei noch auf dem AIX-System werfen. Das geht natürlich mit grep, awk , und anderen Standard UNIX Utilities. Es muss aber immer erst die passende Kommandozeile überlegt und eingetippt werden und die Ausgabe ist dann auch nicht immer sehr übersichtlich.

Für einen solchen schnellen Blick in eine NMON-Datei haben wir in umserem Download Bereich das Skript nmon_printer zur Verfügung gestellt. Mit dem nmon_printer kann man zunächst einmal auflisten welche Daten grundsätzlich in der NMON-Datei gesammelt wurden:

$ nmon_printer -l aix01_200718.nmon
CPU_ALL -     CPU Total aix01
CPU01 -       CPU 1 aix01
CPU02 -       CPU 2 aix01
CPU03 -       CPU 3 aix01
CPU04 -       CPU 4 aix01
CPU05 -       CPU 5 aix01
CPU06 -       CPU 6 aix01
CPU07 -       CPU 7 aix01
CPU08 -       CPU 8 aix01
MEM -         Memory aix01
MEMNEW -      Memory New aix01
MEMUSE -      Memory Use aix01
PAGE -        Paging aix01
...
$

Zum Anzeigen der Datensätze gibt man neben dem NMON File noch den gewünschten darzustellenden Datensatz an, Groß- oder Klein-Schreibung spielt dabei keine Rolle. Hier eine Beispiel für CPU_ALL:

$ nmon_printer aix01_200718.nmon cpu_all
  CPU_ALL             Timestamp  User%  Sys%  Wait%  Idle%  Busy  PhysicalCPUs 
  CPU_ALL  00:05:15 17-JUL-2020    1.2   3.0    0.1   95.7   4.2              8
  CPU_ALL  00:10:15 17-JUL-2020    1.3   2.7    0.0   96.0   3.9              8
  CPU_ALL  00:15:15 17-JUL-2020    1.0   2.3    0.1   96.7   3.3              8
  CPU_ALL  00:20:16 17-JUL-2020    5.1   3.0    0.1   91.8   8.2              8
  CPU_ALL  00:25:16 17-JUL-2020    1.2   2.7    0.0   96.0   3.9              8
  CPU_ALL  00:30:16 17-JUL-2020    1.1  17.5    0.1   81.3  18.5              8
  CPU_ALL  00:35:16 17-JUL-2020    1.1   5.8    0.0   93.1   6.9              8
...
$

In manchen Fällen hat ein Datensatz soviel Felder, das die Zeilen umgebrochen werden und die Ausgabe dann etwas unübersichtlich wird. Der Datensatz LPAR hat z.B. 23 Felder! Für solche Fälle, oder falls man nur an bestimmten Feldern interessiert ist, kann man mit der Option ‚-f‚ die gewünschten Felder angeben. Dabei kann man entweder die gewünschten Felder durch Komma getrennt angeben:

$ nmon_printer -f 0,1,2,13,14,15 aix01_200718.nmon lpar
  LPAR             Timestamp  PhysicalCPU  EC_User%  EC_Sys%  EC_Wait%
  LPAR  00:05:15 17-JUL-2020        0.037      1.23     2.95      0.00
  LPAR  00:10:15 17-JUL-2020        0.034      1.28     2.66      0.00
  LPAR  00:15:15 17-JUL-2020        0.029      1.03     2.25      0.00
  LPAR  00:20:16 17-JUL-2020        0.064      5.14     3.01      0.00
  LPAR  00:25:16 17-JUL-2020        0.035      1.21     2.69      0.00
  LPAR  00:30:16 17-JUL-2020        0.150      1.08    17.46      0.02
  LPAR  00:35:16 17-JUL-2020        0.063      1.13     5.77      0.00
  LPAR  00:40:16 17-JUL-2020        0.030      1.13     2.24      0.00
  LPAR  00:45:16 17-JUL-2020        0.030      1.06     2.34      0.00
...
$

Oder man kann auch Bereiche angeben (z.B. 0-2 oder 13-15):

$ nmon_printer -f 1,5-7 aix01_200718.nmon ioadapt
             Timestamp  fcs1_read-KB/s  fcs1_write-KB/s  fcs1_xfer-tps
  00:05:15 17-JUL-2020             0.0             27.3            3.0
  00:10:15 17-JUL-2020             0.0              0.0            2.6
  00:15:15 17-JUL-2020             0.0             13.6            2.8
  00:20:16 17-JUL-2020             0.0             13.6            2.3
  00:25:16 17-JUL-2020             0.0             13.7            2.3
  00:30:16 17-JUL-2020            27.3           4982.5           89.4
  00:35:16 17-JUL-2020            13.7             27.3            4.1
  00:40:16 17-JUL-2020             0.0             13.6            2.6
  00:45:16 17-JUL-2020             0.0             13.6            2.6
...
$

Die Zählung der Felder beginnt jeweils bei 0.

AIX Lifecycle ermitteln

Wie oft haben Sie schon den Lifecycle (Start allgemeine Verfügbarkeit und Ende des Supports) für AIX, VIOS, PowerHA oder HMC über Google gesucht?

Diese Informationen lassen sich mit Hilfe des IBM FLRT APIs (https://www14.software.ibm.com/webapp/set2/flrt/sas?page=jsonapi) auch leicht über die Kommandozeile herausfinden. Dazu braucht man lediglich:

  • eine direkte Internet Anbindung oder Anbindung über einen HTTP Proxy
  • eine installierte Version von curl

Eine Übersicht sämtlicher AIX-Versionen bekommt man dann mit Hilfe des folgenden curl-Aufrufs:

$ curl "https://www14.software.ibm.com/support/customercare/flrt/liteTable?prodKey=aix&format=json"
{"results": [
{
"input": "7200-04-02",
"inputurl": "http://www.ibm.com/support/fixcentral/aix/quickorder?fixids=U887468&function=fixId&includeRequisites=1&includeSupersedes=0&release=7.2&source=flrt",
"ga": "2020.05.15",
"eosps": "2022.11.30"
},
{
"input": "7200-04-01",
"inputurl": "http://www.ibm.com/support/fixcentral/aix/quickorder?fixids=U886355&function=fixId&includeRequisites=1&includeSupersedes=0&release=7.2&source=flrt",
"ga": "2019.11.15",
"eosps": "2022.11.30"
},
...

Die Ausgabe erfolgt im JSON-Format und ist im Beispiel stark gekürzt.

Wir haben das ganze in ein kleines Shell-Skript verpackt (show_life_cycle) und in unserem Dowload-Bereich zur Verfügung gestellt (https://powercampus.de/download).

Hier ein Beispiellauf des Skriptes ohne Argumente:

$ show_life_cycle 
VERSION          GA          EOSPS       UPDATE           UPGRADE
7200-04-02       2020.05.15  2022.11.30  -                -
7200-04-01       2019.11.15  2022.11.30  -                -
7200-04-00       2019.11.15  2022.11.30  7200-04-01       -
7200-03-04       2020.02.14  2021.09.30  -                7200-04-01
7200-03-03       2019.05.10  2021.09.30  7200-03-04       7200-04-01 
7200-03-02       2018.11.16  2021.09.30  7200-03-04       7200-04-01
...

Es werden alle AIX Versionen aufgelistet. Über ein Argument können aber auch andere Produkte zur Darstellung ausgewählt werden, z.B. RHEL-Versionen, SLES-Versionen, VIOS-Versionen, HMC-Versionen, PowerHA-Versionen und sogar HMC-Modelle oder Power Systeme. Eine vollständige Liste findet man unter https://www14.software.ibm.com/webapp/set2/flrt/doc?page=prodTable. Hier als Beispiel eine Auflistung der RHEL-Versionen:

$ show_life_cycle rhel
VERSION          GA          EOSPS       UPDATE           UPGRADE
8.0              2019.05.07  NA          -                -
7.7              2019.08.06  NA          -                -
7.6              2018.10.30  NA          7.7              -
7.5              2018.04.10  NA          7.7              -
7.4              2017.07.31  NA          7.7              -
7.3              2016.11.03  NA          7.7              -
7.2              2015.11.19  NA          7.7              -
7.1              2015.03.05  NA          7.7              -
7.0              2014.06.10  2015.03.05  7.7              -
6.10             2018.06.19  NA          -                7.6
6.9              2017.03.21  NA          6.10             7.6
6.8              2016.05.10  NA          6.10             7.6
6.7              2015.07.22  NA          6.10             7.6
6.6              2014.10.14  NA          6.10             7.6
6.5              2013.11.21  2014.10.14  6.10             7.6
...

Die Ausgaben sind in einigen Fällen sehr lang. Über ein weiteres Argument kann man einen Prefix der gewünschten Versionen angeben, hier gezeigt am Beispiel von PowerHA 7.2.2:

$ show_life_cycle hacmp 7.2.2
VERSION          GA          EOSPS       UPDATE           UPGRADE
7.2.2.4          2020.05.28  2021.04.30  -                7.2.3.2
7.2.2.3          2019.09.13  2021.04.30  -                7.2.3.2
7.2.2.2          2018.11.30  2021.04.30  7.2.2.3          7.2.3.2
7.2.2.1          2018.06.29  2021.04.30  7.2.2.3          7.2.3.2
7.2.2            2017.12.15  2021.04.30  7.2.2.3          7.2.3.2
$

Ist nur eine Anbindung über einen Proxy verfügbar, dann gibt es die folgenden Möglichkeiten:

1. Der HTTP-Proxy wird über die Option ‚-p‚ angegeben, z.B.:

$ show_life_cycle -p http://10.0.0.3:8000 hmc V9
VERSION          GA          EOSPS       UPDATE           UPGRADE
V9 R1 M941       2020.05.22  2021.04.30  -                -
V9 R1 M940       2019.11.22  2021.04.30  -                -
V9 R1 M931       2019.09.11  2021.04.30  -                -
V9 R1 M930       2019.05.17  2021.04.30  V9 R1 M931       -
V9 R1 M921       2018.11.16  2021.04.30  V9 R1 M931       -
V9 R1 M920       2018.08.17  2021.04.30  V9 R1 M931       -
V9 R1 M911       2018.05.25  2021.04.30  V9 R1 M931       -
V9 R1 M910       2018.03.20  2021.04.30  V9 R1 M931       -
$

2. Der HTTP-Proxy wird direkt im Skript gesetzt, Shell-Variable PROXY:

$ grep ^PROXY show_life_cycle 
PROXY="http://10.0.0.3:8000"
$

3. Wird das Skript unter AIX als root ausgeführt, wird automatisch die Proxy Konfiguration des Electronic Service Agents (ESA) übernommen. Kann durch Verwenden der Kommandozeilen-Option ‚-p‚ oder Setzen der Variablen PROXY überschrieben werden.

Das Skript sollte auf jedem UNIX-System mit einer Korn-Shell laufen (auch MacOS). Damit ist die Suche über Google für Life-Cycle Daten nicht mehr erforderlich.

Zum Thema Inventory Scout haben wir neben einem Artikel Automatisierung von Inventory Scout ebenfalls ein Skript zum Download verfügbar!

SUMA Proxy-Konfiguration

Um SUMA mit Proxy zu konfigurieren gibt es im Web eine Reihe von Dokumenten. Einige der älteren Dokumente beschreiben noch die Konfiguration von Proxies über Attribute von SUMA:

# suma -c -a HTTP_PROXY=http://10.0.0.1:49000
0500-019 The -a flag entry HTTP_PROXY=http://10.0.0.1:49000 is not valid. (main, /usr/sbin/suma [767])
0500-009 An error occurred attempting to save configuration settings. (main, /usr/sbin/suma [768])
# suma -c -a HTTPS_PROXY=https://10.0.0.1:49000
0500-019 The -a flag entry HTTPS_PROXY=https://10.0.0.1:49000 is not valid. (main, /usr/sbin/suma [767])
0500-009 An error occurred attempting to save configuration settings. (main, /usr/sbin/suma [768])
# suma -c -a HELLO=world
0500-019 The -a flag entry HELLO=world is not valid. (main, /usr/sbin/suma [767])
0500-009 An error occurred attempting to save configuration settings. (main, /usr/sbin/suma [768])
#

Leider werden die Attribute HTTP_PROXY und HTTPS_PROXY von SUMA nicht mehr unterstützt. Dies ist auch in der Manual Page von SUMA dokumentiert!

# man suma
...
HTTP_PROXY and HTTPS_PROXY
     Proxy server and port to use for the HTTP or HTTPS transfers. The SUMA command shares
     the proxy connectivity settings with the Electronic Service Agent\u2122. The HTTP or HTTPS
     proxy service configuration can be set up through the SMIT Create/Change Service
     Configuration menus (use fastpath smitty srv_conn) that allow the server
     specifications such as IP address, port number, and an optional user ID and password.
     SUMA no longer supports the settings of the HTTP_PROXY and HTTPS_PROXY parameters.

Die Proxy Konfiguration wird von ESA (Electronic Service Agent) übernommen. D.h. aber auch das Proxies über ESA konfiguriert werden müssen. Hierzu muss das Fileset bos.ecc_client.rte installiert sein. Dieses sollte aber installiert sein, da es ein Prerequisite für bos.suma ist.

Konfiguriert werden, können die Proxies entweder mittels SMIT oder über die Kommandozeile. Wir zeigen zunächst die Variante über die Kommandozeile:

# /usr/ecc/bin/config_conn_path -c PRIMARY -y HTTP_PROXY -t YES -a 10.0.0.1 -x 49000
###########################################################

Testing HTTP Proxy Service Configuration

Performing HTTP Proxy Connectivity Test ... SUCCESS
#

Die IP-Adresse des Proxy wird mit der Option ‚–a‚ angegeben, die Port-Nummer mit der Option ‚–x‚. Wenn ein Benutzer zur Authentifizierung notwendig ist, kann dieser mit der Option ‚–u‚ angegeben werden (das Passwort wird interaktiv abgefragt). Die Option ‚–t YES‚ sorgt dafür, das unmittelbar ein Verbindungs-Test gemacht wird, der hier erfolgreich war.

Neben der primären Verbindung (PRIMARY), können optional auch noch eine sekundäre (SECONDARY) und tertiäre (TERTIARY) Verbindung konfiguriert werden. Die aktuelle Konfiguration, z.B. für die primäre Verbindung kann man sich wie folgt anschauen:

# /usr/ecc/bin/config_conn_path -d PRIMARY
#type:ttyport:modem_type:primary_location:secondary_location:prefix:host:port:userid
HTTP_PROXY::::::10.0.0.1:49000:
#

Das Schlüsselwort ‚PRIMARY‚ kann mit ‚p‚ abgekürzt werden.

Ein Verbindungs-Test kann jederzeit mittels Option ‚–t YES‚ oder ‚–t y‚ gestartet werden:

# /usr/ecc/bin/config_conn_path -c p -t y
###########################################################

Testing HTTP Proxy Service Configuration

Performing HTTP Proxy Connectivity Test ... SUCCESS
#

Alternativ kann man auch SMIT verwenden:

# smitty configure_primary
…
                       Create/Change Primary Service Configuration

Type or select values in entry fields.
Press Enter AFTER making all desired changes.


                                                        [Entry Fields]
  Connection type                                    [HTTP_Proxy]                     +
  Test service configuration                         [No]                             +

  If type is DIRECT_INTERNET, no entry required.

  If type is HTTP_PROXY,
          IP address                                 [10.0.0.1]
          Port number                                [49000]                            #
          Authentication user ID                     []
          Authentication password requested interact
  ively.


F1=Help               F2=Refresh            F3=Cancel             F4=List
F5=Reset              F6=Command            F7=Edit               F8=Image
F9=Shell              F10=Exit              Enter=Do

Ein kleiner Test zeigt, das SUMA mit den konfigurierten Proxies funktioniert:

# suma -x -a DisplayName=Test -a Action=Preview -a RqType=Latest
**************************************** (main, /usr/sbin/suma [990])
Performing preview download. (main, /usr/sbin/suma [991])
**************************************** (main, /usr/sbin/suma [992])
Partition id was unassigned; will attempt to assign it.
Partition id assigned value 6
Download SUCCEEDED: /export/nim/suma/installp/ppc/U861910.bff (main, /usr/sbin/suma [1048])
Download SUCCEEDED: /export/nim/suma/installp/ppc/U861907.bff (main, /usr/sbin/suma [1048])
Download SUCCEEDED: /export/nim/suma/installp/ppc/U861904.bff (main, /usr/sbin/suma [1048])
…
Total bytes of updates downloaded: 899671552 (main, /usr/sbin/suma [1048])
Summary: (main, /usr/sbin/suma [1048])
        367 downloaded (main, /usr/sbin/suma [1048])
        0 failed (main, /usr/sbin/suma [1048])
        34 skipped (main, /usr/sbin/suma [1048])
DEBUG: Closing file handles (SUMA::Messenger, /usr/suma/lib/SUMA/Messenger.pm [401])
#

AIX: Probleme mit Run-Time Linking

Vermutlich hat schon jeder einmal Probleme mit AIX und Run-Time Linking gehabt. Z.B. wenn ein Programm beim Aufruf mit dem folgenden Fehler abbricht:

$ progXY
exec(): 0509-036 Cannot load program progXY because of the following errors:
        0509-150   Dependent module libXXX.a(shr.o) could not be loaded.
        0509-022 Cannot load module libXXX.a(shr.o).
        0509-026 System error: A file or directory in the path name does not exist.
$

In unserem Artikel AIX und Run-Time Linking erklären wir die Abläufe beim Run-Time Linking, sowie mögliche Fehler. Wir zeigen wie man ausführbare Programme und Bibliotheken mit dem Kommando dump untersucht. Außerdem wird die Bedeutung der Variablen LIBPATH und LD_LIBRARY_PATH für das dynamische Linking erklärt.