Part 16 – Upgrading IBM Storage Scale from 5.1.8.2 to 5.2.0.1

In this part we upgrade siteA from 5.1.8.2 to 5.2.0.1 with the installation toolkit, online (one node at a time), while NFS clients and siteB’s remote mount stay connected. The upgrade itself is one command is the most interesting bit in this but since it’s got a lot of moving parts, there is lot of reading to do as well.

References

IBM Storage Scale supported upgrade paths

As per the Supported Upgrade paths, this is a simple hop upgrade from 5.1.8X to 5.2.0X

Upgrading fromTo 5.1.8.xTo 5.1.9.xTo 5.2.0.x
5.1.8.x✓✓✓

Check the version of Scale

=== mmdiag: version ===
Current GPFS build: "5.1.8.2 ".
Built on Aug 31 2023 at 11:03:05
Running 6 hours 54 minutes 25 secs, pid 3282
root@sitea-mgmt01:~#

root@sitea-mgmt01:~# mmdsh -N all "dpkg-query -W gpfs.base"
sitea-ces01.lab.internal:  gpfs.base    5.1.8-2
sitea-ces02.lab.internal:  gpfs.base    5.1.8-2
sitea-nsd01.lab.internal:  gpfs.base    5.1.8-2
sitea-mgmt01.lab.internal:  gpfs.base   5.1.8-2
sitea-nsd02.lab.internal:  gpfs.base    5.1.8-2

Run a cluster helath check

mmgetstate -a
mmhealth cluster show
mmces state show -a
mmlscluster
root@sitea-mgmt01:~# mmgetstate -a

 Node number  Node name       GPFS state
------------------------------------------
           1  sitea-mgmt01-d  active
           2  sitea-nsd01-d   active
           3  sitea-nsd02-d   active
           4  sitea-ces01-d   active
           5  sitea-ces02-d   active
root@sitea-mgmt01:~# mmhealth cluster show

Component           Total         Failed       Degraded        Healthy          Other
-------------------------------------------------------------------------------------
NODE                    5              0              1              2              2
GPFS                    5              0              0              2              3
NETWORK                 5              0              0              5              0
FILESYSTEM              3              0              0              3              0
DISK                   11              0              0             11              0
CES                     2              1              0              0              1
CESIP                   1              0              0              1              0
FILESYSMGR              2              0              0              2              0
GUI                     1              0              1              0              0
PERFMON                 5              0              0              5              0
THRESHOLD               5              0              0              5              0

root@sitea-mgmt01:~# mmces state show -a
NODE                       AUTH       BLOCK      NETWORK   HDFS_NAMENODE   AUTH_OBJ   NFS       OBJ        SMB    CES
-------------------------- ---------- ---------- --------- --------------- ---------- --------- ---------- ------ -----
sitea-ces01.lab.internal   DISABLED   DISABLED   HEALTHY   DISABLED        DISABLED   HEALTHY   DISABLED   TIPS   TIPS
sitea-ces02.lab.internal   DISABLED   DISABLED   HEALTHY   DISABLED        DISABLED   HEALTHY   DISABLED   TIPS   TIPS
root@sitea-mgmt01:~# mmlscluster

GPFS cluster information
========================
  GPFS cluster name:         sitea.lab.internal
  GPFS cluster id:           6413056013524421807
  GPFS UID domain:           sitea.lab.internal
  Remote shell command:      /usr/bin/ssh
  Remote file copy command:  /usr/bin/scp
  Repository type:           CCR

 Node  Daemon node name             IP address    Admin node name            Designation
