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 (это стронгли рекомендед). Заставить машину использовать локальный резолв хостов можно несколькими способами (перечислены по силе действия от самого сильного):
- добавить в /etc/environment строку
NSORDER=local, bind - добавить в /etc/netsvc.conf строку
hosts=local, bind - добавить в файл /etc/irs.conf пару строк
hosts local continue
hosts dns
Итак...
************************************************
СПОСОБ 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:
- определяет текущую машину как master
- делает ресурс boot в /tftpboot
- создает объект network
- создает объект nim_script в /export/nim/scripts
- запускает сервисы nimesis и nimd на созданном master
ШАГ 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.
Для установки потребуется как минимум (см. "Описание ресурсов" сверху):
- boot (явно создавать и явно назначать клиенту не нужно - NIM сделает все сам)
- nim_script (то же самое)
- spot
- lpp_source или mksysb
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} / #
{nim} / # nim -o define -t mksysb -a server=master -a location=/resources/images/mk71_00_01 mk71_00_01
************************************
************************************
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. Разрешим загрузку (сделаем фактический экспорт ресурсов)
И... начали
Один:
Добавим клиента в /etc/hosts
{nim} / # echo "192.168.1.21 lpar1" >> /etc/hosts
-> 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 ->
Или:
{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 адресу подставляет.
Если загрузка не удалась, пишите в комменты - подебажим.
Сбросить ресурсы с клиента можно так:
-> Perform NIM Administration Tasks -> Manage Machines -> Perform Operations on Machines ->
{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