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.