-----------------------------------------------------------------------------------------
   1   sitea-mgmt01-d.lab.internal  172.16.13.11  sitea-mgmt01.lab.internal  quorum-manager-perfmon
   2   sitea-nsd01-d.lab.internal   172.16.13.13  sitea-nsd01.lab.internal   quorum-perfmon
   3   sitea-nsd02-d.lab.internal   172.16.13.14  sitea-nsd02.lab.internal   quorum-perfmon
   4   sitea-ces01-d.lab.internal   172.16.13.15  sitea-ces01.lab.internal   perfmon
   5   sitea-ces02-d.lab.internal   172.16.13.16  sitea-ces02.lab.internal   perfmon

oot@sitea-mgmt01:~# mmlsconfig
Configuration data for cluster sitea.lab.internal:
--------------------------------------------------
clusterName sitea.lab.internal
clusterId 6413056013524421807
autoload yes
profile gpfsProtocolDefaults
dmapiFileHandleSize 32
minReleaseLevel 5.1.8.0
tscCmdAllowRemoteConnections no
ccrEnabled yes
sdrNotifyAuthEnabled yes
maxblocksize 16M
[cesNodes]
maxMBpS 5000
numaMemoryInterleave yes
enforceFilesetQuotaOnRoot yes
workerThreads 512
[common]
tscCmdPortRange 60000-61000
cipherList AUTHONLY
cesSharedRoot /gpfs/cesSharedRoot
cesCidrPool <IP=172.16.15.100><ATTRIBUTE=><GROUP=><PREFIX=>+<IP=172.16.15.101><ATTRIBUTE=><GROUP=><PREFIX=>
cifsBypassTraversalChecking yes
syncSambaMetadataOps yes
cifsBypassShareLocksOnRename yes
adminMode central

File systems in cluster sitea.lab.internal:
-------------------------------------------
/dev/cesSharedRoot
/dev/sitea_prod_scale_fs
root@sitea-mgmt01:~#

Checking the portability layer and this show kernel running on 5.15.0-198 . Every node needs a portability layer (the GPFS kernel module) built for its exact kernel. The toolkit rebuilds it during the upgrade, but it can only build on a kernel Scale supports.

root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmdsh -N all "uname -r"
sitea-ces01.lab.internal:  5.15.0-198-generic
sitea-ces02.lab.internal:  5.15.0-198-generic
sitea-nsd01.lab.internal:  5.15.0-198-generic
sitea-mgmt01.lab.internal:  5.15.0-198-generic
sitea-nsd02.lab.internal:  5.15.0-198-generic
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit#

As per the support matrix, table doesn’t say 5.15.0-198-generic is supported but the latest tested kernel for Ubuntu 22.04.5 is 5.15.0-179-generic so ours is newer so it should be fine, but not a guarantee for 5.2.0.1 . On an untested newer kernel, the risk is that mmbuildgpl fails to build or builds but misbehaves. For production, we certainly will keep nodes on a tested kernel and switched off auto upgrades, so it remains locked.

Download Storage_Scale_Developer-5.2.0 to a path and run the installer and it will extract product packages to /usr/lpp/mmfs/5.2.0.1

root@sitea-mgmt01:~/scale/5.2.0.1# ls -al
total 1861112
drwxr-xr-x 3 root root      4096 Oct 18 18:15 .
drwxr-xr-x 4 root root      4096 Oct 11 12:04 ..
drwx---rwx 2 awk  awk       4096 Oct 17 22:40 Storage_Scale_Developer-5.2.0.1-x86_64-Linux
-rwxr-xr-x 1 root root 953117386 Jun  7  2024 Storage_Scale_Developer-5.2.0.1-x86_64-Linux-install
-rw-r--r-- 1 root root        87 Jun  7  2024 Storage_Scale_Developer-5.2.0.1-x86_64-Linux-install.md5
-rw-r--r-- 1 root root      4029 Jun  7  2024 Storage_Scale_Developer-5.2.0.1-x86_64-Linux.README
-rw-rw-r-- 1 awk  awk  952626834 Oct 18 18:14 Storage_Scale_Developer-5.2.0.1-x86_64-Linux.zip
-rw-r--r-- 1 root root      1623 Jun  5  2024 Storage_Scale_public_key.pgp
root@sitea-mgmt01:~/scale/5.2.0.1#
root@sitea-mgmt01:~/scale/5.2.0.1#
root@sitea-mgmt01:~/scale/5.2.0.1# ./Storage_Scale_Developer-5.2.0.1-x86_64-Linux-install --silent

