Parent Category: главный раздел
Category: AIX
Hits: 4319

NIM. Как начать


Начнем с определения: NIM в AIX - это программный продукт, позволяющий управлять сетевой установкой Base Operating System (BOS, или по-просту самой OS AIX) и дополнительного софта на одном или нескольких клиентах. NIM поставляется вместе с AIX, покупать или лицензировать что-либо дополнительно не требуется.

Пока определений больше не будет, они будут появляться по мере развертывания NIM.

Создание среды:

Среда NIM включает в себя серверы и клиентские машины. Сервер предоставляет ресурсы -- программы и файлы для установки. Клиент эти ресурсы использует.

Сервером (правильнее будет говорить "сервером ресурсов") может быть любая машина среды.

Это тот случай, когда любой клиент одновременно может быть сервером для других клиентов.

Одна машина в среде особенная - она называется master. Это и есть наш NIM. Он является лишь управлятором процесса установки  неких ресурсов с некоего сервера на неких клиентов. То есть хранить файлы дистрибутива AIX вы можете на на одной машине, ставить AIX на другую машину, а управлять процессом с третьей (она-то и есть NIM master).

Обычно среда NIM довольно проста: Сам master является сервером всех ресурсов, а все остальные машины - всего лишь клиенты. На картинке ниже изображено, почему иногда выгодно на клиентских машинах иметь ресурсы для установки, то есть делать их серверами ресурсов.

 

Например, LPAR3 является не только клиентом MASTER'a, но и сервером ресурсов. Предполагается, что когда на мастере инициируют установку на LPAR1 или LPAR2, ресурсы лучше всего брать с LPAR3, а не с самого MASTER, так как виртуальная сеть внутри большой машины, очевидно, быстрее.
А вот и основные ресурсы:

Описание ресурсов:

MACHINE:  это одна из машин среды ним. Как видите, каждая машина должна регистрироваться как ресурс на NIM master. Собственно сам master - такой же ресурс, зарегистрированный сам на себе =). Бывает несколько типов ресурса MACHINE. Нам понадобятся только 2 из них:
- master
- standalone (именно такими и будут все остальные машины)
Остальные относятся к бездисковым системам, чье применение здесь сомнительно.

NETWORK: у NIM master может быть несколько сетевых адапретов, подключеных к разным broadcast доменам. Каждая сеть - ресурс NETWORK - должна быть определена в конфигурации master'a.

BOOT:  то, с чего начинается загрузка клиента для установки на него AIX. Создавать этот ресурс не нужно. Он делается автоматически в каталоге /tftpboot для каждого клиента на время установки. Клиент по простейшему протоколу bootp запрашивает имя этого файла => NIM его сообщает => клиент выкачивает файл по tftp и грузится с него. Фактически внутри находится ядро AIX и программа его распаковки в RAM.

SPOT:  Shared Product Object Tree. Это маленьких /usr. Тут все необходимые для процесса установки программы. При установке AIX нужно будет создавать rootvg и логические тома в ней, создавать и проверять файловые системы и еще много всего.
Этот /usr самодостаточен и в сочетании с BOOT превращается в своего рода miniAIX в оперативной памяти.
После загрузки из BOOT, клиент монтирует SPOT по NFS (NFS kernel extentions в BOOT присутствуют).
SPOT можно создать из LPP_SOURCE или MKSYSB.

LPP_SOURCE: это пакеты для установки - любые пакеты, которые можно установить в AIX в любом количестве. В нашем случае (напомню, мы пока ставим сам AIX) нужен весь bos - base operating system, то есть все пакеты с диска-дистрибутива.

MKSYSB: системный backup AIX в формате файла (делается командой mksysb)

На NIM бывает еще много ресурсов, но, дабы не усложнять, ограничимся пока этими.



-------------------------------------
СОЗДАНИЕ NIM Master:
-------------------------------------

Для создания master'а нам прежде всего понадобится свежий только_что_установленный AIX. Самый свежий, какой вы можете себе позволить установить. Дело в том, что таковы требования к NIM master - он должен быть новее любого своего клиента.
Вот он, моргает курсором:

#

а вот он же, после установки ssh и bash (это же AIX)):

{nim} / # oslevel -s
7100-01-05-1228
{nim} / #


Далее, с дистрибутива AIX (с первого диска) нужно установить пакет bos.sysmgt.nim.master  

через SMIT




или командой

