AIX at its best #3

3.) mksysb restore utan a diszkrol masik rendszer jon fel

Elorebocsatom, hogy lehet talalgatni, de sajnos nincs arra lehetoseg, hogy ujra lejatsszam az egeszet.

Bevezetes: IBM Virtual I/O Server

A VIO Server egy specialis AIX LPAR, a kovetkezo ismervekkel:

- A POWER hardverre lett kitalalva, elsosorban a fizikai I/O slotok szamanak csokkentesere
- Az I/O (SCSI, Ethernet, serial) "atfolyasat" vezerli a hardver (system firmware) es a kliens LPAR-ok kozott
- Birtokolja a fizikai PCI slotokat, es azokat a kliensek kozott elosztja
- A szerver-kliens kapcsolatot mindket oldalon azonos ID-val letrehozott virtualis adapterek biztositjak
- A VIOS alkalmas a sajat volume group-ok LV-it a kliensek fele fizikai diszkkent megjeleniteni, de akar a raw FC LUN-okat is 'tovabbithatja'
- A VIOS tud Ethernetet is virtualizalni 'shared Ethernet adapter' funkcio segitsegevel
- Ket vagy tobb VIO szerverrel teljesen redundanssa is teheto az FC LUN-ok kiszolgalasa (termeszetesen multipath driverek hasznalataval a kliensen)
- A VIO Server az egyik alapeleme a Live Partition Mobility-nak is, amivel fizikai hardverek kozt 'live' mozgathato egy LPAR
- A VIOS kepes image-eket virtualis SCSI CDROM-kent megjeleniteni
- A VIOS cmdline-ban egy restricted shell-ben dolgozunk egy dedikalt felhasznaloval (padmin), aki egy darab setuid binarist hasznal (ioscli), lenyegeben a szabvany AIX parancsok modositott valtozataival.

A problema

A muvelet: Van egy rendszer, ahol Virtual I/O Servert hasznalunk (magyarazat alabb), es itt van egy custom AIX 6.1 image is, amit DVD-re kiirni lassu/maceras lenne, ezert ezen a rendszeren kellene diszkre installalni az OS-t, majd a diszket egyszeruen bedugni a celgepbe, es bootolni.

Ezek voltak a lepesek:

- Letrehoztam a forras-hardveren egy LPAR-t:
-- 1 db VIO SCSI adapter, rajta 1 db virtual optical drive, ide lett betoltve a "gold image" mint CD
-- 1 db U320 SCSI adapter (3 HDD slot)
- Letrehoztam a celrendszeren egy LPAR-t:
-- 1 db U320 SCSI adapter (3 HDD slot)
-- 1 db 2port Gigabit Ethernet adapter
- A forrasrendszeren a firmware-bol kivalasztottam a SCSI CDROM-kent latszodo vSCSI drive-ot boot device-nak
- Az image-bol sikeresen visszatoltottem a custom AIX 6.1 rendszert a jelenlevo 1 db 146GB SCSI HDD-re
- A restore utan a rendszer automatikusan rebootolt, feljott az OS, bejelentkeztem es lenyomtam halt -q -val
- Lesetaltam a gepterembe, kivettem a diszket es atraktam a masik gepben levo (ures) SCSI adapter slotjaba
- A firmware-ol kivalasztottam az egy darab diszket, *es akkor jott a meglepetes*:

Select Boot Options > Select Install/Boot Device > Hard Drive > SCSI > Select Media Adapter ...
(Ilyenkor a firmware megkeresi a boot blokkokat az eszkozokon, szoval ha van mondjuk 8 db diszk, akkor nem ajalnlja fel azokat, amik nem bootolhatoak.)


PowerPC Firmware
Version SF240_332
SMS 1.6 (c) Copyright IBM Corp. 2000,2005 All rights reserved.
-------------------------------------------------------------------------------
Select Device
Device Current Device
Number Position Name
1. 1 SCSI 146814 MB Harddisk, part=2 (AIX 5.3.0)
( loc=U7879.001.xxxxxxx-P1-T12-L5-L0 )

5.3, wow... Lehet, hogy csak benezett valamit a regi firmware? ;-) Lassuk, mi jon fel a diszkrol:


-------------------------------------------------------------------------------
Welcome to AIX.
boot image timestamp: 17:42 06/25
The current time and date: 12:54:02 02/16/2010
number of processors: 4 size of memory: 6144MB
boot device: /pci@80000002000000c/pci@2,2/pci1069,b166@1/scsi@0/sd@5,0
kernel size: 15075191; 64 bit kernel
-------------------------------------------------------------------------------

o_O, ez tenyleg egy 5.3... (a kernel merete 6.1-en joval nagyobb, es ott csak 64 bites kernel van, ld alabb)

Mikor feljott az OS, latszott, hogy ez valami regebbi rendszer maradvanya, de sajnos az altalam ismert root jelszavak egyike sem mukodott, igy nem tudtam belepni es korulnezni sem.