Extracting License Acceptance Process Tool to /usr/lpp/mmfs/5.2.0.1 ...
tail -n +678 ./Storage_Scale_Developer-5.2.0.1-x86_64-Linux-install | tar -C /usr/lpp/mmfs/5.2.0.1 -xvz --exclude=installer --exclude=*_rpms --exclude=*_debs --exclude=*rpm  --exclude=*gz --exclude=*deb --exclude=*tools* 1> /dev/null

Next is the new toolkit (

Browse to the ansible toolkit

root@sitea-mgmt01:~/scale/5.2.0.1# cd /usr/lpp/mmfs/5.2.0.1/ansible-toolkit
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# ls -l
total 144

Setup the mgmt as setup node

oot@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# ./spectrumscale setup -s 172.16.11.11
[ INFO  ] Installing prerequisites for install node
[ INFO  ] Found existing Ansible installation on system.
[ INFO  ] Install Toolkit setup type is set to IBM Storage Scale (default). If an ESS is in the cluster, run this command to set ESS mode: ./spectrumscale setup -s server_ip -st ess
[ INFO  ] Your ansible controller node has been configured to use the IP 172.16.11.11 to communicate with other nodes.
[ INFO  ] Port 10080 will be used for package distribution.
[ INFO  ] SUCCESS
[ INFO  ] Tip : Designate protocol, nsd and admin nodes in your environment to use during install:./spectrumscale -v node add <node> -p  -a -n
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit#

The toolkit detected ansible already now we will use -N to populate the cluster info

./spectrumscale config populate -N sitea-mgmt01.lab.internal

Run ./spectrumscale node list to see if it populates

  • Sitea-mgmt01 Admin, Quorum, Manager, NSD, GUI, Perf Mon
  • sitea-nsd01 Quorum, NSD, (Perf Mon)
  • sitea-nsd02 Quorum, NSD
  • sitea-ces01 Protocol
  • sitea-ces02 Protocol
  • Protocols NFS Enabled
  • Export IPs 172.16.15.100, 172.16.15.101

Precheck

Run precheck via./spectrumscale upgrade precheck and this picks an error on rpcbind service running on mgmt01, nsd01 and nsd02 and this is needed for NFS to work. We will just ignore the above alert as it’s a lab and continue the install via ./spectrumscale upgrade run

Rolling Upgrade of GPFS Cluster

This upgrade script works through the nodes one by one: CES IPs moved, GPFS stopped, 5.2.0.1 packages installed, portability layer rebuilt, GPFS started and this will take some time. . If the 198 kernel is a problem, it fails here, and the toolkit stops before touching the other nodes.so the mmbuildgpl / portability layer step on the first node is the first sign of failure if any

root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# ./spectrumscale upgrade run
The upgrade process is divided into several phases. If the nodes being upgraded include both protocol (CES) and non-protocol nodes, then protocol nodes and non-protocol nodes are upgraded in separate phases. If the nodes being upgraded are all of the same type, either protocol or non-protocol, then only the upgrade phases applicable to that node type will be performed. The upgrade process may cause a brief outage of Object, SMB, NFS, HDFS and Performance Monitoring components. Do you really want to begin upgrading? [y/N]: Y
[ INFO  ] Logging to file: /usr/lpp/mmfs/5.2.0.1/ansible-toolkit/logs/UPGRADE-18-10-2026_18:54:28.log
[ INFO  ]
[ INFO  ]
[ INFO  ] ***************************
[ INFO  ] *  Package version check  *
[ INFO  ] ***************************
[ INFO  ]
[ INFO  ] Component: GPFS
[ INFO  ] ---------------
[ INFO  ] Version of gpfs.base installed on sitea-mgmt01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.base installed on sitea-nsd01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.base installed on sitea-nsd02.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.base installed on sitea-ces01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.base installed on sitea-ces02.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.gpl installed on sitea-mgmt01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.gpl installed on sitea-nsd01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.gpl installed on sitea-nsd02.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.gpl installed on sitea-ces01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.gpl installed on sitea-ces02.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.msg.en-us installed on sitea-mgmt01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.msg.en-us installed on sitea-nsd01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.msg.en-us installed on sitea-nsd02.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.msg.en-us installed on sitea-ces01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.msg.en-us installed on sitea-ces02.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.
[ INFO  ] Version of gpfs.docs installed on sitea-mgmt01.lab.internal: 5.1.8-2. Upgrade needed to 5.2.0-1.

Monitor the status of upgrade

Watch the status via UI

After around 20 mins, Scale has been upgraded to 5.2.X

On the UI, it will still take some time before the monitoring perf collectors picks up the changes, so if necessary, run the fix procedure.

The cluster is now fully live on 5.2.X

Post Health Checks

oot@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmdsh -N all "dpkg-query -W gpfs.base"
sitea-ces02.lab.internal:  gpfs.base    5.2.0-1
sitea-ces01.lab.internal:  gpfs.base    5.2.0-1
sitea-nsd01.lab.internal:  gpfs.base    5.2.0-1
sitea-mgmt01.lab.internal:  gpfs.base   5.2.0-1
sitea-nsd02.lab.internal:  gpfs.base    5.2.0-1
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit#
#

root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmdiag --version

=== mmdiag: version ===
Current GPFS build: "5.2.0.1 ".
Built on May 30 2024 at 16:06:39
Running 51 minutes 7 secs, pid 340601
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit#

oot@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmgetstate -a

 Node number  Node name       GPFS state
------------------------------------------
           1  sitea-mgmt01-d  active
           2  sitea-nsd01-d   active
           3  sitea-nsd02-d   active
           4  sitea-ces01-d   active
           5  sitea-ces02-d   active
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmdsh -N all "dpkg-query -W gpfs.base"
sitea-ces02.lab.internal:  gpfs.base    5.2.0-1
sitea-ces01.lab.internal:  gpfs.base    5.2.0-1
sitea-nsd01.lab.internal:  gpfs.base    5.2.0-1
sitea-mgmt01.lab.internal:  gpfs.base   5.2.0-1
sitea-nsd02.lab.internal:  gpfs.base    5.2.0-1
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmdiag --version

=== mmdiag: version ===
Current GPFS build: "5.2.0.1 ".
Built on May 30 2024 at 16:06:39
Running 51 minutes 7 secs, pid 340601
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmgetstate -a

 Node number  Node name       GPFS state
------------------------------------------
           1  sitea-mgmt01-d  active
           2  sitea-nsd01-d   active
           3  sitea-nsd02-d   active
           4  sitea-ces01-d   active
           5  sitea-ces02-d   active
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmhealth cluster show

Component           Total         Failed       Degraded        Healthy          Other
----------------------------------------------------------------------------------------------------------------
NODE                    5              0              0              0              5
GPFS                    5              0              0              0              5
NETWORK                 5              0              0              5              0
FILESYSTEM              3              0              0              3              0
DISK                   11              0              0             11              0
CES                     2              0              0              0              2
CESCLUSTER              1              0              0              1              0
FILESYSMGR              1              0              0              1              0
GUI                     1              0              1              0              0
PERFMON                 5              0              0              5              0
THRESHOLD               5              0              0              5              0

root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmces state show -a
NODE                       AUTH       BLOCK      NETWORK   HDFS_NAMENODE   AUTH_OBJ   NFS       OBJ        S3         SMB    CES
-------------------------- ---------- ---------- --------- --------------- ---------- --------- ---------- ---------- ------ -----
sitea-ces01.lab.internal   DISABLED   DISABLED   HEALTHY   DISABLED        DISABLED   HEALTHY   DISABLED   DISABLED   TIPS   TIPS
sitea-ces02.lab.internal   DISABLED   DISABLED   HEALTHY   DISABLED        DISABLED   HEALTHY   DISABLED   DISABLED   TIPS   TIPS
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mces address list
Command 'mces' not found, did you mean:
  command 'mcs' from snap maven-central-search (0.11.1)
  command 'mccs' from deb mccs (1:1.1-9)
  command 'mcs' from deb mono-mcs (6.8.0.105+dfsg-3.2)
  command 'mes' from deb mes (0.23-4)
  command 'nces' from deb nco (5.0.6-1)
See 'snap info <snapname>' for additional versions.
root@sitea-mgmt01:/usr/lpp/mmfs/5.2.0.1/ansible-toolkit# mmces address list
Address         Node                       Ces Group   Attributes
--------------- -------------------------- ----------- ------------
172.16.15.100   sitea-ces01.lab.internal   none        none
172.16.15.101   sitea-ces02.lab.internal   none        none

otal 0
root@sitea-mgmt01:/mnt# df -H
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              823M  1.6M  821M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   40G   18G   21G  47% /
tmpfs                              4.2G   29k  4.2G   1% /dev/shm
tmpfs                              5.3M     0  5.3M   0% /run/lock
/dev/sda2                          2.1G  138M  1.8G   8% /boot
tmpfs                              823M  4.1k  823M   1% /run/user/1000
cesSharedRoot                      6.5G  3.0G  3.5G  47% /gpfs/cesSharedRoot
sitea_prod_scale_fs                 97G  453M   97G   1% /gpfs/sitea_prod_scale_fs
siteb_prod_scale_fs                113G  529M  113G   1% /gpfs/siteb_prod_scale_fs
root@sitea-mgmt01:/mnt# cd /gpfs/sitea_prod_scale_fs/
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs# ls
finance  from-siteb.txt  nfstest  test.txt
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs# mmlsconfig minReleaseLevel
minReleaseLevel 5.1.8.0
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs# mmlsfs sitea_prod_scale_fs -V
flag                value                    description
------------------- ------------------------ -----------------------------------
 -V                 31.00 (5.1.7.0)          File system version
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs#

Final Commit

Once the upgrade is complete, the final procedure will be to commit the code using command mmchconfig release=LATEST which can be done at a later date. There is no rollback after this step.

mmchconfig: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs#

After the file system is migrated, remote nodes that are running earlier GPFS versions will not be able to mount the file system anymore so only do this step after Site B is moved

root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs# mmchfs sitea_prod_scale_fs -V full
mmchfs: Attention: One or more remote clusters are granted access to the file system.
After the file system is migrated, remote nodes that are running earlier
GPFS versions will not be able to mount the file system any more.
File system version 34.00 is not supported on the following 5 remote nodes mounting the file system:
172.16.14.21 siteb-mgmt01-d siteb.lab.internal 32.02
172.16.14.26 siteb-ces02-d siteb.lab.internal 32.02
172.16.14.25 siteb-ces01-d siteb.lab.internal 32.02
172.16.14.23 siteb-nsd01-d siteb.lab.internal 32.02
172.16.14.24 siteb-nsd02-d siteb.lab.internal 32.02
mmchfs: Command failed. Examine previous error messages to determine cause.
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs#
root@sitea-mgmt01:/gpfs/sitea_prod_scale_fs#

Likewise, we will do the same for cesSharedRoot as well.

(Visited 4 times, 1 visits today)

By Ash Thomas

Ash Thomas is a seasoned IT professional with extensive experience as a technical expert, complemented by a keen interest in blockchain technology.