installp -agXd /dev/cd0 bos.sysmgt.nim.master

где cd0 - дисковод с первым диском дистрибутива AIX.
Проверим после установки:


{nim} / # lslpp -l | grep nim bos.sysmgt.nim.client 7.1.1.16 COMMITTED Network Install Manager -
bos.sysmgt.nim.master 7.1.1.16 COMMITTED Network Install Manager -
bos.sysmgt.nim.spot 7.1.1.15 COMMITTED Network Install Manager - SPOT
bos.sysmgt.nim.client 7.1.1.16 COMMITTED Network Install Manager -

Я немного слукавил здесь. На самом деле, чтобы пакеты NIM тоже были самыми свежими, как и AIX, я сначала установил их, а потом обновил ось до версии 7100-01-05-1228.

Итак, мы поставили свежий AIX [, поднастроили поудобнее], поставили пакет bos.sysmgt.nim.master - и пока больше ничего не делали. Дальше нужно инициализировать среду NIM. Для этого есть 2 пути: относительно длинный и ручной; и короткий автоматический. Ясное дело, короткий путь заманчивее, но для красоты опишу оба. В обоих случаях мы получим настроенный NIM master, готовый к установке на клиент системного бекапа или дистрибутива AIX.

Предполагается, что наш NIM master одновременно и resource server, то есть все ресурсы для установки лежать будут на нем. Сеть настроена на интерфейсе en0. Имена в сети резолвятся через /etc/hosts (это стронгли рекомендед). Заставить машину использовать локальный резолв  хостов можно несколькими способами (перечислены по силе действия от самого сильного):

 

Итак...
************************************************
СПОСОБ 1. Он же длинный, чтобы сохранить интригу.

************************************************

Поскольку ресурсы, отдаваемые NIM'ом, будут много весить и доставляться клиентам по TFTP (trivial FTP) и NFS, то удобно создать отдельные файловые системы под все виды ресурсов.

ШАГ 1.

{nim} / # crfs -v jfs2 -g rootvg -a size=64M -m /tftpboot -A yes -p rw -a logname=INLINE
{nim} / # crfs -v jfs2 -g rootvg -a size=4G -m /export/lpp_source -A yes -p rw -a logname=INLINE
{nim} / # crfs -v jfs2 -g rootvg -a size=1G -m /export/spot -A yes -p rw -a logname=INLINE
{nim} / # crfs -v jfs2 -g rootvg -a size=6G -m /export/images -A yes -p rw -a logname=INLINE


Пути /tftpboot и /export стандартны для NIM. Есть несколько команд конфигурирования, которые без спроса используют именно эти пути. Одна из них нам понадобится прямо сейчас (все же не хочется идти по самому длинному пути и делать ну вообще все вручную).
Это nimconfig - она создает несколько первых объектов среды NIM:


ШАГ 2.

{nim} / # nimconfig -a netname=net_192_168_1 -a pif_name=en0 -a netboot_kernel=mp -a cable_type=tp -a client_reg=no
0513-071 The nimesis Subsystem has been added.
0513-071 The nimd Subsystem has been added.
0513-059 The nimesis Subsystem has been started. Subsystem PID is 10944750.
{nim} / #


Или через SMIT - smit nimconfig:


Убедиться в том, что объекты появились, можно командой lsnim - она показывает все, что создавалось в NIM. Посмотреть конкретный объект - ключ -l:

{nim} / # lsnim
master                 machines        master
boot                   resources       boot
nim_script             resources       nim_script
net_192_168_1          networks        ent
{nim} / #
{nim} / # lsnim -l nim_script
nim_script:
class       = resources
type        = nim_script
comments    = directory containing customization scripts created by NIM
Rstate      = ready for use
location    = /export/nim/scripts
alloc_count = 0
server      = master
reserved    = yes
{nim} / #


ШАГ 3.
Далее в файлах  /etc/inetd.conf и /etc/services находим строки, относящиеся к bootp и tftp и раскомментариваем их если необходимо. По умолчанию inetd не запускает эти сервисы.

{nim} / # egrep -w 'bootps|tftp' /etc/inetd.conf #bootps  dgram   udp     wait    root    /usr/sbin/bootpd   bootpd /etc/bootptab
#tftp    dgram   udp6    SRC     nobody  /usr/sbin/tftpd    tftpd -n
{nim} / #
{nim} / # egrep -w 'bootps|tftp' /etc/services
bootps                  67/tcp         # Bootstrap Protocol Server
bootps                  67/udp         # Bootstrap Protocol Server
tftp                    69/udp         # Trivial File Transfer
tftp                    69/tcp         # Trivial File Transfer
............Cropped............
{nim} / #


