POWER LPAR konfiguracio ujratervezese - SPT nelkul

 ( LGee | 2010. április 30., péntek - 17:19 )

Adott egy particionalt POWER hardver, amit egy masikra kell egy az egyben atkoltoztetni.
Normalis esetben lehetne hasznalni ehhez a System Planning Tool nevezetu csodalatos IBM Java blobot.

Itt viszont sajnos nem tudjuk egy az egyben felhasznalni a meglevo konfiguraciot, pedig az lenne a legegyszerubb. Azonban az uj gepben szinte minden megvaltozik, igy csak ezek az adatok mehetnek egy az egyben:

- LPAR name, profile name
- memoria*
- CPU*
- inditasi parameterek

* azonos orajelu es kategoriaju az uj es a regi gep, valamint marad a workload is

Ami erdekesebb, az a slotok kiosztasa.

A POWER hypervisor (system firmware) es a HMC a slotokat az ugynevezett DRC index alapjan tartja szamon, aminek szerencsere megvan a rendes location code (drawer/slot) alapu megfeleltetese is.

A lepesek a kovetkezok:

1.) Meglevo, atviheto parameterek kigyujtese
2.) Regi I/O map elkeszitese
3.) Uj I/O map elkeszitese 'one by one' alapon
4.) Input file elkeszitese
5.) Virtual I/O

A gyakorlati kivitelezes

Mindent a HMC-n kell csinalni, ami egy modositott SLES10 es egy restricted bash shell, benne nehany alapveto szovegszerkeszto utility (sed, rnvi stb), es nincs script-futtatasi lehetoseg, se kimenet-atiranyitas. Ez kulon kihivast jelent a munkaban. ;-)

Elso korben erdemes letakaritani a nem hasznalt profilokat, illetve valamilyen uton-modon osszevetni a HMC altal ismert, illetve az OS-ben megjeleno parametereket (memoria, CPU, slot).

1.) Atviheto parameterek

- Szedjuk le az eredeti konfigot a kovetkezo parancsokkal a HMC-rol:

# lssyscfg -r prof -m System_Name

Ebbol kapunk egy nagy, vesszokkel tagolt listat, ehhez hasonlokkal:

name=default_profile,lpar_name=nginxtest,\
lpar_id=5,lpar_env=aixlinux,all_resources=0,min_mem=4096,desired_mem=12288,max_mem=24576,\
min_num_huge_pages=0,desired_num_huge_pages=0,max_num_huge_pages=0,proc_mode=shared,\
min_proc_units=2.0,desired_proc_units=4.0,max_proc_units=8.0,min_procs=4,desired_procs=8,max_procs=16,\
sharing_mode=uncap,uncap_weight=128,shared_proc_pool_id=0,shared_proc_pool_name=DefaultPool,\
"io_slots=21040020/none/1,21010011/none/1,21020033/none/1,21020055/none/1",\
lpar_io_pool_ids=none,max_virtual_slots=10,"virtual_serial_adapters=\
0/server/1/any//any/1,1/server/1/any//any/1",virtual_scsi_adapters=none,virtual_eth_adapters=none,\
hca_adapters=none,boot_mode=norm,conn_monitoring=0,auto_start=0,power_ctrl_lpar_ids=none,work_group_id=0,\
redundant_err_path_reporting=0,bsr_arrays=0,lpar_proc_compat_mode=default,electronic_err_reporting=null,\
virtual_fc_adapters=none

Ha a fentieket a -F --header kapcsolokkal hivjuk, csak az ertekek szerepelnek a listaban:

# lssyscfg -r prof -m System_Name -F --header

default_profile,nginxtest,5,aixlinux,0,4096,12288,24576,0,0,0,shared,2.0,4.0,8.0,4,8,16,uncap,\
128,0,DefaultPool,"21040020/none/1,21010011/none/1,21020033/none/1,21020055/none/1",none,0,0,0,0,0,10,\
"0/server/1/any//any/1,1/server/1/any//any/1",none,none,0,0,none,norm,0,0,none,null,0,0,0,default,null,none

Hogy megis a fenti formatum a hasznosabb, arra kesobb derul feny.

A -F utan megadott parameterekkel ki kell valogatni azokat, amelyek valoban szuksegesek az uj particiok letrehozasahoz:

# lssyscfg -r prof -m System_Name -F name,lpar_name,lpar_env,min_mem,desired_mem,max_mem,\
proc_mode,min_proc_units,desired_proc_units,max_proc_units,min_procs,desired_procs,max_procs,sharing_mode,\
uncap_weight,max_virtual_slots,conn_monitoring,redundant_err_path_reporting

Ebbol lesz egy csinos lista a szukseges alapadatokkal, de mint mondottam, ez a konnyebbik resze.

2.) Regi I/O map

Az OS-ek, illetve az emberek a location code alapjan tartjak szamon az I/O-t, igy a profilokban tarolt 'DRC index' szamokat at kell konvertalni 'DRC name' formatumra.

# lssyscfg -r prof -m System_Name -F lpar_name\ lpar_env | grep aixlinux | \
while read lpar_name aixlinux; do lshwres -m System_Name -r io --rsubtype slot \
-F lpar_name\ drc_index\ drc_name | grep $lpar_name; done

Az elso fele lehetoseget nyujt az 'aixlinux' tipusu (nem VIO server/OS400) particiok kivalasztasara. majd a while-lal generalt hostname-eket egyesevel atadva az lshwres-nek, kivalasztjuk a megfelelo oszlopokat (-F utani parameterek). Sajnos az lshwres a ciklus miatt minden alkalommal lefut az osszes slotra, de igy is eleg hamar, masodpercek alatt megvan a lista.

