xCAT은 eXtreme Cluster/Cloud Administration Toolkit의 약자로서, 대형 HPC cluster의 설치와 운영에 사용되는 open source tool입니다. 설치는 IBM POWER9 (ppc64le) 환경에서도 x86 환경과 동일하게 간단합니다. 여기서는 CentOS 7.6 환경에서 수행해보겠습니다.
-bash-4.2# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (AltArch)
-bash-4.2# wget https://raw.githubusercontent.com/xcat2/xcat-core/master/xCAT-server/share/xcat/tools/go-xcat -O - >/tmp/go-xcat
-bash-4.2# chmod a+x /tmp/go-xcat
이제 이 script를 install이라는 argument와 함께 수행합니다. 그러면 Yes를 한번 눌러주는 것 외에는 사실상 더 해줄 것이 없습니다.
-bash-4.2# /tmp/go-xcat install
Operating system: linux
Architecture: ppc64le
Linux Distribution: centos
Version: 7
go-xcat Version: 1.0.45
Reading repositories ...... done
xCAT Core Packages
==================
Package Name Installed In Repository
------------ --------- -------------
perl-xCAT (not installed) 2.15-snap201911041517
xCAT (not installed) 2.15-snap201911041517
xCAT-SoftLayer (not installed) 2.15-snap201911041517
xCAT-buildkit (not installed) 2.15-snap201911041517
xCAT-client (not installed) 2.15-snap201911041517
xCAT-confluent (not installed) 2.15-snap201911041517
xCAT-csm (not installed) 2.15-snap201911041517
xCAT-genesis-scripts-ppc64 (not installed) 2.15-snap201911041517
xCAT-genesis-scripts-x86_64 (not installed) 2.15-snap201911041517
xCAT-openbmc-py (not installed) 2.15-snap201911041518
xCAT-probe (not installed) 2.15-snap201911041517
xCAT-server (not installed) 2.15-snap201911041517
xCAT-test (not installed) 2.15-snap201911041517
xCAT-vlan (not installed) 2.15-snap201911041517
xCATsn (not installed) 2.15-snap201911041517
xCAT Dependency Packages
========================
Package Name Installed In Repository
------------ --------- -------------
elilo-xcat (not installed) 3.14-4
fping (not installed) 2.4b2_to-2
goconserver (not installed) 0.3.2-snap201909171016
grub2-xcat (not installed) 2.02-0.76.el7.1.snap2019051602
ipmitool-xcat (not installed) 1.8.18-0
lldpd (not installed) 0.7.15-6.1
net-snmp-perl (not installed) 5.7.2-38.el7_6.2
perl-AppConfig (not installed) 1.66-20.el7
perl-Crypt-CBC (not installed) 2.33-2.el7
perl-Crypt-Rijndael (not installed) 1.09-2.ael7a
perl-Expect (not installed) 1.21-1
perl-HTML-Form (not installed) 6.03-6.el7
perl-HTTP-Async (not installed) 0.30-2
perl-IO-Stty (not installed) 0.03-1
perl-IO-Tty (not installed) 1.10-11.el7
perl-JSON (not installed) 2.59-2.el7
perl-Net-HTTPS-NB (not installed) 0.14-2
perl-Net-Telnet (not installed) 3.03-19.el7
perl-SOAP-Lite (not installed) 0.710.08-1
perl-XML-Simple (not installed) 2.20-5.el7
pyodbc (not installed) 3.0.7-1.ael7a
syslinux-xcat (not installed) 3.86-2
systemconfigurator (not installed) 2.2.11-1
systemimager-client (not installed) 4.3.0-0.1
systemimager-common (not installed) 4.3.0-0.1
systemimager-server (not installed) 4.3.0-0.3
xCAT-genesis-base-ppc64 (not installed) 2.14.5-snap201811160710
xCAT-genesis-base-x86_64 (not installed) 2.14.5-snap201811190037
xnba-undi (not installed) 1.0.3-131028
yaboot-xcat (not installed) 1.3.17-rc1
xCAT is going to be installed.
Continue? [y/n] y
....
Install 15 Packages (+95 Dependent packages)
Total download size: 257 M
Installed size: 713 M
Downloading packages:
--------------------------------------------------------------------------------
Total 2.9 MB/s | 257 MB 01:29
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : perl-Data-Dumper-2.145-3.el7.ppc64le 1/110
Installing : 1:perl-Compress-Raw-Zlib-2.061-4.el7.ppc64le 2/110
Installing : perl-Sys-Syslog-0.33-3.el7.ppc64le 3/110
Installing : ksh-20120801-139.el7.ppc64le 4/110
Installing : perl-XML-NamespaceSupport-1.11-10.el7.noarch 5/110
Installing : apr-1.4.8-3.el7_4.1.ppc64le 6/110
Installing : perl-XML-Parser-2.41-10.el7.ppc64le 7/110
Installing : apr-util-1.5.2-6.el7.ppc64le 8/110
Installing : 12:dhcp-libs-4.2.5-68.el7.centos.1.ppc64le 9/110
...
tftp.ppc64le 0:5.2-22.el7
tftp-server.ppc64le 0:5.2-22.el7
trousers.ppc64le 0:0.3.14-2.el7
unzip.ppc64le 0:6.0-19.el7
xCAT-probe.noarch 4:2.15-snap201911041517
yajl.ppc64le 0:2.0.4-4.el7
Complete!
xCAT has been installed!
========================
If this is the very first time xCAT has been installed, run one of the
following commands to set the environment variables.
For sh:
source /etc/profile.d/xcat.sh
For csh:
source /etc/profile.d/xcat.csh
이렇게 설치가 쉬운 이유는 go-xcat이라는 script에서 자동으로 xcat 관련 YUM repository를 만들었기 때문입니다.
-bash-4.2# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base CentOS-7 - Base 7,477
extras CentOS-7 - Extras 403
updates CentOS-7 - Updates 1,873
xcat-core xcat-core 21
xcat-dep xcat-dep 30
repolist: 9,804
설치 뒤에는 자동으로 xCAT daemon이 수행되는데, 제대로 떠있는지 다음과 같이 확인합니다.
-bash-4.2# systemctl status xcatd
● xcatd.service - xCAT management service
Loaded: loaded (/usr/lib/systemd/system/xcatd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-01-28 02:48:59 EST; 7min ago
Main PID: 14973 (xcatd: SSL list)
CGroup: /system.slice/xcatd.service
├─14972 /usr/sbin/in.tftpd -v -l -s /tftpboot -m /etc/tftpmapfile4xcat.conf
├─14973 xcatd: SSL listener
├─14974 xcatd: DB Access
├─14975 xcatd: UDP listener
├─14976 xcatd: Discovery worker
├─14977 xcatd: install monitor
└─14978 xcatd: Command log writer
Jan 28 02:48:28 p636-kvm1 xcat[14943]: xcatd is going to start...
Jan 28 02:48:58 p636-kvm1 xcat[14975]: xcatd: UDP listener process 14975 start
Jan 28 02:48:58 p636-kvm1 xcat[14977]: xcatd: install monitor process 14977 start
Jan 28 02:48:58 p636-kvm1 xcat[14978]: xcatd: Command log writer process 14978 start
Jan 28 02:48:58 p636-kvm1 xcat[14976]: xcatd: Discovery worker process 14976 start
Jan 28 02:48:59 p636-kvm1 xcatd[14939]: Starting xcatd [ OK ]
Jan 28 02:48:59 p636-kvm1 systemd[1]: Started xCAT management service.
Jan 28 02:49:02 p636-kvm1 xcat[15071]: xCAT: Allowing mknb ppc64 for root from localhost
Jan 28 02:49:47 p636-kvm1 xcat[15089]: xCAT: Allowing mknb x86_64 for root from localhost
Jan 28 02:52:45 p636-kvm1 xcat[15209]: xCAT: Allowing lsdef for root from localhost
xCAT daemon의 버전은 다음과 같이 확인할 수 있습니다.
-bash-4.2# source /etc/profile.d/xcat.sh
-bash-4.2# lsxcatd -a
Version 2.15 (git commit 218c6d3acc8bdbd7f72115e48cda2b1a3613d18a, built Mon Nov 4 15:17:59 EST 2019)
This is a Management Node
dbengine=SQLite
이제 간단한 xCAT 명령을 사용해보겠습니다. xCAT에서 network을 등록하고 관리하는 방법입니다. 아래와 같이 먼저 makenetworks 명령을 통해 이미 구성되어 있는 NIC을 발견하여 network object를 만들어야 하는데, 실은 xCAT이 설치되고 구성될 때 이미 만들어져 있습니다.
-bash-4.2# makenetworks
Warning: [p636-kvm1]: The network entry '129_40_XXX_48-255_255_255_240' already exists in xCAT networks table. Cannot create a definition for '129_40_XXX_48-255_255_255_240'
이 network은 다음과 같이 볼 수 있습니다.
-bash-4.2# lsdef -t network
129_40_XXX_48-255_255_255_240 (network)
이것의 이름을 좀더 쉬운 이름으로 바꾸어 보겠습니다.
-bash-4.2# chdef -t network 129_40_XXX_48-255_255_255_240 -n primary_network
Changed the object name from 129_40_XXX_48-255_255_255_240 to primary_network.
-bash-4.2# lsdef -t network
primary_network (network)
자세히 보기 위해서는 다음과 같이 할 수 있습니다.
-bash-4.2# lsdef -t network primary_network
Object name: primary_network
gateway=129.40.XXX.62
mask=255.255.255.240
mgtifname=eth0
mtu=9000
net=129.40.XXX.48
tftpserver=<xcatmaster>