В моем случае раскомментарить bootps и tftp пришлось только в файле /etc/inetd.conf
Убрав # в ненужных местах, сохраняем файлы и рестартуем inetd

{nim} / # refresh -s inetd
0513-095 The request for subsystem refresh was completed successfully.
{nim} / #


Убеждаемся, что они запустились

{nim} / # lssrc -ls inetd | egrep 'bootps|tftp'
bootps    /usr/sbin/bootpd        bootpd /etc/bootptab     active
tftp      /usr/sbin/tftpd         tftpd -n                 active
{nim} / #


Еще один момент, связанный с tftp. Поскольку этот протокол не предусматривает никакой аутентификации, то, безопасности ради и красоты для, ограничим его только файловой системой  /tftpboot, написав в файл /etc/tftpaccess.ctl соответствующую строчку. Это не обязательно, но правильно. Должно быть так:

{nim} / # cat /etc/tftpaccess.ctl
#NIM access for network boot
allow:/tftpboot
{nim} / #


Если такого файла нет вообще, то создайте его.
Вообще, про эти сервисы и про то как их дебажить написано в этой книжке с страницы 66

Коль скоро NIM нам нужен для установок, а не "чтобы было"; нужно создать несколько ресурсов для установки. Для начала (первой статьи, которая и так далась не легко) ставить будем AIX, причем двумя способами - из системного бэкапа и из дистрибутива.

ШАГ 4.

Для установки потребуется как минимум (см. "Описание ресурсов" сверху):


LPP_SOURCE
lpp_source можно сделать из дисков дистрибутива или из каталога, куда скопированы файлы дистрибутива:

{nim} / # nim -o define -t lpp_source -a server=master -a location=/export/lpp_source/lpp71_00_01 -a source=/dev/cd0 lpp71_00_01
Preparing to copy install images (this will take several minutes)...
/export/lpp_source/lpp5300/sysmgtlib.libraries.apps.5.3.0.40.U
. . .
Now checking for missing install images...
All required install images have been found. This lpp_source is now ready.


/dev/cd0                                            где взять
server=master                                   кто будет resource server'ом
/export/lpp_source/lpp71_00_01      куда положить на выбранном server
lpp71_00_01                                    как назвать

или через SMIT

smit nim -> Perform NIM Administration Tasks -> Manage Resources -> Define a Resource -> lpp_source
или просто smit nim_mkres -> lpp_source


 

Теперь у нас есть новый ресурс:

{nim} / # lsnim -l lpp71_00_01
lpp_71_00_01:
class       = resources
type        = lpp_source
arch        = power
Rstate      = ready for use
prev_state  = ready for use
location    = /export/lpp_source/lpp71_00_01
simages     = yes
alloc_count = 18
server      = master
{nim} / #

SPOT можно (и нужно) сделать из него:

{nim} / # nim -o define -t spot -a server=master -a location=/export/spot -a source=lpp71_00_01 -a installp_flags=-aQg spot71_00_01_rte
Creating SPOT in "/export/spot" on machine "master" from "lpp71_00_01" ...
Restoring files from BOS image. This may take several minutes ...
Installing filesets ...
..............cropped.............
{nim} / #

 

или smit nim_mkres -> spot

 

 

rte установку (из дистрибутива) уже можно делать, используя lpp71_00_01 и spot71_00_01_rte
MKSYSB
Для ресурса mksysb понадобится системный бэкап сделаный на понравившемся вам AIX командой mksysb в файл. Именно в файл, а не в iso, например. Далее регистрируем его в NIM master:
{nim} / # nim -o define -t mksysb -a server=master -a location=/resources/images/mk71_00_01 mk71_00_01
/resources/images/mk71_00_01      место расположения на server
mk71_00_01                                   как назвать ресурс (в lsnim будет так отображаться)
или smit nim_mkres -> mksysb
обратите внимание, что в отличие от создания lpp_source, здесь не нужно указывать источник (source). Сам location - это уже скопированный в это место файл mksysb.
Есть и другой вариант, когда mksysb создается на NIM непосредственным резервным копированием одного из клиентов, но этим мы займемся в другой раз.
SPOT должен соответствовать версии AIX, которая будет разворачиваться на клиенте из lpp_source или mksysb. Поэтому для нашего mk71_00_01 нужно сделать свой SPOT с блэкджеком и танцовщицами:
для разнообразия через smit
smit nim_mkres -> spot
Вооот. Теперь у нас есть два варианта установки клиентов - rte и mksysb.