Igy a kimenet ilyesmi lesz:

host1 2101001B Uxxxx.001.5557777-CB1-C06 "SCSI bus controller"
host1 2103001C Uxxxx.001.2626222-CB1-C03 "4 GB Single-Port Fibre Channel PCI-X 2.0 DDR Adapter"
host1 21030011 Uxxxx.001.1816861-CB1-C08 "Ethernet controller"
host1 21050053 Uxxxx.002.6766772-CB1-C15 "4 GB Single-Port Fibre Channel PCI-X 2.0 DDR Adapter"
host2 2101001C Uxxxx.001.1117777-CB1-C01 "SCSI bus controller"
host2 21030015 Uxxxx.001.0101010-CB1-C08 "4 GB Single-Port Fibre Channel PCI-X 2.0 DDR Adapter"
host2 21020011 Uxxxx.001.1188888-CB1-C07 "Ethernet controller"
host2 21020012 Uxxxx.001.8881818-CB1-C02 "4 GB Single-Port Fibre Channel PCI-X 2.0 DDR Adapter"
...

Az oszlopok itt:

- lpar_name = az LPAR neve
- drc_index = a 'bus index', amit az LPAR/profil legyartasahoz hasznalunk
- Uxxxx.001 = drawer tipusanak azonositoja
- XXXXXXX-Cxx-Cyy = location code: drawer-bus-slot
- "whatever" = az eszkoz leirasa

Tehat itt mar pontosan tudjuk, melyik slotban mi lakik.

3.) Uj I/O map

Gyakorlati okoknal fogva itt szukseg van egy kis manualis munkara. Jelen esetben az is valtozast jelent, hogy a 'tabula rasa' miatt at kell gondolni az adapterek vegleges helyet is.

A dolog pofonegyszeru; az elozo pontban hasznalt 'lshwres' segitsegevel le kell kerdezni az uj rendszer I/O slotjait, es tablazatszeruen kiosztani az uj hostoknak. Persze kezdetben az LPAR nevek helyen 'null' fog szerepelni.

4.) Az egesz egyben

Az LPAR-ok legyartasahoz egy, az alabbi formatumu file szukseges:

parameter1=value1,parameter2=value2...

Ebben tetszoleges szamu sor lehet.

Gondolom, nem meglepo, hogy itt a feladat csupan annyi, hogy megcsinaljuk a sorokat az orokolt parameterekkel, es kezzel kiegeszitjuk az egyes LPAR-okhoz rendelt I/O slotok 'drc_index' szamaival.

Erdemes az egeszet atnezni, ugyelve pl. arra, hogy a max/min CPU/RAM ertekek kelloen rugalmasak legyenek.

Vegul a kovetkezo paranccsal az egeszet egyetlen Enter lenyomasaval letrehozzuk:

mksyscfg -r lpar -m SystemName -f sysplan_aix.txt

5.) VIO Server

Az egeszbol egy (?) igen lenyeges momentum kimaradt, az pedig a Virtual I/O tervezese.

Ez teljesen kulon tortenik, ugyanis a VIO Server es a kliensek konfiguraciojat egyetlen dolog, a virtual SCSI/virtual Ethernet adapterek szamozasa koti ossze, ami egy 'illekony' dolog.

A migraciot a VIO-val kell kezdeni, es miutan ezeken osszeallt a kliens I/O setup, el lehet kezdeni a virtualis adapterek ujradefinialasat. Ez eleg kis idot vesz igenybe ahhoz, hogy ne legyen erdemes foglalkozni azzal, vajon a virtual adapterek eredeti szamozasa megmarad-e, egyszerubb ujra legyartani az egeszet.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Bocsi kicsit off, de ha már vSCSI, N_port Id Virtualizációt (NPIV) tervez/használ valaki komolyabb terheléssel?

En egyelore nem, de ami kesik, nem mulik ;-)

VIO SCSI adapterek tomeges hozzaadasa a kliensekhez

A setup: redundans VIO szerver, az elson 1xx. a masodikon 2xx a szerver es a kliens adapter szama is, ahol XX az LPAR ID 2 szamjegyre kerekitve. Azert kell a sed-es bohockodas, mert kulonben az 5-os LPAR ID-hez az 1. VIO szerveren a 105-os helyett a 15-os virtual adapter ID kerulne.

lssyscfg -r lpar -m ServerName -F name\ lpar_id\ lpar_env | \
grep aixlinux | sed 's/ \([[:digit:]]\) / 0\1 /g' | \
    while read lparname lparid boo
    do
      chsyscfg -r prof -m ServerName -i 
       "name=normal,lpar_name=$lparname,max_virtual_slots=800,\
       virtual_scsi_adapters=\"1$lparid/client/11/vio-1/1$lparid/0,2$lparid/client/12/vio-2/2$lparid/0\""\ 
done

A bash hajlamos a !d helyett az utolso d betus parancsot behelyettesiteni, igy a

sed '/aixlinux/!d;s/ \([[:digit:]]\) / 0\1 /g'

formatum nem jatszik.

Mellesleg az egesz muvelet remekul lezajlott 25 LPAR-ral es kb 100 PCI adapterrel.
Az LPAR-ok letrehozasa (mksyscfg) kb. 3,5 perc volt, az osszes adaptere (chsyscfg) kb 2,5 perc.

A legtobb ido a kereszt-ellenorzesekkel telt el.