- A diszket visszatettem a forrasgepbe, de ott is 5.3 jott fel rola.

Az elso gondolatom az volt, hogy talan megis egy masik 146 GB-os diszket sikerult felulirni a restore soran, vagy esetleg masik diszket bootolni valamelyik gepen, de a kovetkezo megallapitasok ez ellen szoltak:

- mindket LPAR 1-1 SCSI adaptert kapott
- egyik SCSI adapteren sem volt semmi mas az enclosure-ban
- ellenoriztem tobbfele modszerrel is, hogy a megfelelo diszkrol van-e szo (PCI slot LED, diszk kihuzasa utan boot device-ok a firmware-ben, rabootolva 6.1-ben sorozatszam ellenorzese stb)
- ez volt mindket oldalon az egyetlen diszk, ami nem parban volt

Ezek utan a muveleteket pontosan ugyanigy megismetelve sikerrel jartam, es a celrendszeren az LPAR-on elindult a 6.1 image:


-------------------------------------------------------------------------------
Welcome to AIX.
boot image timestamp: 13:29 02/16
The current time and date: 13:53:37 02/16/2010
processor count: 4; memory size: 6144MB; kernel size: 25705772
boot device: /pci@80000002000000c/pci@2,2/pci1069,b166@1/scsi@0/sd@5,0
-------------------------------------------------------------------------------

Konkluzio

Nem tudok masra gondolni, mint hogy valahogyan a celgep firmware-e megtalalt egy masik, felul nem irt boot image-et (lasd az 5.3-as kernel banner-nel a boot image timestamp-et, ami tavaly juniusi bosboot-ra utal), de hogy az ahhoz tartozo LV-k es a teljes rendszer hogyan maradhatott sertetlen, nincs logikus magyarazat... Mindenesetre a diszket nezegetve elokerultek a regi rendszer nyomai. Most eppen a "hogyan deritsuk ki a masik diszken levo rendszer hostname-et" temanal tartok. ;-)

ps. A nyomorult code tag-en belul miert rendezodik balra a szoveg?

Hozzászólások

> Most eppen a "hogyan deritsuk ki a masik diszken levo rendszer hostname-et" temanal tartok. ;-)

strings /dev/hdisk0 | grep "\\\"AIX"

;-)

Erre elojon egy csomo szemet, ami kozott nehany binaris log (pl. /etc/lpp/diagnostics/data/diagServiceEvent.dat) jo szerencsevel tartalmazza a hostnevet is a fenti string elott.

Esetleg megpróbálhatod behozni 1 működő AIX alá annak az ODM file-jait ( /etc/objrepos, /usr/lib/objrepos ), export-al átnyomni az ODMDIR-t és elkezdeni odmget-el turkálni benne :) Ha vársz holnapig, akkor sztem azt is megmondom pontosan melyik ODM file-ban és milyen néven találod meg ( shame on me, de fejből nemtom :))

Amúgy más magyarázatot hírtelen én se tudok erre, mint hogy vmiért a telepítő nem teljesen írta felül a hd5öt, vagy egy alternatív helyen talált még 1 bootolható image-et, és onnan betöltötte a régit.. De majd ennek sztem még holnap utánajárok, mert emlékeim szerint bosboot-nál a teljes hd5 felül kéne íródjon a boot blockokal egyetemben, máshonnét meg nem nagyon kéne neki bootolgatnia.. szal még lehet ez is megér egy misét :)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

> Esetleg megpróbálhatod behozni 1 működő AIX alá annak az ODM file-jait

A regi LPAR LVM-je felul lett irva, onnan file-t mar bajosan szedek ki. Arra gondoltam meg, hogy dd-vel mondjuk GB-onkent seekelgetve, eloszor csak grep -c vagy hasonlo 'igen/nem' modszerrel nagyjabol meg lehetne keresni az erdekes string poziciojat a regi teruleten, aztan a megfelelo darabbol hex editorral visszaallitani a file-t. Bar a rootpw-t megtalalni nem volt nehez ;-)

Mivel inet0 attributuma a hostname, szerintem CuAt-ben lesz. De mivel strings-zel grep -p nem jatszik, ezert...

Tudod, az volt a meredek, hogy az elso install utan 'helyben' *feljott* a 6.1-es rendszer, es be is leptem a halt miatt... Ha ez nem lett volna, azt mondanam, hogy siman elbukott a restore.

Meg nem zartam be a terminalokat es jo nagy scrollbacket hasznalok, szoval az egesz kimenete megvan meg...

ps. A multkorira nem nyitottam meg PMR-t, mert 1000 mas dolgom van.

Jah.. bocs.. azt hittem új diskre csináltad az egészet, és ez még megvan :)

Amúgy igen, CuAt a nyerő:
odmget -q attribute="hostname" CuAt