************************************
СПОСОБ 2. Он же неприлично короткий.
************************************
Наверняка многие слышали про EZNIM - или NIM Easy Setup. Так вот, он слишком много сразу хочет сделать (загляните в smit nim_config или man nim_config). В качестве одного из этапов, эта программа запускает скрипт под названием nim_master_setup - вот он то нам и нужен! Кстати man по нему тоже есть. Он сделает следующее:

1. Если у вас уже есть файловые системы в /export/nim, то возьмет их. Если нет, то создаст в rootvg (при наличии в ней достаточного пространства) или в VG, создаваемой согласно одному из параметров ключа -a:

  • volume_group=vg_name - имя уже существующей VG, в которой нужно создавать файловые системы
  • file_system=fs_name - уже созданная вами FS (которая находится в уже созданной VG)
  • disk=disk_name - свободный диск, на котором создастся VG, в которой создастся FS
  • если ни один параметр не задан, то будет использован первый свободный диск, а если таковых нет, то rootvg.

2. Создает системный бекап самого master и делает его своим же ресурсом. Избежать этого можно ключом -B.

3. Создаст lpp_source с устройства (например /dev/cd0) или каталога указанного в параметре -a device=dev_name. Если параметр не указан, то скрипт спросит о месте расположения источника для lpp_source во время исполнения. Не создавать lpp_source можно с ключом -L.
Напомню, что источником для lpp_source для установки AIX может являться содержимое установочного диска, а где оно лежит - на диске или в папке - не особо важно.

4. Создает ресурс SPOT из lpp_source. Использовать этот же SPOT при развертывании созданного во втором пункте mksysb возможно, если у них не отличается номер TL (Technology Level) и SP (ServicePack). Вообще у меня создался только один SPOT, видимо, потому что версии AIX в lpp_source и в mksysb идентичные.

5. и еще чуть чуть =)

И все! Если команда отработала, то NIM environment настроился, нужные строчки в нужных файликах раскомментарились, и ресурсы для устновки создались.
{nim} / # lsnim
master                       machines        master
boot                         resources       boot
nim_script                   resources       nim_script
master_net                   networks        ent
7100-00master_sysb           resources       mksysb
7100-00bid_ow                resources       bosinst_data
710lpp_res                   resources       lpp_source
710spot_res                  resources       spot
basic_res_grp                groups          res_group
{nim} / #

----------------------------------------------------------
Далее опишу саму установку AIX с NIM.
----------------------------------------------------------
Есть два метода - push и pull. Первый позволяет инициировать установку с NIM master и требует дополнительных телодвижений. Рассмотрим его в другой раз.

PULL Установка.

Независимо от того какой способ настройки NIM вы использовали СПОСОБ1 или СПОСОБ2, дальнейшие шаги будут одинаковыми.

1. Наш master ничего не знает о клиентах, но очень этого хочет.
Зарегистрируем какого-нибудь клиента.

2. Скажем NIM master, что этому клиенту надо экспортировать ресурсы и уточним какие (аллоцируем ресурсы)

3. Разрешим загрузку (сделаем фактический экспорт ресурсов)

 

4. Загрузим клиента в pull установку через SMS-меню.

И... начали

Один:

Добавим клиента в /etc/hosts
{nim} / # echo "192.168.1.21 lpar1" >> /etc/hosts
А теперь зарегистрируем его в NIM master
{nim} / # smit nim
-> Perform NIM Administration Tasks -> Manage Machines -> Define a Machine  -> Host Name of Machine  [lpar1] ->
Из консоли то же самое можно сделать так:
{nim} / # nim -o define -t standalone  -a if1="master_net lpar1 0" -a cable_type1="tp" -a platform="chrp" lpar1
{nim} / #
Получилось так:
{nim} / # lsnim -l lpar1
lpar1:
class          = machines
type           = standalone
connect        = shell
platform       = chrp
netboot_kernel = 64
if1            = master_net lpar1 0
cable_type1    = tp
Cstate         = ready for a NIM operation
prev_state     = ready for a NIM operation
Mstate         = not running
{nim} / #

Два:

{nim} / # smit nim
-> Perform NIM Administration Tasks -> Manage Machines -> Manage Network Install Resource Allocation -> Allocate Network Install Resources -> lpar1 ->
Или из консоли:
{nim} / # nim -o allocate -a spot=710spot_res -a lpp_source=710lpp_res lpar1

{nim} / # lsnim -l lpar1
lpar1:
class          = machines
type           = standalone
connect        = shell
platform       = chrp
netboot_kernel = 64
if1            = master_net lpar1 0
cable_type1    = tp
Cstate         = ready for a NIM operation
prev_state     = ready for a NIM operation
Mstate         = not running
lpp_source     = 710lpp_res
spot           = 710spot_res
control        = master
Cstate_result  = reset
{nim} / #
Три:

{nim} / # smit nim
-> Perform NIM Administration Tasks -> Manage Machines -> Perform Operations on Machines ->
lpar1 -> bos_inst ->

Или:

{nim} / # nim -o bos_inst -a boot_client=no -a accept_licenses=yes lpar1
{nim} / # lsnim -l lpar1
lpar1:
class          = machines
type           = standalone
connect        = shell
platform       = chrp
netboot_kernel = 64
if1            = master_net lpar1 0
cable_type1    = tp
Cstate         = BOS installation has been enabled
prev_state     = ready for a NIM operation
Mstate         = not running
boot           = boot
lpp_source     = 710lpp_res
nim_script     = nim_script
spot           = 710spot_res
control        = master
{nim} / #

Пункт "Source for BOS Runtime Files" может иметь занчения rte, mksysb и spot. Первые два для соответствующей установки. Последний - только для загрузки в maintainance mode.

Все! Можно загружаться.

Четыре.

Как включить lpar в SMS меню, вы наверняка знаете. Сделаем это из CLI HMC:

hscroot@hmc:~> chsysstate -m BENDER -r lpar -n lpar1 -f normal -o on -b sms
hscroot@hmc:~> mkvterm -m BENDER -p lpar1

Наш путь по меню будет такой:
2.   Setup Remote IPL (Initial Program Load) =>
?.  Выбираем сетевой адаптер, видящий нужную сеть =>
1.   IPv4 - Address Format 123.231.111.222          =>
1.   BOOTP  =>
1.   IP Parameters =>
(после настройки нужных параметров можно пингануть NIM master {Server IP}, нажав Esc => 3 => 1)

Жмем "M", чтобы вернуться в главное меню. Затем:

5.   Select Boot Options =>
1.   Select Install/Boot Device  =>
6.   Network =>
1.   BOOTP  =>
?.    Выберите сетевуху, которую настраивали выше =>
2.   Normal Mode Boot =>
1.   Yes   =>

Результат должен быть таким:

Ой спалился! файл BOOT называется у меня /tftpboot/t1n1. Ну вы понимаете, по моим действиям выше, он должен называться /tftpboot/lpar1. NIM его конечно же по IP адресу подставляет.
Если загрузка не удалась, пишите в комменты - подебажим.

Сбросить ресурсы с клиента можно так:

{nim} / # smit nim
-> Perform NIM Administration Tasks -> Manage Machines -> Perform Operations on Machines ->
lpar1 -> reset ->
Или так:
{nim} / # nim -o reset -a force=yes lpar1;nim -Fo deallocate -a subclass=all lpar1
{nim} / # lsnim -l lpar1
lpar1:
class          = machines
type           = standalone
connect        = shell
platform       = chrp
netboot_kernel = 64
if1            = master_net lpar1 0
cable_type1    = tp
Cstate         = ready for a NIM operation
prev_state     = BOS installation has been enabled
Mstate         = not running
Cstate_result  = reset
{nim} / #

Вот, собственно, и все!

Если не любите меню SMS, то вам сюда =>lpar_netboot или как не влипнуть в меню SMS<=

Хочется добавить пару слов по поводу *****СПОСОБОВ***** 1 и 2:

- Если вам нужен красиво сконфигурированный NIM master надолго, и вы хотите сами управлять названиями ресурсов и файловых систем, то вам нужен СПОСОБ 1.
- Если же NIM вы поднимаете для каких-то сиюминутных задач, то СПОСОБ 2 может оказаться предпочтительнее, ведь он и правда состоит из одной команды nim_master_setup.

http://aixjam.blogspot.ru