A másik kapcsán majd még igérem elkezdek kutakodni, de most épp egy másik problémával sikerült szembesülnöm:

# kdb
(0)> status
CPU     TID  TSLOT     PID  PSLOT  PROC_NAME
  0   213091    531   B00FE    176  kdb_64
  1    10021     16    D01A     13  wait
  2   1350FD    309   B6028    182  last
  3    AC067    172   4E0AA     78  tecad_logfile

(0)> hcal D01A
Value hexa: 0000D01A          Value decimal: 53274
(0)> q
# ps -fp 53274
     UID    PID   PPID   C    STIME    TTY  TIME CMD
    root  53274      0   0   Nov 28      - 58085:00 wait
# ps -ef |grep 53274
    root 942296 503930   0 15:00:25  pts/3  0:00 grep 53274
# ls -ld /proc/53274
dr-xr-xr-x    1 root     system            0 Feb 19 15:08 /proc/53274

Aki megmondja ez hogy jutott le 0ás szintre annak fizetek egy sört :))
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Nem ertem. Az a meglepo, hogy kernel processek parent-je a swapper?


# ps -k -o ppid=,comm=
0 swapper
0 wait
0 sched
0 lrud
0 vmptacrt
0 psmd
0 vmmd
0 memgrdd
0
0 pilegc
0 xmgc
0 wait
0 wait
0 wait
0 netm
0 gil
0 wlmsched
0 armtrace_kproc
0 n4bg
0 j2pg
0 memp_rbd
1 ldmp_process
0 lvmbb
0 dog
1 aioPpool
1 aioLpool
1 hea_kproc
0 kbiod
0 rtcmd
0 rgsr
0 rdpgc
0 nfsSM
1 random
1 rpc.lockd

Pedig tudtommal ez minden Unixon igy van.

szerk. nem, Linux-2.6.32-n a kthreadd (pid=2) a parent ('pstree 2'), itt a procfs-ben nem is szerepel a PID 0, igy nem is lehet rola informaciot szerezni az erre alapozo programokkal.

BSD-n viszont (OpenBSD 'ps' nem eszi az 'args' alias-t, de kimenetet azert produkal):


$ ps -axko ppid=,args=
ps: args: illegal keyword specification
COMMAND
0 (pagedaemon)
0 (reaper)
0 (cleaner)
0 (update)
0 (aiodoned)
0 (crypto)
0 (swapper)
0 /sbin/init
0 (kmthread)
0 (idle0)
0 (syswq)
0 (acpi0)
0 (usb0)
0 (usbtask)
0 (pfpurge)

Az a meglepő, hogy az ott egy zombie process, csak vhogy eltűnt a normál képből, és így jelentkezik :) egyedül kdb alatt lehet látni normálisan.. Plusz nézd meg mennyi ideje fut :)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Na szóval.. Kicsit utánanéztem ennek a játéknak :)

Kis háttérinfó:
For hard disk boot images, the boot record is separated from the remaining boot image. The boot record resides in the first 512 bytes. On a hard disk, the remaining boot image is in a logical volume. This logical volume, which by default is named "hd5" by the BOS install process, usually occupies the first one or two logical partitions on the edge of the hard disk. /dev/ipldevice is a special device character file, that is linked to the character special device file where hd5 resides.

Here is an example:
# ls -al /dev/ipldevice
crw------- 2 root system 22, 0 /dev/ipldevice
# ls -al /dev/rhdisk0
crw------- 2 root system 22, 0 /dev/rhdisk0

Notice how both share the same major and minor numbers. When you run the command, "bosboot -a", it creates a boot image on the hard drive where hd5 resides. It determines what hdisk that is by checking the /dev/ipldevice file. The drive that has the same major/minor device number as /dev/ipldevice is where the hd5 should reside, and that is
where the boot image gets created. Once bosboot is run, it creates a boot file (boot image) from a RAM disk file system and a kernel. This boot image is transferred to a particular media that the ROS boot code recognizes. When the machine is powered on or rebooted, the ROS boot code loads the boot image from the media into memory. ROS then transfers control to the loaded images kernel. The bosboot command requires that the specified physical disk contain the boot logical volume, hd5.

És akkor innen jön az elmélkedés:
################################
Na most ezek után nekem az 1etlen elképzelésem, hogy a /dev/ipldevice alapból nem jött fel normálisan, vagy fel se íródott,esetleg a savebase deglett el elötte, így a ROS meg betöltötte amit 1x talált. Aztán amikor bejött az 5.3 akkor észrevette, hogy xar van a palacsintában, és a bootinfo -b alapján gyorsan rálinkelte a megfelelő diskre. De ez tényleg már csak filozofálgatás.. Ahhoz, hogy tényleg meg lehessen mondani jó lenne mondjuk egy conslog kimenet, vagy a szegény diszkről az ODM ( a savebase-es eshetőségre való tekintettel ), de félek ez már nehézkes így utólag :s

____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..