Ibm 1
Ibm 1
Version 5.1.0
Administration Guide
IBM
SC28-3162-02
Note
Before using this information and the product it supports, read the information in “Notices” on page
927.
This edition applies to version 5 release 1 modification 0 of the following products, and to all subsequent releases and
modifications until otherwise indicated in new editions:
• IBM Spectrum Scale Data Management Edition ordered through Passport Advantage® (product number 5737-F34)
• IBM Spectrum Scale Data Access Edition ordered through Passport Advantage (product number 5737-I39)
• IBM Spectrum Scale Erasure Code Edition ordered through Passport Advantage (product number 5737-J34)
• IBM Spectrum Scale Data Management Edition ordered through AAS (product numbers 5641-DM1, DM3, DM5)
• IBM Spectrum Scale Data Access Edition ordered through AAS (product numbers 5641-DA1, DA3, DA5)
• IBM Spectrum Scale Data Management Edition for IBM® ESS (product number 5765-DME)
• IBM Spectrum Scale Data Access Edition for IBM ESS (product number 5765-DAE)
Significant changes or additions to the text and illustrations are indicated by a vertical line (|) to the left of the change.
IBM welcomes your comments; see the topic “How to send your comments” on page xxxviii. When you send information to
IBM, you grant IBM a nonexclusive right to use or distribute the information in any way it believes appropriate without
incurring any obligation to you.
© Copyright International Business Machines Corporation 2015, 2021.
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
Contents
Tables................................................................................................................xvii
iii
GPFS administration security...............................................................................................................54
Cache usage......................................................................................................................................... 54
Access patterns.................................................................................................................................... 56
Aggregate network interfaces..............................................................................................................57
Swap space...........................................................................................................................................58
Linux configuration and tuning considerations......................................................................................... 58
updatedb considerations..................................................................................................................... 59
Memory considerations........................................................................................................................59
GPFS helper threads............................................................................................................................ 59
Communications I/O............................................................................................................................ 59
Disk I/O................................................................................................................................................. 60
AIX configuration and tuning considerations............................................................................................60
GPFS use with Oracle........................................................................................................................... 60
Chapter 7. Configuring IBM Power Systems for IBM Spectrum Scale................... 107
Tuning the operating system................................................................................................................... 107
Logical partitioning (LPAR) hardware allocations for NUMA-based Power servers...............................108
Running Dynamic Platform Optimizer (DPO) to optimize an LPAR................................................... 109
Configuring INT_LOG_MAX_PAYLOAD_SIZE Parameter........................................................................ 109
iv
Actions that the mmaudit command takes to disable file audit logging............................................... 113
Enabling and disabling file audit logging using the GUI......................................................................... 113
Viewing file systems that have file audit logging enabled with the GUI................................................ 113
Enabling file audit logging on an owning cluster for a file system that is remotely mounted............... 114
Chapter 13. Tuning for Kernel NFS backend on AFM and AFM DR.........................141
Tuning the gateway node on the NFS client............................................................................................141
Tuning on both the NFS client (gateway) and the NFS server (the home/secondary cluster).............. 141
Tuning the NFS server on the home/secondary cluster or the NFS server............................................142
Chapter 15. Integrating IBM Spectrum Scale Cinder driver with Red Hat
OpenStack Platform 16.1............................................................................... 153
Configuring IBM Spectrum Scale cluster to enable Cinder driver with RHOSP..................................... 153
Deploying IBM Spectrum Scale Cinder backend configuration in RHOSP.............................................154
Limitations of integrating IBM Spectrum Scale Cinder driver with RHOSP........................................... 154
Triple-O heat template environment parameters.................................................................................. 155
Sample IBM Spectrum Scale Cinder configuration YAML file................................................................ 156
v
Listing active IBM Spectrum Scale commands................................................................................. 163
Determining how long mmrestripefs takes to complete....................................................................164
Chapter 17. Verifying network operation with the mmnetverify command........... 165
Chapter 19. File system format changes between versions of IBM Spectrum
Scale............................................................................................................. 217
vi
Displaying GPFS disk states.................................................................................................................... 226
Disk availability.................................................................................................................................. 226
Disk status.......................................................................................................................................... 226
Changing GPFS disk states and parameters........................................................................................... 227
Changing your NSD configuration........................................................................................................... 229
Changing NSD server usage and failback................................................................................................230
NSD servers: Periodic checks for I/O problems..................................................................................... 230
Enabling and disabling Persistent Reserve.............................................................................................230
vii
Chapter 24. Managing object storage..................................................................325
Understanding and managing Object services....................................................................................... 325
Understanding the mapping of OpenStack commands to IBM Spectrum Scale administrator
commands.......................................................................................................................................... 327
Changing Object configuration values.....................................................................................................328
How to change the object base configuration to enable S3 API............................................................ 328
Configuring OpenStack EC2 credentials................................................................................................. 329
How to manage the OpenStack S3 API...................................................................................................330
Managing object capabilities...................................................................................................................331
Managing object versioning .................................................................................................................... 332
Enabling object versioning................................................................................................................. 332
Disabling object versioning................................................................................................................ 333
Creating a version of an object: Example.......................................................................................... 333
Mapping of storage policies to filesets....................................................................................................334
Administering storage policies for object storage.................................................................................. 334
Creating storage policy for object compression................................................................................335
Creating storage policy for object encryption................................................................................... 336
Adding a region in a multi-region object deployment............................................................................ 337
Administering a multi-region object deployment environment............................................................. 338
Unified file and object access in IBM Spectrum Scale .......................................................................... 339
Enabling object access to existing filesets........................................................................................ 339
Identity management modes for unified file and object access.......................................................341
Authentication in unified file and object access................................................................................346
Validating shared authentication ID mapping...................................................................................347
The objectizer process....................................................................................................................... 348
File path in unified file and object access......................................................................................... 349
Administering unified file and object access.....................................................................................350
In-place analytics using unified file and object access.....................................................................364
Limitations of unified file and object access..................................................................................... 364
Constraints applicable to unified file and object access...................................................................366
Data ingestion examples....................................................................................................................366
curl commands for unified file and object access related user tasks.............................................. 367
Configuration files for IBM Spectrum Scale for object storage.............................................................. 368
Backing up and restoring object storage................................................................................................ 372
Backing up the object storage........................................................................................................... 372
Restoring the object storage..............................................................................................................374
Configuration of object for isolated node and network groups.............................................................. 377
Enabling the object heatmap policy........................................................................................................378
viii
Defining a password policy for GUI users............................................................................................... 410
Changing or expiring password of GUI user............................................................................................410
Configuring external authentication for GUI users................................................................................. 411
ix
The mmapplypolicy command and policy rules................................................................................501
Policy rules: Examples and tips......................................................................................................... 505
Managing policies...............................................................................................................................511
Working with external storage pools................................................................................................. 518
Backup and restore with storage pools............................................................................................. 524
ILM for snapshots...............................................................................................................................526
User storage pools................................................................................................................................... 527
File heat: Tracking file access temperature............................................................................................ 527
Filesets.....................................................................................................................................................529
Fileset namespace............................................................................................................................. 530
Filesets and quotas............................................................................................................................ 531
Filesets and storage pools................................................................................................................. 532
Filesets and global snapshots........................................................................................................... 533
Fileset-level snapshots...................................................................................................................... 534
Filesets and backup........................................................................................................................... 534
Managing filesets............................................................................................................................... 536
Immutability and appendOnly features.................................................................................................. 542
Creating and applying ILM policy by using GUI ..................................................................................... 546
Modifying active ILM policy by using GUI .............................................................................................. 547
x
CNFS setup.............................................................................................................................................. 595
CNFS administration................................................................................................................................596
xi
Configuring and tuning SparkWorkloads........................................................................................... 678
Ingesting data into IBM Spectrum Scale clusters.................................................................................. 679
Exporting data out of IBM Spectrum Scale clusters...............................................................................679
Upgrading FPO......................................................................................................................................... 680
Monitoring and administering IBM Spectrum Scale FPO clusters......................................................... 682
Rolling upgrades.................................................................................................................................683
The IBM Spectrum Scale FPO cluster............................................................................................... 685
Failure detection................................................................................................................................ 687
Disk Failures....................................................................................................................................... 688
Node failure........................................................................................................................................ 690
Handling multiple nodes failure.........................................................................................................692
Network switch failure....................................................................................................................... 693
Data locality........................................................................................................................................693
Disk Replacement.............................................................................................................................. 701
Auto recovery...........................................................................................................................................704
Failure and recovery...........................................................................................................................704
QoS support for autorecovery............................................................................................................706
Restrictions.............................................................................................................................................. 706
xii
Planning for protocol data security......................................................................................................... 815
Configuring protocol data security.......................................................................................................... 815
Enabling secured connection between the IBM Spectrum Scale system and authentication
server.............................................................................................................................................816
Securing data transfer........................................................................................................................819
Securing NFS data transfer................................................................................................................ 819
Securing SMB data transfer............................................................................................................... 821
Secured object data transfer............................................................................................................. 821
Data security limitations..........................................................................................................................821
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing.....823
Administering files for Transparent cloud tiering................................................................................... 823
Applying a policy on a Transparent cloud tiering node..................................................................... 823
Migrating files to the cloud storage tier.............................................................................................826
Pre-migrating files to the cloud storage tier......................................................................................826
Recalling files from the cloud storage tier.........................................................................................828
Reconciling files between IBM Spectrum Scale file system and cloud storage tier........................ 828
Cleaning up files transferred to the cloud storage tier......................................................................829
Deleting cloud objects....................................................................................................................... 830
Managing reversioned files................................................................................................................ 831
Listing files migrated to the cloud storage tier..................................................................................831
Restoring files.....................................................................................................................................832
Restoring Cloud services configuration............................................................................................. 833
Checking the Cloud services database integrity............................................................................... 834
Manual recovery of Transparent cloud tiering database...................................................................834
Scale out backup and restore (SOBAR) for Cloud services...............................................................835
Cloud data sharing...................................................................................................................................848
Listing files exported to the cloud..................................................................................................... 849
Importing cloud objects exported through an old version of Cloud data sharing............................851
Administering Transparent cloud tiering and Cloud data sharing services........................................... 852
Stopping Cloud services software..................................................................................................... 852
Monitoring the health of Cloud services software.............................................................................852
Checking the Cloud services version................................................................................................. 854
Known limitations of Cloud services ...................................................................................................... 855
Chapter 46. Configuring Mellanox Memory Translation Table (MTT) for GPFS
RDMA VERBS Operation................................................................................. 861
xiii
Creating an AFM-based DR relationship................................................................................................. 871
Converting GPFS filesets to AFM DR....................................................................................................... 872
Converting AFM relationship to AFM DR................................................................................................. 873
Notices..............................................................................................................927
Trademarks.............................................................................................................................................. 928
Terms and conditions for product documentation................................................................................. 928
xiv
IBM Online Privacy Statement................................................................................................................ 929
Glossary............................................................................................................ 931
Index................................................................................................................ 939
xv
xvi
Tables
2. Conventions............................................................................................................................................ xxxvii
9. Supported Components.............................................................................................................................. 91
17. Configuration parameters at cache for parallel data transfer - valid values.........................................133
20. Compression libraries and their required file system format level and format number.......................181
xvii
24. Authentication requirements for each file access protocol. .................................................................291
36. Removal of a file with ACL entries DELETE and DELETE_CHILD........................................................... 422
38. Mapping from SMB Security Descriptor to NFSv4 ACL entry with unixmap or ldapmap id mapping...430
39. Mapping from SMB Security Descriptor to NFSv4 ACL entry with default id mapping......................... 431
40. ACL permissions required to work on files and directories, while using SMB protocol (table 1 of 2)..435
41. ACL permissions required to work on files and directories, while using SMB protocol (table 2 of 2)..436
42. ACL permissions required to work on files and directories, while using NFS protocol (table 1 of 2).. 437
43. ACL permissions required to work on files and directories, while using NFS protocol (table 2 of 2).. 437
45. ACL options that are available to manipulate object read ACLs............................................................446
48. The effects of file operations on an immutable file or an appendOnly file........................................... 543
xviii
49. IAM modes and their effects on file operations on immutable files..................................................... 544
51. Example - Time stamp of snapshots that are retained based on the retention policy.........................557
61. Configuring the cluster for encryption in the simplified setup.............................................................. 722
62. Configuring the cluster for encryption in the simplified setup.............................................................. 732
66. Comparing default lifetimes of key server and key client certificates.................................................. 782
67. Security features that are used to secure authentication server.......................................................... 813
xix
74. IBM Spectrum Scale port usage............................................................................................................. 904
77. Recommended port numbers that can be used for internal communication....................................... 908
87. Recommended port numbers that can be used for Performance Monitoring tool............................... 915
88. Required port number for mmbackup and HSM connectivity to IBM Spectrum Protect server.......... 917
89. Recommended port numbers that can be used for call home.............................................................. 918
xx
About this information
This edition applies to IBM Spectrum Scale version 5.1.0 for AIX®, Linux®, and Windows.
IBM Spectrum Scale is a file management infrastructure, based on IBM General Parallel File System
(GPFS) technology, which provides unmatched performance and reliability with scalable access to critical
file data.
To find out which version of IBM Spectrum Scale is running on a particular AIX node, enter:
lslpp -l gpfs\*
To find out which version of IBM Spectrum Scale is running on a particular Linux node, enter:
rpm -qa | grep gpfs (for SLES and Red Hat Enterprise Linux)
To find out which version of IBM Spectrum Scale is running on a particular Windows node, open Programs
and Features in the control panel. The IBM Spectrum Scale installed program name includes the version
number.
Which IBM Spectrum Scale information unit provides the information you need?
The IBM Spectrum Scale library consists of the information units listed in Table 1 on page xxii.
To use these information units effectively, you must be familiar with IBM Spectrum Scale and the AIX,
Linux, or Windows operating system, or all of them, depending on which operating systems are in use at
your installation. Where necessary, these information units provide some background information relating
to AIX, Linux, or Windows. However, more commonly they refer to the appropriate operating system
documentation.
Note: Throughout this documentation, the term "Linux" refers to all supported distributions of Linux,
unless otherwise specified.
• mmcrnsd command
• mmcrsnapshot command
• mmdefedquota command
• mmdefquotaoff command
• mmdefquotaon command
• mmdefragfs command
• mmdelacl command
• mmdelcallback command
• mmdeldisk command
• mmdelfileset command
• mmdelfs command
• mmdelnode command
• mmdelnodeclass command
• mmdelnsd command
• mmdelsnapshot command
• mmdf command
• mmdiag command
• mmdsh command
• mmeditacl command
• mmedquota command
• mmexportfs command
• mmfsck command
• mmfsctl command
• mmgetacl command
• mmgetstate command
• mmhadoopctl command
• mmhdfs command
• mmhealth command
• mmimgbackup command
• mmimgrestore command
• mmimportfs command
• mmkeyserv command
• mmlsfileset command
• mmlsfs command
• mmlslicense command
• mmlsmgr command
• mmlsmount command
• mmlsnodeclass command
• mmlsnsd command
• mmlspolicy command
• mmlspool command
• mmlsqos command
• mmlsquota command
• mmlssnapshot command
• mmmigratefs command
• mmmount command
• mmnetverify command
• mmnfs command
• mmnsddiscover command
• mmobj command
• mmperfmon command
• mmpmon command
• mmprotocoltrace command
• mmpsnap command
• mmputacl command
• mmqos command
• mmquotaoff command
• mmquotaon command
• mmreclaimspace command
• mmremotecluster command
• mmremotefs command
• mmrepquota command
• mmrestoreconfig command
• mmrestorefs command
• mmrestripefile command
• mmsnapdir command
• mmstartup command
• mmtracectl command
• mmumount command
• mmunlinkfileset command
• mmuserauth command
• mmwatch command
• mmwinservctl command
• spectrumscale command
Programming reference
• IBM Spectrum Scale Data
Management API for GPFS
information
• GPFS programming interfaces
• GPFS user exits
• IBM Spectrum Scale management
API endpoints
• Considerations for GPFS
applications
IBM Spectrum Scale: Big Hortonworks Data Platform 3.X • System administrators of IBM
Data and Analytics Guide Spectrum Scale systems
• Planning
• Application programmers who are
• Installation
experienced with IBM Spectrum
• Upgrading and uninstallation Scale systems and familiar with
• Configuration the terminology and concepts in
the XDSM standard
• Administration
• Limitations
• Problem determination
Open Source Apache Hadoop
• Open Source Apache Hadoop
without CES HDFS
• Open Source Apache Hadoop with
CES HDFS
BigInsights® 4.2.5 and Hortonworks
Data Platform 2.6
• Planning
• Installation
• Upgrading software stack
• Configuration
• Administration
• Troubleshooting
• Limitations
• FAQ
Table 2. Conventions
Convention Usage
bold Bold words or characters represent system elements that you must use literally,
such as commands, flags, values, and selected menu options.
Depending on the context, bold typeface sometimes represents path names,
directories, or file names.
bold bold underlined keywords are defaults. These take effect if you do not specify a
underlined different keyword.
italic Italic words or characters represent variable values that you must supply.
Italics are also used for information unit titles, for the first use of a glossary term,
and for general emphasis in text.
<key> Angle brackets (less-than and greater-than) enclose the name of a key on the
keyboard. For example, <Enter> refers to the key on your terminal or workstation
that is labeled with the word Enter.
\ In command examples, a backslash indicates that the command or coding example
continues on the next line. For example:
{item} Braces enclose a list from which you must choose an item in format and syntax
descriptions.
[item] Brackets enclose optional items in format and syntax descriptions.
<Ctrl-x> The notation <Ctrl-x> indicates a control character sequence. For example,
<Ctrl-c> means that you hold down the control key while pressing <c>.
item... Ellipses indicate that you can repeat the preceding item one or more times.
| In synopsis statements, vertical lines separate a list of choices. In other words, a
vertical line means Or.
In the left margin of the document, vertical lines indicate technical changes to the
information.
Note: CLI options that accept a list of option values delimit with a comma and no space between values.
As an example, to display the state on three nodes use mmgetstate -N NodeA,NodeB,NodeC.
Exceptions to this syntax are listed specifically within the command.
Summary of changes
for IBM Spectrum Scale version 5.1.0
as updated, December 2020
This release of the IBM Spectrum Scale licensed program and the IBM Spectrum Scale library includes
the following improvements. All improvements are available after an upgrade, unless otherwise specified.
• Feature updates
• Documented commands, structures, and subroutine
• Messages
• Deprecated items
• Changes in documentation
Important: IBM Spectrum Scale 5.1.x supports Python 3.6 or later. It is strongly recommended that
Python 3.6 is installed through the OS package manager (For example, yum install python3). If you
install Python 3.6 by other means, unexpected results might occur, such as failure to install gpfs.base
for prerequisite checks, and workarounds might be required.
AFM and AFM DR-related changes
• Support for file system-level migration by using AFM. For more information, see Data migration by
using Active File Management in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
• Performance improvement for file system-level migration by setting the afmGateway parameter
value to all. That is, afmGateway=all. For more information, see Data migration by using Active File
Management in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide and mmchfileset
command in the IBM Spectrum Scale: Command and Programming Reference.
• AFM-DR pre-deployment reference checklist. For more information, see General guidelines and
recommendation for AFM-DR in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
• AFM support when the kernel is booted in the FIPS mode.
The mmchnode command supports changing the daemon IP address of a quorum node in a
CCR-enabled cluster.
The mmchnode command supports changing the daemon IP for a quorum node in a CCR-
enabled cluster. For more information, see Changing IP addresses or host names of cluster
nodes in the IBM Spectrum Scale: Administration Guide and mmchnode command in the IBM
Spectrum Scale: Command and Programming Reference.
Encryption
Support for CA-signed client certificates; updating client certificates in one step
The mmkeyserv client create command can create a key client with a user-provided CA-
signed certificate or a system-generated self-signed certificate. The new mmkeyserv client
update command updates an expired or unexpired CA-signed or self-signed client certificate
in one step. It is no longer necessary to delete the old client and create a new one.
xl Summary of changes
The encryptionKeyCacheExpiration attribute specifies the refresh interval of the file
system encryption key cache
With the encryptionKeyCacheExpiration attribute of the mmchconfig command, you
can specify the refresh interval of the file system encryption key cache in seconds. Changing
the value of the encryptionKeyCacheExpiration requires cluster services (mmfsd) to be
restarted on each node to take effect. For more information, see mmchconfig command in the
IBM Spectrum Scale: Command and Programming Reference.
The nistCompliance attribute must be set to NIST 800-131A for clusters running at version
5.1 or later
Starting from IBM Spectrum Scale 5.1.0 release, setting nistCompliance to off is not
allowed. In addition, updating a cluster to version 5.1 by using mmchconfig
release=LATEST requires nistCompliance to be set to NIST 800-131A. For more
information, see mmchconfig command in the IBM Spectrum Scale: Command and
Programming Reference.
Security
Sudo wrapper security improvement
You no longer need to add the scp, echo, and mmsdrrestore commands to the sudoers
file. For more information, see Configuring sudo in IBM Spectrum Scale: Administration Guide.
Features
New mmqos command expands QoS features
The mmqos command combines the functionality of the existing mmchqos and mmlsqos
commands, is easy to use, and supports user-created service classes and dynamic I/O service
sharing. With user-created classes and their associated filesets, you can set I/O service usage
levels for functional groups in your organization. Future QoS development will be through
mmqos. For more information, see mmchqos command in the IBM Spectrum Scale: Command
and Programming Reference.
Performance
Optimizing background space reclamation for thin-provision devices
The mmchconfig enhances the performance of background space reclamation for thin
provisioned devices with the backgroundSpaceReclaimThreshold attribute. You can
configure a threshold value to define how often you want the background space reclamation to
run. For more information, see the topic mmchconfig command in the IBM Spectrum Scale:
Command and Programming Reference.
Note: The space reclaim function instructs the device to remove unused blocks as soon as
they are detected. This discarding of blocks increases the space efficiency in the device, and
also reduces the performance impact by write amplification if the device is an SSD like a NVMe
disk.
The performance measurement team in IBM specifies that in an IBM Spectrum Scale setup
with Intel NVMe disk, creating and updating files would experience heavily degraded
performance without any space reclaim. The worst degradation has been estimated to be
more than 80%. With the background space reclaim, the performance degradation will be
limited to a maximum of 20%. Based on these estimations, you can use the background space
reclaim for daily workload, and manually invoke the mmreclaimspace command to reclaim
all reclaimable space in the maintenance window.
Offline mmfsck directory scanning of a file system that has a very sparse inode 0 file
Performance is improved for the mmfsck command in offline mode when it is doing directory
scanning of a file system with a very sparse inode 0 file. A very sparse inode 0 file can occur
when a file system has a large number of independent filesets.
SMB changes
SMB is supported on SUSE SLES 15 on s390x (RPQ Request required).
Python-related changes
From IBM Spectrum Scale release 5.1.0, all Python code in the IBM Spectrum Scale product is
converted to Python 3. The minimum supported Python version is 3.6.
For compatibility reasons on IBM Spectrum Scale 5.1.0.x and later on Red Hat Enterprise Linux 7.x
(7.7 and later), a few Python 2 files are packaged and they might trigger dependency-related
messages. In certain scenarios, Python 2.7 might also be required to be installed. Multiple versions of
Python can co-exist on the same system. For more information, see the entry about mmadquery in
A feature is a deprecated feature if that specific feature is supported in the current release but the
support might be removed in a future release. In some cases, it might be advisable to plan to
discontinue the use of deprecated functionality.
A feature is a Discontinued feature if it has been removed in a release and is no longer available. You
need to make changes if you were using that functionality in previous releases.
Changes in documentation
IBM Spectrum Scale FAQ improvements
The IBM Spectrum Scale support information has been condensed and moved to Q2.1 What is
supported on IBM Spectrum Scale for AIX, Linux, Power, and Windows? In this new question, the
support information is available for the latest GA (5.1.0) and PTF (5.0.5.3) in the following format:
a table that details the supported operating systems and components and latest tested kernels, a
table that details the support exceptions for Linux, and a table that details the support
exceptions for AIX and Windows. It is the intention for IBM Spectrum Scale to support all features
List of documentation changes in product guides and respective IBM Knowledge Center sections
The following is a list of documentation changes including changes in topic titles, changes in
placement of topics, and deleted topics:
l Summary of changes
Table 6. List of changes in documentation (continued)
Guide IBM Knowledge List of changes
Center section
Command and Command reference Removed the following topics:
Programming
• mmblock command
Reference Guide
• mmmsgqueue command
Summary of changes li
lii IBM Spectrum Scale 5.1.0: Administration Guide
Chapter 1. Configuring the GPFS cluster
There are several tasks involved in managing your GPFS cluster. This topic points you to the information
you need to get started.
GPFS cluster management tasks include the following.
• “Creating your GPFS cluster” on page 1
• “Displaying cluster configuration information” on page 2
• “Specifying nodes as input to GPFS commands” on page 161
• “Adding nodes to a GPFS cluster” on page 4
• “Deleting nodes from a GPFS cluster” on page 5
• “Changing the GPFS cluster configuration data” on page 7
• “Cluster quorum with quorum nodes” on page 30
• “Cluster quorum with quorum nodes and tiebreaker disks” on page 31
• “Displaying and changing the file system manager node” on page 32
• “Determining how long mmrestripefs takes to complete” on page 164
• “Starting and stopping GPFS” on page 34
Note: In IBM Spectrum Scale V4.1.1 and later, many of these tasks can also be handled by the installation
toolkit configuration options. For more information on the installation toolkit, see Using the spectrumscale
installation toolkit to perform installation tasks: Explanations and examples topic in the IBM Spectrum
Scale: Concepts, Planning, and Installation Guide.
For information on RAID administration, see IBM Spectrum Scale RAID: Administration.
mmlscluster
If the cluster uses a server-based repository, the command also displays the following information:
• The primary GPFS cluster configuration server
• The secondary GPFS cluster configuration server
mmlscluster --ces
mmaddnode -N k164n01.kgn.ibm.com
Mon Aug 9 21:53:30 EDT 2004: 6027-1664 mmaddnode: Processing node k164n01.kgn.ibm.com
mmaddnode: Command successfully completed
mmaddnode: 6027-1371 Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
mmlscluster
You can also use the installation toolkit to add nodes. For more information, see Adding nodes, NSDs, or
file systems to an installation process in IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
For complete usage information, see mmaddnode command, mmlscluster command and
mmchlicense command in IBM Spectrum Scale: Command and Programming Reference.
If the nodes are not in the list or if file audit logging was never configured, proceed to step 2.
If the nodes are in the list, they are either brokers or ZooKeepers. Therefore, file audit logging must be
disabled for all file systems.
2. To delete the nodes listed in a file called nodes_to_delete, issue the following command:
mmdelnode -N /tmp/nodes_to_delete
where nodes_to_delete contains the nodes k164n01 and k164n02. The system displays information
similar to the following:
mmlscluster
4. If you disabled file audit logging in step 1, you can enable it by following the instructions in “Enabling
file audit logging on a file system” on page 111.
For information about deleting protocol nodes (CES nodes) from a cluster, see “Deleting a Cluster Export
Services node from an IBM Spectrum Scale cluster” on page 50.
For complete usage information, see mmdelnode command and mmlscluster command in IBM
Spectrum Scale: Command and Programming Reference.
Exercise caution when shutting down GPFS on quorum nodes or deleting quorum nodes from the GPFS
cluster. If the number of remaining quorum nodes falls below the requirement for a quorum, you will be
unable to perform file system operations. For more information about quorum, see Quorum, in the IBM
Spectrum Scale: Concepts, Planning, and Installation Guide.
Related concepts
Displaying cluster configuration information
Use the mmlscluster command to display cluster configuration information.
Security mode
The security mode of a cluster determines the level of security that the cluster provides for
communications between nodes in the cluster and also for communications between clusters.
Minimum release level of a cluster
The minimum release level of a cluster is the currently enabled level of functionality of the cluster. It is
expressed as an IBM Spectrum Scale version number, such as 5.0.2.0.
Cluster quorum with quorum nodes
Cluster quorum defines the minimum number of GPFS quorum nodes that must have the GPFS daemon
actively running on them for the cluster to be operational. This number is half of the defined GPFS quorum
Attention: If during the change to a new primary or secondary GPFS cluster configuration server,
one or both of the old server nodes are down, it is imperative that you run the mmchcluster -p
LATEST command as soon as the old servers are brought back online. Failure to do so may lead
to disruption in GPFS operations.
• Synchronize the primary GPFS cluster configuration server node. If an invocation of the mmchcluster
command fails, you will be prompted to reissue the command and specify LATEST on the -p option to
mmchcluster -p k164n06
mmchcluster -p k164n06
mmchcluster: Command successfully completed
mmlscluster
Attention: The mmchcluster command, when issued with either the -p or -s option, is designed
to operate in an environment where the current primary and secondary GPFS cluster configuration
servers are not available. As a result, the command can run without obtaining its regular
serialization locks. To assure smooth transition to a new cluster configuration server, no other
GPFS commands (mm... commands) should be running when the command is issued nor should
any other command be issued until the mmchcluster command has successfully completed.
For complete usage information, see mmchcluster command and mmlscluster command in IBM
Spectrum Scale: Command and Programming Reference
You might be able to tune your cluster for better performance by reconfiguring one or more attribute.
Before you change any attribute, consider how the changes will affect the operation of GPFS. For a
detailed discussion, see IBM Spectrum Scale: Concepts, Planning, and Installation Guide and mmcrcluster
command in IBM Spectrum Scale: Command and Programming Reference guide.
Table 7 on page 9 details the GPFS cluster configuration attributes which can be changed by issuing the
mmchconfig command. Variations under which these changes take effect are noted:
1. Take effect immediately and are permanent (-i).
2. Take effect immediately but do not persist when GPFS is restarted (-I).
3. Require that the GPFS daemon be stopped on all nodes for the change to take effect.
4. May be applied to only a subset of the nodes in the cluster.
For more information on the release history of tuning parameters, see “Tuning parameters change
history” on page 65.
maxMissedPingTimeout no no no no on restart of
the daemon
Handles high network latency in a short
period of time
minMissedPingTimeout no no no no on restart of
the daemon
Handles high network latency in a short
period of time
Specify the nodes you want to target for change and the attributes with their new values on the
mmchconfig command. For example, to change the pagepool value for each node in the GPFS cluster
immediately, enter:
mmchconfig pagepool=100M -i
For complete usage information, see mmchconfig command in IBM Spectrum Scale: Command and
Programming Reference.
Related concepts
Displaying cluster configuration information
Security mode
The security mode of a cluster determines the level of security that the cluster provides for
communications between nodes in the cluster and also for communications between clusters.
There are three security modes:
EMPTY
The receiving node and the sending node do not authenticate each other, do not encrypt transmitted
data, and do not check the integrity of transmitted data.
AUTHONLY
The sending and receiving nodes authenticate each other with a TLS handshake and then close the
TLS connection. Communication continues in the clear. The nodes do not encrypt transmitted data
and do not check data integrity.
Cipher
To set this mode, you must specify the name of a supported cipher, such as AES128-GCM-SHA256.
The sending and receiving nodes authenticate each other with a TLS handshake. A TLS connection is
established. The transmitted data is encrypted with the specified cipher and is checked for data
integrity.
For FIPS 140-2 considerations, see the Encryption topic in the IBM Spectrum Scale: Administration
Guide.
For both the AUTHONLY mode and the cipher mode, the cluster automatically generates a public/private
key pair when the mode is set. However, for communication between clusters, the system administrators
are still responsible for exchanging public keys.
In IBM Spectrum Scale V4.2 or later, the default security mode is AUTHONLY. The mmcrcluster
command sets the mode when it creates the cluster. You can display the security mode by running the
following command:
mmlsconfig cipherlist
You can change the security mode with the following command:
mmchconfig cipherlist=security_mode
If you are changing the security mode from EMPTY to another mode, you can do so without stopping the
GPFS daemon. However, if you are changing the security mode from another mode to EMPTY, you must
stop the GPFS daemon on all the nodes in the cluster. Change the security mode to EMPTY and then
restart the GPFS daemon.
The default security mode is EMPTY in IBM Spectrum Scale V4.1 or earlier and is AUTHONLY in IBM
Spectrum Scale V4.2 or later. If you migrate a cluster from IBM Spectrum Scale V4.1 to V4.2 or later by
running mmchconfig release=LATEST, the command checks the security mode. If the mode is EMPTY,
the command fails with an error message. You then can do either of two actions:
• Change the security mode to a valid value other than EMPTY, such as AUTHONLY, and rerun the
mmchconfig release=LATEST command. Or,
• Leave the security mode set to EMPTY and re-run the mmchconfig release=LATEST command with
the option --accept-empty-cipherlist-security.
For more information, see Completing the migration to a new level of IBM Spectrum Scale in IBM Spectrum
Scale: Concepts, Planning, and Installation Guide.
Configuring the security mode to a setting other than EMPTY (that is, either AUTHONLY or a supported
cipher) requires the use of the GSKit toolkit for encryption and authentication. As such, the gpfs.gskit
package, which is available on all Editions, should be installed.
Related concepts
Displaying cluster configuration information
Use the mmlscluster command to display cluster configuration information.
Minimum release level of a cluster
The minimum release level of a cluster is the currently enabled level of functionality of the cluster. It is
expressed as an IBM Spectrum Scale version number, such as 5.0.2.0.
Cluster quorum with quorum nodes
Cluster quorum defines the minimum number of GPFS quorum nodes that must have the GPFS daemon
actively running on them for the cluster to be operational. This number is half of the defined GPFS quorum
nodes plus one, so it is a good idea to have an odd number of GPFS quorum nodes defined. Cluster
quorum using only GPFS quorum nodes is the default quorum algorithm.
Cluster quorum with quorum nodes and tiebreaker disks
# mmchconfig cipherList=AES256-SHA256
By setting the cipherList value, the data that is exchanged between the nodes in a single cluster of
IBM Spectrum Scale is encrypted with the AES256-SHA256 cipher.
2. Restart the GPFS daemon across the cluster so that the security setting is in effect.
Important: To keep cluster services operational, you can start the daemons in a rolling fashion, one
node at a time. The new security mode takes effect for each new TCP connection that is established.
After the daemons on all nodes in a cluster are restarted, the security mode takes effect for all TCP
connections.
The cipherList setting does not affect the existing TCP connections. These TCP connections remain in
their previous setting, which is likely to be the AUTHONLY mode.
Note: TCP connections that are established for the clustered configuration repository (CCR) operate in the
AUTHONLY mode.
# mmlsconfig
Configuration data for cluster example.cluster:
--------------------------------------------
. . .
minReleaseLevel 5.0.0.0
. . .
When a cluster is created, the minimum release level of the cluster is set to the release level of the node
where the mmcrcluster command is issued.
Tip: The results of running the mmcrcluster command depend partly on the relative release levels of the
nodes that you are including in the new cluster:
• If the mmcrcluster command is issued on the node with the lowest release level in the cluster, then
cluster creation succeeds and the minimum release level of the cluster corresponds to the release level
of the node from which the cluster was created.
• If the mmcrcluster command is issued on a node other than the node with the lowest release level,
then one of two outcomes can occur. Cluster creation might fail, or it might succeed but exclude nodes
with lower release levels from the cluster. In either case the command might display an error message
like the following one:
6027-1599 The level of GPFS on node vmip135.gpfs.net does not support the requested action.
Important: Nodes in a cluster can run different versions of IBM Spectrum Scale only if the versions are
compatible. For more information, see the subsection "Can different IBM Spectrum Scale maintenance
levels coexist?" in the FAQ at https://www.ibm.com/support/knowledgecenter/STXKQY/
gpfsclustersfaq.html.
To increase the minimum release level to the latest common level of functionality, issue the following
command:
mmchconfig release=LATEST
For more information, see the topic mmchconfig command in the IBM Spectrum Scale: Command and
Programming Reference. Issuing the mmchconfig release=LATEST command is frequently one of the
final steps in upgrading a cluster to a later version of IBM Spectrum Scale. For more information, see the
topic Completing the upgrade to a new level of IBM Spectrum Scale in the IBM Spectrum Scale: Concepts,
Planning, and Installation Guide.
Warning: You cannot decrease the minimum release level of a cluster or revert it to the previous
level, except by a lengthy process of uninstalling and reinstalling. For more information, see the
Configuring sudo
The system administrator must configure sudo by modifying the sudoers file. IBM Spectrum Scale
installs a sample of the modified sudoers file as /usr/lpp/mmfs/samples/sudoers.sample.
Do the following steps before you configure sudo:
1. Create a user and group to run administration commands.
Note: The examples in this section have the user name gpfsadmin and the group gpfs.
2. Allow the root user from an administration node to run commands on all nodes including the current
node with user ID gpfsadmin without being prompted for a password. For example, the root user
must be able to issue a command like the following one without being prompted for a password:
3. Install the sudo program. Sudo is free open source software that is distributed under a license.
Do the following steps on each node in the cluster:
1. Open the /etc/sudoers file with a text editor. The sudo installation includes the visudo editor, which
checks the syntax of the file before closing.
2. Add the following commands to the file. Important: Enter each command on a single line:
# Preserve GPFS environment variables:
Defaults env_keep += "MMMODE environmentType GPFS_rshPath GPFS_rcpPath mmScriptTrace GPFSCMDPORTRANGE GPFS_CIM_MSG_FORMAT"
# Allow members of the gpfs group to run all commands but only selected commands without a password:
%gpfs ALL=(ALL) PASSWD: ALL, NOPASSWD: /usr/lpp/mmfs/bin/mmremote
The first line preserves the environment variables that the IBM Spectrum Scale administration
commands need to run. The second line allows the users in the gpfs group to run administration
commands without being prompted for a password. The third line disables requiretty. When this
flag is enabled, sudo blocks the commands that do not originate from a TTY session.
# Allow members of the gpfs group to run all commands but only selected commands without a
password:
%gpfs ALL=(ALL) PASSWD: ALL, NOPASSWD: /usr/lpp/mmfs/bin/mmremote, /usr/bin/scp, /bin/
echo, /usr/lpp/mmfs/bin/mmsdrrestore
3. Perform the following steps to verify that the sshwrap and scpwrap scripts work correctly.
a) sshwrap is an IBM Spectrum Scale sudo wrapper script for the remote shell command that is
installed with IBM Spectrum Scale. To verify that it works correctly, run the following command as
the gpfsadmin user:
Note: Here nodeName is the name of an IBM Spectrum Scale node in the cluster.
b) scpwrap is an IBM Spectrum Scale sudo wrapper script for the remote file copy command that is
installed with IBM Spectrum Scale. To verify that it works correctly, run the following command as
the gpfsadmin user:
Note: Here nodeName is the name of an IBM Spectrum Scale node in the cluster.
Sudo is now configured to run administration commands without remote root login.
c) To verify that the cluster is using sudo wrappers, run the mmlscluster command as shown in the
following example:
gpfsadmin@c13c1apv7 admin]$mmlscluster
GPFS cluster information
• To configure an existing cluster to call the sudo wrapper scripts, use these steps:
a) Log in with the user ID. This example uses gpfsadmin as the user ID.
b) Issue the mmchcluster command with the --use-sudo-wrapper option to use the sudo
wrappers:
c) To verify that the cluster is using sudo wrappers, run the mmlscluster command with no
parameters. If the sudo wrapper is configured properly, the output must contain the following two
lines:
The cluster stops calling the sudo wrapper scripts to run the remote administration commands.
mmchconfig tiebreakerDisks="nsdName[;nsdName...]
mmchconfig tiebreakerDisks=DEFAULT
Related concepts
Displaying cluster configuration information
Use the mmlscluster command to display cluster configuration information.
Security mode
mmlsmgr fs1
The output shows the device name of the file system and the file system manager's node number and
name:
For complete usage information, see mmlsmgr command in IBM Spectrum Scale: Command and
Programming Reference.
You can change the file system manager node for an individual file system by issuing the mmchmgr
command. For example, to change the file system manager node for the file system fs1 to k145n32,
enter:
The output shows the file system manager's node number and name, in parentheses, as recorded in the
GPFS cluster data:
GPFS: 6027-628 Sending migrate request to current manager node 19.134.68.69 (k145n30).
GPFS: 6027-629 [N] Node 19.134.68.69 (k145n30) resigned as manager for fs1.
GPFS: 6027-630 [N] Node 19.134.68.70 (k145n32) appointed as manager for fs1.
For complete usage information, see mmchmgr command in IBM Spectrum Scale: Command and
Programming Reference.
Related concepts
Displaying cluster configuration information
Use the mmlscluster command to display cluster configuration information.
Security mode
The security mode of a cluster determines the level of security that the cluster provides for
communications between nodes in the cluster and also for communications between clusters.
Minimum release level of a cluster
The minimum release level of a cluster is the currently enabled level of functionality of the cluster. It is
expressed as an IBM Spectrum Scale version number, such as 5.0.2.0.
Cluster quorum with quorum nodes
Cluster quorum defines the minimum number of GPFS quorum nodes that must have the GPFS daemon
actively running on them for the cluster to be operational. This number is half of the defined GPFS quorum
nodes plus one, so it is a good idea to have an odd number of GPFS quorum nodes defined. Cluster
quorum using only GPFS quorum nodes is the default quorum algorithm.
Cluster quorum with quorum nodes and tiebreaker disks
To use cluster quorum with quorum nodes and tiebreaker disks, additional requirements apply.
Related tasks
Creating your GPFS cluster
You must first create a GPFS cluster by issuing the mmcrcluster command.
Adding nodes to a GPFS cluster
You can add nodes to an existing GPFS cluster by issuing the mmaddnode command. The new nodes are
available immediately after the successful completion of this command.
Deleting nodes from a GPFS cluster
You can delete nodes from a GPFS cluster by issuing the mmdelnode command.
Changing the GPFS cluster configuration data
You can use the mmchcluster or mmchconfig commands to change the configuration attributes.
Running IBM Spectrum Scale commands without remote root login
With sudo wrapper scripts you can avoid configuring nodes to allow remote root login.
Starting and stopping GPFS
You can use the mmstartup and mmshutdown commands to start and stop GPFS on new or existing
clusters.
Shutting down an IBM Spectrum Scale cluster
mmstartup -a
Check the messages recorded in /var/adm/ras/mmfs.log.latest on one node for verification. Look
for messages similar to this:
This indicates that quorum has been formed and this node has successfully joined the cluster, and is now
ready to mount file systems.
If GPFS does not start, see GPFS daemon will not come up in IBM Spectrum Scale: Problem Determination
Guide.
For complete usage information, see mmstartup command in IBM Spectrum Scale: Command and
Programming Reference.
If it becomes necessary to stop GPFS, you can do so from the command line by issuing the mmshutdown
command:
mmshutdown -a
Thu Nov 26 06:32:43 MST 2020: mmshutdown: Starting force unmount of GPFS file systems
Thu Nov 26 06:32:48 MST 2020: mmshutdown: Shutting down GPFS daemons
Thu Nov 26 06:32:59 MST 2020: mmshutdown: Finished
For more information, see mmshutdown command in IBM Spectrum Scale: Command and Programming
Reference.
Related concepts
Displaying cluster configuration information
3. Unmount all file systems, except the CES shared root file system, on all nodes in the cluster using the
mmumount command.
4. Stop GPFS daemons on all protocol nodes in the cluster using the mmshutdown -N cesNodes
command.
5. Unmount all file systems on all nodes in the cluster using the mmumount all -a command.
6. Stop GPFS daemons on all nodes in the cluster using the mmshutdown -a command.
After performing these steps, depending on your operating system, shut down your servers accordingly.
Before shutting down and powering up your servers, consider the following:
• You must shut down NSD servers before the storage subsystem. While powering up, the storage
subsystem must be online before NSD servers are up so that LUNs are visible to them.
• In a power-on scenario, verify that all network and storage subsystems are fully operational before
bringing up any IBM Spectrum Scale nodes.
• On the Power® platform, you must shut down operating systems for LPARs first and then power off
servers using Hardware Management Console (HMC). HMC must be the last to be shut down and the
first to be powered up.
• It is preferable to shut down your Ethernet and InfiniBand switches using the management console
instead of powering them off. In any case, network infrastructure such as switches or extenders must be
powered off last.
• After starting up again, verify that functions such as AFM and policies are operational. You might need to
manually restart some functions.
• There are a number other GPFS functions that could be interrupted by a shutdown. Ensure that you
understand what else might need to be verified depending on your environment.
Related concepts
Displaying cluster configuration information
Use the mmlscluster command to display cluster configuration information.
Security mode
The security mode of a cluster determines the level of security that the cluster provides for
communications between nodes in the cluster and also for communications between clusters.
Minimum release level of a cluster
The minimum release level of a cluster is the currently enabled level of functionality of the cluster. It is
expressed as an IBM Spectrum Scale version number, such as 5.0.2.0.
Cluster quorum with quorum nodes
Cluster quorum defines the minimum number of GPFS quorum nodes that must have the GPFS daemon
actively running on them for the cluster to be operational. This number is half of the defined GPFS quorum
nodes plus one, so it is a good idea to have an odd number of GPFS quorum nodes defined. Cluster
quorum using only GPFS quorum nodes is the default quorum algorithm.
2. Run the following command to shut down all the CES nodes:
mmshutdown -a
mmchconfig cesSharedRoot=/gpfs/fs0
4. Run the following command to start GPFS on all the CES nodes:
mmstartup -a
The cesSharedRoot is monitored by the system health daemon. If the shared root is not available, the CES
node list command, mmces node list displays no-shared-root, and a failover is triggered.
The cesSharedRoot cannot be unmounted when the CES cluster is up and running. You need to bring all
CES nodes down if you want to unmount cesSharedRoot (for example, for doing service action like fsck).
To list the current cesSharedRoot, run:
cesSharedRoot /gpfs/gpfs-ces/
The recommendation for CES shared root is a dedicated file system, but it is not enforced. It can also be a
part (path) of an existing GPFS file system. A dedicated file system can be created with the mmcrfs
command. In any case, CES shared root must reside on GPFS and must be available when it is configured
through the mmchconfig command.
If not already done through the installer, it is recommended that you create a file system for the CES.
Some protocol services share information through a cluster-wide file system. It is recommended to use a
separate file system for this purpose.
Note: The recommended size for CES shared root file system is greater than or equal to 4 GB. It is
recommended to use the following settings for the CES shared root file system if it is used for CES shared
root only:
• Block size: 256 KB
• Starting inode-limit: 5000
To set up CES, change the configuration to use the new file system:
mmchconfig cesSharedRoot=/gpfs/fs0
Note:
• When the GPFS starts back up, as the cesSharedRoot is now defined, the CES can be enabled on the
cluster.
• If file audit logging is already enabled for the file system that you defined for cesSharedRoot, you need
to first disable and then enable it again for that file system.
Related concepts
Configuring Cluster Export Services nodes
If you do not configure Cluster Export Services (CES) nodes through the installer, you must configure them
before you configure any protocols.
Configuring CES protocol service IP addresses
Protocol services are made available through Cluster Export Services (CES) protocol service IP addresses.
These addresses are separate from the IP addresses that are used internally by the cluster.
CES IP aliasing to network adapters on protocol nodes
Cluster Export Services (CES) is a functionality in IBM Spectrum Scale that enables NFS, SMB, and Object
protocols. Irrespective of which protocols you choose, all are accessible through a floating pool of IP
addresses called CES IP addresses. This pool of CES IP addresses is considered floating because each IP
can move independently among all protocol nodes. During a protocol node failure, accessibility to all
protocols is maintained as the CES IP addresses automatically move from the failed protocol node to a
healthy protocol node. Use this information to understand how CES IP addresses are assigned and are
aliased to adapters with or without VLAN tagging.
Deploying Cluster Export Services packages on existing IBM Spectrum Scale nodes
Use the following instructions to copy packages on your protocol nodes and to deploy these packages.
Verifying the final CES configurations
After you configure all nodes, verify that the list of CES nodes is complete:
CES nodes can be assigned to CES groups. A CES group is identified by a group name that has lowercase
alphanumeric characters. CES groups can be used to manage CES node and address assignments.
Nodes can be assigned to groups by issuing the following command:
The group assignment can also be specified when the node is enabled for CES by issuing the following
command:
The node can be removed from a group at any time by issuing the following command:
For more information, see mmchnode command in IBM Spectrum Scale: Command and Programming
Reference.
Related concepts
Setting up Cluster Export Services shared root file system
If a shared root file system through the installer is not set up, you must create one for Cluster Export
Services (CES).
Configuring CES protocol service IP addresses
Protocol services are made available through Cluster Export Services (CES) protocol service IP addresses.
These addresses are separate from the IP addresses that are used internally by the cluster.
CES IP aliasing to network adapters on protocol nodes
Cluster Export Services (CES) is a functionality in IBM Spectrum Scale that enables NFS, SMB, and Object
protocols. Irrespective of which protocols you choose, all are accessible through a floating pool of IP
addresses called CES IP addresses. This pool of CES IP addresses is considered floating because each IP
can move independently among all protocol nodes. During a protocol node failure, accessibility to all
protocols is maintained as the CES IP addresses automatically move from the failed protocol node to a
healthy protocol node. Use this information to understand how CES IP addresses are assigned and are
aliased to adapters with or without VLAN tagging.
Deploying Cluster Export Services packages on existing IBM Spectrum Scale nodes
After you add the required CES protocol service IP addresses, you must verify the configuration:
Use mmces address add --ces-ip 192.168.6.6 to add an IP address to the CES IP address pool.
The IP address is assigned to a CES node according to the CES address distribution policy.
CES addresses can be assigned to CES groups. A CES group is identified by a group name that consists of
alphanumeric characters, which are case-sensitive. You can assign addresses to a group when they are
defined by issuing the following command.
You can change the group assignment by issuing the following command.
You can remove the group assignment by issuing the following command.
A CES address that is associated with a group must be assigned only to a node that is also associated with
the same group. A node can belong to multiple groups while an address cannot.
As an example, consider a configuration with three nodes. All three nodes can host addresses on subnet
A, and two of the nodes can host addresses on subnet B. The nodes must have an existing non-CES IP
address of the same subnet that is configured on the interfaces that are intended to be used for the CES
IPs. Also, four addresses are defined, two on each subnet.
Node1: groups=subnetA,subnetB
Node2: groups=subnetA,subnetB
Node3: groups=subnetA
Address1: subnetA
Address2: subnetA
Address3: subnetB
Address4: subnetB
In this example, Address1 and Address2 can be assigned to any of the three nodes, but Address3 and
Address4 can be assigned to only Node1 or Node2.
If an address is assigned to a group for which there are no healthy nodes, the address remains unassigned
until a node in the same group becomes available.
Addresses without a group assignment can be assigned to any node. Therefore, it is necessary to use a
group for each subnet when multiple subnets exist.
Note: IP addresses that are assigned attributes (such as object_database_node or
object_singleton_node) do not follow the same policy rules that other IP addresses follow. If a node
has an affinity policy set, the IP address that is associated with the assigned attribute fails back to its
node.
For information about the CIDR notation, see Classless Inter-Domain Routing.
For more information, see mmces command in IBM Spectrum Scale: Command and Programming
Reference.
Related concepts
Setting up Cluster Export Services shared root file system
If a shared root file system through the installer is not set up, you must create one for Cluster Export
Services (CES).
Configuring Cluster Export Services nodes
If you do not configure Cluster Export Services (CES) nodes through the installer, you must configure them
before you configure any protocols.
CES IP aliasing to network adapters on protocol nodes
Cluster Export Services (CES) is a functionality in IBM Spectrum Scale that enables NFS, SMB, and Object
protocols. Irrespective of which protocols you choose, all are accessible through a floating pool of IP
addresses called CES IP addresses. This pool of CES IP addresses is considered floating because each IP
can move independently among all protocol nodes. During a protocol node failure, accessibility to all
protocols is maintained as the CES IP addresses automatically move from the failed protocol node to a
healthy protocol node. Use this information to understand how CES IP addresses are assigned and are
aliased to adapters with or without VLAN tagging.
Deploying Cluster Export Services packages on existing IBM Spectrum Scale nodes
Use the following instructions to copy packages on your protocol nodes and to deploy these packages.
Verifying the final CES configurations
After you finish configuring the Cluster Export Services (CES), you must verify the final configuration.
In the preceding example, eth1 preexists with an established route and IP: 10.11.1.122. This IP is
manually assigned and must be accessible before any CES configuration. When the CES services are
active, CES IP addresses are then automatically aliased to this base adapter, thus creating eth1:0 and
eth1:1. The floating CES IP addresses assigned to the aliases are 10.11.1.5 and 10.11.1.7. Both
CES IP addresses are allowed to move to other nodes if there is a failure. This automatic movement
combined with the ability to manually move CES IP addresses, might cause a variance in the number of
aliases and CES IP addresses among protocol nodes. The data0 interface illustrates how a network used
for GPFS intra-cluster connectivity between nodes can be separate from the adapter that is used for CES
IP addresses.
Example of aliased CES IP addresses by using the ip addr command (with VLAN tag)
As in the no VLAN tag example, an existing network adapter must be present so that CES\ IP addresses
can alias to it. No IP addresses are assigned to the non-VLAN base adapter eth1. In this example, the
preexisting network adapter with an established route and IP is eth1.3016. The IP for eth1.3016 is
10.30.16.122 and the VLAN tag is 3016. This preexisting IP can be used for network verification, before
configuration of CES IP, by pinging it from external to the cluster or pinging it from other protocol nodes. It
is a good practice to make sure that all protocol node base adapter IP addresses are accessible before the
protocols are enabled. The data0 interface shows how a network used for GPFS intra-cluster connectivity
between nodes can be separate from the adapter that is used for CES IP addresses.
Example distribution of CES IP addresses among two protocol nodes after enablement of protocols
(with VLAN tag)
Example distribution of CES IP addresses from multiple VLANs among two protocol nodes after
enablement of protocols
Related concepts
Setting up Cluster Export Services shared root file system
If a shared root file system through the installer is not set up, you must create one for Cluster Export
Services (CES).
Configuring Cluster Export Services nodes
If you do not configure Cluster Export Services (CES) nodes through the installer, you must configure them
before you configure any protocols.
Configuring CES protocol service IP addresses
Protocol services are made available through Cluster Export Services (CES) protocol service IP addresses.
These addresses are separate from the IP addresses that are used internally by the cluster.
Deploying Cluster Export Services packages on existing IBM Spectrum Scale nodes
Use the following instructions to copy packages on your protocol nodes and to deploy these packages.
Verifying the final CES configurations
After you finish configuring the Cluster Export Services (CES), you must verify the final configuration.
For a list of packages applicable for the current IBM Spectrum Scale release, see Manually installing
the software packages on Linux nodes in IBM Spectrum Scale: Concepts, Planning, and Installation
Guide.
3. Set the server licenses for each CES node by issuing the following command.
For example,
For example,
5. Assign export IP addresses for each export IP by issuing the following command.
Related concepts
Setting up Cluster Export Services shared root file system
If a shared root file system through the installer is not set up, you must create one for Cluster Export
Services (CES).
Configuring Cluster Export Services nodes
If you do not configure Cluster Export Services (CES) nodes through the installer, you must configure them
before you configure any protocols.
Configuring CES protocol service IP addresses
Protocol services are made available through Cluster Export Services (CES) protocol service IP addresses.
These addresses are separate from the IP addresses that are used internally by the cluster.
CES IP aliasing to network adapters on protocol nodes
Cluster Export Services (CES) is a functionality in IBM Spectrum Scale that enables NFS, SMB, and Object
protocols. Irrespective of which protocols you choose, all are accessible through a floating pool of IP
addresses called CES IP addresses. This pool of CES IP addresses is considered floating because each IP
can move independently among all protocol nodes. During a protocol node failure, accessibility to all
protocols is maintained as the CES IP addresses automatically move from the failed protocol node to a
healthy protocol node. Use this information to understand how CES IP addresses are assigned and are
aliased to adapters with or without VLAN tagging.
Verifying the final CES configurations
After you finish configuring the Cluster Export Services (CES), you must verify the final configuration.
mmlscluster --ces
For more information about mmces node list and mmces address list, see the topic mmces
command in IBM Spectrum Scale: Command and Programming Reference.
For more information about configuring and enabling SMB and NFS services, see “Configuring and
enabling SMB and NFS protocol services” on page 233.
Related concepts
Setting up Cluster Export Services shared root file system
If a shared root file system through the installer is not set up, you must create one for Cluster Export
Services (CES).
Configuring Cluster Export Services nodes
If you do not configure Cluster Export Services (CES) nodes through the installer, you must configure them
before you configure any protocols.
Configuring CES protocol service IP addresses
Protocol services are made available through Cluster Export Services (CES) protocol service IP addresses.
These addresses are separate from the IP addresses that are used internally by the cluster.
CES IP aliasing to network adapters on protocol nodes
If the node is not in the list or if file audit logging was never configured, proceed to step 2.
If the node is in the list, it is either a broker or a ZooKeeper. Therefore, file audit logging must be
disabled for all file systems.
2. On a node other than the one you want to delete from the cluster, issue the following command to
suspend the node.
3. On the node that you want to delete from the cluster, issue the following commands to stop the CES
services.
In this example, it is assumed that all three protocols are enabled on the node that you want to delete
from the cluster.
4. On a node other than the one you want to delete from the cluster, issue the following command to
disable CES on the node.
5. On a node other than the one you want to delete from the cluster, issue the following command to shut
down GPFS on the node.
# mmshutdown –N <Node_to_Delete>
6. On a node other than the one you want to delete from the cluster, issue the following command to
delete the node from the cluster.
# mmdelnode –N <Node_to_Delete>
7. If you disabled file audit logging in step 1, you can enable it by following the instructions in “Enabling
file audit logging on a file system” on page 111.
3. To verify the CES groups your nodes belong to, issue the mmces node list command.
The system displays information similar to this:
4. To verify the groups your CES IPs belong to, issue the mmces address list command. The system
displays information similar to the following:
Clock synchronization
The clocks of all nodes in the GPFS cluster must be synchronized. If this is not done, NFS access to the
data and other GPFS file system operations may be disrupted.
Related concepts
GPFS administration security
Before administering your GPFS file system, make certain that your system has been properly configured
for security.
Cache usage
GPFS creates a number of cache segments on each node in the cluster. The amount of cache is controlled
by three attributes.
Access patterns
Cache usage
GPFS creates a number of cache segments on each node in the cluster. The amount of cache is controlled
by three attributes.
These attributes have default values at cluster creation time and might be changed through the
mmchconfig command:
pagepool
The GPFS pagepool attribute is used to cache user data and file system metadata. The pagepool
mechanism allows GPFS to implement read and write requests asynchronously. Increasing the size of
mmchconfig pagepool=4G
maxFilesToCache
The total number of different files that can be cached at one time. Every entry in the file cache
requires some pageable memory to hold the content of the file's inode plus control data structures.
This is in addition to any of the file's data and indirect blocks that might be cached in the page pool.
While the total amount of memory that is required for inodes, attributes and control data structures
varies based on the functions that are being used, it can be estimated as a maximum of 10 KB per file
that is cached.
Valid values of maxFilesToCache range from 1 through 100,000,000. For systems where the
applications use many files, of any size, increasing the value for maxFilesToCache might prove
beneficial. This is true for systems where many small files are accessed. The value must be large
enough to handle the number of concurrently open files plus allow caching of recently used files.
If the user does not specify a value for maxFilesToCache, the default value is 4000.
maxStatCache
This parameter sets aside extra pageable memory to cache attributes of files that are not currently in
the regular file cache. This is useful to improve the performance of both the system and GPFS stat()
calls for applications with a working set that does not fit in the regular file cache. For systems where
applications test the existence of files, or the properties of files without opening them, as backup
applications do, increasing the value for maxStatCache can improve performance.
The memory that is occupied by the stat cache can be calculated as:
The valid range for maxStatCache is 0 - 100,000,000. If you do not specify values for
maxFilesToCache and maxStatCache, the default value of maxFilesToCache is 4000 and the
default value of maxStatCache is 1000. If you specify a value for maxFilesToCache but not for
maxStatCache, the default value of maxStatCache is 4 * maxFilesToCache or 10000, whichever
is smaller.
In versions of IBM Spectrum Scale earlier than 5.0.2, the stat cache is not effective on the Linux
operating system unless the Local Read-Only Cache (LROC) is configured. For more information, see
the description of the maxStatCache parameter in the topic mmchconfig command in the IBM
Spectrum Scale: Command and Programming Reference.
The total amount of memory GPFS uses to cache file data and metadata is arrived at by adding pagepool
to the amount of memory that is required to hold inodes and control data structures (maxFilesToCache
× 10 KB), and the memory for the stat cache (maxStatCache × 480 bytes) together. The combined
amount of memory to hold inodes, control data structures, and the stat cache is limited to 50% of the
physical memory on a node that is running GPFS.
During configuration, you can specify the maxFilesToCache, maxStatCache, and pagepool attributes
that control how much cache is dedicated to GPFS. These values can be changed later, so experiment
with larger values to find the optimum cache size that improves GPFS performance without negatively
affecting other applications.
Access patterns
GPFS attempts to recognize the pattern of accesses (such as strided sequential access) that an
application makes to an open file. If GPFS recognizes the access pattern, it will optimize its own behavior.
For example, GPFS can recognize sequential reads and will retrieve file blocks before they are required by
the application. However, in some cases GPFS does not recognize the access pattern of the application or
entstat -d device
Related concepts
GPFS administration security
Before administering your GPFS file system, make certain that your system has been properly configured
for security.
Cache usage
GPFS creates a number of cache segments on each node in the cluster. The amount of cache is controlled
by three attributes.
Access patterns
Swap space
It is important to configure a swap space that is large enough for the needs of the system.
While the actual configuration decisions should be made when considering the memory requirements of
other applications, it is a good practice to configure at least as much swap space as there is physical
memory on a given node.
Related concepts
GPFS administration security
Before administering your GPFS file system, make certain that your system has been properly configured
for security.
Cache usage
GPFS creates a number of cache segments on each node in the cluster. The amount of cache is controlled
by three attributes.
Access patterns
GPFS attempts to recognize the pattern of accesses (such as strided sequential access) that an
application makes to an open file. If GPFS recognizes the access pattern, it will optimize its own behavior.
Aggregate network interfaces
It is possible to aggregate multiple physical Ethernet interfaces into a single virtual interface. This is
known as Channel Bonding on Linux and EtherChannel/IEEE 802.3ad Link Aggregation on AIX.
Related tasks
Clock synchronization
The clocks of all nodes in the GPFS cluster must be synchronized. If this is not done, NFS access to the
data and other GPFS file system operations may be disrupted.
Memory considerations
It is recommended that you adjust the vm.min_free_kbytes kernel tunable. This tunable controls the
amount of free memory that Linux kernel keeps available (that is, not used in any kernel caches).
When vm.min_free_kbytes is set to its default value, on some configurations it is possible to
encounter memory exhaustion symptoms when free memory should in fact be available. Setting
vm.min_free_kbytes to 5 – 6% of the total amount of physical memory, but no more than 2 GB, can
prevent this problem.
Communications I/O
Values suggested here reflect evaluations made at the time this documentation was written. For the latest
system configuration and tuning settings, see the IBM Spectrum Scale Wiki (www.ibm.com/
developerworks/community/wikis/home/wiki/General Parallel File System (GPFS)).
To optimize the performance of GPFS and your network, it is suggested you do the following:
• Enable Jumbo Frames if your switch supports it.
If GPFS is configured to operate over Gigabit Ethernet, set the MTU size for the communication adapter
to 9000.
• Verify /proc/sys/net/ipv4/tcp_window_scaling is enabled. It should be by default.
• Tune the TCP window settings by adding these lines to the /etc/sysctl.conf file:
After these changes are made to the /etc/sysctl.conf file, apply the changes to your system:
1. Issue the sysctl -p /etc/sysctl.conf command to set the kernel settings.
Disk I/O
To optimize disk I/O performance, you should consider the following options for NSD servers or other
GPFS nodes that are directly attached to a SAN over a Fibre Channel (FC) network.
1. The storage server cache settings can impact GPFS performance if not set correctly.
2. When the storage server disks are configured for RAID5, some configuration settings can affect GPFS
performance. These settings include:
• GPFS block size
• Maximum I/O size of the Fibre Channel host bus adapter (HBA) device driver
• Storage server RAID5 stripe size
Note: For optimal performance, GPFS block size should be a multiple of the maximum I/O size of the
FC HBA device driver. In addition, the maximum I/O size of the FC HBA device driver should be a
multiple of the RAID5 stripe size.
3. These suggestions may avoid the performance penalty of read-modify-write at the storage server for
GPFS writes. Examples of the suggested settings are:
• 8+P RAID5
– GPFS block size = 512K
– Storage Server RAID5 segment size = 64K (RAID5 stripe size=512K)
– Maximum IO size of FC HBA device driver = 512K
• 4+P RAID5
– GPFS block size = 256K
– Storage Server RAID5 segment size = 64K (RAID5 stripe size = 256K)
– Maximum IO size of FC HBA device driver = 256K
For the example settings using 8+P and 4+P RAID5, the RAID5 parity can be calculated from the data
written and will avoid reading from disk to calculate the RAID5 parity. The maximum IO size of the FC
HBA device driver can be verified using iostat or the Storage Server performance monitor. In some
cases, the device driver may need to be patched to increase the default maximum IO size.
4. The GPFS parameter maxMBpS can limit the maximum throughput of an NSD server or a single GPFS
node that is directly attached to the SAN with a FC HBA. The default value is 2048. The maxMBpS
parameter is changed by issuing the mmchconfig command. If this value is changed, restart GPFS on
the nodes, and test the read and write performance of a single node and a large number of nodes.
The following list provides the configuration requirements to ensure high availability of the GUI service:
• Up to three GUI nodes can be configured in a cluster. Perform the following steps to set up a GUI node:
– Install the GUI package on the node. For more information about latest packages, see IBM Spectrum
Scale: Concepts, Planning, and Installation Guide.
– Start the GUI service and either log in or run /usr/lpp/mmfs/gui/cli/initgui to initialize the
GUI database. Now, the GUI becomes fully functional and it adds the node to the
GUI_MGMT_SERVERS node class.
• The GUI nodes are configured in the active/active configuration. All GUI nodes are fully functional and
can be used in parallel.
• Each GUI has its own local configuration cache in PostgreSQL and collects configuration changes
individually.
• One GUI node is elected as the master node. This GUI instance exclusively performs some tasks that
must be run only once in a cluster such as running snapshot schedules, sending email, and SNMP
notifications. If services that are run on the master GUI node are configured, the environment for all the
GUI nodes must support these services on all nodes. For example, it needs to be ensured that access to
SMTP and SNMP servers is possible from all GUI nodes and not only from the master GUI node. You can
use the following utility function, which displays the current master GUI node:
[root@gpfsgui-11 ~]# /usr/lpp/mmfs/gui/cli/lsnode
Hostname IP Description Role Product Connection GPFS Last
updated
version status status
gpfsgui-11.novalocal 10.0.100.12 Master GUI Node management,storage 5.0.0.0 HEALTHY HEALTHY 7/10/17
10:19 AM
• All GUI nodes are equal from the user’s perspective. If a GUI node fails, the user must manually
connect to the other GUI. The master role fails over automatically. But there is no failover for the IP
address of the other GUI server.
• Data that cannot be gathered from GPFS is stored in CCR as shared-cluster repository. This includes
GUI users, groups and roles, snapshot schedules, email notification settings, policy templates, and ACL
templates.
• All GUI nodes must run on the same software level.
• If an external authentication method such as AD or LDAP is used to store the GUI user details and
authenticate them, you must configure AD/LDAP on all GUI nodes to ensure high-availability. If internal
authentication method is used, the GUI nodes get the user information from the CCR.
• To display the performance monitoring information, install performance monitoring collector on each
GUI node and these collectors must be configured in the federated mode. The data collection from the
sensors can be configured in such a way that the details are sent either to all collectors or only to a
single collector.
• The Mark as Read operation can be performed on events that are stored locally on the GUI node. The
changes that are made to the events are not visible through the other GUI node.
• Each GUI has its own local configuration cache and collects configuration changes individually.
• A corrupted cache database affects only the local GUI. Other GUIs continue working. Most of the
configuration changes are simultaneously reported in the GUI. Some configuration changes are
gathered through the individually scheduled refresh tasks, which might result in displaying
unsynchronized information.
Node Type
Category Command Cloud services Cloud services Non-Cloud
server client services
Configuration
mmcloudgateway service start y Y Y
mmcloudgateway service status y Y Y
mmcloudgateway service stop y Y Y
mmcloudgateway service version y Y Y
mmcloudgateway service y
backupConfig
mmcloudgateway account * Y Y Y
mmcloudgateway Y Y Y
cloudStorageAccessPoint *
mmcloudgateway cloudservice * Y Y Y
mmcloudgateway keymanager * Y Y Y
mmcloudgateway Y Y Y
containerPairSet *
mmcloudgateway config * Y Y Y
Data path
mmcloudgateway files migrate Y Y
mmcloudgateway files recall Y Y
mmcloudgateway files list Y Y
mmcloudgateway files restore Y Y
mmcloudgateway files delete Y Y
mmcloudgateway files destroy Y Y
mmcloudgateway files export Y Y
mmcloudgateway files import Y Y
To designate only a few nodes (node1 and node2) in the node class, TCTNodeClass1, as Cloud services
server nodes, issue this command:
It designates only node1 and node2 as Cloud services server nodes from the node class,
TCTNodeClass1. Administrators can continue to use the node class for other purposes.
Note: The Cloud services node must have connectivity to the object storage service that the Cloud
services uses.
2. To designate nodes from multiple node classes as Cloud services server nodes, issue the following
commands:
Note: These nodes cannot be combined into a single Cloud services across node classes because
Cloud services for nodes in different node classes are always different or separate.
3. To list the designated Transparent cloud tiering nodes, issue this command: mmcloudgateway node
list
Note: For more information, see the mmcloudgateway command.
4. To disable two nodes, node1 and node2, from the node class, TCTNodeClass1, issue this command:
You can add a node to the node class at any time. For example, issue the following commands to add the
node, 10.11.12.13, to the node class, TCTNodeClass1.
1. mmchnodeclass TCTNodeClass1 add -N 10.11.12.13
2. mmchnode --cloud-gateway-enable -N 10.11.12.13 --cloud-gateway-nodeclass TCTNodeClass1
For example, to start the service on all Transparent cloud tiering nodes in a cluster, issue this command:
To start the service on all Cloud services nodes as provided in the node class, TCTNodeClass1, issue this
command:
If you provide this command without any arguments, the service is started on the current node.
If you have more than one node class, then you must start the Cloud services individually on each node
class, as follows:
It is a good practice to verify that the service is started. Enter a command like the following one:
Note: You can run this command from any node in the cluster, not necessarily from a node that is part of a
node class.
Next step: See “Managing a cloud storage account” on page 76.
Amazon S3
Account creation for Amazon S3
Note:
• us-standard (us-east-1 N.Virginia)
• us-east-2 (Ohio)
• us-west-1 (N.California)
• us-west-2 (Oregon)
• eu-west-1 (Ireland)
• eu-west-2 (London)
• eu-west-3 (Paris)
• eu-central-1 (Frankfurt)
• eu-north-1 (Stockholm)
• sa-east-1 (Sao-Paulo)
• ap-southeast-1 (Singapore)
• ap-southeast-2 (Sydney)
• ap-south-1 (Mumbai)
• ap-northeast-1 (Tokyo)
• ap-northeast-2 (Seoul)
• ap-northeast-3 (Osaka)
• ca-central-1 (Canada)
• cn-north-1 (Beijing)
• cn-northwest-1 (Ningxia)
Do the following steps:
• To create a cloud account using Amazon S3, issue the following command:
mmcloudgateway: Sending the command to the first successful node starting with
jupiter-vm716.pok.stglabs.ibm.com
mmcloudgateway: This may take a while...
Note: For Amazon S3, the --username represents the access key.
• To modify the cloud account (for example, to change the username to MyTct) issue the following
command:
Swift3 account
Account creation for Swift3
Do the following steps:
• To configure a cloud storage tier for Swift3, issue this command:
mmcloudgateway: Sending the command to the first successful node starting with
ip9-114-192-175.pok.stglabs.ibm.com
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on ip9-114-192-175.pok.stglabs.ibm.com.
mmcloudgateway: You can now delete the password file '/tmp/cloudPW'
mmcloudgateway: Command completed.
• To modify the account details (for example, to modify the user name), issue this command:
mmcloudgateway: Sending the command to the first successful node starting with
vmip51.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vm1.gpfs.net.
• To create a cloud account for deploying a WORM solution by using locked vaults, issue a command like
the following:
• To update an account:
• To delete an account:
Openstack Swift
Configuring a cloud object storage account for Openstack Swift.
Note:
• In case of Swift Dynamic Large Objects, ensure that this configuration is included in the Swift
“required_filters” section, as follows:
/usr/lib/python2.7/site-packages/swift/proxy/server.py
required_filters = [
{'name': 'catch_errors'},
{'name': 'gatekeeper',
'after_fn': lambda pipe: (['catch_errors']
if pipe.startswith('catch_errors')
else [])},
{'name': 'dlo', 'after_fn': lambda _junk: [
'copy', 'staticweb', 'tempauth', 'keystoneauth',
'catch_errors', 'gatekeeper', 'proxy_logging']},
{'name': 'versioned_writes', 'after_fn': lambda _junk: [
'slo', 'dlo', 'copy', 'staticweb', 'tempauth',
'keystoneauth', 'catch_errors', 'gatekeeper', 'proxy_logging']},
# Put copy before dlo, slo and versioned_writes
{'name': 'copy', 'after_fn': lambda _junk: [
'staticweb', 'tempauth', 'keystoneauth',
'catch_errors', 'gatekeeper', 'proxy_logging']}]
• For the delete functionality to work in Swift, verify that the Bulk middleware to be in pipeline, as follows:
vim /etc/swift/proxy-server.conf
[pipeline:main] pipeline = healthcheck cache bulk authtoken keystone proxy-server
mmcloudgateway: Sending the command to the first successful node starting with
vm716.pk.slabs.ibm.com
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vm716.pk.slabs.ibm.com.
mmcloudgateway: Sending the command to the first successful node starting with
c362f0u01v02.pok.stglabs.ibm.com
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on c362f0u01v02.pok.stglabs.ibm.com.
mmcloudgateway: You can now delete the password file '/tmp/cloudPW'
mmcloudgateway: Command completed.
mmcloudgateway: Sending the command to the first successful node starting with c350f3u9
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on c350f3u9.
mmcloudgateway: Command completed.
Microsoft Azure
This section informs you how to create account for Microsoft Azure.
For Azure, cloud services tier or share data only to 'cool' storage tier by default. Other Azure tiers such as
hot, premium, and archive are not supported. Customization is not supported.
Similarly, cloud services tier or share data only as a 'block' blob by default. Other blob types such as
append and page blobs are not supported. Customization is not supported.
Complete the following steps:
To create an azure cloud account, issue the following command:
mmcloudgateway: Sending the command to the first successful node starting with
jupiter-vm716.pok.stglabs.ibm.com
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on jupiter-vm716.pok.stglabs.ibm.com.
mmcloudgateway: You can now delete the password file '/tmp/cloudPW'
mmcloudgateway: Command completed
Note: For Azure, the --username represents the storage account name.
To modify the cloud account (for example, to change the username to MyTct) issue the following
command:
mmcloudgateway: Sending the command to the first successful node starting with vmip51.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vmi.gpfs.net.
mmcloudgateway: Command completed.
mmcloudgateway: Sending the command to the first successful node starting with vmip51.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vmip51.gpfs.net.
mmcloudgateway: Command completed.
Note:
• In proxy-based environments, set your proxy settings as part of the node class configuration before you
run any migrations. If tiering commands (migrate or recall) are run before you set the proxy details, they
might fail for not being able to reach out to the public cloud storage providers such as Amazon S3.
mmcloudgateway: Sending the command to the first successful node starting with vmip51.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vmi.gpfs.net.
mmcloudgateway: Command completed.
Note: You can use this Cloud service only for tiering. If you want to use it for sharing, you can replace
Tiering with Sharing.
• To update Cloud services, issue a command according to the following:
mmcloudgateway: Sending the command to the first successful node starting with vmip51.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vmip51.gpfs.net.
mmcloudgateway: Command completed.
Next step: “Configuring Cloud services with SKLM (optional)” on page 82.
mmcloudgateway: Sending the command to the first successful node starting with c01.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on c80f4m5n01.gpfs.net.
mmcloudgateway: Command completed.
Next step: “Binding your file system or fileset to the Cloud service by creating a container pair set” on
page 83.
Note: The local key manager is simpler to configure and use. It might be your best option unless you are
already using SKLM in your IBM Spectrum Scale cluster or in cases where you have special security
requirements that require SKLM.
mmcloudgateway: Sending the command to the first successful node starting with v1.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on vmi.gpfs.net.
mmcloudgateway: Command completed.
Note: If you do not specify the names for storing data and metadata containers, then the container
pairset name is used for both data and meta containers. In this example, they are "newContainer" (for
data) and "newContainer.meta" (for metadata). If you create any meta-containers or data-containers by
using any external tools, you can configure containerpairset with these meta-containers or data-
containers. To know the bucket creation rules while naming meta-container and data-container for
ICOS, S3 and AWS S3 provider, see Rules for Bucket Naming at Bucket restrictions and Limitations.
• To create a container pairset with thumbnail enabled and the scope is a file system, issue a command
similar to this:
• To create a container pairset when the scope is a fileset, issue a command similar to this:
• To create a container pair set that is enabled for encryption, issue a command similar to this:
• To configure a container pair set using an immutable fileset with a fileset scope, issue a command
similar to this:
Note: Here, the fileset is an immutable fileset whereas the cloud directory is pointing to a fileset that is
not immutable.
• To test a container pair set that is created, issue a command similar to this:
Note: This test will check whether or not the container pair set does actually exist. Additionally, the test
will try to add some data to the container (PUT blob), retrieve the data (GET blob), delete the data
• To create a container pair set with auto-spillover disabled, issue a command similar to this:
• To create a container pair set with a non-default threshold value for auto-spillover, issue a command
similar to this:
For example, to back up the database that is associated with the container, cpair1, issue this command:
If the database size is large, then backing up operation can be a long running process.
Note: By using the backed-up database, you can perform a database recovery by using the
mmcloudgateway files rebuildDB command. For more information, see “Manual recovery of
Transparent cloud tiering database” on page 834.
mmcloudgateway service backupConfig --backup-file <name of the file including the path>
• Issue the following command to back up the configuration data to the file, tct_config_backup,
under /tmp/mydir/, where the folder does exist:
In these examples, tct_config_backup is the name that is given to the tar file. The file name is
appended with the date and time when the command is run. The format is
filename_yyyymmdd_hhmmss.tar. By doing so, the file names are not overwritten even if an administrator
runs this command multiple times, providing the same file name.
Note: It is a best practice to save the backup file in a safe location outside the cluster to ensure that the
backup file can be retrieved even if the cluster goes down. For example, when you use encryption no copy
of the key library is made to cloud storage by Transparent cloud tiering. Therefore, if there is a disaster in
which a cluster is destroyed, you must make sure that the key library is safely stored on a remote cluster.
Otherwise, you cannot restore the Transparent cloud tiering service for files that are encrypted on the
cloud because the key to decrypt the data in the cloud is no longer available.
A good way to back up the Cloud services configuration is as a part of the SOBAR based backup and
restore script that is included. For more information, see “Scale out backup and restore (SOBAR) for Cloud
services” on page 835.
=======================================
Maintenance status from node class tct:
=======================================
Summary:
===================
Total Containers : 1
Total Overdue : 0
Total In Progress : 0
Reconcile Overdue : 0
Backup Overdue : 0
Retention Overdue : 0
===================
Container: producer-container
==========================
Status : Active
In Progress : no
File Count : 5
Files Deleted (last run) : 0
mmcloudgateway: Sending the command to the first successful node starting with
c80f4m5n01.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on c80f4m5n01.gpfs.net.
mmcloudgateway: Command completed
mmcloudgateway: Sending the command to the first successful node starting with
c80f4m5n01.gpfs.net
mmcloudgateway: This may take a while...
mmcloudgateway: Command completed successfully on c80f4m5n01.gpfs.net.
mmcloudgateway: Command completed.
maintenanceName : defaultWeekly
type : weekly
startTime : 6:01:00
endTime : 1:01:00
enabled : true
maintenanceName : main1
type : daily
startTime : 08:00
endTime : 09:00
enabled : true
maintenanceName : main2
type : weekly
startTime : 1:07:00
endTime : 2:07:00
enabled : true
taskFrequencyName : default
backupFrequency : weekly
reconcileFrequency : monthly
deleteFrequency : daily
When you check the output of the mmcloudgateway maintenance list command, you can see the
status of the enabled field as false.
Note: Disabling maintenance activities permanently is not recommended nor is it a supported mode of
operation.
• To set the frequency of a specific maintenance operation, issue a command as follows:
By default, all operations (reconcile, backup, and delete) are done according to the default frequency
when a maintenance task is run. You can use the setFrequency option to modify the default frequency of
a specific operation. For example, the default frequency for the reconcile operation is monthly, but you
can change the frequency of the reconcile operation to weekly. The default frequency for the backup
operation is weekly. After every couple of million files, a backup operation must be performed. If you
observe heavy backups with the default frequency, perform manual backups or set the backup
frequency to daily.
When a daily, weekly, or monthly frequency is specified for an operation, what it really means is that the
operation will be executed no more often than its specified frequency. So, for example, an operation
with a daily frequency will run no more often than once per day.
define(
modified_age,
(DAYS(CURRENT_TIMESTAMP) - DAYS(MODIFICATION_TIME))
)
RULE EXTERNAL LIST 'export' EXEC '/opt/ibm/MCStore/bin/mcstore' OPTS '-e'
RULE 'files-to-export'
LIST 'export'
WHERE modified_age > 1 AND modified_age <= 8
crontab -e
connector. server.timeout 5000 (ms) 1000 (ms) 15000 This is the maximum amount of time the server
(ms) takes to respond to the client request. If the
request is not fulfilled, it closes the connection.
destroy.sql.batchsize 8196 8196 81960 Page size per delete local database objects
operation.
destroy.cloud.batchsize 256 256 81960 Page size per cloud objects delete operation.
commands. 360(s) 60(s) 3600(s) Maximum time to acquire the lock on directory
reconcile.lockwait.timeout.sec for the reconcile operation.
threads.gc.batchsize 4096 4096 40960 Page size of the Garbage Collector thread. We
can increase this in case the memory usage is
more.
migration. downgrade. 64 (MB) 1 (MB) 64 (MB) Sets the size threshold on files for which the lock
lock.threshold.size.mb downgrade is completed. To save time, a lock
downgrade is not completed on shorter files that
can transfer quickly. For larger files, a lock
downgrade is suggested because migration
might take a long time.
tracing.level ALL=4 See Table 9 on page See Table Tracing level is to set non-default tracing levels
91 9 on page for various Transparent Cloud Tiering internal
91 components to generate more debug data if any
problems occur.
threads.cut-slow.sleep.ms 6000000 60000 (ms) 2^63 Sleep time between two slow cloud update
(ms) thread runs.
threads.cut-slow.sizediff 26843545 1048576 (Bytes) 2^63 Size threshold of Cloud Updater Slow Threads.
6 (Bytes)
threads.cut-slow.timediff.ms 60480000 86400000 (ms) 2^63 Time threshold of Cloud Updater Slow Threads
0 (ms) to update the cloud database.
threads.cut-fast.sizediff 16777216 1048576 (Bytes) 2^63 Size threshold of Cloud Updater Fast Threads.
(Bytes)
threads.cut-fast.timediff-active.ms 1800000 60000 (ms) 2^63 Active time of Cloud Updater Fast Threads.
(ms)
where,
• <--cloud-nodeclass> is the node class configured for the Cloud services nodes
• <Attribute> is the value of the attribute that is provided.
For more information, refer to the following examples:
• To set the value of the tconnector.server.timeout attribute to 10 seconds, issue this command:
• To reset the value of the tracing components to the default value, issue this command:
GPFS-based configuration
This topic describes the procedure for integrating cloud service metrics with the performance monitoring
tool by using GPFS-based configuration.
1. On the Cloud services nodes, copy the following files from /opt/ibm/MCStore/config folder
to /opt/IBM/zimon folder:
• TCTDebugDbStats
• TCTDebugLweDestroyStats
• TCTFsetGpfsConnectorStats
• TCTFsetIcstoreStats
• TCTFsGpfsConnectorStats
• TCTFsIcstoreStats
2. Register the sensor in the GPFS configuration by storing the following snippet in the MCStore-
sensor-definition.cfg file:
sensors=
{
# Transparent cloud
tiering statistics
{
#Transparent cloud
tiering statistics
name = "TCTDebugLweDestroyStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsetGpfsConnectorStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsetIcstoreStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsGpfsConnectorStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsIcstoreStats"
period = 10
type = "Generic"
}
Note: The sensor definition file can list multiple sensors separated by commas (,).
For more information on GPFS-based configuration, see the topic mmperfmon command in the IBM
Spectrum Scale: Command and Programming Reference guide.
File-based configuration
This topic describes how to configure Cloud services with the performance monitoring tool by using file-
based (manual) configurations.
Note: You must delete the sensors that are used in the earlier releases. If the scope of your Cloud
services configuration is file system, then you do not need to configure the sensor files that start with
TCTFset*. Similarly, if the scope of your Cloud services configuration is fileset, then you do not need to
configure the sensor files that start with TCTFs*.
To integrate the performance monitoring tool with Cloud services server nodes, do the following steps:
1. Copy /opt/IBM/zimon/defaults/ZIMonSensors.cfg to /opt/IBM/zimon. This configuration
file determines which sensors are active and their properties.
Note: If the sensors are already configured at /opt/IBM/zimon/defaults/ZIMonSensors.cfg,
use the same sensors.
2. Edit the /opt/IBM/zimon/ZIMonSensors.cfg file and set an IP address for the “host” attribute in
the “collectors" section.
sensors=
{
# Transparent cloud
tiering statistics
name = "TCTDebugDbStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTDebugLweDestroyStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsetGpfsConnectorStats"
period = 10
type = "Generic"
}
{
#Transparent cloud
tiering statistics
name = "TCTFsetIcstoreStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsGpfsConnectorStats"
period = 10
type = "Generic"
},
{
#Transparent cloud
tiering statistics
name = "TCTFsIcstoreStats"
period = 10
type = "Generic"
}
Note: Each sensor should be separated by a comma. The period is the frequency in seconds at which
the performance monitoring tool polls the cloud service for statistics. The period is set to 10 seconds
but it is a configurable value. The sensor is turned off when the period is set to 0.
4. Copy the following files from /opt/ibm/MCStore/config folder to /opt/IBM/zimon folder.
• TCTFsGpfsConnectorStats.cfg
• TCTFsIcstoreStats.cfg
• TCTFsetGpfsConnectorStats.cfg
• TCTFsetIcstoreStats.cfg
• TCTDebugLweDestroyStats.cfg
• TCTDebugDbStats.cfg
5. Restart the sensors by using this command: service pmsensors restart .
6. Restart the collectors by using these commands: service pmcollector restart
Note:
1. Create authentication between the local cluster and the remote cluster. For more information, see the
Mounting a remote GPFS file system topic in the IBM Spectrum Scale: Administration Guide.
2. Verify that the file system is mounted on the remote cluster (from the local cluster) by issuing the
following command on the remote cluster:
mmremotecluster show
3. On the local cluster, set the following GPFS variable, which will point to the gateway node of the
remote cluster that needs to be connected for transparent recall:
a. For a single remote cluster mounted, set the variable, as follows:
For example, to set the GPFS variable on local cluster for two remote clusters,
tctvm1.pk.slabs.ibm.com and tctvm2.pk.slabs.ibm.com, issue the following command:
4. Copy the mcstore script from the local cluster to the remote cluster by issuing the following
command:
cp /opt/ibm/MCStore/scripts /opt/ibm/MCStore/bin/
5. Migrate data from the local cluster to the cloud by using the mmcloudgateway files migrate
command.
6. Transparently recall data from the cloud (by issuing the cat or any similar command on the remote
cluster CLI).
4. Create a test file date > testfile with read-write permissions and fill the file with some content:
5. Check the extended attributes of the file which indicate that the file is not immutable by using the
mmlsattr command:
chmod –w testfile
7. Set the future expiration time using mmchattr. Select a time in the immediate future for quick expiry
and deletion.
8. Verify that immutability and expiration time are set by using mmchattr:
mmlsattr -L testfile
file name: testfile
metadata replication: 1 max 2
data replication: 1 max 2
immutable: yes
appendOnly: no
indefiniteRetention: no
expiration Time: Wed Mar 15 18:16:13 2016
flags:
storage pool name: system
fileset name: WORMfs
snapshot name:
creation time: Wed Mar 15 17:16:13 2016
Misc attributes: ARCHIVE READONLY
Encrypted: no
9. Verify that the files cannot be modified or deleted. Run the following commands:
# chmod +w testfile
# rm -f testfile
For more information, see the Immutability and appendOnly features in IBM Spectrum Scale:
Administration Guide.
• mcstore_createlockedvault.sh
• mcstore_lockedvaultpreconfig.sh
• mcstore_lockedvaultrotateclientkey.sh
$mkdir mydomain2.com.ssl/
2. To generate a keystore that will store the private key, CSR, and certificates, issue the following
command in the /opt/ibm/MCStore/jre/bin directory:
keytool -genkey -alias mydomain2 -keyalg RSA -keysize 2048 -keystore mydomain2.jks
Note: You should make a note of the alias name as it has to be used in the later steps.
3. Generate CSR by issuing the following command:
keytool -certreq -alias mydomain2 -keyalg RSA -file mydomain2.csr -keystore mydomain2.jks
curl -u <privateuser>:<password>
-k 'https://<COS Manager IP>/manager/api/json/1.0/clientRegistration.adm'
-d 'expirationDate=1508869800000' --data-urlencode 'csr=-----BEGIN NEW CERTIFICATE
REQUEST-----
MIICzjCCAbYCAQAwWTELMAkGA1UEBhMCSU4xCzAJBgNVBAgTAktBMRIwEAYDVQQHEwlCYW5nYWxv
cmUxDDAKBgNVBAoTA1NEUzENMAsGA1UECxMESVNETDEMMAoGA1UEAxMDSUJNMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEApfVgjnp9vBwGA6Y/g54DBr1wWtWeSAwm680M42O1PUuRwV92
9UDBK9XEkY2Zb+o08Hvspd5VMU97bV7cnN8Fi8WuujHCdgAVuezTT0ZCHjVHl2L6CYql7hmWIazk
TOaROoYlhzZCgQrDyVNIw6XuvkWo3eUIRyi1r6nafUFiqUtMEerEhEYa6cmm5qpeb2GKYJdeN53W
SF0yrUCi9gRgPJiAq6lVSl+wWekbI6lwIAtJVyojx93lRl/KdxfFmh/sriUx//a6+I0OBli6EmEV
BsHeG2HccS1diJ4+eUetXvfkYMjO6kRvYraSVKX022a4Jqki8iYDNf4XvRzOz5YbLQIDAQABoDAw
LgYJKoZIhvcNAQkOMSEwHzAdBgNVHQ4EFgQUrgpT7F8Z+bA9qDxqU8PDg70zFj4wDQYJKoZIhvcN
AQELBQADggEBADW4xuxBaaH9/ZBLOll0tXveSHF8Q4oZo2MhSWf34Shu/ZxC17H8NqCCMyxqVdXI
6kbdg1se5WLCq/JJA7TBcgCyJJqVjADt+RC+TGNc0NlsC7XpeRYLJtxqlKilsWnKJf5oRvA1Vg5P
nkTjCE9XvUzhJ/tTQjNBJSh8nN7Tbu/q5mTIGG9imARPro2xQpvwiFMHrq/f1uNeZ3SeuLxwQtkK
4zge7XwyY63lrKsN0z2a4CPNzU0q68TGL1aE93QDpJYusSeTB0m2om4iTSNgsQKRmYqGDSXM3no/
90UeTAgHjhJ82bGEOfP9FVm+6FnYydr1Endg1aEizC+sArk4e8E=
-----END NEW CERTIFICATE REQUEST-----' -v
"-----BEGIN CERTIFICATE-----
\nMIIEczCCAlugAwIBAgIQeijQBskfm0v3kYQcBOBmxTANBgkqhkiG9w0BAQ0FADCB\nkTELMAkGA1UE
BhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdDaGlj\nYWdvMRMwEQYDVQQKDApDbGV2ZX
JzYWZlMRkwFwYDVQQDDBBkc05ldCBNYW5hZ2Vy\nIENBMS0wKwYDVQQFEyQwMmQxMjk5ZS05Nzc3LTRl
NmItODg3Yy0wYmMzNzJkODU1\nMzcwHhcNMTYxMDI0MTMxNTE2WhcNMTcxMDI0MTgzMDAwWjBZMQswCQ
YDVQQGEwJJ\nTjELMAkGA1UECBMCS0ExEjAQBgNVBAcTCUJhbmdhbG9yZTEMMAoGA1UEChMDU0RT\nMQ
0wCwYDVQQLEwRJU0RMMQwwCgYDVQQDEwNJQk0wggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIB
AQCl9WCOen28HAYDpj+DngMGvXBa1Z5IDCbrzQzjY7U9S5HB\nX3b1QMEr1cSRjZlv6jTwe+yl3lUxT3
ttXtyc3wWLxa66McJ2ABW57NNPRkIeNUeX\nYvoJiqXuGZYhrORM5pE6hiWHNkKBCsPJU0jDpe6+Rajd
5QhHKLWvqdp9QWKpS0wR\n6sSERhrpyabmql5vYYpgl143ndZIXTKtQKL2BGA8mICrqVVKX7BZ6RsjqX
AgC0lX\nKiPH3eVGX8p3F8WaH+yuJTH/9rr4jQ4GWLoSYRUGwd4bYdxxLV2Inj55R61e9+Rg\nyM7qRG
9itpJUpfTbZrgmqSLyJgM1/he9HM7PlhstAgMBAAEwDQYJKoZIh* vcNAQEN\nBQADggIBAJmCnhIN/
nhp2VIgqA7td3EBD8xrejF0bT5mSUgx8flFmCKCJh6/Oyn9\nl1PUp3SzSu734GdTDZiUtTXax7PYZlB
3STlY0sZE7yU6zal0lIoUZEzXoohIEPVU\nW4X3j9HF3hWDwNsuqZfQDRmndaz6NG2EPDxiWgTYXPLdY
aZyTQFFe6A4tbT9gSHu\n9UD1woFwjrSAfg03zwR7wSRSwcALsVs1BK96TYufZf+E2eFg+QBGAC5YWrZ
i3g4Q\n1Xqxj5W5TwujLxSJ+8zxf6P9f0T96vGICH8Yy9AIWzUa3fXLh6tc1Pw+LbuIjEWr\nK2TS+DL
TmBAo8pQ5GsR8rShKFcPYOho2mbskAKgt4n+s63Jhu5qALS4Lw7eEQ7W7\nqGffZ2JttNHwePAAqvx33
xf+Y2SWn0fbOAlwT9BQ6ySn/qZR3e3Xl0rVqqukgCqO\nBnQhI5WN4HkONkyaquJruTLHUlWX5T01q/y
LnrRt8TCBA4qnX7HMlEmQkXiF5Poj\nBcyCTctYu1HlijHjsWO9kztUfljI5OkVyS1q1FqcZQiziHHRi
7. Remove the '/n' character from the certificate (from BEGIN to END CERTIFICATE) and store the
certificate in a file.
8. Get the CA certificate of IBM Cloud Object Storage Manager and import into the keystore created in
step 2. To import the CA certificate, issue the following command:
9. Import the certificate into the keystore by issuing the following command:
Note: You can set up a private key and a private certificate by using this script
mcstore_lockedvaultpreconfig.sh available at /opt/ibm/MCStore/scripts, as follows:
Setting up a private key and private certificate by using the automation script
a. Run mcstore_lockedvaultpreconfig.sh <keystorealiasname> <keycertLocationDirectory>
<COSManagerIP> <username> <expirationDays> <COSCACertFile>, where the first 4 arguments
are mandatory and the last two (expirationDays and COSCACertFile) are optional.
If the expiration date (expirationDays) is not specified, then the command will take the default
expiration time, which is 365 days.
If the IBM Cloud Object Storage CA certificate (COSCACertFile) is not specified, then the CA file will
be downloaded from the IBM Cloud Object Storage Manager.
b. For more information on the description of the parameters, see the mmcloudgateway man page.
For example,
Transparent Cloud Tiering Server RPM already installed. Proceeding with Configuration...
Chapter 6. Configuring and tuning your system for Cloud services 101
Generating a CSR....
Sending CSR to CleverSafe to be signed.....
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2990 100 1781 100 1209 5310 3605 --:--:-- --:--:-- --:--:-- 5316
Retrieving Certificate from Response.....
Importing Client Certificate to Keystore.....
Certificate reply was installed in keystore
Pre-configuration for Locked Vault completed successfully.
IMPORTANT: /root/svt/test.ssl contains private key, keystore and private certificate.
You must keep a back up of /root/svt/test.ssl.
2. Extract the private key and convert it to an RSA key by issuing the following commands:
•
openssl rsa -in "<keystore_directory>"/privateKey.pem -out "<keystore_directory>"/
rsaprivateKey.pem
-passin pass:<keystore_password>
3. By using the private key and certificate, create a locked vault (one for data and one for metadata) by
issuing the following commands:
• For data vault:
Note: To find the provisioning template IDs, on the IBM Cloud Object Storage Manager GUI, click
Template Management. Then, hover the mouse over the template that is listed under Vault Template,
and find the number that is displayed on the footer.
4. Print the locked vaults by issuing this command:
Note: The names of the locked vaults must be noted down, and they must be specified to the
mmcloudgateway filesystem create command by using the --container-prefix option.
Creating a locked vault by using automation scripts
a. Go to /opt/ibm/MCStore/scripts and run mcstore_createlockedvault.sh
<keystorealiasname> <keyStorePath> <lockeddatavaultname>
<lockeddatavaultDescription> <lockedmetavaultname>
<lockedmetavaultDescription> <COSManagerIP> <dataVaultTemplateID>
<metaVaultTemplateID>, where all parameters are mandatory.
b. For description of the parameters, see the mmcloudgateway command.
For example, mcstore_createlockedvault.sh test /root/svt/test.ssl/test.jks
demodatacontainer test demometacontainer metacontainer 9.10.0.10 1 1.
The system displays output similar to the example shown:
Transparent Cloud Tiering Server RPM already installed. Proceeding with Configuration...
openssl libraries are already installed. Proceeding with Configuration...
Chapter 6. Configuring and tuning your system for Cloud services 103
Rotating Client Key or revoking old certificate
Once the client key is rotated, you must use the new certificate and private key to be able to create locked
vaults. You can perform this procedure by using the following steps or by using this script: /opt/ibm/
MCStore/scripts/mcstore_lockedvaultrotateclientkey.sh.
Note: Before you perform this procedure, ensure that no active migration is currently taking place. After
you perform this procedure, the old keys will not work.
1. Generate a new CSR using a new alias:
keytool -certreq -alias mydomainnew -keyalg RSA -file mydomainnew.csr -keystore mydomain2.jks
2. Get the CSR signed by sending it to the IBM Cloud Object Storage Manager:
"-----BEGIN CERTIFICATE-----
\nMIIEczCCAlugAwIBAgIQeijQBskfm0v3kYQcBOBmxTANBgkqhkiG9w0BAQ0FADCB
\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdDaGlj
\nYWdvMRMwEQYDVQQKDApDbGV2ZXJzYWZlMRkwFwYDVQQDDBBkc05ldCBNYW5hZ2Vy
\nIENBMS0wKwYDVQQFEyQwMmQxMjk5ZS05Nzc3LTRlNmItODg3Yy0wYmMzNzJkODU1
\nMzcwHhcNMTYxMDI0MTMxNTE2WhcNMTcxMDI0MTgzMDAwWjBZMQswCQYDVQQGEwJJ
\nTjELMAkGA1UECBMCS0ExEjAQBgNVBAcTCUJhbmdhbG9yZTEMMAoGA1UEChMDU0RT
\nMQ0wCwYDVQQLEwRJU0RMMQwwCgYDVQQDEwNJQk0wggEiMA0GCSqGSIb3DQEBAQUA
\nA4IBDwAwggEKAoIBAQCl9WCOen28HAYDpj+DngMGvXBa1Z5IDCbrzQzjY7U9S5HB
\nX3b1QMEr1cSRjZlv6jTwe+yl3lUxT3ttXtyc3wWLxa66McJ2ABW57NNPRkIeNUeX
\nYvoJiqXuGZYhrORM5pE6hiWHNkKBCsPJU0jDpe6+Rajd5QhHKLWvqdp9QWKpS0wR
\n6sSERhrpyabmql5vYYpgl143ndZIXTKtQKL2BGA8mICrqVVKX7BZ6RsjqXAgC0lX
\nKiPH3eVGX8p3F8WaH+yuJTH/9rr4jQ4GWLoSYRUGwd4bYdxxLV2Inj55R61e9+Rg
\nyM7qRG9itpJUpfTbZrgmqSLyJgM1/he9HM7PlhstAgMBAAEwDQYJKoZIh*vcNAQEN
\nBQADggIBAJmCnhIN/nhp2VIgqA7td3EBD8xrejF0bT5mSUgx8flFmCKCJh6/Oyn9
\nl1PUp3SzSu734GdTDZiUtTXax7PYZlB3STlY0sZE7yU6zal0lIoUZEzXoohIEPVU
\nW4X3j9HF3hWDwNsuqZfQDRmndaz6NG2EPDxiWgTYXPLdYaZyTQFFe6A4tbT9gSHu
\n9UD1woFwjrSAfg03zwR7wSRSwcALsVs1BK96TYufZf+E2eFg+QBGAC5YWrZi3g4Q
\n1Xqxj5W5TwujLxSJ+8zxf6P9f0T96vGICH8Yy9AIWzUa3fXLh6tc1Pw+LbuIjEWr
\nK2TS+DLTmBAo8pQ5GsR8rShKFcPYOho2mbskAKgt4n+s63Jhu5qALS4Lw7eEQ7W7
\nqGffZ2JttNHwePAAqvx33xf+Y2SWn0fbOAlwT9BQ6ySn/qZR3e3Xl0rVqqukgCqO
\nBnQhI5WN4HkONkyaquJruTLHUlWX5T01q/yLnrRt8TCBA4qnX7HMlEmQkXiF5Poj
\nBcyCTctYu1HlijHjsWO9kztUfljI5OkVyS1q1FqcZQiziHHRiAEWbnrYn6Fgq13g
\nIws7Lw9Utogj54tPCwJ8gEkoW4eTO4tnZmPTTdWlmVhTdEjVRxE8fotztHJuVisP
\nmFCxBPWJZ8IP9t2C/4Zi1PuqXI/8YZx8LPIcQUcRxeLURIgQrpb7
\n-----END CERTIFICATE-----\n"
4. Remove the '\n' character from the certificate (from BEGIN to END CERTIFICATE) and store the
certificate in a file.
5. Import the certificate into the keystore that was created earlier:
Transparent Cloud Tiering Server RPM already installed. Proceeding with Configuration...
Updating Transparent cloud tiering with a new private key and certificate
This topic describes how to update Transparent cloud tiering with a new key and certificate.
Chapter 6. Configuring and tuning your system for Cloud services 105
1. Update the cloud account with the new private key and the certificate by issuing the following
command:
For example, to update the cloud account (node class tct, cloud name mycloud) with new key and
certificate, issue the following command:
mmcloudgateway: Sending the command to the first successful node starting with c350f3u30
mmcloudgateway: This may take a while...
Note: Ensure that you have a backup of the Source Key Store used to import the private key and
certificates. Transparent Cloud Tiering removes the private key and certificate from the trust
store if the account delete command is run.
mmcloudgateway: Command completed successfully on c350f3u30.
mmcloudgateway: You can now delete the password file '/root/pwd'
mmcloudgateway: Command completed.
Required packages
Ensure that all executable files and configuration files are installed specific to Linux distribution to tune
the system and to help it function.
For example, on RHEL the following packages must be installed on all running partitions of IBM Spectrum
Scale.
• tuned-utils.noarch
• tuned.noarch
• numactl
• powerpc-utils
Firmware considerations
You should upgrade your IBM Power Systems firmware to the updated version to ensure optimal
performance of IBM Spectrum Scale continually. Obtain IBM Power Systems firmware updates from the
IBM Fix Central site.
For more information, see IBM Developer tutorial.
The firmware of other components in the environment, in addition to the IBM Power Servers, must be
updated regularly. For example, firmware updates must be applied to network switches and network
adapters that are used in an IBM Spectrum Scale environment. Typically, firmware updates for Mellanox
adapters are obtained through the MLNX_OFED packages (as of May 2020, the updated level is
MLNX_OFED_LINUX-4.7-3.0.2.0).
cpupower idle-set -e 0
cpupower idle-set -D 1
You can run the following command to view the CPU settings:
cpupower idle-info
Note: You can reset the default values by using the following command:
cpupower idle-set -E
4. Set the value of Simultaneous multithreading (SMT) to 2 by running the following command:
ppc64_cpu –smt=2
6. Run the following command from the HMC command line to monitor the progress of the DPO process:
7. Activate the partitions by using the current configuration when the DPO process is completed and the
partitions are fully contained (both processor and memory) to their own processor module.
Note: You need to install the mlxconfig tool. For more information, see Mellanox Firmware Tools User
Manual.
The details of the command output are displayed in the tables shown.
Chapter 7. Configuring IBM Power Systems for IBM Spectrum Scale 109
Table 11. Default Configurations for INT_LOG_MAX_PAYLOAD_SIZE
Configurations
INT_LOG_MAX_PAYLOA AUTOMATIC(0) AUTOMATIC(0) AUTOMATIC(0)
D_SIZE
INT_LOG_MAX_PAYLOAD_SIZE Settings
Setting 1: _4KB: 4 KB burst length (set by mlxconfig [...] INT_LOG_MAX_PAYLOAD_SIZE=12)
This is the non-default setting that is recommended for all IBM Spectrum Scale NSD servers and protocol
nodes. It ensures the optimal performance, particularly for large I/O streaming use cases when RDMA is
enabled.
Run the following command to configure _4KB(12) as the value for the INT_LOG_MAX_PAYLOAD_SIZE
parameter of all Mellanox devices:
The values that are displayed in the command output are shown in Table 3.
Note: In both scenarios, after you run the commands, you need to restart your system for the changes to
be effective.
For more information, see the mmaudit command in the IBM Spectrum Scale: Command and
Programming Reference.
Note:
• If the Object protocol is enabled on the file system that contains the file audit logging fileset, ensure
that additional inodes are defined for it before you enable file audit logging.
• For more information about validating that a node is getting events after file audit logging is enabled,
see Monitoring the file audit logging fileset for events in the IBM Spectrum Scale: Problem
Determination Guide.
Note: Enabling file audit logging is audited and recorded by syslog. For more information, see Audit
messages for cluster configuration changes in the IBM Spectrum Scale: Problem Determination Guide.
Note:
• The audit log fileset is not deleted during disablement.
• The disable command works the same way for all audit types. Whether file system, fileset, or skip
fileset audit is configured, the mmaudit <fs> disable command disables all types.
For more information, see the mmaudit command in the IBM Spectrum Scale: Command and
Programming Reference.
Note: Disabling file audit logging is audited and recorded by syslog. For more information, see Audit
messages for cluster configuration changes in the IBM Spectrum Scale: Problem Determination Guide.
Note:
• For an example, see the mmaudit command in the IBM Spectrum Scale: Command and Programming
Reference.
• For more information about validating that a node is getting events after file audit logging is enabled,
see Monitoring the file audit logging fileset for events in the IBM Spectrum Scale: Problem Determination
Guide.
Important:
• Filesets can be independent or dependent.
• You can set the filesets when file audit logging is being enabled only. You cannot change them using the
mmaudit upgrade command.
• The --skip-filesets option cannot be used in combination with the --filesets option. There can
only be one audit type per file system: file system, fileset, or skip fileset.
• None of the listed filesets can be .msgq, the audit fileset, the cesSharedRoot, or the default Object
fileset.
• There is a limit of 20 filesets that can be specified for the --filesets option and the --skip-
filesets option.
• All filesets in the lists of the --filesets option or the --skip-filesets option must be linked in the
file system that is specified by mmaudit Device enable.
• Events are not generated for nested dependent or independent filesets under an independent fileset
that is specified by --filesets.
• Events are generated for nested dependent or independent filesets under an independent fileset that is
specified by --skip-filesets.
Viewing file systems that have file audit logging enabled with the
GUI
You can use the Files > File Systems page in the IBM Spectrum Scale management GUI to monitor
whether file audit logging is enabled for file systems.
The File Audit column in the file systems table displays which file systems are file audit logging enabled.
The File Audit column is hidden by default. To see whether file audit logging is enabled, perform the
following steps:
1. Go to Files > File Systems in the management GUI.
2. Select Customize Columns from the Actions menu.
For more information about what happens when a clustered watch is enabled, see “Actions that the
mmwatch command takes to enable a clustered watch” on page 115. For more information about using
the --sink-auth-config flag, see IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
For more information about what happens when a clustered watch is disabled, see “Actions that the
mmwatch command takes to disable a clustered watch” on page 116.
SpectrumScale_WF_C_<ClusterID>_<WatchType>_<WatchID>_CLW_<Device>
5. The mmwatch command creates and uploads the CCR file that corresponds to the requested watch.
The name of the file is in the following format:
_SpectrumScale_WF_C_<ClusterID>_<WatchType>_<WatchID>_CLW_<Device>
6. If it is necessary (for example if the sink authentication type is CERT), the mmwatch command pushes
the certificate files to all of the consumer nodes.
Note: For more information, see Interaction between clustered watch folder and the external Kafka sink
in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
7. The mmwatch command creates the policy partition for the newly created watch.
The following topics list the parameters required to configure Active File Management.
The following topics list the parameters that are required to configure AFM-based DR.
Table 17. Configuration parameters at cache for parallel data transfer - valid values
AFM configuration parameter Valid values Default value Tunable at the Tunable at the
cluster level fileset level
afmNumFlushThreads 1 - 1024 4 No Yes
afmNumWriteThreads 1 - 64 1 Yes Yes
afmParallelWriteChunkSi 0- 128 Yes Yes
ze 2147483647
afmParallelWriteThresho 0- 1024 Yes Yes
ld 2147483647
afmHardMemThreshold 5G Yes No
# mmlscluster
Note: In this cluster, the Node4 and Node5 gateway nodes are provided.
b) To check the nodes state, issue the following command:
# mmgetstate -a
# mmlsfs fs1 -V -T
2. Configure cloud object storage endpoints. These endpoints can be configured by using the
management or configuration system that each cloud object storage provides.
A bucket can be created on a cloud object storage before you configure a fileset or it can be created
from the IBM Spectrum Scale cluster.
3. Configure the AFM to cloud object storage by using the keys that are created or generated on the cloud
object storage.
a) To store the keys on the buckets in the IBM Spectrum Scale cluster, issue the following command:
# mmafmcoskeys afmtocos1 set myexampleaccesskey1234$ myexamplesecretkey1234567890#
Note: The bucket can exist on the cloud object storage or can be created from the AFM to cloud
object storage setup.
Where:
afmtocos1
Name of the bucket
Access key
myexampleaccesskey1234$
Secret key
myexamplesecretkey1234567890#
4. After the keys are set, to configure the AFM to cloud object storage, issue the following command:
Where:
fs1
Name of a file system.
afmtocos1
Name of a fileset name.
iw
The independent writer mode of the AFM to cloud object storage fileset.
Note: This command is run on the Node5 node, which becomes a gateway node for the afm2cos1
fileset.
After the AFM to cloud object storage setup is done, you can see information about a relation fileset by
issuing the following command:
5. Create some objects by using the AFM to cloud object storage fileset.
These created objects are replicated to the cloud object storage asynchronously and the cache state is
dirty, then they are being replicated.
To check the cache state, issue the following command:
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ ----------------------------------- ------------- ------------ ------------ -------------
afmtocos1 http://192.168.118.121:80/afmtocos1 Dirty c7f2n05 3 6
When all the operations or objects that are created are synced to a cloud object storage, the cache
state becomes Active. To check the cache state, issue the following command:
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ ----------------------------------- ------------- ------------ ------------ -------------
afmtocos1 http://192.168.118.121:80/afmtocos1 Dirty c7f2n05 0 9
# ls -lsh /gpfs/fs1/afmtocos1
total 5.0M
1.0M -rw-r--r-- 1 root root 1.0M Sep 9 05:27 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object2
3.0M -rw-r--r-- 1 root root 3.0M Sep 9 05:28 object3
6. Check that objects are replicated and synchronized with a cloud object storage by using different APIs
or GUI that the cloud object storage provides.
Example:
<xml>
Name : afmtocos1/
Date : 2020-09-09 05:20:17 EDT
Size : 0 B
Type : Bucket
Name : object1
Date : 2020-09-09 05:24:17 EDT
Size : 1.0 MiB
ETag : 36b30c1b8016f0cc4ca41bec0d12f588
Type : file
Metadata :
Content-Type: application/octet-stream
Name : object2
Date : 2020-09-09 05:24:34 EDT
Size : 2.0 MiB
ETag : 9d17d1fd443287a83445c4616864eb72
Type : file
Metadata :
Content-Type: application/octet-stream
Name : object3
Date : 2020-09-09 05:24:44 EDT
Size : 2.0 MiB
ETag : e8b894cf47871a56f0a9c48bc99bfea6
Type : file
Metadata :
Content-Type: application/octet-stream
7. Read the object that is created on the cloud object storage on the AFM to cloud object storage fileset.
In the following example, objectcreatedonCOS1, objectcreatedonCOS2, and
objectcreatedonCOS3 are new objects that are created on the cloud object storage:
1.0MiB object1
2.0MiB object2
2.0MiB object3
1.0MiB objectcreatedonCOS1
2.0MiB objectcreatedonCOS2
3.0MiB objectcreatedonCOS3
# ls -lsh /gpfs/fs1/afmtocos1
total 5.0M
1.0M -rw-r--r-- 1 root root 1.0M Sep 9 05:27 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object2
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object3
0 -rwx------ 1 root root 1.0M Sep 9 2020 objectcreatedonCOS1
0 -rwx------ 1 root root 2.0M Sep 9 2020 objectcreatedonCOS2
0 -rwx------ 1 root root 3.0M Sep 9 2020 objectcreatedonCOS3
Now you can see the object metadata in the AFM to cloud object storage fileset and its contents are
not cached. When the objects are read, all the data is pulled in from the cloud object storage. This is on
demand from applications that are hosted on IBM Spectrum Scale.
An example of reading the objects by the applications is as follows:
# ls -lsh /gpfs/fs1/afmtocos1
total 11M
1.0M -rw-r--r-- 1 root root 1.0M Sep 9 05:27 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object2
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object3
1.0M -rwx------ 1 root root 1.0M Sep 9 2020 objectcreatedonCOS1
2.0M -rwx------ 1 root root 2.0M Sep 9 2020 objectcreatedonCOS2
3.0M -rwx------ 1 root root 3.0M Sep 9 2020 objectcreatedonCOS3
8. Download the objects that are created on a cloud object storage on priority or preference by using the
mmafmcosctl download command.
a) Create new objects with a .imp extension on a cloud object storage.
1.0MiB object1
2.0MiB object2
2.0MiB object3
1.0MiB objectcreatedonCOS1
1.0MiB objectcreatedonCOS1.imp
2.0MiB objectcreatedonCOS2
2.0MiB objectcreatedonCOS2.imp
3.0MiB objectcreatedonCOS3
3.0MiB objectcreatedonCOS3.imp
b) Download or prefetch the object list that is created on the IBM Spectrum Scale cluster by issuing
the following command:
# cat ObjectList
/gpfs/fs1/afmtocos1/objectcreatedonCOS1.imp
/gpfs/fs1/afmtocos1/objectcreatedonCOS2.imp
/gpfs/fs1/afmtocos1/objectcreatedonCOS3.imp
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ ----------------------------------- ------------- ------------ ------------ -------------
afmtocos1 http://192.168.118.121:80/afmtocos1 Active c7f2n05 0 71
# ls -lsh /gpfs/fs1/afmtocos1
total 17M
1.0M -rw-r--r-- 1 root root 1.0M Sep 9 05:27 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object2
2.0M -rw-r--r-- 1 root root 2.0M Sep 9 05:28 object3
1.0M -rwx------ 1 root root 1.0M Sep 9 2020 objectcreatedonCOS1
1.0M -rwx------ 1 root root 1.0M Sep 9 2020 objectcreatedonCOS1.imp
2.0M -rwx------ 1 root root 2.0M Sep 9 2020 objectcreatedonCOS2
2.0M -rwx------ 1 root root 2.0M Sep 9 2020 objectcreatedonCOS2.imp
3.0M -rwx------ 1 root root 3.0M Sep 9 2020 objectcreatedonCOS3
3.0M -rwx------ 1 root root 3.0M Sep 9 2020 objectcreatedonCOS3.imp
Note: With the objectFS mode, objects can be read on demand from a cloud object storage. Whereas
the ObjectOnly mode download and upload can be used for priority data sync depending upon the
mode of the AFM to cloud object storage fileset.
Tuning on both the NFS client (gateway) and the NFS server (the
home/secondary cluster)
This topic describes the tuning on both the NFS client (gateway) and the NFS server (the home/secondary
cluster).
You must set TCP values that are appropriate for the delay (buffer size = bandwidth * RTT).
For example, if your ping time is 50 ms, and the end-to-end network consists of all 100BT Ethernet and
OC3 (155 Mbps), the TCP buffers must be the following: 0.05 sec * 10 MB/sec = 500 KB
If you are connected using a T1 line (1 Mbps) or less, do not change the default buffers. Faster networks
usually benefit from buffer tuning.
The following parameters can also be used for tuning. A buffer size of 12194304 is provided here as an
example value for a 1 GigE link with a delay of 120 ms. To set these values, set the following
configurations in a file and load it with sysctl -p file name.
The following are example values. Initial testing is required to determine the best value for a particular
system:
Note: For TCP tuning, the sysctl value changes do not take effect until a new TCP connection is created,
which occurs at NFS mount time. Therefore, for TCP changes, it is critical that the AFM fileset and the NFS
client are unmounted and GPFS is shut down.
With Red Hat Enterprise Linux 6.1 and later, both the NFS client and the server perform TCP auto-tuning.
It automatically increases the size of the TCP buffer within the specified limits through sysctl. If the
client or the server TCP limits are too low, the TCP buffer grows for various round-trip time between the
GPFS clusters. With Red Hat Enterprise Linux 6.1 and earlier, NFS is limited in its ability to tune the TCP
connection. Therefore, do not use a version earlier than Red Hat Enterprise Linux 6.1 in the cache/primary
cluster.
As a GPFS cluster might be handling local and remote NFS clients, you can set the GPFS server values for
the largest expected round-trip time of any NFS client. This ensures that the GPFS server can handle
clients at various locations. Then, on the NFS clients, set the TCP buffer values that are appropriate for the
SONAS cluster that they are accessing.
The gateway node is both an NFS server for standard NFS clients if they exist and an NFS client for
communication with the home/secondary cluster. Ensure that the TCP values are set appropriately
because values that are either too high or too low can negatively impact performance.
If performance continues to be an issue, increase the buffer value by up to 50%. If you increase the buffer
value by more than 50%, it might have a negative effect.
Note:
In special cases, the following customer IDs must be used:
• For developer edition: DEVLIC
• For test edition for customers who are trying IBM Spectrum Scale: TRYBUY
The country code must correspond to the contact country. The contact country information can be
found in the same source where the customer ID is found. Since the customer number is not unique
throughout all countries, a country code is also required to unambiguously identify a customer. The
country code must be in the ISO 3166-1 alpha-2 format. For example, US for USA, DE for Germany. For
more details, see ISO 3166-1 alpha-2.
3. Set up the scheduled data collection if needed, by using the following commands:
Note: Explicit enabling is only needed if call home is running on nodes that have IBM Spectrum Scale
version 5.0.1 or older installed.
This assigns the nodes specified via the --node option and the node specified as server to the new call
home group named GroupName. The server node is set to be the call home node of the created group.
All group nodes must have call home packages installed, and the call home node must be able to connect
to esupport.ibm.com. If the proxy call home settings are enabled, a proxy is used to test the connectivity.
Otherwise a direct connection is attempted.
If the call home node has a release version of 5.0.1.0 or later, the new group is automatically set to track
the global call home settings.
Note: If you are using a mixed cluster setup and specify a node with a release version earlier than 5.0.1.0
as the call home node, the created group will have a group-specific configuration with default values, and
will have to be manually configured. In such cases, execute the same commands that you have executed
to configure global call home settings from one of the nodes of the newly created groups. For more
details, see the Configuring call home settings section in “Configuring call home to enable manual and
automated data upload” on page 143.
If you want to manually specify the call home nodes to use for the new groups, you can use the --server
option as shown:
Use Case 1: To automatically create call home groups for all Linux nodes in the
cluster where call home packages are installed, and enable all call home features.
Note: For this use case, we assume the following:
• Call home has not been configured before.
• Some of the nodes have a direct connectivity to esupport.ibm.com.
• Automatic daily and weekly data collection is to be enabled.
• The mmcallhome command is run from a node which has IBM Spectrum Scale version 5.0.2. or later.
1. Set the customer information:
Additional messages:
License was accepted. Callhome enabled.
Use Case 2: To distribute all Linux nodes in the cluster where call home packages
are installed into two call home groups, and set the nodes g5001-21 and g5001-22
as their call home nodes.
Note: For this use case, we assume the following:
• Call home has not been configured before.
• Both the call home nodes require an authenticated proxy.
• Enable only weekly data collection.
• The mmcallhome command is run from a node which has IBM Spectrum Scale version 5.0.2. or later.
1. Set the customer information:
5. Create the call home groups automatically, while specifying the call home nodes:
Use Case 3: To automatically create call home groups for all Linux nodes in the
cluster where call home packages are installed, but disable the scheduled data
collection.
Note: For this use case, we assume the following:
• Call home has been configured before, but must be reconfigured. Ensure that the old settings are
removed, and the old groups are deleted.
• Both the call home nodes require an authenticated proxy.
• Neither weekly nor daily nor event-based data collection must be enabled, as data upload is only done
on demand. For example, PMRs.
• The mmcallhome command is run from a node which has IBM Spectrum Scale version 5.0.2. or later.
1. Set the customer information:
Additional messages:
License was accepted. Callhome enabled.
Use Case 1: Check the changes that happened on the system between the last two
data collections that were uploaded to IBM support
1. Run the following command to check whether any changes are detected:
# mmunmount mari -a -f
# mmdelfs mari
# mmcallhome run GatherSend --task DAILY
3. Run the following command to check whether any changes happened to the system after the
unmount:
Fs Data
Nsd Data
Note: You can use the following command to generate a more detailed output:
Fs Data
Nsd Data
• If just one configuration option in the system was changed, then the system gives the following output:
Nodeclass Data
Use Case 2: Check the changes that happened on the system between a selected
historic data collection and the most recent one that is uploaded to IBM support
Note: For this use case, consider that the history of the data collections that are kept on the system is
limited. If a specified number is reached for the data collection, then the old files are deleted. Hence, the
old files are no longer available for configuration comparisons.
1. Run the following command to select a previous data collection to compare with the most recent data
collection:
Note: Usually all historic data collections that are gathered on the system can be used for the
comparison. However, in this case only the weekly data collections is requested.
Nodeclass Data
Note: If you select a file that was already removed, the system throws an error. In this case, choose
another data collection.
3. Run the following command to compare a data collection that was created 3 days back:
Nodeclass Data
Use Case 3: Check the changes that happened on the system between two distinct
historic data collections
Run the following command to select and compare two distinct data collections:
Fs Data
Nsd Data
# mkdir -p /ibm/fs1/openstack/cinder/volumes
• Glance
# mkdir -p /ibm/fs1/openstack/glance/images
For more information, see Configuring a basic Overcloud with CLI tools.
SpectrumScal String Triple-O Heat template environment parameter to define NFS mount
eNFSOptions option on all overcloud nodes.
SpectrumScal String Triple-O Heat template environment parameter to define NFS share
eVolumeShare Volume path. This value must match with gpfs_mount_point_base
from cinder configuration parameters. For example, /ibm/fs1/
openstack/cinder/volumes
CinderVolume String Enables custom configuration files on the host to be made available to
OptVolumes the cinder-volume service when it’s running in a container. This value
must match with gpfs_mount_point_base from cinder
configuration parameters.
For example, /ibm/fs1/openstack/cinder/volumes
NovaLibvirtO String Enables custom configuration files on the host to be made available to
ptVolumes the nova-libvirt service when it’s running in a container. This value
must match with gpfs_mount_point_base from cinder
configuration parameters.
For example, /ibm/fs1/openstack/cinder/volumes
Chapter 15. Integrating IBM Spectrum Scale Cinder driver with Red Hat OpenStack Platform 16.1 155
Sample IBM Spectrum Scale Cinder configuration YAML file
Sample YAML file that displays IBM Spectrum Scale Cinder configuration file data.
Chapter 15. Integrating IBM Spectrum Scale Cinder driver with Red Hat OpenStack Platform 16.1 157
158 IBM Spectrum Scale 5.1.0: Administration Guide
Chapter 16. Performing GPFS administration tasks
Before you perform GPFS administration tasks, review topics such as getting started with GPFS,
requirements for administering a GPFS file system, and common command principles.
For information on getting started with GPFS, see the IBM Spectrum Scale: Concepts, Planning, and
Installation Guide. This includes:
1. Installing GPFS
2. GPFS cluster creation considerations
3. Configuring and tuning your system for GPFS
4. Starting GPFS
5. Network Shared Disk creation considerations
6. File system creation considerations
The information for administration and maintenance of GPFS and your file systems is covered in topics
including:
1. “Requirements for administering a GPFS file system” on page 159 and “Common GPFS command
principles” on page 161
2. Chapter 1, “Configuring the GPFS cluster,” on page 1
3. Chapter 18, “Managing file systems,” on page 167
4. Chapter 20, “Managing disks,” on page 221
5. Chapter 25, “Managing GPFS quotas,” on page 381
6. Chapter 27, “Managing GPFS access control lists,” on page 415
7. Command reference in IBM Spectrum Scale: Command and Programming Reference
8. GPFS programming interfaces in IBM Spectrum Scale: Command and Programming Reference
9. GPFS user exits in IBM Spectrum Scale: Command and Programming Reference
10. Chapter 19, “File system format changes between versions of IBM Spectrum Scale,” on page 217
mmchconfig adminMode=central
Use the mmlsconfig adminMode command to display the mode of administration currently in effect for
the cluster.
Stanza files
The input to a number of GPFS commands can be provided in a file organized in a stanza format.
A stanza is a series of whitespace-separated tokens that can span multiple lines. The beginning of a
stanza is indicated by the presence of a stanza identifier as the first token on a line. Stanza identifiers
consist of the % (percent sign) character, followed by a keyword, and ending with the : (colon) character.
For example, %nsd: indicates the beginning of an NSD stanza.
A stanza identifier is followed by one or more stanza clauses describing different properties of the object.
A stanza clause is defined as an Attribute=value pair.
Lines that start with the # (pound sign) character are considered comment lines and are ignored. Similarly,
you can imbed inline comments following a stanza clause; all text after the # character is considered a
comment.
The end of a stanza is indicated by one of the following:
• a line that represents the beginning of a new stanza
• a blank line
• a non-comment line that does not contain the = character
GPFS recognizes a number of stanzas:
%nsd:
NSD stanza
# Example for a directly attached disk; most values are allowed to default
%nsd: nsd=DATA6 device=/dev/hdisk6 failureGroup=3
Note: The server name used in the NSD stanza file must be resolvable by the system.
# mmlsmgr
file system manager node
---------------- ------------------
gpfs1 192.168.145.14 (node05)
2. Go to the command console on the file system manager node and enter mmdiag --commands:
The output indicates that two commands are running: the mmdiag --commands command that you
just entered and the mmrestripefs command, which was started from another node.
Note: The output contains two lines about active commands. Each line begins with the term cmd and
wraps to the next line. You might be interested in the following fields:
start
The system time at which the command was received.
SG
The name of the file system, or None.
line
The command as received by the GPFS daemon.
The remaining input is detailed debugging data that is used for product support. For more information
on mmdiag command output, see the topic mmdiag command in the IBM Spectrum Scale: Command
and Programming Reference guide.
2 * fileSystemSize / averageDiskserverDataRate
As an upper bound, because of the need to scan all of the metadata, double this time. If other jobs are
loading the NSD servers heavily, this time might increase even more.
Note: You do not need to stop all other jobs while the mmrestripefs command is running. The CPU load
of the command is minimal on each node and only the files that are being restriped at any moment are
locked to maintain data integrity.
You can also run tests on multiple nodes against multiple nodes. The following command runs tests on
node1 against node1 and node2 and then on node2 against node1 and node2:
It is not necessary to enter the command from a node that is involved in testing. For example, you can run
the following command from node1, node2, node3, or any other node in the cluster:
To run tests against all the nodes in the cluster, omit the --target-nodes parameter (example 1).
Similarly, to run the test on all the nodes in the cluster, omit the --N parameter (example 2):
The groups of tests include connectivity, port, data, bandwidth, and flood tests. You can run tests
individually or as a group. For example, you can run resolution, ping, shell, and copy tests individually, or
you can run all of them by specifying the keyword connectivity.
The command writes the results of tests to the console by default, or to a log file as in the following
example:
If you are running tests against nodes that are not organized into a cluster, you must specify the nodes in
a configuration file. The file must at minimum contain a list of the nodes in the test. You must also include
the node from which you are starting the command:
node node_starting
node node1
node node2
Run the command in the usual way and include the configuration file:
You can also use the configuration file for other purposes, such as specifying a nondefault shell command
or file copy command.
Related information
See the topic mmnetverify command in the IBM Spectrum Scale: Command and Programming Reference.
mmmount device
where device is the name of the file system. For example, to mount the file system fs1, enter:
mmmount fs1
mmmount fs1 -a
To mount a file system only on a specific set of nodes, use the -N flag of the mmmount command.
Related tasks
Mounting a file system through GUI
You can use the IBM Spectrum Scale GUI to mount or unmount individual file systems or multiple file
systems on the selected nodes. Use the Files > File Systems, Files > File Systems > View Details >
Nodes, or Nodes > View Details > File Systems page in the GUI to mount or unmount a file system.
Changing a file system mount point on protocol nodes
If required, you can change a file system mount point on IBM Spectrum Scale protocol nodes.
Related reference
Mount options specific to IBM Spectrum Scale
Mount options specific to IBM Spectrum Scale can be specified with the -o parameter on the mmchfs,
mmremotefs, mmmount and mount commands. Options specified with the mmchfs and mmremotefs
commands are recorded in the GPFS configuration files and are passed as default options to subsequent
mount commands on all nodes in the cluster. Options specified with the mmmount or mount commands
override the existing default settings and are not persistent.
The option={1 | 0 | yes | no} syntax should be used for options that can be intercepted by the
mount command and not passed through to GPFS. An example is the atime option in the Linux
environment.
The GPFS-specific mount options are:
atime
Update inode access time for each access. This option can also be controlled with the -S option of the
mmcrfs and mmchfs commands.
mtime
Always return accurate file modification times. This is the default. This option can also be controlled
with the -E option on the mmcrfs and mmchfs commands.
noatime
Do not update inode access times on this file system. This option can also be controlled with the -S
option on the mmcrfs and mmchfs commands.
nomtime
Update file modification times only periodically. This option can also be controlled with the -E option
on the mmcrfs and mmchfs commands.
mmumount fs0 -a
b. Use the mmobj config change --ccrfile file name to change the parameter. For example,
to change the object-server.conf file, enter:
Related tasks
Mounting a file system on multiple nodes
This topic describes how to mount a file systems on multiple nodes.
Mounting a file system through GUI
You can use the IBM Spectrum Scale GUI to mount or unmount individual file systems or multiple file
systems on the selected nodes. Use the Files > File Systems, Files > File Systems > View Details >
Nodes, or Nodes > View Details > File Systems page in the GUI to mount or unmount a file system.
Related reference
Mount options specific to IBM Spectrum Scale
Mount options specific to IBM Spectrum Scale can be specified with the -o parameter on the mmchfs,
mmremotefs, mmmount and mount commands. Options specified with the mmchfs and mmremotefs
commands are recorded in the GPFS configuration files and are passed as default options to subsequent
mount commands on all nodes in the cluster. Options specified with the mmmount or mount commands
override the existing default settings and are not persistent.
mmumount device
where device is the name of the file system. For example, to unmount the file system fs1, enter:
mmumount fs1
mmumount fs1 -a
mmdelfs fs1
GPFS: 6027-573 All data on the following disks of fs1 will be destroyed:
gpfs9nsd
gpfs13nsd
gpfs11nsd
gpfs12nsd
gpfs_fsck
<header>
sgid = "C0A87ADC:5555C87F"
disk_data_version = 1
fs_name = "gpfsh0"
#patch_file_version = 1
#start_time = "Fri May 15 16:32:58 2015"
#fs_manager_node = "h0"
#fsck_flags = 150994957
</header>
<patch_inode>
patch_type = "dealloc"
snapshot_id = 0
inode_number = 50432
</patch_inode>
<patch_block>
snapshot_id = 0
inode_number = 3
block_num = 0
indirection_level = 0
generation_number = 1
is_clone = false
is_directory_block = true
rebuild_block = false
#num_patches = 1
<patch_dir>
entry_offset = 48
entry_fold_value = 306661480
delete_entry = true
</patch_dir>
</patch_block>
<patch_block>
snapshot_id = 0
inode_number = 0
block_num = 0
indirection_level = 0
generation_number = 4294967295
is_clone = false
is_directory_block = false
rebuild_block = false
#num_patches = 1
<patch_inode>
patch_type = "orphan"
snapshot_id = 0
inode_number = 50433
</patch_inode>
<footer>
#stop_time = "Fri May 15 16:33:06 2015"
#num_sections = 203
#fsck_exit_status = 8
need_full_fsck_scan = false
</footer>
The mmfsck command can be run with both the --patch-file and --patch parameters to repair a file
system with the information that is stored in the patch file. Using a patch file prevents a subsequent scan
of the file system before the repair actions begin.
You cannot run the mmfsck command on a file system that has disks in a down state. You must first run
the mmchdisk command to change the state of the disks to unrecovered or up. To display the status of
the disks in the file system, issue the mmlsdisk command.
To check the file system fs1 without making any changes to the file system, issue the following command:
mmfsck fs1
For complete usage information, see mmchdisk command, mmcheckquota command, mmfsck
command, and mmlsdisk command in IBM Spectrum Scale: Command and Programming Reference
Overview
Use file system maintenance mode whenever you perform maintenance on either NSD disks or NSD
servers that might result in NSDs becoming unavailable. You cannot change any user files or file system
metadata while the file system in maintenance mode. This way the system does not mark down NSD disks
or NSD server nodes when I/O failures occur on those disks because they are not available (because of
maintenance). Then, administrators can easily complete administrative actions on the NSD disks or NSD
server nodes.
IBM Spectrum Scale file system operations that must internally mount the file system cannot be used
while the file system is in maintenance mode. Other file system administrative operations, such as the
operations run by the mmlsfs and mmlsdisk commands, can check the file system information.
• To check the status of file system maintenance mode, enter the following command:
Before you enter the mmchfs command to enable file system maintenance mode, make sure that you
unmount the file system on the local and remote clusters. Additionally, long running commands such as
mmrestripefs must complete because they internally mount the file system. If you cannot wait for long
running commands, you must specify the --wait parameter. The --wait parameter waits on existing
mounts and long running commands, and moves the file system into maintenance mode after all existing
mounts and long running commands complete.
You can apply maintenance on network shared disk (NSD) disks or server nodes:
1. Unmount the file system from all nodes, including remote cluster nodes. Enter the following command:
mmumount <fsName> -a
2. Check whether any pending internal mounts exist. Enter the following command:
mmlsmount <fsName> -L
Remember: If you use the --wait parameter with the mmchfs command, file system maintenance
mode is enabled automatically after you unmount the file system from all local and remote nodes.
4. Complete any needed maintenance on the NSDs or server nodes. Maintenance tasks on NSDs or server
nodes include these tasks:
• You can restart the NSD servers.
• You can stop any access to NSDs.
mmmount <fsName>
Mon Jul 23 06:02:49 EDT 2018: 6027-1623
mmmount: Mounting file systems ...
mount: permission denied
mmmount: 6027-1639 Command failed. Examine previous error messages to determine cause.
mmrestripefs <fsName> -b
This file system is undergoing maintenance and cannot be either mounted or changed.
mmrestripefs: 6027-1639 Command failed. Examine previous error messages to determine cause.
5. Resume the normal file system operations such as mmmount after maintenance is complete. End the
maintenance mode only after the NSD disks and NSD servers are operational:
You can run offline fsck to check file system consistency before you resume file system maintenance
mode.
CAUTION:
• If you shut down either the NSD servers or the whole cluster, it is considered maintenance on
NSD disks or servers and must be done under maintenance mode.
• If no NSD disks or NSD server nodes are available for a specified file system, the file system
maintenance mode state cannot be retrieved because it is stored with the stripe group
descriptor. Additionally, you cannot resume the file system maintenance mode in this scenario.
Running the fsck service action while the file system is in maintenance mode
The offline fsck service action can be run while the file system is in maintenance mode. Maintenance
mode is used to provide a dedicated timing window to check file system consistency when:
• The offline fsck service action cannot be started while the file system is being used.
• The offline fsck service action cannot be started due to some unexpected interfering file system mount
or other management operations.
See also
• mmchfs
• mmlsfs
mmlsfs gpfs1
Some of the attributes that are displayed by the mmlsfs command represent default mount options.
Because the scope of mount options is an individual node, it is possible to have different values on
different nodes. For exact mtime (-E option) and suppressed atime (-S option), the information that is
displayed by the mmlsfs command represents the current setting on the file system manager node. If
these options are changed with the mmchfs command, the change might not be reflected until the file
system is remounted.
For complete usage information, see mmlsfs command in IBM Spectrum Scale: Command and
Programming Reference. For a detailed discussion of file system attributes, see GPFS architecture and File
system creation considerations in IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
mmchfs fs1 -r 2
mmlsfs fs1 -r
For complete usage information, see mmchfs command and mmlsfs command in IBM Spectrum Scale:
Command and Programming Reference. For a detailed discussion of file system attributes, see GPFS
architecture and File system creation considerations in IBM Spectrum Scale: Concepts, Planning, and
Installation Guide.
See the mmlsattr command in IBM Spectrum Scale: Command and Programming Reference for complete
usage information. For a detailed discussion of file system attributes, see GPFS architecture and File
system creation considerations in IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
Related tasks
Changing file replication attributes
Use the mmchattr command to change the replication attributes for one or more files.
mmchattr -m 2 -r 2 /fs1/project7.resource
mmlsattr /fs1/project7.resource
replication factors
metadata(max) data(max) file [flags]
------------- --------- ---------------
2 ( 2) 2 ( 2) /fs1/project7.resource
See the mmchattr command and the mmlsattr command in IBM Spectrum Scale: Command and
Programming Reference for complete usage information. For a detailed discussion of file system
attributes, see GPFS architecture and File system creation considerations in IBM Spectrum Scale: Concepts,
Planning, and Installation Guide.
Related tasks
Querying file replication
Specify one or more file names with the mmlsattr command.
File compression
You can compress or decompress files either with the mmchattr command or with the mmapplypolicy
command with a MIGRATE rule. With the MIGRATE rule, administrators can create policies that select a
Table 20. Compression libraries and their required file system format level and format number
Compression library Required file system format level and format
number
z 4.2.0 (15.01) or later
lz4 5.0.0 (18.00) or later
zfast, alphae, alphah 5.0.3 (21.00) or later
For more information about file compression, see the following subtopics:
• “Comparison with object compression” on page 181
• “Setting up file compression and decompression” on page 182
• “Warning” on page 183
• “Reported size of compressed files” on page 183
• “Deferred file compression” on page 183
• “Indicators of file compression or decompression” on page 183
• “Partially compressed files” on page 185
• “Updates to compressed files” on page 185
• “File compression and memory mapping” on page 185
• “File compression and direct I/O” on page 185
• “Backing up and restoring compressed files” on page 185
• “FPO environment” on page 186
• “AFM environment” on page 186
• “Limitations” on page 186
For more information, see the topic mmchattr command in the IBM Spectrum Scale: Command and
Programming Reference.
With the mmapplypolicy command, you create a MIGRATE rule that specifies the COMPRESS option and
run mmapplypolicy to apply the rule.
Note: File compression and decompression with the mmapplypolicy command is not supported on
Windows.
See the following examples:
• The following rule selects files with names that contain the string green from the datapool storage
pool and compresses them with the z library:
RULE 'COMPR1' MIGRATE FROM POOL 'datapool' COMPRESS('z') WHERE NAME LIKE 'green%'
RULE 'COMPR1' MIGRATE FROM POOL 'datapool' COMPRESS('no') WHERE NAME LIKE 'green%'
RULE 'NEVER_COMPRESS' EXCLUDE WHERE lower(NAME) LIKE '%.mpg' OR lower(NAME) LIKE '%.jpg'
RULE 'COMPRESS_COLD' MIGRATE COMPRESS('z') WHERE (CURRENT_TIMESTAMP - ACCESS_TIME) >
(INTERVAL '30' DAYS)
RULE 'COMPRESS_ACTIVE' MIGRATE COMPRESS('lz4') WHERE (CURRENT_TIMESTAMP - MODIFICATION_TIME)
>
(INTERVAL '2' DAYS) AND (CURRENT_TIMESTAMP - ACCESS_TIME) <= (INTERVAL '30' DAYS)
• The following rule compresses genomic data in files with the extensions .fastq and .fq:
RULE ’COMPRESS_GENOMIC’ MIGRATE COMPRESS('alphae') WHERE lower(NAME) LIKE ’%.fastq’ OR lower(NAME) LIKE ’
%.fq’
Warning
Doing any of the following operations while the mmrestorefs command is running can corrupt file data:
• Doing file compression or decompression. This includes compression or decompression with the
mmchattr command or with a policy and the mmapplypolicy command.
• Running the mmrestripefile command or the mmrestripefs command. Do not run either of these
commands for any reason. Do not run these commands to complete a deferred file compression or
decompression.
With the mmapplypolicy command, the -I defer option defers compression or decompression and
data movement or deletion. For example, the following command applies the rules in the file
policyfile but defers the file operations that are specified in the rules, including compression or
decompression:
mmrestripefile -z trcrpt.150913.13.30.13.3518.txt
mmlsattr -L green02.51422500687
file name: green02.51422500687
metadata replication: 1 max 2
data replication: 2 max 2
immutable: no
appendOnly: no
flags: illCompressed
storage pool name: datapool
fileset name: root
snapshot name:
creation time: Wed Jan 28 19:05:45 2015
Misc attributes: ARCHIVE COMPRESSION (library lz4)
Encrypted: no
Together the COMPRESSION and illCompressed flags indicate the compressed or uncompressed state
of the file. See the following table:
mmrestripefile -z trcrpt.150913.13.30.13.3518.txt
The mmrestorefs command can cause a compressed file in the active file system to become
decompressed if it is overwritten by the restore process. To recompress the file, run the
mmrestripefile command with the -z option.
For more information, see the preceding subtopic “Deferred file compression” on page 183.
FPO environment
File compression supports a File Placement Optimizer (FPO) environment or horizontal storage pools.
FPO block group factor: Before you compress files in a File Placement Optimizer (FPO) environment, you
must set the block group factor to a multiple of 10. If you do not, then data block locality is not preserved
and performance is slower.
For compatibility reasons, before you do file compression with FPO files, you must upgrade the whole
cluster to version 4.2.1 or later. To verify that the cluster is upgraded, follow these steps:
1. At the command line, enter the mmlsconfig command with no parameters.
2. In the output, verify that minReleaseLevel is 4.2.1 or later.
AFM environment
Files that belong to AFM and AFM DR filesets can also be compressed and decompressed. Compressed
file contents are decompressed before being transferred from home to cache or from primary to
secondary.
Before you do file compression with AFM and AFM DR, you must upgrade the whole cluster to version
5.0.0.
Limitations
See the restrictions that are stated in the following subtopics:
• “File compression and memory mapping” on page 185
• “File compression and direct I/O” on page 185
• “Backing up and restoring compressed files” on page 185
File compression also has the following limitations:
• File compression processes each compression group within a file independently. A compression group
consists of one to 10 consecutive data blocks within a file. If the file contains fewer than 10 data blocks,
the whole file is one compression group. If the saving of space for a compression group is less than
10%, file compression does not compress it but skips to the next compression group.
• For file-enabled compression in an FPO-enabled file system, the block group factor must be a multiple
of 10 so that the compressed data maintains data locality. If the block group factor is not a multiple of
10, the data locality is broken.
• Direct I/O is not supported for compressed files.
• File compression is not supported on a file system where HAWC is enabled.
• The following operations are not supported:
– Compressing files in snapshots
– Compressing a clone
– Compressing small files (files that occupy fewer than two subblocks, compressing small files into an
inode).
– Compressing files other than regular files, such as directories.
mmrestripefs fsname -N
mmapplypolicy fsname -N all ...
The I/O intensive, potentially long-running GPFS commands are collectively called maintenance
commands and are listed in the help topic for the mmchqos command in the IBM Spectrum Scale:
Command and Programming Reference.
With QoS configured, you can assign an instance of a maintenance command to a QoS class that has a
lower I/O priority. Although the instance now takes longer to run to completion, normal tasks have greater
access to I/O resources and run more quickly.
For more information, see the descriptions of the QoS commands:
• mmchqos command in the IBM Spectrum Scale: Command and Programming Reference
• mmlsqos command in the IBM Spectrum Scale: Command and Programming Reference
Note:
• QoS requires the file system to be at V4.2.0.0 or later. To check the file system level, enter the following
command:
mmlsfs fileSystemName -V
• QoS works with asynchronous I/O, memory-mapped I/O, cached I/O, and buffered I/O. However, with
direct I/O, QoS counts the IOPS but does not regulate them.
b. Run some maintenance commands that drive I/O on all nodes and disks.
c. Run the mmlsqos command to observe how many IOPS are consumed:
2. Run the mmchqos command to allocate the available IOPS among the storage pools.
a. Allocate a smaller share of IOPS to the maintenance class, perhaps 15 percent. For example, if
you determined in Step 1 that the maximum is 10,000 IOPS, then you might allocate 1500 IOPS to
the maintenance class.
If there is more than one storage pool, then divide the IOPS among the maintenance classes of the
storage pools. In this overview, suppose that you decide to allocate 1000 IOPS to the maintenance
class of the system pool and 500 IOPS to the maintenance class of the sp1 storage pool. See the
second column of the table below.
Note: Make sure that the virtual storage Logical Unit Numbers (LUNs) of different storage pools do
not map to the same physical devices.
By default, QoS divides specific allocations of IOPS evenly among the nodes in the file system. In
this overview there are 5 nodes. So QoS allocates 200 IOPS to the maintenance class of the
system pool and 100 IOPS to the maintenance class of the sp1 storage pool on each node.
Note: You can also divide IOPS among a list of nodes or among the nodes of a node class. For
example, you can use the mmcrnodeclass command to create a class of nodes that do
maintenance commands. You can than divide IOPS among the members of the node class by
entering a command like the following one:
If the file system serves remote clusters, you can divide IOPS among the members of a remote
cluster by entering a command like the following one:
b. Allocate the remaining IOPS to the other classes. It is a good idea to accomplish this task by
setting other to unlimited in each storage class. Then normal tasks can absorb all the IOPS of
the system when no maintenance commands are running. See the third column of the following
table:
3. When you run a maintenance command, QoS by default assigns it to the maintenance class:
All maintenance command instances that are running at the same time and that access the same
storage pool compete for the IOPS that you allocated to the maintenance class of that storage pool. If
the IOPS limit of the class is exceeded, then QoS queues the extra I/O requests until more IOPS
become available.
To run a maintenance command without I/O restrictions, you can explicitly assign it to the other
class:
4. You can disable QoS at any time without losing your IOPS allocations:
5. You can change the IOPS allocations at any time. The following command is on one line:
When you change allocations, mount the file system, or reenable QoS, a brief delay due to
reconfiguration occurs before QoS starts applying allocations.
6. To monitor the consumption of IOPS while a maintenance command is running, run the mmlsqos
command. The following command displays the statistics for the preceding 60 seconds during which a
maintenance command was running:
See also
• mmchqos command in the IBM Spectrum Scale: Command and Programming Reference
• mmlsqos command in the IBM Spectrum Scale: Command and Programming Reference
mmrestripefs fs1 -b
Note: Rebalancing of files is an I/O-intensive and time-consuming operation, and is important only for file
systems with large files that are mostly invariant. In many cases, normal file update and creation will
rebalance your file system over time, without the cost of the rebalancing.
For complete usage information, see mmrestripefs command in IBM Spectrum Scale: Command and
Programming Reference.
mmdf fs1
Disks in storage pool: fs1sp1 (Maximum disk size allowed is 122 GB)
hd30n01 8897968 8 no yes 8895488 (100%) 424 ( 0%)
hd31n01 8897968 8 no yes 8895488 (100%) 424 ( 0%)
------------- -------------------- -------------------
(pool total) 17795936 17790976 (100%) 848 ( 0%)
Inode Information
-----------------
Number of used inodes: 9799
Number of free inodes: 4990393
Number of allocated inodes: 5000192
Maximum number of inodes: 5000192
For complete usage information, see mmdf command in IBM Spectrum Scale: Command and Programming
Reference.
mmdefragfs fs0 -i
For complete usage information, see mmdefragfs command in IBM Spectrum Scale: Command and
Programming Reference.
Related tasks
Reducing file system fragmentation
You can reduce the amount of fragmentation for a file system by issuing the mmdefragfs command, with
or without a desired block usage goal.
See the mmdefragfs command in IBM Spectrum Scale: Command and Programming Reference for
complete usage information.
Related tasks
Querying file system fragmentation
To query the current status of the amount of fragmentation for a file system, specify the file system name
along with the -i option on the mmdefragfs command.
"$JOB:$FS:$SERVER:$NODENAME:$PHASE:$BCKFILES:$CHGFILES:$EXPFILES:\
$FILESBACKEDUP:$FILESEXPIRED:$ERRORS:$TIME"
Where:
JOB
Specifies the literal backup string to identify this component.
FS
Specifies the file system device name.
SERVER
Specifies the IBM Spectrum Protect server currently used for backup.
NODENAME
Specifies the name of the node where mmbackup was started.
PHASE
Specifies either synchronizing, scanning, selecting files, expiring, backing up,
analyzing, or finishing.
1. On the IBM Spectrum Protect server, define the schedule using the following command.
define schedule standard proxy-cluster1_sched type=client action=command
objects=/usr/bin/my-mmbackup-script.sh starttime=05:00:00 startdate=today
2. On the IBM Spectrum Protect server, associate the schedule with the IBM Spectrum Scale proxy node
using the following command.
#!/bin/bash
/usr/lpp/mmfs/bin/mmcrsnapshot gpfs0 BKUPsnap
/usr/lpp/mmfs/bin/mmbackup gpfs0 –t incremental –-tsm-servers tsm1
/usr/lpp/mmfs/bin/mmdelsnapshot gpfs0 BKUPsnap
4. On one of the IBM Spectrum Protect client nodes, verify the schedule using the following command.
dsmc q sched
TESTFLAGS PARSEABLE_INCLEXCL:"::"
You can now create an exclude rule for a directory path that contains blank spaces, as in the following
example:
The command dsmc q inclexcl displays the following information for the exclude rule:
Include options
IBM Spectrum Protect provides include options and exclude options and can correctly process a set of
includes and excludes. However, the mmbackup command is apt to misinterpret a mixture of include rules
and exclude rules, especially when there are overlapping pattern sequences. Therefore it is a good
practice to avoid using include rules with the mmbackup command. For an exception, see the next topic.
export MMBACKUP_IGNORE_INCLUDE=1
Note:
• The include statements have no effect on the file system scan candidate selection in mmapplypolicy
because the rules for include do not result in SQL statements being generated with
MMBACKUP_IGNORE_INCLUDE activated.
• The include statements do not overrule the exclude statements which can be the case sometimes with
mmapplypolicy policy rules generated from include and exclude formulation in IBM Spectrum Protect.
It is recommended to never have overlapping patterns of any type with both include and exclude
statements.
Related concepts
Options in the IBM Spectrum Protect configuration file dsm.opt
This topic describes the options in the IBM Spectrum Protect configuration file dsm.opt.
Base IBM Spectrum Protect client configuration files for IBM Spectrum Scale usage
HSMDISABLEAUTOMIGDAEMONS To prevent the IBM Spectrum IBM Spectrum Protect for Space
[YES | NO] Protect for Space Management Management,
automigration daemons from
starting.
Instead, the mmapplypolicy
scan engine is used to identify
migration candidates.
Related concepts
Options in the IBM Spectrum Protect configuration file dsm.sys
This topic describes the options in the IBM Spectrum Protect configuration file dsm.sys.
Base IBM Spectrum Protect client configuration files for IBM Spectrum Scale usage
Base IBM Spectrum Protect client configuration files for IBM Spectrum Scale
usage
This topic lists all the Base IBM Spectrum Protect client configuration files and their examples for IBM
Spectrum Scale.
Important: While the IBM Spectrum Protect client configuration file dsm.sys can contain node specific
information, it cannot simply be copied from node to node without touching or correcting the
corresponding node specific information.
The following are example contents of IBM Spectrum Protect configuration files.
Contents of dsm.sys
Note: Substitute the variables starting with '$' with your own required value. See the following example
values of variables.
Servername $servername
COMMMethod TCPip
TCPPort $serverport
TCPServeraddress $serverip
* TCPAdminport $serveradminport
TCPBuffsize 512
PASSWORDACCESS generate
* Place your exclude rules here or configure as cloptset on TSM server
ERRORLOGName $errorlog
ASNODENAME $client-node-proxyname
NODENAME $localnodename
serverport=1500
serverip=myTSMserver.mydomain.org OR serverip=1.2.3.4
serveradminport=1526
errorlog=/var/log/mylogs/dsmerror.log
client-node-proxyname=proxy-cluster1
localnodename=gpfs-node1
Contents of dsm.opt
Contents of dsm.opt when IBM Spectrum Protect for Space Management is used
Related concepts
Options in the IBM Spectrum Protect configuration file dsm.sys
This topic describes the options in the IBM Spectrum Protect configuration file dsm.sys.
Options in the IBM Spectrum Protect configuration file dsm.opt
# mmlssnapshot fs1
2. Use the mmsnapdir device command to obtain the name of the snapshot directory for the file
system snapshot that you have identified.
In the following example, the fileset snapshot directory is called .snapshots.
# mmsnapdir fs1
3. Use the mmlsfs device -T command to determine the default mount point of the file system.
In the following example, the default mount point is /gpfs/fs1.
# mmlsfs fs1 -T
4. Use the full path to the files and directories that you want to restore and the default mount point that
you have determined to obtain the truncated path to the files and directories.
For example:
5. Change the directory to the full snapshot path of the file or the directory to verify.
The full snapshot path is:
filesystem_default_mountpoint/snapshot_directory/snapshot_name/
truncated_path
# mmlssnapshot fs1
2. Use the mmsnapdir device command to obtain the name of the snapshot directory for the fileset
snapshot that you have identified.
In the following example, the fileset snapshot directory is called .snapshots.
# mmsnapdir fs1
3. Use the mmlsfileset device command to verify that the fileset status is linked and to determine
the full path of the fileset.
In the following example, all filesets are linked and the paths are in the third column.
# mmlsfileset fs1
4. Use the full path to the files and directories that you want to restore and the fileset path that you have
determined to obtain the truncated path to the files and directories.
For example:
5. Change the directory to the full snapshot path of the file or the directory to verify.
The full snapshot path is:
fileset_path/snapshot_directory/snapshot_name/truncated_path
The full snapshot path using examples in the preceding steps is:
/gpfs/fs1/nfs-ganesha/.snapshots/fileset_test1/test1/
6. Do one of the following steps depending on whether you want to restore a file or a directory:
• If you want to restore a file, use the following command:
cp -p full_snapshot_path/file_name restore_directory
• If you want to restore a directory, change the directory to the restore_directory and use the
following command:
tar -zcf tar_file_name full_snapshot_path/directory_name
/usr/lpp/mmfs/samples/ilm/mmcdpsnapqueryrecover.sh Device \
--file-path fsPath --destination-dir restorePath
Where:
• device is the name of the file system.
• file-path is the full file path.
• destination-dir is the full path of the restore directory.
For example, to get all copies of the file /gpfs0/gplssnapshot in the file system gpfs0 and
with /opt as the restore directory, enter the following:
/usr/lpp/mmfs/samples/ilm/mmcdpsnapqueryrecover.sh /dev/gpfs0 \
--file-path /gpfs0/gplssnapshot --destination-dir /opt
2. From the list, select the file that you want to restore by entering the corresponding number.
For example:
Policies
IBM Spectrum Scale provides a way to automate the management of files by using policies and rules. You
can manage these policies and rules through the Files > Information Lifecycle page of the management
GUI.
A policy rule is an SQL-like statement that tells the file system what to do with the data for a file in a
specific pool if the file meets specific criteria. A rule can apply to any file being created or only to files
being created within a specific fileset or group of filesets.
• Specifying mmchfs -V compat enables only compatible with an earlier version format changes. Nodes
in remote clusters that were able to mount the file system before the format changes can continue to do
so afterward.
In IBM Spectrum Scale 5.1.0, new file systems are created at file system format level 24.00. To update a
file system from an earlier format to format level 24.00, issue the following command:
where Device is the device name of the file system. The following features of IBM Spectrum Scale 5.1.0
require a file system to be at format number 24.00 or later:
• Creating AFM to cloud object storage fileset.
In IBM Spectrum Scale 5.0.5, new file systems are created at file system format level 23.00. To update a
file system from an earlier format to format level 23.00, issue the following command:
where Device is the device name of the file system. The following features of IBM Spectrum Scale 5.0.5
require a file system to be at format number 23.00 or later:
where Device is the device name of the file system. The following features of IBM Spectrum Scale 5.0.4
require a file system to be at format number 22.00 or later:
• Support for thin provisioned storage devices and NVMe SSDs.
• Support for linking GPFS dependent filesets inside AFM and AFM-DR filesets.
In IBM Spectrum Scale 5.0.3, new file systems are created at file system format level 21.00. To update a
file system from an earlier format to format level 21.00, issue the following command:
where Device is the device name of the file system. The following features of IBM Spectrum Scale 5.0.3
require a file system to be at format number 21.00 or later:
• Genomic compression
In IBM Spectrum Scale 5.0.2, new file systems are created at file system format number 20.01. To update
a file system from an earlier format to format number 20.01, issue the following command:
where Device is the device name of the file system. The following features of IBM Spectrum Scale 5.0.2
require a file system to be at format number 20.01 or later:
• The afmGateway attribute of the mmchfileset command specifies a user-defined gateway node for
an AFM or AFM DR fileset that is given preference over the internal hashing algorithm.
• The maxActiveIallocSegs performance attribute of the mmchconfig command controls the
number of active inode allocation segments that are maintained on a node. In IBM Spectrum Scale
5.0.2 and later the default number is 8 and the range is 1 - 64. In earlier versions the default value and
also the maximum value is 1.
• The clustered watch folder feature provides you the ability to watch file operations across clusters. For
more information, see the topic Introduction to clustered watch folder in the IBM Spectrum Scale:
Concepts, Planning, and Installation Guide.
In IBM Spectrum Scale 5.0.1, new file systems are created at format number 19.01. To update the format
of an earlier file system to format number 19.01, issue the following command:
where Device is the device name of the earlier file system. The following features of IBM Spectrum Scale
5.0.0 require a file system to be at format number 18.00 or later:
• Smaller subblock sizes for file systems that have a large data block size.
Note: This feature is supported only for file systems that are created at file system format number
18.00 or later. It is not supported for file systems that are updated to format number 18.00 or later from
an earlier format number. For more information, see the parameter -B BlockSize in the topic mmcrfs in
the IBM Spectrum Scale: Command and Programming Reference.
• File compression with the lz4 compression library
where Device is the device name of the earlier file system. The following features of IBM Spectrum Scale
v4.2.3.0 require a file system to be at format number 17.00 or later:
• Quality of Service for I/O (QoS)
• File compression with zlib compression library
• Information lifecycle management (ILM) for snapshots
If your current file system is at format number 14.20 (IBM Spectrum Scale 4.1.1), the set of enabled
features depends on the value that is specified with the mmchfs -V option:
• After running mmchfs -V full, the file system can support the following:
– Enabling and disabling of quota management without unmounting the file system.
– The use of fileset-level integrated archive manager (IAM) modes.
• There are no new features that can be enabled with mmchfs -V compat.
If your current file system is at format number 14.04 (GPFS 4.1.0.0), the set of enabled features depends
on the value specified with the mmchfs -V option:
• After running mmchfs -V full, the file system can support different block allocation map types on an
individual storage-pool basis.
• There are no new features that can be enabled with mmchfs -V compat.
If your current file system is at format number 13.23 (GPFS 3.5.0.7), the set of enabled features depends
on the value that is specified with the mmchfs -V option:
• After running mmchfs -V full, the file system can support the following:
– Directory block sizes can be up to 256 KB (previous maximum was 32 KB).
– Directories can reduce their size when files are removed.
• There are no new features that can be enabled with mmchfs -V compat.
If your current file system is at format number 13.01 (GPFS 3.5.0.1), the set of enabled features depends
on the value specified with the mmchfs -V option:
• After running mmchfs -V full, the file system can support the following:
– Extended storage pool properties
– File Placement Optimizer (FPO)
– Storing small directories in the inode
– Storing the data for small files in the inode
• There are no new features that can be enabled with mmchfs -V compat.
If your current file system is at format number 12.03 (GPFS 3.4), the set of enabled features depends on
the value specified with the mmchfs -V option:
• After running mmchfs -V full, the file system can support the following:
– Independent filesets and snapshots of individual independent filesets
– Active file management (AFM)
– File clones (writable snapshots of a file)
– Policy language support for new attributes, variable names, and functions: OPTS clause for the SET
POOL and RESTORE rules, encoding of path names via an ESCAPE clause for the EXTERNAL LIST and
EXTERNAL POOL rules, GetEnv(), GetMMconfig(), SetXattr(), REGEX().
Chapter 19. File system format changes between versions of IBM Spectrum Scale 219
• There are no new features that can be enabled with mmchfs -V compat.
If your current file system is at format number 11.03 (GPFS 3.3), the set of enabled features depends on
the value specified with the mmchfs -V option:
• After running mmchfs -V full, the file system can support the following:
– more than 2,147,483,648 files
– fast extended attributes (which requires mmmigratefs to be run also)
• There are no new features that can be enabled with mmchfs -V compat.
If your current file system is at format number 10.00 (GPFS 3.2.0.0) or 10.01 (GPFS 3.2.1.5), after
running mmchfs -V, the file system can support all of the features included with earlier levels, plus the
following:
• new maximum number of filesets in a file system (10000)
• new maximum for the number of hard links per object (2**32)
• improved quota performance for systems with large number of users
• policy language support for new attributes, variable names, and functions: MODE, INODE, NLINK,
RDEVICE_ID, DEVICE_ID, BLOCKSIZE, GENERATION, XATTR(), ATTR_INTEGER(), and XATTR_FLOAT()
If your current file system is at format number 9.03 (GPFS 3.1), after running mmchfs -V, the file system
can support all of the features included with earlier levels, plus:
• fine grain directory locking
• LIMIT clause on placement policies
If your current file system is at format number 8.00 (GPFS 2.3), after running mmchfs -V, the file system
can support all of the features included with earlier levels, plus:
• Storage pools
• Filesets
• Fileset quotas
If your current file system is at format number 7.00 (GPFS 2.2), after running mmchfs -V, the file system
can support all of the features that are included with earlier levels, plus:
• NFS V4 access control lists
• New format for the internal allocation summary files
If your current file system is at format number 6.00 (GPFS 2.1), after running mmchfs -V, the file system
can support all of the features that are included with earlier levels and extended access control list entries
(-rwxc access mode bits).
mmlsnsd
To find out the local device names for the disks, use the mmlsnsd command with the -m option. For
example, issuing mmlsnsd -m produces output similar to this:
For syntax and usage information, refer to mmdeldisk command in the IBM Spectrum Scale: Command
and Programming Reference.
Note: If you attempt to replace a stopped disk and the file system is not replicated, the attempt will fail.
However, you can replace a stopped disk if the file system is replicated. You can do so in one of the
following ways:
• Deletion, addition, and rebalancing method:
1. Use the mmdeldisk command to delete the stopped disk from the file system.
2. Use the mmadddisk command to add a replacement disk.
3. Use the mmrestripefs -b command to rebalance the file system.
While this method requires rebalancing, it returns the system to a protected state faster (because it can
use all of the remaining disks to create new replicas), thereby reducing the possibility of losing data.
—Or—
• Direct replacement method:
Use the mmrpldisk command to directly replace the stopped disk.
The mmrpldisk command only runs at single disk speed because all data being moved must be written
to the replacement disk. The data is vulnerable while the command is running, and should a second
failure occur before the command completes, it is likely that some data will be lost.
For more information on handling this situation, see Disk media failure in the IBM Spectrum Scale:
Problem Determination Guide.
In this scenario, strict replication is enforced for a file system and then a disk that is used by the file
system is deleted, replaced, or suspended. If IBM Spectrum Scale then tries to create or append data to
an existing file in the file system, the operation can fail with an ENOSPC error.
Note: To determine whether a file system has strict replication enforced, issue the following command:
mmlsfs fs1 -K
mmrestripefs fs1 -r
For syntax and usage information, see the mmlsdisk command in the IBM Spectrum Scale: Command and
Programming Reference.
Disk availability
The following information lists the possible values of disk availability, and what they mean.
A disk's availability determines whether GPFS is able to read and write to the disk. There are four possible
values for availability:
up
The disk is available to GPFS for normal read and write operations.
down
No read and write operations can be performed on the disk.
recovering
An intermediate state for disks coming up, during which GPFS verifies and corrects data. A write
operation can be performed while a disk is in this state, but a read operation cannot, because data on
the disk being recovered might be stale until the mmchdisk start command completes.
unrecovered
The disk was not successfully brought up.
Disk availability is automatically changed from up to down when GPFS detects repeated I/O errors. You
can also change the availability of a disk by issuing the mmchdisk command.
Related concepts
Disk status
The following information lists the possible values for disk status, and what they mean.
Disk status
The following information lists the possible values for disk status, and what they mean.
Disk status controls data placement and migration. Status changes as a result of a pending delete
operation, or when the mmchdisk command is issued to allow file rebalancing or re-replicating prior to
disk replacement or deletion.
Disk status has seven possible values, but four are transitional:
ready
Normal status.
suspended
or
to be emptied
Indicates that data is to be migrated off this disk.
For GPFS 4.1.1 and later, the status in the mmlsdisk command is displayed as to be emptied, as
shown in the following example:
For example, to set to be emptied state for gpfs1nsd disk of the file system fs1, enter:
You can also use the mmchdisk command with the change option to change the Disk Usage and Failure
Group parameters for one or more disks in a GPFS file system. This can be useful in situations where, for
example, a file system that contains only RAID disks is being upgraded to add conventional disks that are
better suited to storing metadata. After adding the disks using the mmadddisk command, the metadata
currently stored on the RAID disks would have to be moved to the new disks to achieve the desired
performance improvement. To accomplish this, first the mmchdisk change command would be issued to
change the Disk Usage parameter for the RAID disks to dataOnly. Then the mmrestripefs command
would be used to restripe the metadata off the RAID device and onto the conventional disks.
For example, to specify that metadata should no longer be stored on disk hd8vsdn100, enter:
For complete usage information, see the mmchdisk command and the mmlsdisk command in the IBM
Spectrum Scale: Command and Programming Reference.
mmlsnsd -d "gpfs47nsd"
mmchnsd "gpfs47nsd:k145n09,k145n07"
mmlsnsd -d gpfs47nsd
To change the disk discovery of a file system that is already mounted: cleanly unmount it, wait for the
unmount to complete, and then mount the file system using the desired -o useNSDserver option.
mmchconfig usePersistentReserve=yes
mmchconfig usePersistentReserve=no
For fast recovery times with Persistent Reserve, you should also set the failureDetectionTime configuration
parameter. For fast recovery, a recommended value would be 10. You can set this by issuing the
command:
mmchconfig failureDetectionTime=10
To determine if the disks on the servers and the disks of a specific node have PR enabled, issue the
following command from the node:
mmlsnsd -X
If the GPFS daemon has been started on all the nodes in the cluster and the file system has been
mounted on all nodes that have direct access to the disks, then pr=yes should be on all hdisks. If you do
not see this, there is a problem. Refer to the IBM Spectrum Scale: Problem Determination Guide for
additional information on Persistent Reserve errors.
Prerequisites
When you enable SMB protocol services, the following prerequisites must be met:
• The number of CES nodes must be 16 or lower.
• All CES nodes must be running the same system architecture. For example, mixing nodes based on Intel
and Power is not supported.
• A valid mmuserauth config
When you add new CES nodes to a running system where the SMB protocol is enabled, the following
prerequisite must be met:
• All SMB packages (gpfs.smb) must have the same version.
• All CES nodes must be in SMB HEALTHY state. You can verify the health status of the SMB service by
using the mmces state show smb command.
When you remove a CES node from a running system where the SMB protocol is enabled, the following
prerequisite must be met:
• All CES nodes (except for the node that is being removed) must be in SMB HEALTHY state.
For more information about the SMB states, see mmces command in IBM Spectrum Scale: Command and
Programming Reference.
GUI navigation
• To enable SMB services in the GUI, log on to the IBM Spectrum Scale GUI and select Services > SMB.
• To enable NFS services in the GUI, log on to the IBM Spectrum Scale GUI and select Services > NFS.
The protocol services that are used need to be started on all CES nodes:
After you start the protocol services, verify that they are running by issuing the mmces state show
command.
5. Issue the following commands to stop NFS and disable the NFS protocol on the CES nodes:
Note: The sequence for removing the file data access method is different for NFS and SMB. For NFS,
you must remove the file data access method before you disable NFS.
6. Issue the following command to disable the NFS service on the CES nodes:
Important: When you disable NFS, the NFS configuration is lost. To save the NFS configuration, back
up the contents of the /var/mmfs/ces/nfs-config/ directory on any protocol node.
Here is how to stop SMB on all CES nodes. If NFS is also enabled and has an AD dependency then NFS
needs to be stopped first.
This example creates a fileset for Object Storage in the /gpfs/fs01 fileset with the specified
hostname as access point and 20000 inodes. A local database is created for Keystone authentication
and S3 API is enabled. See mmobj command in IBM Spectrum Scale: Command and Programming
Reference for details.
3. After the initial configuration, enable and start the object services by running the following commands:
Note: The file audit logging might be enabled for the file system that you defined the Object fileset to
remain on. If it is enabled, you must disable and enable the file audit logging function on that file system
again.
mmobj config change --ccrfile proxy-server.conf --section DEFAULT --property workers --value
auto
mmobj config change --ccrfile object-server.conf --section DEFAULT --property workers --value 12
mmobj config change --ccrfile account-server.conf --section DEFAULT --property workers --value 4
Note: You can disable SMB only after you remove the authentication method or if the authentication
method is userdefined.
Important: Before you disable SMB protocol services, ensure that you save all the SMB configuration
information. Disabling SMB protocol services stops SMB on all CES nodes and removes all configured
SMB shares and SMB settings. It removes the SMB configuration information from the CCR, removes
the SMB clustered databases (trivial databases, or TBDs), and removes the SMB-related config files in
the /var/mmfs/ces directory on the CES nodes.
When you re-enable SMB, you must re-create and reconfigure all the SMB settings and exports.
NFS
Issue the following command:
Before you disable NFS protocol services, ensure that you save all the NFS configuration information
by backing up the contents of the /var/mmfs/ces/nfs-config/ directory on any CES node.
Disabling the NFS service stops NFS on all CES nodes and removes the NFS configuration information
from the CCR and from the /var/mmfs/ces/nfs-config/ directory. Previous exports are lost.
Note: For more information on disabling the Object services, see “Understanding and managing
Object services” on page 325.
### some attributes need to be readable so that commands like 'id user',
'getent' etc can answer correctly.
access to attrs=cn,objectClass,entry,homeDirectory,uid,uidNumber,
gidNumber,memberUid
by dn="uid=ibmbinduser,ou=people,dc=ldapserver,dc=com" read
access to dn.regex="sambadomainname=[^,]+,dc=ldapserver,dc=com"
by dn=" uid=ibmbinduser,ou=people,dc=ldapserver,dc=com" read
by * none
dn: dc=ldapserver,dc=com
changetype: modify
add: ibm-filterAclEntry
ibm-filterAclEntry:access-id:uid=ibmbinduser,ou=people,dc=ldapserver,dc=com:
(objectClass=sambaSamAccount):normal:rsc:sensitive:rsc:critical:rsc
-
add:ibm-filterAclEntry
ibm-filterAclEntry:access-id:uid=ibmbinduser,ou=people,dc=ldapserver,dc=com:
(objectclass=sambaDomain):normal:rwsc:sensitive:rwsc:critical:rwsc
dn:uid=ibmbinduser,ou=people,dc=ldapserver,dc=com
add:aclEntry
aclentry: access-id:uid=ibmbinduser,ou=people,dc=ldapserver,dc=com:at.cn:r:at.
objectClass:r:at.homeDirectory:r:at.uid:r:at.uidNumber:s:
at.gidNumber:r:at.memberUid:r:at.userPassword:sc:at.sambaLMPassword:r:at.
sambaNTPassword:r:at.sambaPwdLastSet:r:at.sambaLogonTime:r:
at.sambaLogoffTime:r:at.sambaKickoffTime:r:at.sambaPwdCanChange:r:at.
sambaPwdMustChange:r:at.sambaAcctFlags:r:at.displayName:r:
at.sambaHomePath:r:at.sambaHomeDrive:r:at.sambaLogonScript:r:at.sambaProfilePath:
r:at.description:r:at.sambaUserWorkstations:r:
at.sambaPrimaryGroupSID:r:at.sambaDomainName:r:at.sambaMungedDial:r:at.
sambaBadPasswordCount:r:at.sambaBadPasswordTime:r:
at.sambaBoolOption:r:at.sambaIntegerOption:r:at.sambaStringOption:r:at.
sambaStringListoption:r:at.sambaBadPasswordCount:rwsc:
at.sambaBadPasswordTime:rwsc:at.sambaAcctFlags:rwsc
### Storage system needs to be able to find samba domain account specified
on the mmuserauth service create command.
###Uncomment ONLY if you want storage systems to create domain account when
it does not exist.
dn: dc=ldapserver,dc=com
changetype: modify
add:ibm-filterAclEntry
ibm-filterAclEntry:access-id:uid=ibmbinduser,ou=people,dc=ldapserver,
dc=com:(objectclass=domain):object:grant:a
See IBM Tivoli Directory Server Administration Guide for information about applying these ACLs on the IBM
Spectrum Protect Directory Server.
dn: cn=SMBuser,ou=People,dc=ibm,dc=com
changetype: modify
add : objectClass
objectClass: sambaSamAccount
-
add: sambaSID
sambaSID: S-1-5-21-1528920847-3529959213-2931869277-1102
-
add:sambaPasswordHistory
sambaPasswordHistory: 00000000000000000000000000000000000000000000000000000000
-
add:sambaNTPassword
sambaNTPassword: (valid samba password hash )
-
add:sambaPwdLastSet
sambaPwdLastSet: 1263386096
-
add:SambaAcctFlags
sambaAcctFlags: [U ]
Note: Attributes must be separated with a dash as the first and only character on a separate line.
Perform the following steps to create the values for sambaNTPassword, sambaPwdLastSet, and
SambaAcctFlags, which must be generated from a PERL module:
1. Download the module from http://search.cpan.org/~bjkuit/Crypt-SmbHash-0.12/SmbHash.pm. Create
and install the module by following the readme file.
2. Use the following PERL script to generate the LM and NT password hashes:
# cat /tmp/Crypt-SmbHash-0.12/gen_hash.pl
#!/usr/local/bin/perl
3. Generate the password hashes for any user as in the following example for the user test01:
:0:47F9DBCCD37D6B40AAD3B435B51404EE:82E6D500C194BA5B9716495691FB7DD6:
[U ]:LCT-4C18B9FC
Note: The output contains login name, uid, LM hash, NT hash, flags, and time, with each field
separated from the next by a colon. The login name and uid are omitted because the command was
not run on the LDAP server.
4. Use the information from step 3 to update the LDIF file in the format that is provided in the example at
the beginning of this topic.
• To generate the sambaPwdLastSet value, use the hexadecimal time value from step 3 after the
dash character and convert it into decimal.
• A valid samba SID is required for a user to enable that user’s access to an IBM Spectrum Scale
share. To generate the samba SID, multiply the user's UID by 2 and add 1000. The user's SID must
contain the samba SID from the sambaDomainName, which is either generated or picked up from the
LDAP server, if it exists. The following attributes for sambaDomainName LDIF entry are required:
This entry can be created by the LDAP server administrator by using either of the following two
methods:
– Write and run a bash script similar to the following example:
sambaSID=
for num in 1 2 3 ;do
randNum=$(od -vAn -N4 -tu4 < /dev/urandom | sed -e 's/ //g')
if [ -z "$sambaSID" ];then
sambaSID="S-1-5-21-$randNum"
else
sambaSID="${sambaSID}-$ {randNum}"
fi
done
echo $sambaSID
Then, use the samba SID that is generated to create the LDIF file. The sambaDomainName must
match the IBM Spectrum Scale system name.
– When you run the mmuserauth service create command, the system creates the
sambaDomainName, if it does not exist.
The sambaSID for every user must have the following format: (samba SID for the domain)-
(userID*2+1000). For example: S-1-5-21-1528920847-3529959213-2931869277-1102
Note: To enable access using the same LDAP server domain to more than one IBM Spectrum Scale
system or another IBM NAS like IBM SONAS or IBM V7000 Unified, the Samba domain SID prefix of all
of the systems must match. The Samba domain SID prefix is used to prepare the SID of users or
groups planning to access the IBM Spectrum Scale system via CIFS. So, if you change the Samba
Prerequisites
Ensure that you have the following details before you start configuring local authentication for object
access:
• The keystone host name must be defined and configured on all protocol nodes of the cluster. This host
name returns one of the CES IP addresses, such as a round-robin DNS. It could also be a fixed IP of a
load balancer that distributes requests to one of the CES nodes. This host name is also used to create
the keystone endpoints.
Note: By default, the IBM Spectrum Scale installation process configures object authentication with a
local keystone authentication method.
Related concepts
Integrating with AD server
If the authentication method is selected as AD, the customer must set up the AD server before configuring
the authentication method in the IBM Spectrum Scale system.
Integrating with LDAP server
If LDAP-based authentication is selected, ensure that the LDAP server is set up with the required
schemas to handle the authentication and ID mapping requests. If you need to support SMB data access,
LDAP schema must be extended before you configure the authentication.
Prerequisites
Ensure that the following requirements are met before you start configuring an authentication method for
file access.
Related concepts
Configuring file authentication by using CLI
You need to use the mmuserauth service create command to configure user authentication by
using CLI.
Related tasks
Configuring file authentication by using GUI
You can configure an authentication method or view the existing authentication method that is used for
Network File System (NFS) and Server Message Block (SMB) users from the Services > File
Authentication page of the GUI.
To determine if a client has authenticated via Kerberos, either verify at the client or collect a protocol
trace:
Replace x.x.x.x with the IP address of the client system access IBM Spectrum Scale to be verified.
Access the IBM Spectrum Scale SMB service from that client.
Then, issue the command:
Extract the compressed trace files and look for the file ending with smbd.log. If that file contains an
entry similar to "Kerberos ticket principal name is..." then Kerberos is being used.
Note: It is not recommended to run for extended periods of time at log levels higher than 1 as this could
impact performance.
2. On the NFS client, ID map configuration should also be updated to reflect the same domain name as
defined on NFS server. Additionally ID mapping service should be started.
For example, on RHEL 7.x NFS clients
• The ID map configuration file name is etc/idmapd.conf. Update the Domain attribute in the file to
reflect the domain name defined on the NFS server.
• Start nfs.idmap service.
Note: The ID map configuration file and ID mapping service can differ on various OS platforms.
• For NIS:
– sssd and its dependencies (particularly sssd-common and sssd-proxy)
– nis and libslp1 (nis package automatically installs the libslp1 package)
RFC2307 ID mapping
In the RFC2307 ID mapping method, the user and group IDs are stored and managed in the AD server and
these IDs are used by the IBM Spectrum Scale system during file access. The RFC2307 ID mapping
method is used when you want to have multiprotocol access. That is, you can have both NFS and SMB
access over the same data.
Automatic ID mapping
In the automatic ID mapping method, user ID and group ID are automatically generated and stored within
the IBM Spectrum Scale system. When an external ID mapping server is not present in the environment or
cannot be used, then this ID mapping method can be used. This method is typically used if you have SMB
only access and do not plan to deploy multiprotocol access. That is, the AD-based authentication with
automatic ID mapping is not used if you need to allow NFS and SMB access to the same data.
LDAP ID mapping
In the LDAP mapping method, user ID and group ID are stored and managed in the LDAP server, and
these IDs are used by the IBM Spectrum Scale system during file access. The LDAP ID mapping method is
used when you want to have multiprotocol access. That is, you can have both NFS and SMB access over
the same data.
Specifically,
In this example, the rIDNextRID value is 1174. Another way to determine the current value for
rIDNextRID is to run an LDAP query on the following DN Path:
If there is more than one domain controller serving the AD domain, determine the highest RID among
all of the domain controllers. Similarly, if there is more than one domain, determine the highest RID
among all of the domains.
2. Estimate the expected number of users and groups that might be added in future, in addition to the
current number of users and groups.
3. Add the highest RID determined in step 1 to the number of users and groups that were estimated in
the previous step. The result is the estimate for the value of the range size.
2. Verify the authentication configuration by issuing the mmuserauth service list command as
shown in the following example:
# id "DOMAIN\\user1"
uid=12001172(DOMAIN\user1) gid=12001174(DOMAIN\group1) groups=12001174
(DOMAIN\group1),12001172(DOMAIN\user1),12000513(DOMAIN\domain users),
11000545(BUILTIN\users)
4. To configure an IBM Spectrum Scale system with Active Directory that has IPv6 address, issue the
following command:
5. To verify the authentication configuration with Active Directory that has IPv6 address, issue the
mmuserauth service list command as shown in the following example:
2. Issue the mmuserauth service list to verify the authentication configuration as shown in the
following example:
3. Verify the user name resolution on the system. Confirm that the resolution is showing IDs that are
pulled from RFC2307 attributes on the AD server.
# id DOMAIN\\administrator
uid=10002(DOMAIN\administrator) gid=10000(DOMAIN\domain users)
groups=10000(DOMAIN\domain users
2. Issue the mmuserauth service list to verify the authentication configuration as shown in the
following example:
3. Verify the user name resolution on the system. Confirm that the resolution is showing IDs that are
pulled from RFC2307 attributes on the AD server.
# id DOMAIN\\administrator
uid=10002(DOMAIN\administrator) gid=40000(DOMAIN\domain users)
groups=11000545(BUILTIN\users),11000544 (BUILTIN\administrators)
2. Issue the mmuserauth service list to verify the authentication configuration as shown in the
following example:
3. Verify the user name resolution on the system after successfully authenticating the user. Confirm that
the resolution is showing primary group picked up as defined in UNIX attribute of the user. Validate the
IDs that are pulled are from RFC2307 attributes on the AD server:
# id DOMAIN\\unixuser
2. Issue the mmuserauth service list command to verify the authentication configuration as shown
in the following example:
3. Verify the user name resolution on the system after successfully authenticating the user. Confirm that
the resolution is showing primary group picked up as defined in the UNIX attribute of the user. Validate
the IDs that are pulled are from RFC2307 attributes on the AD server:
# id DOMAIN\\unixuser
3. Verify the user name resolution on the system. Confirm that the resolution is showing IDs that are
pulled from RFC2307 attributes on the AD server.
# id DOMAIN1\\administrator
uid=2001(DOMAIN1\administrator) gid=2101(DOMAIN1\domain users)
groups=2101(DOMAIN1\domain users)
# id DOMAIN2\\administrator
uid=3001(DOMAIN2\administrator) gid=3101(DOMAIN2\domain users)
groups=3101(DOMAIN2\domain users)
Configuring AD using Kerberos with RFC2307 ID mapping for overlapping unixmap ranges
1. Issue the following command as shown in this example:
3. Verify the user name resolution on the system. Confirm that the resolution is showing IDs that are
pulled from RFC2307 attributes on the AD server.
# id DOMAIN1\\administrator
uid=2001(DOMAIN1\administrator) gid=2101(DOMAIN1\domain users)
groups=2101(DOMAIN1\domain users)
# id DOMAIN2\\administrator
uid=3001(DOMAIN2\administrator) gid=3101(DOMAIN2\domain users)
groups=3101(DOMAIN2\domain users)
Limitations of the mmuserauth service create command while configuring AD with RFC2307
The mmuserauth service create command that is used to configure authentication has the following
limitations:
• The mmuserauth service create command does not check the two-way trust between the host
domain and the RFC2307 domain that is required for ID mapping services to function properly. The
customer is responsible for configuring the two-way trust relationship between these domains.
Note: The bind_dn_pwd cannot contain the following special characters: semicolon (;), colon (:),
opening brace '( ', or closing brace ')'.
The system displays the following output:
2. Issue the mmuserauth service list to verify the authentication configuration as shown in the
following example:
3. Verify the user name resolution on the system. Confirm that the resolution is showing IDs that are
pulled from LDAP attributes on the AD server.
# id DOMAIN\\administrator
uid=10002(DOMAIN\administrator) gid=10000(DOMAIN\domain users)
groups=10000(DOMAIN\domain users
4. To configure an IBM Spectrum Scale system with Active Directory that has IPv6 address and LDAP ID
mapping, issue the following command:
# mmuserauth service create --type ad --data-access-method file --servers [2001:192::e61f:122:feb7:5df0]
--netbios-name specscale
--user-name adUser --idmap-role master --ldapmap-domains "TESTDOMAIN(type=stand-alone:
range=1000-10000:ldap_srv=[2001:192::e61f:122:feb7:5bf0]:
usr_dn=ou=People,dc=example,dc=com:grp_dn=ou=Groups,dc=example,
dc=com:bind_dn=cn=ldapuser,dc=example,dc=com:bind_dn_pwd=password)"
5. To verify the authentication configuration with Active Directory that has IPv6 address, issue the
mmuserauth service list command as shown in the following example:
# stat /var/mmfs/tmp/ldap_cacert.pem
File: /var/mmfs/tmp/ldap_cacert.pem
Size: 2130 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169903 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 12:37:34.088837381 +0530
Modify: 2015-01-23 12:16:24.438837381 +0530
Change: 2015-01-23 12:16:24.438837381 +0530
2. Issue the mmuserauth service create command as shown in the following example:
3. Issue the mmuserauth service list command to see the current authentication configuration as
shown in the following example:
# id ldapuser2
uid=1001(ldapuser2) gid=1001(ldapuser2) groups=1001(ldapuser2)
6. To verify the authentication configuration with LDAP that has TLS and IPv6 address, issue the
mmuserauth service list command as shown in the following example:
# stat /var/mmfs/tmp/krb5.keytab
File: /var/mmfs/tmp/krb5.keytab
Size: 502 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169898 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 14:31:18.244837381 +0530
Modify: 2015-01-23 12:45:05.475837381 +0530
Change: 2015-01-23 12:45:05.476837381 +0530
Birth: -
2. Issue the mmuserauth service create command as shown in the following example:
3. Issue the mmuserauth service list command to see the current authentication configuration as
shown in the following example:
4. To configure an IBM Spectrum Scale system with LDAP and Kerberos servers that have IPv6 address,
issue the following command:
# mmuserauth service create --type ldap --data-access-method file --servers [2001:192::e61f:122:feb7:5df0]
--base-dn dc=example,dc=com --user-name cn=ldapuser,dc=example,dc=com --netbios-name specscale
--enable-kerberos --kerberos-server [2001:192::e61f:122:feb7:5dc0]
5. To verify the authentication configuration with LDAP and Kerberos servers that have IPv6 address,
issue the mmuserauth service list command as shown in the following example:
# stat /var/mmfs/tmp/ldap_cacert.pem
File: /var/mmfs/tmp/ldap_cacert.pem
Size: 2130 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169903 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 12:37:34.088837381 +0530
Modify: 2015-01-23 12:16:24.438837381 +0530
Change: 2015-01-23 12:16:24.438837381 +0530
2. Ensure that the keytab file is placed under /var/mmfs/tmp directory name as krb5.keytab
specifically on the node where the command is run. Perform validation of keytab file availability with
desired name at the required location:
# stat /var/mmfs/tmp/krb5.keytab
File: /var/mmfs/tmp/krb5.keytab
Size: 502 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169898 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 14:31:18.244837381 +0530
Modify: 2015-01-23 12:45:05.475837381 +0530
Change: 2015-01-23 12:45:05.476837381 +0530
Birth: -
3. Issue the mmuserauth service create command as shown in the following example:
4. To verify the authentication configuration, issue the mmuserauth service list command as
shown in the following example:
# id ldapuser3
uid=1002(ldapuser3) gid=1002(ldapuser3) groups=1002(ldapuser3)
2. To verify the authentication configuration, issue the mmuserauth service list command as
shown in the following example:
3. To configure an IBM Spectrum Scale system with LDAP that has IPv6 address, issue the following
command:
# mmuserauth service create --type ldap --data-access-method file --servers [2001:192::e61f:122:feb7:5df0]
--base-dn dc=example,dc=com --user-name cn=ldapuser,dc=example,dc=com --netbios-name specscale
4. To verify the authentication configuration with LDAP that has IPv6 address, issue the mmuserauth
service list command as shown in the following example:
2. To verify the authentication configuration, issue the mmuserauth service list command as
shown in the following example:
Note:
You can run the following command to configure authentication for file and object access protocols:
You can run the following command to verify authentication method configuration details:
You can run the following command when the mmuserauth service check command reports that any
certificate file is missing on any of the nodes:
For more information, see mmuserauth command in IBM Spectrum Scale: Command and Programming
Reference.
Related concepts
Setting up authentication servers to configure protocol user access
Before you start configuring authentication for protocol access, the system administrator needs to ensure
that the authentication server is set up properly and the connection between the IBM Spectrum Scale
system and authentication server is established properly.
Configuring authentication and ID mapping for file access
The system administrator can decide whether to configure authentication and ID mapping method either
during the installation of the IBM Spectrum Scale system or after the installation. If the authentication
configuration is not configured during installation, you can manually do it by using the mmuserauth
service create command from any protocol node of the IBM Spectrum Scale system or by using the
IBM Spectrum Scale management GUI.
Managing user-defined authentication
In the user-defined mode of authentication, the user is free to select the authentication and ID mapping
methods of their choice. It is the responsibility of the administrator of the client system to manage the
authentication and ID mapping for file (NFS and SMB) and object access to the IBM Spectrum Scale
system.
Listing the authentication configuration
2. To verify the authentication configuration, run the following command as shown in this example:
Related concepts
Configuring an AD-based authentication for object access
You can configure Keystone with an external Active Directory (AD) server as the authentication back-end
so that AD users can access the object store by using their AD credentials. The same AD server can be
used for both object access and file access.
Configuring an LDAP-based authentication for object access
You can configure Keystone with an external Lightweight Directory Access Protocol (LDAP) server as the
authentication back-end. Configuring Keystone with an external LDAP server as the authentication back-
end allows LDAP users to access the object store by using their LDAP credentials. The same LDAP server
can be used for both object access and file access.
Configuring object authentication with an external Keystone server
The object protocol can be configured with an external Keystone server.
Managing object users, roles, and projects
IBM Spectrum Scale for Object Storage uses the Keystone service for identity management. Keystone
provides user authentication and authorization processes.
Related tasks
Creating object accounts
An account is used to group or isolate object resources. Each object user is part of an account. Object
users are mapped to an account and can access only the objects that are within the project. Each user
needs to be defined with a set of user rights and privileges for a specific set of operations on the
resources of the account to which it belongs. Users can be assigned to multiple accounts with different
roles on each account.
Deleting expired tokens
By default, the Keystone Identity Service stores expired tokens in the database indefinitely. While
potentially useful for auditing in production environments, the accumulation of expired tokens
considerably increases the database size and might affect the service performance.
/var/mmfs/tmp/ssl_cert.pem
/var/mmfs/tmp/ssl_key.pem
/var/mmfs/tmp/ssl_cacert.pem
Note:
• Self-signed certificates can be used for testing and demonstration purposes. However, the use of
externally signed certificates is suggested for production environments.
• The name in the SSL certificate must match the Keystone endpoint name.
2. Run the following command to remove existing local authentication for object access:
3. Run the following command to configure local authentication with SSL for object access:
Local authentication is now configured for object access with SSL enabled.
To disable SSL and configure local authentication for object access again, use the following steps.
4. Run the following command to remove existing local authentication for object access:
If you are also changing authentication type, run the following commands (in sequence) to remove
authentication and ID mappings:
5. Run the following command to configure local authentication without SSL for object access:
Prerequisites
Ensure that you have the following details before you start AD-based authentication configuration:
• AD server details such as IP address or host name, user name, user password, base dn, and user dn.
• You can configure Transport Layer Security (TLS) with AD for secure communication between Keystone
and AD. Place the CA certificate that is used for signing the AD server setup for TLS under the following
directory. The directory is part of the node on which the mmuserauth service create command is
run:
– /var/mmfs/tmp/ldap_cacert.pem
• The secret key that you provide for encrypting or decrypting passwords unless you disable prompting
for the key.
There are prerequisites for integrating the AD server with the IBM Spectrum Scale system. .For more
information, see Integrating with AD server in the IBM Spectrum Scale: Administration Guide.
The following parameters must be used with the mmuserauth service create command to configure
AD-based authentication for object access:
• --type ad
• --data-access-method Object
• --servers IP address or host name of AD. All user lookups by Keystone are done only against this
server. If multiple servers are specified, only the first server is used and the rest are ignored.
• --base-dn ldapBase.
• [--pwd-file PasswordFile] --user-name | --enable-anonymous-bind - to enter the
password from the stanza file or enable anonymous binding with authentication server.
• --enable-server-tls, if TLS needs to be enabled.
• --user-dn ldapUserSuffix. LDAP container from where users are looked up.
• --ks-admin-user keystoneAdminUser from AD.
2. To verify the authentication configuration, run the following command as shown in this example:
# stat /var/mmfs/tmp/ldap_cacert.pem
File: /var/mmfs/tmp/ldap_cacert.pem
Size: 2130 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169903 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 12:37:34.088837381 +0530
Modify: 2015-01-23 12:16:24.438837381 +0530
Change: 2015-01-23 12:16:24.438837381 +0530
2. Run the following command to configure AD with TLS authentication for object access:
Prerequisites
Make sure that you have the following details before you configure LDAP-based authentication:
• Make sure that you have the LDAP server details such as IP address or host name, LDAP user name,
user password, base distinguished name (DN), and user DN.
• Make sure that you can configure Transport Layer Security (TLS) with LDAP for secure communication
between Keystone and LDAP. You must place the CA certificate that is used for signing the LDAP server
setup for TLS. It is under the following directory of the node on which the mmuserauth service
create command is run:
– /var/mmfs/tmp/ldap_cacert.pem
• Make sure that you have the secret key that you use for encrypting or decrypting passwords unless you
have unavailable prompting for the key.
There are prerequisites for integrating the LDAP server with the IBM Spectrum Scale system. For more
information, see Integrating with LDAP server in the IBM Spectrum Scale: Administration Guide.
You must run the mmuserauth service create command to configure LDAP-based authentication
with the following parameters:
• --type ldap
• --data-access-method object
• --servers IP address or host name of LDAP (all user lookups by Keystone are done only
against this server. If multiple servers are specified, only the first server is used and rest are ignored).
• --base-dn ldapBase
• [--pwd-file PasswordFile] --user-name | --enable-anonymous-bind - to enter
password from the stanza file or enable anonymous binding with authentication server.
• --enable-server-tls, if TLS needs to be enabled.
• --user-dn ldapUserSuffix (LDAP container from where users are looked up)
• --ks-admin-user keystoneAdminUser from LDAP.
• --enable-ks-ssl, if SSL needs to be enabled. You need to have another set of certificates that are
placed in the standard directory.
• --enable-ks-casigning, if you want to use external CA signed certificate for token signing.
• --ks-swift-user swiftServiceUser from LDAP.
2. To verify the authentication configuration, run the following command as shown in this example:
# stat /var/mmfs/tmp/ldap_cacert.pem
File: /var/mmfs/tmp/ldap_cacert.pem
Size: 2130 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169903 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 12:37:34.088837381 +0530
Modify: 2015-01-23 12:16:24.438837381 +0530
Change: 2015-01-23 12:16:24.438837381 +0530
2. To configure LDAP with TLS-based authentication for object access, run the mmuserauth service
create command as shown in the following example:
3. To verify the authentication configuration, use the following command as shown in this example:
Configuring IBM Spectrum Scale for Object Storage with SSL-enabled external
Keystone server
1. Remove the object authentication along with the ID-mapping ID if it is present by running one of the
following commands:
2. Copy the CA certificate with the external Keystone server to the node where you run the mmuserauth
command in the /var/mmfs/tmp directory:
/var/mmfs/tmp/ks_ext_cacert.pem
3. Configure the object authentication by running the mmuserauth service create command with
the --enable-ks-ssl option:
Note: Object configuration with an SSL-enabled external Keystone server is not supported on the installer
toolkit and mmobj swift base.
Related concepts
Configuring an AD-based authentication for object access
You can configure Keystone with an external Active Directory (AD) server as the authentication back-end
so that AD users can access the object store by using their AD credentials. The same AD server can be
used for both object access and file access.
Configuring an LDAP-based authentication for object access
You can configure Keystone with an external Lightweight Directory Access Protocol (LDAP) server as the
authentication back-end. Configuring Keystone with an external LDAP server as the authentication back-
or
source openrc
swift stat
Account: AUTH_bea5a0c632e54eaf85e9150a16c443cet
Containers: 0
Objects: 0
Bytes: 0
X-Put-Timestamp: 1489046102.20607
X-Timestamp: 1489046102.20607
X-Trans-Id: tx73c9382f200d4bd88d866-0058c10a55
Content-Type: text/plain; charset=utf-8
source ~/openrc
swift stat
For example, create the project salesproject in the default domain by using the following
command:
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Description is displayed here. |
| domain_id | default |
| enabled | True |
| id | ec4a0bff137b4c1fb67c6fe8fbb6a37b |
| is_domain | False |
| name | salesproject |
| parent_id | default |
+-------------+----------------------------------+
b) Run the openstack role add command to associate roles to the users who need access to the
project:
Account: AUTH_ec4a0bff137b4c1fb67c6fe8fbb6a37b
Containers: 0
Objects: 0
Bytes: 0
X-Put-Timestamp: 1489046460.28283
X-Timestamp: 1489046460.28283
X-Trans-Id: txe9d13765f0c14fe4ad3ce-0058c10bbc
Content-Type: text/plain; charset=utf-8
Related concepts
Configuring an AD-based authentication for object access
You can configure Keystone with an external Active Directory (AD) server as the authentication back-end
so that AD users can access the object store by using their AD credentials. The same AD server can be
used for both object access and file access.
Configuring an LDAP-based authentication for object access
You can configure Keystone with an external Lightweight Directory Access Protocol (LDAP) server as the
authentication back-end. Configuring Keystone with an external LDAP server as the authentication back-
'source /root/openrc'
This automatically loads the required environmental variables into your current location. The results look
similar to the following example:
export OS_AUTH_URL="http://cesobjnode:35357/v3"
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_VERSION=3
export OS_USERNAME="admin"
export OS_PASSWORD="Passw0rd"
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_PROJECT_DOMAIN_NAME=Default
Use the openstack user create command and manually enter the parameters as shown in the
following example to create new user in the local database to support local authentication for object
access.
GUI navigation
To work with this function in the IBM Spectrum Scale GUI, log on to the GUI and select Object > Users.
Listing users
Use the openstack user list command as shown in the following example to list users who are
created in the local database:
# source $HOME/openrc
# openstack user list
+----------------------------------+----------+
| ID | Name |
+----------------------------------+----------+
| 2a3ef8031359457292274bcd70e34d00 | newuser1 |
| a95783144edd414aa236a3d1582a3067 | admin |
+----------------------------------+----------+
Deleting a user
Use the openstack user delete command as shown in the following example to delete the users who
are created in the local database:
Creating a role
Use the following steps to create a new user role:
1. Issue the openstack role create command to create a new user role:
2. Verify the newly created role by using the openstack role list command:
GUI navigation
To work with this function in the IBM Spectrum Scale GUI, log on to the GUI and select Object > Roles.
2. Submit the openstack role list command to verify the user role of the user as shown in the
following example:
2. Submit the openstack role add command to add a role to the user as shown in the following
example:
3. Submit the openstack role list command to list the user roles as shown in the following
example:
Listing endpoints
Use the openstack endpoint list command as shown in the following example to view the
endpoints that are available:
# openstack endpoint list
+------------+-----------+--------------+--------------+---------+-----------
+---------------------------------------------------------------|
| ID | Region | Service Name | Service Type | Enabled | Interface |
URL |
+------------+-----------+--------------+--------------+---------+-----------
+---------------------------------------------------------------|
| c36e..9da5 | RegionOne | keystone | identity | True | public | http://
specscaleswift.example.com:5000 |
| f4d6..b040 | RegionOne | keystone | identity | True | internal | http://
specscaleswift.example.com:35357 |
| d390..0bf6 | RegionOne | keystone | identity | True | admin | http://
Related concepts
Configuring an AD-based authentication for object access
You can configure Keystone with an external Active Directory (AD) server as the authentication back-end
so that AD users can access the object store by using their AD credentials. The same AD server can be
used for both object access and file access.
Configuring an LDAP-based authentication for object access
You can configure Keystone with an external Lightweight Directory Access Protocol (LDAP) server as the
authentication back-end. Configuring Keystone with an external LDAP server as the authentication back-
end allows LDAP users to access the object store by using their LDAP credentials. The same LDAP server
can be used for both object access and file access.
Configuring object authentication with an external Keystone server
The object protocol can be configured with an external Keystone server.
Related tasks
Configuring local authentication for object access
Object access can be configured with the Keystone server that is available in the IBM Spectrum Scale
system. In this mode, Keystone stores the identity and assignment information locally in its database.
Creating object accounts
An account is used to group or isolate object resources. Each object user is part of an account. Object
users are mapped to an account and can access only the objects that are within the project. Each user
needs to be defined with a set of user rights and privileges for a specific set of operations on the
resources of the account to which it belongs. Users can be assigned to multiple accounts with different
roles on each account.
Deleting expired tokens
By default, the Keystone Identity Service stores expired tokens in the database indefinitely. While
potentially useful for auditing in production environments, the accumulation of expired tokens
considerably increases the database size and might affect the service performance.
Related concepts
Configuring an AD-based authentication for object access
You can configure Keystone with an external Active Directory (AD) server as the authentication back-end
so that AD users can access the object store by using their AD credentials. The same AD server can be
used for both object access and file access.
Configuring an LDAP-based authentication for object access
You can configure Keystone with an external Lightweight Directory Access Protocol (LDAP) server as the
authentication back-end. Configuring Keystone with an external LDAP server as the authentication back-
Submit the mmuserauth service list command to see the current authentication configuration as
shown in the following example:
Typically, user-defined authentication is used when existing GPFS customers are already using GPFS with
NFS and do not want to alter the authentication that is already configured on these systems. You can
configure user-defined authentication for both object and file access or for object or file alone.
Note: Authorization depends upon authentication and ID mapping that is configured with the system.
That is, the ACL control on exports, files, and directories depend on the authentication method that is
configured.
File authentication configuration
Ensure the following while using the user-defined mode of authentication for file access:
• Ensure that the authentication server and ID mapping server are always reachable from all the protocol
nodes. For example, if NIS is configured as the ID mapping server, you can use the 'ypwhich' command
to ensure that NIS is configured and reachable from all the protocol nodes. Similarly, if LDAP is
configured as authentication and ID mapping server, you can bind to the LDAP server from all protocol
nodes to monitor if the LDAP server is reachable from all protocol nodes.
• Ensure that the implemented authentication and ID mapping configuration is always consistent across
all the protocol nodes. This requires that the authentication server and ID mapping server are manually
maintained and monitored by the administrator. The administrator must also ensure that the
configuration files are not overwritten due to node restart and other similar events.
• Ensure that the implemented authentication and ID mapping-related daemons and processes across
the protocol nodes are always up and running.
• The users or groups, accessing the IBM Spectrum Scale system over NFS and SMB protocols must
resolve to a unique UID and GID respectively on all protocol nodes, especially in implementations
where different servers are used for authentication and ID mapping. The name that is registered in ID
mapping server for user and group must be checked for resolution.
For example:
# id fileuser
uid=1234(fileuser) gid=5678(filegroup) groups=5678(filegroup)
Note: However, there are some use cases where only NFSV3 based access to the IBM Spectrum Scale
system is used. In such cases, the user and group IDs are obtained from the NFS client and there is no
ID mapping setting is configured on the protocol nodes.
• If the IBM Spectrum Scale system is configured for multiprotocol support (that is, the same data is
accessed through both NFS and SMB protocols), ensure that the IDs of users and groups are consistent
across the NFS clients and SMB clients and that they resolve uniquely on the protocol nodes.
• Ensure that there is no conflict of UID and GID across users and groups that are accessing the system.
This must be strictly enforced, especially in multiprotocol-based access deployments.
• Ensure that the Kerberos configuration files, placed on all protocol nodes, are in synchronization with
each other. Ensure that the clients and the IBM Spectrum Scale system are part of the same Kerberos
realm or trusted realm.
• While deploying two or more IBM Spectrum Scale clusters, ensure that the ID mapping is consistent in
cases where you want to use IBM Spectrum Scale features like AFM, AFM-DR, and asynchronous
replication of data.
The following table provides an overview of the authentication requirements for each file access protocol.
Refer this table when you plan to use user-defined mode as the authentication method.
Kerberos NFSV3 Ensure that the user name and group name that
are used to access data consistently resolve to
same UID and GID across all protocol nodes and
NFS clients.
Ensure that the time is synchronized on the NFS
server, NFS clients, and Kerberos server.
Note: User names and group names are case-
sensitive.
NFSV4 Ensure that the user name and group name that
are used to access data consistently resolve to
same UID and GID across all protocol nodes and
NFS clients.
Domain name must be specified in the /etc/
idmapd.conf file and it must be the same on both
the NFS server and NFS clients.
Note: User names and group names are case-
sensitive.
Kerberos NFS V4 Ensure that the user name and group name that
are used to access data consistently resolve to
same UID and GID across all protocol nodes and
NFS clients.
Ensure that the time is synchronized on the NFS
server, NFS clients, and Kerberos server.
Domain name and local-realms must be specified
in the /etc/idmapd.conf file and it must be the
same on both the NFS server and NFS clients.
The value of "local-realms” takes the value of
Kerberos realm with which the IBM Spectrum
Scale system protocol nodes are configured.
• The users and projects must be mapped to the Default domain in Keystone.
• Object storage service endpoints must be correctly defined in the external keystone server.
For example, the external keystone server must contain the following endpoint for object-store:
# openstack endpoint list
+------------+--------+--------------+--------------+---------+-----------
+--------------------------------------------------------------|
| ID | Region | Service Name | Service Type | Enabled | Interface |
URL |
+------------+--------+--------------+--------------+---------+-----------
+--------------------------------------------------------------|
| c36e..9da5 | None | keystone | identity | True | public | http://
specscaleswift.example.com:5000/ |
| f4d6..b040 | None | keystone | identity | True | internal | http://
specscaleswift.example.com:35357/ |
| d390..0bf6 | None | keystone | identity | True | admin | http://
specscaleswift.example.com:35357/ |
| 2e63..f023 | None | swift | object-store | True | public | http://specscaleswift.example.com:8080/v1/
AUTH_%(tenant_id)s |
| cd37..9597 | None | swift | object-store | True | internal | http://specscaleswift.example.com:8080/v1/
AUTH_%(tenant_id)s |
| a349..58ef | None | swift | object-store | True | admin | http://
specscaleswift.example.com:8080 |
+------------+--------+--------------+--------------+---------+-----------
+--------------------------------------------------------------|
using http://10.11.0.1:35357/v2.0
Related concepts
Setting up authentication servers to configure protocol user access
Before you start configuring authentication for protocol access, the system administrator needs to ensure
that the authentication server is set up properly and the connection between the IBM Spectrum Scale
system and authentication server is established properly.
Configuring authentication and ID mapping for file access
The system administrator can decide whether to configure authentication and ID mapping method either
during the installation of the IBM Spectrum Scale system or after the installation. If the authentication
configuration is not configured during installation, you can manually do it by using the mmuserauth
service create command from any protocol node of the IBM Spectrum Scale system or by using the
IBM Spectrum Scale management GUI.
Configuring authentication for object access
Configuring authentication for object access by using the command-line interface (CLI) utility
Listing the authentication configuration
Use the mmuserauth service list command to see the authentication method that is configured in
the system.
Verifying the authentication services configured in the system
Use the mmuserauth service check command to check whether the authentication configuration is
consistent across the cluster and the required services are enabled and running. This command validates
and corrects the authentication configuration files and starts any associated services if needed.
Modifying the authentication method
If data already exists or is created with the existing authentication and ID mapping method, it is not
recommended to change the authentication or the ID mapping modes. Changing the authentication
method also might invalidate the existing ACLs that are applicable to files and directories. ACLs depend
on the preexisting users and group IDs.
Deleting the authentication and the ID mapping configuration
Deleting the authentication and ID mapping configuration results in loss of access to data. Before you
remove or edit ID mappings, determine how access to data is going to be maintained.
Authentication limitations
For more information, see the topic mmuserauth command in the IBM Spectrum Scale: Command and
Programming Reference.
Related concepts
Setting up authentication servers to configure protocol user access
Before you start configuring authentication for protocol access, the system administrator needs to ensure
that the authentication server is set up properly and the connection between the IBM Spectrum Scale
system and authentication server is established properly.
Configuring authentication and ID mapping for file access
The system administrator can decide whether to configure authentication and ID mapping method either
during the installation of the IBM Spectrum Scale system or after the installation. If the authentication
configuration is not configured during installation, you can manually do it by using the mmuserauth
service create command from any protocol node of the IBM Spectrum Scale system or by using the
IBM Spectrum Scale management GUI.
Configuring authentication for object access
Configuring authentication for object access by using the command-line interface (CLI) utility
Managing user-defined authentication
In the user-defined mode of authentication, the user is free to select the authentication and ID mapping
methods of their choice. It is the responsibility of the administrator of the client system to manage the
authentication and ID mapping for file (NFS and SMB) and object access to the IBM Spectrum Scale
system.
Verifying the authentication services configured in the system
Use the mmuserauth service check command to check whether the authentication configuration is
consistent across the cluster and the required services are enabled and running. This command validates
and corrects the authentication configuration files and starts any associated services if needed.
Modifying the authentication method
If data already exists or is created with the existing authentication and ID mapping method, it is not
recommended to change the authentication or the ID mapping modes. Changing the authentication
method also might invalidate the existing ACLs that are applicable to files and directories. ACLs depend
on the preexisting users and group IDs.
Deleting the authentication and the ID mapping configuration
You can use the id command to see the list of users and groups fetched from the LDAP server. For
example:
# id ldapuser2
uid=1001(ldapuser2) gid=1001(ldapuser2) groups=1001(ldapuser2)
Related concepts
Setting up authentication servers to configure protocol user access
2. Issue the mmuserauth service remove command to remove the authentication configuration as
shown in the following example:
3. Issue the mmuserauth service list command to verify whether the authentication configuration
is removed:
For more information, see mmuserauth command in the IBM Spectrum Scale: Command and Programming
Reference.
Deleting authentication configuration as shown in the previous example does not delete the ID maps. Use
the --idmapdelete option with the mmuserauth service remove command to remove ID maps that
are created for user authentication:
Note: When you delete the ID maps that are created for file or object access, ensure that all the protocol
nodes are in the healthy state. You can view the health status of protocol nodes by using the mmces
state show -a command.
Related concepts
Setting up authentication servers to configure protocol user access
Before you start configuring authentication for protocol access, the system administrator needs to ensure
that the authentication server is set up properly and the connection between the IBM Spectrum Scale
system and authentication server is established properly.
Configuring authentication and ID mapping for file access
The system administrator can decide whether to configure authentication and ID mapping method either
during the installation of the IBM Spectrum Scale system or after the installation. If the authentication
configuration is not configured during installation, you can manually do it by using the mmuserauth
service create command from any protocol node of the IBM Spectrum Scale system or by using the
IBM Spectrum Scale management GUI.
Configuring authentication for object access
Configuring authentication for object access by using the command-line interface (CLI) utility
Managing user-defined authentication
In the user-defined mode of authentication, the user is free to select the authentication and ID mapping
methods of their choice. It is the responsibility of the administrator of the client system to manage the
authentication and ID mapping for file (NFS and SMB) and object access to the IBM Spectrum Scale
system.
Listing the authentication configuration
Use the mmuserauth service list command to see the authentication method that is configured in
the system.
Verifying the authentication services configured in the system
Authentication limitations
Consider the following authentication limitations when you configure and manage the IBM Spectrum
Scale system:
Idmapd Configuration
====================
====================
3. Issue the mmnfs config list command to verify that the ID map domain is set.
The system displays this output:
Idmapd Configuration
=======================
DOMAIN: MY_IDMAP_DOMAIN
=======================
If the directory to be exported does not exist, create the directory first by running the following
command:
mkdir /gpfs/fs01/fileset/smb
2. The recommended approach for managing access to the SMB share is to manage the ACLs from a
Windows client machine. To change the ACLs from a Windows client, change the owner of the share
folder to a user ID that will be used to make the ACL changes by running the following command:
Additional options can be set during share creation. For a list of all the supported SMB options, see
mmsmb command in the IBM Spectrum Scale: Command and Programming Reference.
4. Verify that the share has been created:
5. Access the share from a Windows client using the user ID that has been previously made the owner of
the folder.
6. Right-click the folder in the Windows Explorer, open the Security tab, click Advanced, and modify the
Access Control List as required.
Note: An SMB share can only be created when the ACL setting of the underlying file system is -k nfs4.
In all other cases, mmsmb export add will fail with an error.
See “Authorizing protocol users” on page 428 for details and limitations.
GUI navigation
For example, to change the descriptive comment for a share, run the command:
Note: Changes to SMB share configurations only apply to client connections that have been established
after the change has been made.
# mmsmb exportacl
mmsmb exportacl: Missing arguments.
Usage:
mmsmb exportacl getid Retrieve the ID of user, group or system for use with SMB export ACLs.
mmsmb exportacl list List SMB export ACLs.
mmsmb exportacl add Add SMB export ACLs.
mmsmb exportacl change Change SMB export ACLs.
mmsmb exportacl remove Remove SMB export ACLs.
mmsmb exportacl replace Replace SMB export ACLs.
mmsmb exportacl delete Delete SMB export ACLs.
Examples:
[smbexport]
ACL:\Everyone:ALLOWED/FULL
ACL:MYDOM06\Administrator:ALLOWED/FULL
[smbexport]
ACL:MYDOM06\Administrator:ALLOWED/FULL
For details, see the information about managing the SMB share ACLs from a Windows client through the
MMC.
2. Verify that the export has been removed by listing the configured SMB share again:
GUI navigation
To work with this function in the GUI, log on to the IBM Spectrum Scale GUI and select Protocols > SMB
Shares.
Attention: If connections are forced to close, data loss might occur for open files on the
connections getting closed.
5. Click OK to confirm.
Related tasks
Connecting to SMB shares by using MMC
You can use the Shared Folders Microsoft Management Console (MMC) snap-in on Microsoft Windows
clients for connecting to SMB shares on the IBM Spectrum Scale cluster.
Creating SMB shares using MMC
For more information, see mmcrfileset command and mmlinkfileset command in IBM Spectrum Scale:
Command and Programming Reference.
Note: An independent fileset is recommended for NFS exports.
2. Adjust the ownership and permissions of the folder as required.
Use the GPFS ACLs with mmgetacl and mmputacl to set the correct ownership and the access
permission.
Additional options can be set during the export creation. For more information about supported
options, see mmnfs command in the IBM Spectrum Scale: Command and Programming Reference.
3. Create the NFS export by using the following command:
5. To export the fileset fset_2 to specific set of hosts that fall in the 255.255.255.0 subnet, issue the
following command:
GUI navigation
To work with this function in the GUI, log on to the IBM Spectrum Scale GUI and select Protocols > NFS
Exports.
After the change is made, verify the configuration by running the following command:
For example, to remove access for a client IP address from the NFS export, run the following command:
After the change is made, verify the configuration by running the following command:
Here, you want to remove fset1. The system displays output similar to the following:
2. Verify that the export is removed by listing the configured NFS exports. Specify:
Note: You can use --nfsdefs or --nfsdefs-match as filters with the command. For more information,
see the topic mmnfs command in the IBM Spectrum Scale: Command and Programming Reference.
ssh `mmces node list -Y | grep -v HEADER | tail -1 | awk -F':' '{print $8}'
cp /tmp/gpfs.ganesha.exports.conf /tmp/gpfs.ganesha.exports.conf.bak
vim /tmp/gpfs.ganesha.exports.conf
9. When making changes, observe the following guidelines for attributes and values (subject to change
at the discretion of the IBM Spectrum Scale software development team):
10. Load the changes to the NFS exports config file (this will restart NFS on every CES node on which NFS
is currently running):
Note: The mmnfs export load command will conduct a check of the exports configuration file. If
the following message is displayed, check the syntax of the NFS exports configuration file, focusing
on the changes made in the previous step and try again:
mmnfs export load. The syntax of the NFS export configuration file to load is
not correct:
/tmp/gpfs.ganesha.exports.conf.
11. Verify changes to the NFS configuration via the mmnfs export list command:
If a long listing of all NFS exports is desired, use a keyword with the -n option. For example, with /
gpfs as the keyword (/gpfs is the root of each NFS file system in this case):
mmcesnfslsexport:nfsexports:HEADER:version:reserved:reserved:Path:Delegations:Cl
ients:Access_Type:Protocols:Transports:Squash:Anonymous_uid:Anonymous_gid:SecTyp
e:PrivilegedPort:DefaultDelegations:Manage_Gids:NFS_Commit:
mmcesnfslsexport:nfsexports:0:1:::/gpfs/fs1/fset1:none:10.0.0.1:RO:3,4:TCP:NO_RO
OT_SQUASH:-2:-2:SYS:FALSE:none:FALSE:FALSE:
mmcesnfslsexport:nfsexports:0:1:::/gpfs/fs1/fset1:none:*:RW:3,4:TCP:ROOT_SQUASH:
-2:-2:SYS:FALSE:none:FALSE:FALSE:
2. Create NFS exports (adding the first export restarts NFS on every CES node on which NFS is running.
Adding more exports does not restart NFS):
Multiprotocol exports
Exports for SMB and NFSv4 protocols can be configured so that they have access to the same data in the
GPFS file system.
To export data via NFS and SMB , first create an export for one protocol using the appropriate GPFS
command (for example, mmnfs export add). In order to export the same GPFS path via a second
protocol, simply create another export using the protocol-specific export management command (for
example, mmsmb export add).
The operations of adding and removing exports do not delete any data in the GPFS file system, and
removal of exports does not change the data in the GPFS file system. If at a later time access to a GPFS
file system for a specific protocol needs to be removed, this can be done via the corresponding command.
It also does not impact access to the same data configured via another protocol.
For more information, see the Unified file and object access overview topic in the IBM Spectrum Scale:
Concepts, Planning, and Installation Guide.
Opportunistic Locking: Oplocks are a feature of the SMB protocol that allows clients to cache files locally
on the client. If the SMB server is set to propagate oplocks into the cluster file system (gpfs:leases), other
clients (NFS, POSIX) can break SMB oplocks. NFS4 delegations are currently not supported.
Byte-range locks: Byte-range locks from SMB clients are propagated into the cluster file system if the
SMB option "posix locking" is true. In that case, POSIX and NFS clients are made aware of those locks.
Note that for Windows byte-range locks are mandatory whereas for POSIX they are advisory.
File change notifications: SMB clients can request notifications when objects change in the file system.
The SMB server notifies its clients about the changes. The notifications include changes that are triggered
by POSIX and NFS clients in the directory for which notifications are requested, but not in its
subdirectories, if they are done on any CES node. File changes initiated on non-CES cluster nodes will not
trigger a notification.
Grace period: The grace period allows NFS clients to reclaim their locks and state for a certain amount of
time after a server failure. SMB clients are not aware of NFS grace periods. If you expect a lot of
contention between SMB and NFS, NFSv4 reclaims might fail.
Multiprotocol access of protocol exports is only allowed between NFSV4 and SMB. That is, you cannot
access the same export by using both NFSV3 and SMB protocols. The reason is that SMB clients typically
request exclusive access to a file which does not work with the CES NFS server that keeps files accessed
through NFSv3 open.
To start or stop the object protocol on individual nodes, use the following command:
Attention: If Object services on a protocol node are stopped by the administrator manually, access
to object data might be impacted unless the CES IP addresses are first moved to another node.
You can accomplish this in multiple ways, but the simplest is to suspend the node. After you
suspend a node, CES automatically moves the CES IPs to the remaining nodes in the cluster.
However, doing this suspends operation for all protocols that are running on that protocol node.
If you want to stop object services on a protocol node, you can use the following steps:
1. Suspend CES operations on the protocol node by using the mmces node suspend command.
2. View the CES IP addresses on that node by using the mmces address list command and verify that
all CES IP addresses are moved to other protocol nodes.
3. Stop the object services by using the mmces service stop OBJ command.
For complete usage information, see mmces command in IBM Spectrum Scale: Command and
Programming Reference.
Every Object protocol node can access every virtual device in the shared file system, and some OpenStack
Swift object services can be optimized to take advantage of this by running from a single Object protocol
node.
Even though objects are not replicated by OpenStack Swift, the swift-object-replicator runs to
periodically clean up tombstone files from deleted objects. It is run on a single Object protocol node and
manages cleanup for all of the virtual devices.
The swift-object-updater is responsible for updating container listings with objects that were not
successfully added to the container when they were initially created, updated, or deleted. Like the object
replicator, it is run on a single object protocol node.
The following table shows each of the Object services and the set of Object protocol nodes on which they
need to be run.
openstack-swift-account All
openstack-swift-account-auditor object_singleton_node
openstack-swift-object-replicator All
openstack-swift-object-sof All 1
openstack-swift-object-updater object_singleton_node
openstack-swift-object-expirer object_singleton_node
openstack-swift-proxy All
memcached All
httpd (RHEL) or apache2 (Ubuntu) All 3
postgresql-obj object_database_node 3
mmobj s3 enable
mmobj s3 list
mmobj s3 disable
mmobj s3 list
Remember: You can use Swift3 Middleware for OpenStack Swift with S3 clients that are using either the
V2 or V4 S3 protocol.
The V2 protocol is the default. If you use the V4 protocol, make sure that the region of the request
matches the value of the location property in the filter:swift3 section of proxy-server.conf file.
Note: The default value for location in the Swift3 Middleware is US, which means that V4 S3 clients must
set US as the region.
You can change the location value to something other than US by changing the property in the proxy-
server.conf file file. To change the location, run the following command:
mmobj config change --ccrfile "proxy-server.conf" --section "filter:swift3" --property "location" --value "NEW_LOCATION"
2009-02-03 10:45:09
Important: To get the actual creation date of the bucket, use the Swift protocol to query the associated
container instead.
Note: Make sure that you use Keystone UUIDs rather than names if duplicate user or project names
might exist across domains. Additionally, the administrative users must be able to list and delete
access or secrets for a specific user or project.
You can set <aws_access_key> and <aws_secret_key> to any value. These values are supplied to
the S3 client. These values are typically set as the access and secret S3 values. S3 uses them when it
connects to Object storage. The S3 layer in OpenStack uses these values to look up the associated
user and project that is associated with the EC2 credential.
3. View all EC2 credentials by running this command:
4. You can change your Access Key ID and Secret Access Key if necessary.
Note: You might want to consider a regular rotation of these keys and switching applications to use the
new pair.
Change the EC2 credentials by running this command:
openstack credential set –type ec2 –data '{"access": <access>, "secret": <secret>}' --project <project> <credential-id>
The following example shows the creation of EC2 credentials that link with the S3 credentials
"s3user" and "s3pass" to the Keystone user "admin" that is in the project "build":
source /root/openrc
openstack credential create --type ec2 --project build admin '{"access": "s3user", "secret": "s3pass"}'
Now you can connect to the IBM Spectrum Scale Object store by using the Amazon S3 API. You can
connect with any S3-enabled client by using the access key "s3user" and the secret "s3pass".
file-access-enabled: true
multi-region-enabled: true
s3-enabled: false
You can also list specific object capabilities by using the mmobj config list command as follows:
The command displays output similar to this output when the section is present:
[filter:versioned_writes]
use = egg:swift#versioned_writes
b) If the section is not present, run the following command to add it:
mmobj config change --ccrfile proxy-server.conf --section "filter:versioned_writes" --property "use" --value "egg:swift#versioned_writes"
The command displays the pipeline module list as in the following example:
b) If the versioned_writes module is not included in the pipeline module list, add it to the pipeline
immediately before the proxy-server module.
To add it to the pipeline, run the mmobj command. Make sure that the command is all on one line
when you enter it:
mmobj config change --ccrfile proxy-server.conf --section "pipeline:main" --property "pipeline" --value "healthcheck
cache ... slo dlo versioned_writes proxy-server"
This command is an example. When you run the command on your system, follow these steps:
1) In the --value parameter, specify the actual list of pipeline modules that are displayed on your
system in the output when you determine whether the module is present in the pipeline.
Enclose the list in double quotation marks.
2) In the list of pipeline modules that you specify, insert the versioned_writes pipeline module
immediately before the proxy-server module.
[filter:versioned_writes]
use = egg:swift#versioned_writes
allow_versioned_writes = false
4. Run swift list at the account level to check that both containers are created successfully:
swift list
container1
version_container
Note: The container1 container contains only the most current version of the objects. The older
versions of object are stored in version_container.
9. Run swift list on version_container to see the older versions of the object:
10. To delete the most current version of the object, use the DELETE operation on the object:
Attention: For any fileset that is created, its junction path is linked under the file system. The
junction path should not be changed for a fileset that is used for a storage policy. If it is changed,
data might be lost or it might get corrupted.
To enable swift to work with the fileset, softlinks under the given devices path in object-server.conf
are created:
• To list storage policies for object storage with details of functions available with those storage policies,
run the following command:
Index Name Deprecated Fileset Fileset Path Functions Function Details File System
----------------------------------------------------------------------------------------------------------------------------------------
0 SwiftDefault object_fileset /ibm/cesSharedRoot/object_fileset cesSharedRoot
11751509160 sof-policy obj_sof-policy /ibm/cesSharedRoot/obj_sof-policy file-and-object-access regions="1" cesSharedRoot
11751509230 mysofpolicy obj_mysofpolicy /ibm/cesSharedRoot/obj_mysofpolicy file-and-object-access regions="1" cesSharedRoot
• To change a storage policy for object storage, run the following command:
• To create a storage policy with the compression function enabled and a compression schedule that is
defined, use the --enable-compression and the --compression-schedule options with the
mmobj policy create command:
where
MM = 0-59 minutes
HH = 0-23 hours
dd = 1-31 day of month
ww = 0-7 (0=Sun, 7=Sun) day of week
– Use an asterisk (*) for specifying every instance of a unit. For example, dd = * means that the job
is scheduled to run every day.
Every object that is stored by using a storage policy that is enabled is compressed according to the
specified schedule. You do not need to decompress an object in advance of a get request or any other
object request. IBM Spectrum Scale automatically returns the decompressed object.
Note:
– The download performance of objects in a compressed container is reduced compared to the
download performance of objects in a non-compressed container.
– The compression function enables the file system compression over the object file set. The same
compression functions and restrictions apply to object compression and file compression.
Related concepts
File compression
where:
PolicyName
Indicates the name of the storage policy to create.
FilesetName
Indicates the fileset name that the created storage policy must use. This parameter is optional.
FilesystemName
Indicates the file system name where the fileset resides. This parameter is optional.
MaxNumInodes
Indicates the inode limit for the new inode space. This parameter is optional.
--enable-encryption
Enables an encryption policy.
EncryptionKeyFileName
Indicates the fully qualified path of the encryption key file.
--force-rule-append
Adds and establishes the rule when other rules exist. This parameter is optional.
The --force-rule-append determines whether to establish the GPFS policy rules:
– If --force-rule-append is not set:
1. The command checks whether a GPFS policy rule is already established during policy creation.
2. If the policy rule is established, the new encryption rule is not established but is displayed.
This step installs the object protocol in the second region and it joins the first region. More devices
are added to the primary ring files for this region.
4. Export the ring file data of the second region:
6. In the first region, update the local ring files with the configuration of the second region:
This step adds an address to the CES IP pool and triggers a ring rebuild that changes the IP-to-device
mapping in the ring files.
8. Export the ring data so the other clusters in the region can be updated with the new IP addresses
from the second region:
10. In the first region, update with changes for the new second region address in the ring:
This step imports the changes from the second region. When the change import is complete, a
checksum is displayed which can be used to determine when regions are synchronized together. By
comparing it to the one printed when the region data was exported, you can determine that the
regions are synchronized when they match. In some cases, the checksums do not match after
import. The checksums do not match because some local configuration changes on this cluster that
are not yet synced to the other regions. If the checksums do not match, then this region's
configuration needs to be exported and imported into the other region to sync them.
The RegionData file is created and it contains the updated multi-region information.
• To import the multi-region data to synchronize the configuration, use the following command. The
RegionData must be the file that is created from the mmobj multiregion export command:
As part of the export or import commands, a region checksum is printed. This checksum can be used to
ensure that the regions are synchronized. If the checksums values match, then the multi-region
configuration of the clusters match. In some cases, the checksums do not match after import. The
checksums do not match because the cluster that imports have local configuration changes that are
synchronized with the other regions. For example, a storage policy was created but the multi-region
configuration was not synchronized with the other regions. If that happens, the import command prints a
message that the regions are not fully synchronized because of the local configuration and that the region
data must be exported and imported to the other regions. After all regions have matching checksums, the
multi-region environment is synchronized.
An existing region can be removed from the multi-region environment. This action permanently removes
the region configuration, and the associated cluster cannot rejoin the multi-region environment.
The cluster of the removed region needs to disable object services because it is usable as a standalone
object deployment.
• To remove a previously-defined region from the configuration, run the following command from a
different region than the one being removed:
The cluster that is associated with the removed region must clean up object services with the mmces
service disable OBJ -a command to uninstall object services.
• Run the following command to display the current multi-region information:
The command also creates the soft link gpfs1-legacy_fset1. The link name is constructed
according to the following format: <file_system_name>-<fileset_name>.
2. Both of the following commands upload an object newobj to the linked fileset path /gpfs1/
legacy_fset1. Both commands use the soft link gpfs1-legacy_fset1 that is created in the
preceding example. You can use either method:
• The following example uses the swift utility:
The following command creates a new directory newdir and uploads the object newobj1 to it:
gpfs1-legacy_fset1/newdir/newobj1
gpfs1-legacy_fset1/newobj
gpfs1-legacy_fset1/existingfile1
gpfs1-legacy_fset1/existingdir/existingfile2
2. The following command uploads the object newobj to the linked fileset path /gpfs1/
legacy_fset2:
gpfs1-legacy_fset2/newobj
The command displays only the objects that are added to the fileset, either by uploading the object or
by specifying the --update-listing parameter with mmobj --file-access. Here the only such
object is newobj. The command does not list the existing file existingfile2.
How to enable access with a fileset path from a different object file system
You can enable object access to an existing non-object fileset path where the fileset path is derived from
a different object file system. To do so, omit the --update-listing parameter. You can access the data
with the utilities swift or curl. However, the container listing is not updated with the existing file entries
and object metadata is not appended to the existing data.
For more information about validating the ID mapping, see Validating shared authentication ID mapping
in IBM Spectrum Scale: Administration Guide
Note: **Unified file and object access retains the extended attributes (xattr), Windows attributes
(winattrs) and ACL of the file if there is a PUT request from an object over an existing file. However,
security or system namespace of extended attributes and other IBM Spectrum Scale extended attributes
such as immutability or pcache are not retained. Swift metadata (user.swift.metadata) is also not
retained and it is replaced according to object semantics that is the expected behavior.
2. Make sure that the file authentication type and the object authentication type are the same. The valid
values are AD and LDAP.
The following show potential file authentication and object authentication types:
With AD configuration, file authentication needs to be configured with Unix mapped domain. And the
object authentication needs to also be configured with the same AD domain. This AD domain needs to
be updated in the object-server-sof.conf configuration as:
3. Configure the file authentication and the object authentication against the same server as follows:
Note: If there are multiple domain controllers in AD, the values might not match. The administrator
needs to make sure that the server is referring to same user authentication source.
4. Make sure that the object users are receiving the correct UIDs and GIDs from the authentication
source.
cat /root/openrc
export OS_AUTH_URL="http://127.0.0.1:35357/v3"
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_VERSION=3
export OS_USERNAME="userr"
export OS_PASSWORD=""
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_PROJECT_DOMAIN_NAME=Default
5. Make sure that the object user is correctly resolved on all the protocol nodes and the same UID and
GID are listed.
The following example lists the UID and GID for the object user userr:
id userr
uid=1101(userr) gid=1000(testgrp) groups=1000(testgrp),1002(testgrp2)
Run the following command when you have a cluster that has gpfsnode3 as the object singleton node:
Attention: If object services on the singleton node are stopped by the administrator manually,
objectization is stopped across the cluster. Manually stopping services on a singleton node need to
be planned carefully after understanding the impact.
Determining the POSIX path of a unified file and object access enabled fileset
Use the following steps for determining the POSIX path of a unified file and object access enabled fileset.
1. List all storage policies for object.
mmobj policy list
2. In the fs0 file system, note the index and fileset name for the policy you want. Run the mmlsfileset
command to determine the junction point.
The Swift ring builder creates a single virtual device for unified file and object access policies. This virtual
device is named with storage policy index number, which is also the region number. It starts with s and
appended with z1device1.
s13031510160z1device1
3. List the Swift projects and identify the one you are interested in working with:
~/openrc
openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 73282e8bca894819a3cf19017848ce6b | admin |
| 1f78f58572f746c39247a27c1e0e1488 | service |
+----------------------------------+---------+
4. Construct the account name by appending the project ID with AUTH_. Or, substitute the correct project
prefix when you have customized the prefix. For the admin project, use:
AUTH_73282e8bca894819a3cf19017848ce6b
The full path to the unified file and object access containers is the concatenation of the fileset linkage, the
virtual device name, and the account name:
/ibm/fs0/obj_sof-policy1/s13031510160z1device1/AUTH_73282e8bca894819a3cf19017848ce6b/
Note: To substitute the correct project prefix, see Managing object users, roles, and projects in IBM
Spectrum Scale: Administration Guide.
5. List the containers defined for this account.
ls /ibm/fs0/obj_sof-policy1/s13031510160z1device1/AUTH_73282e8bca894819a3cf19017848ce6b/
new1 fifthcontainer RTC73189_1 RTC73189_3 RTC73189_5 RTC73189_7 sixthcontainer
• To verify that the file-access object capability is enabled, enter the mmobj config list command,
as in the following example:
file-access-enabled = true
• Run the following command to check the service status of the ibmobjectizer service:
Related tasks
Enabling the file-access object capability
Before you can use unified file and object access, you must enable the file-access object capability on the
whole cluster.
Setting up the objectizer service interval
Take the following steps to set up the objectizer service interval.
Enabling and disabling QOS
This topic lists the commands to enable and disable QOS.
Configuring authentication and setting identity management modes for unified file and object access
This command sets an interval of 40 minutes between the completion of an objectization cycle and the
start of the next cycle.
• Verify that the objectization time interval is changed using the mmobj config list as follows:
Related tasks
Enabling the file-access object capability
Before you can use unified file and object access, you must enable the file-access object capability on the
whole cluster.
Starting and stopping the ibmobjectizer service
Related tasks
Enabling the file-access object capability
Before you can use unified file and object access, you must enable the file-access object capability on the
whole cluster.
Starting and stopping the ibmobjectizer service
The following information provides the commands to start and stop the ibmobjectizer service.
Setting up the objectizer service interval
Take the following steps to set up the objectizer service interval.
Configuring authentication and setting identity management modes for unified file and object access
You can configure authentication and set the identity management modes for unified file and object
access using the following steps.
Creating or using a unified file and object access storage policy
4. Change id_mgmt in the object-server-sof.conf file using the mmobj config change
command as follows.
5. If object authentication is configured with AD, set ad_domain in the object-server-sof.conf file.
For example, in the output of the following command, the value of the Pre-Win2k Domain field is the
ad_domain.
...
Forest: pollux.com
Domain: pollux.com
Domain Controller: win2k8.pollux.com
Pre-Win2k Domain: POLLUX
Pre-Win2k Hostname: WIN2K8
Server Site Name : Default-First-Site-Name
Client Site Name : Default-First-Site-Name
...
Your unified file and object access enabled fileset is now configured with unified_mode.
6. List the currently configured id_mgmt mode using the mmobj config list command as follows.
Important:
1. If the PUT requests fail in unified_mode, check if the user name is resolvable on the protocol nodes
using the following command:
id '<user_name>'
id '<domain\><user_name>'
2. Ensure that the ad_domain parameter is not present in the object-server-sof.conf file when
LDAP is configured.
• To list the object-server-sof.conf file contents, use the following command:
Related tasks
Enabling the file-access object capability
Before you can use unified file and object access, you must enable the file-access object capability on the
whole cluster.
Starting and stopping the ibmobjectizer service
The following information provides the commands to start and stop the ibmobjectizer service.
Setting up the objectizer service interval
Take the following steps to set up the objectizer service interval.
Enabling and disabling QOS
This topic lists the commands to enable and disable QOS.
Creating or using a unified file and object access storage policy
Use the following steps to create or use a unified file and object access storage policy.
Associating containers with a unified file and object access storage policy
Use the following steps to associate a container with a unified file and object access storage policy.
Creating exports on a container that is associated with a unified file and object access storage policy
Use the following steps to create a Network File System (NFS) or Server Message Block (SMB) export on
the directory that maps to the container associated with the unified file and object access storage policy.
Enabling object access for selected files
Use the following steps to objectize files under all containers that are associated with the unified file and
object access storage policy under a specified account.
Example scenario - administering unified file and object access
The following example describes an end-to-end scenario of administering and configuring unified file and
object access.
2. List the available storage policies using the mmobj policy list command and determine which
policies are for unified file and object access by viewing the Functions column of the output:
3. Use one of these storage policies to create data in a unified file and object access environment.
For more information, see the Associating containers with a unified file and object access storage policy
and Creating exports on a container that is associated with a unified file and object access storage
policy topics in the IBM Spectrum Scale: Administration Guide.
You can learn more about mapping storage policy and filesets. For more information, see the Starting
the Cloud services topic in the IBM Spectrum Scale: Administration Guide.
You must create export at the container level. From NFS or SMB, if you create a peer container, base
containers that are created from NFS and SMB cannot be multiprotocol.
Related tasks
Enabling the file-access object capability
Before you can use unified file and object access, you must enable the file-access object capability on the
whole cluster.
Starting and stopping the ibmobjectizer service
The following information provides the commands to start and stop the ibmobjectizer service.
Setting up the objectizer service interval
Take the following steps to set up the objectizer service interval.
Enabling and disabling QOS
This topic lists the commands to enable and disable QOS.
Configuring authentication and setting identity management modes for unified file and object access
You can configure authentication and set the identity management modes for unified file and object
access using the following steps.
Associating containers with a unified file and object access storage policy
Use the following steps to associate a container with a unified file and object access storage policy.
Creating exports on a container that is associated with a unified file and object access storage policy
Use the following steps to create a Network File System (NFS) or Server Message Block (SMB) export on
the directory that maps to the container associated with the unified file and object access storage policy.
Enabling object access for selected files
Use the following steps to objectize files under all containers that are associated with the unified file and
object access storage policy under a specified account.
Example scenario - administering unified file and object access
The following example describes an end-to-end scenario of administering and configuring unified file and
object access.
Associating containers with a unified file and object access storage policy
Use the following steps to associate a container with a unified file and object access storage policy.
1. Run the following command to export common environment variables by sourcing the openrc file:
source ~/openrc
2. Run the following command to associate a container with a unified file and object access storage
policy:
In this swift post example, the storage policy is specified with the customized header X-Storage-
Policy using the --header option.
3. Run the following command to upload an object in the container that is associated with the unified file
and object access storage policy:
Note:
• It is recommended that you create file exports on or below the container path level and not above it.
Important: Creating file exports above the container path level might lead to deletion of the unified file
and object access enabled containers that is undesirable.
• When you use the POSIX interface, it is recommended to allow access only of data to POSIX users from
on or below the container path.
Important: Accidental deletion of container or data above might lead to inconsistent state of the
system.
This command objectizes all containers in the account admin and enables them for access through the
object interface.
• Run the following command to objectize files under a container:
This command objectizes all files in container1 and enables them for access through the object
interface.
• Run the following command to objectize a file while you specify a storage policy:
This command objectizes file1.txt in container1 and enables it for access through the object
interface.
• Run the following command to objectize a file:
This command also creates a unified file and object access enabled fileset.
6. Create a base container with a unified file and object access storage policy as follows.
7. Store the path that is created for the container by finding it in the newly created fileset as follows.
# echo $FILE_EXPORT_PATH
/ibm/gpfs0/obj_SwiftOnFileFS/s10041510210z1device1/
AUTH_09271462d54b472c82adecff17217586/unified_access
Note: If it is the first NFS export added to the configuration, the NFS service is restarted on the CES
nodes where the NFS server is running. Otherwise, no NFS restart is needed when you add an NFS
export.
10. Check the NFS and SMB shares.
Information:
The following options are not displayed because they do not contain a value:
"browseable"
11. Access this export with NFS or SMB clients and create a sample directory and a file:
DirCreatedFromGPFS/File1.txt and DirCreatedFromSMB/File2.txt
You can view the association of ownership when data is created from the SMB interface as follows.
ls -l /ibm/gpfs0/obj_SwiftOnFileFS/s10041510210z1device1/
AUTH_09271462d54b472c82adecff17217586/unified_access/DirCreatedFromSMB
total 0
-rwxr--r--. 1 ADDOMAINX\administrator
ADDOMAINX\domain users 20 Oct 21 18:09 File2.txt
mmgetacl /ibm/gpfs0/obj_SwiftOnFileFS/s10041510210z1device1/
AUTH_09271462d54b472c82adecff17217586/unified_access/DirCreatedFromSMB
#NFSv4 ACL
#owner:ADDOMAINX\administrator
#group:ADDOMAINX\domain users
special:owner@:rwxc:allow
(X)READ/LIST (X)WRITE/CREATE (X)APPEND/MKDIR (X)SYNCHRONIZE
(X)READ_ACL (X)READ_ATTR (X)READ_NAMED
(-)DELETE (X)DELETE_CHILD (X)CHOWN
(X)EXEC/SEARCH (X)WRITE_ACL (X)WRITE_ATTR (X)WRITE_NAMED
special:group@:r-x-:allow
(X)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (X)SYNCHRONIZE
(X)READ_ACL (X)READ_ATTR (X)READ_NAMED
(-)DELETE (-)DELETE_CHILD (-)CHOWN
(X)EXEC/SEARCH (-)WRITE_ACL (-)WRITE_ATTR (-)WRITE_NAMED
special:everyone@:r-x-:allow
(X)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (X)SYNCHRONIZE
(X)READ_ACL (X)READ_ATTR (X)READ_NAMED
(-)DELETE (-)DELETE_CHILD (-)CHOWN
(X)EXEC/SEARCH (-)WRITE_ACL (-)WRITE_ATTR (-)WRITE_NAMED
ls -l /ibm/gpfs0/obj_SwiftOnFileFS/s10041510210z1device1/
AUTH_09271462d54b472c82adecff17217586/unified_access/DirCreatedFromSMB/File2.txt
12. Objectize that file immediately by using the following command or wait for the objectization cycle to
complete.
mmobj file-access objectize --object-path \
/ibm/gpfs0/obj_SwiftOnFileFS/s10041510210z1device1/AUTH_09271462d54b472c82adecff17217586/unified_access/
File2.txt
13. List the contents of the container by using the Swift client that is configured with all variables as
follows.
DirCreatedFromGPFS/File1.txt
DirCreatedFromSMB/File2.txt
14. Download that object by using the Swift client that is configured with all variables as follows.
Note: The steps that are done by using Swift commands can also be done by using curl. For more
information, see the curl commands for unified file and object access related user tasks topic in the IBM
Spectrum Scale: Administration Guide.
Related tasks
Enabling the file-access object capability
Before you can use unified file and object access, you must enable the file-access object capability on the
whole cluster.
Starting and stopping the ibmobjectizer service
The following information provides the commands to start and stop the ibmobjectizer service.
Setting up the objectizer service interval
Take the following steps to set up the objectizer service interval.
Enabling and disabling QOS
This topic lists the commands to enable and disable QOS.
Configuring authentication and setting identity management modes for unified file and object access
You can configure authentication and set the identity management modes for unified file and object
access using the following steps.
Creating or using a unified file and object access storage policy
Use the following steps to create or use a unified file and object access storage policy.
Associating containers with a unified file and object access storage policy
Use the following steps to associate a container with a unified file and object access storage policy.
Creating exports on a container that is associated with a unified file and object access storage policy
Use the following steps to create a Network File System (NFS) or Server Message Block (SMB) export on
the directory that maps to the container associated with the unified file and object access storage policy.
Enabling object access for selected files
The swift constraints listed in the following table are also applicable to unified file and object access.
Note: These values can be changed by using the following command for the swift.conf file in swift-
constraints section:
For the following data ingestion example steps that are done by using the curl command, this setup is
assumed:
• The user is "fileuser".
• The password is "Password6".
• The account name is "admin".
• The host is specscaleswift.example.com.
1. Run the following command to obtain the authentication token:
The auth token that is obtained in this step must be stored in the $AUTH_TOKEN variable.
2. Run the following command to obtain the project list:
The project ID obtained in this step must be stored in the $AUTH_ID variable.
3. Run the following command to do a PUT operation:
curl commands for unified file and object access related user tasks
Use the following curl commands for user tasks that are related to unified file and object access.
For the following commands, it is assumed that:
• A token is generated and it is exported as an environment variable AUTH_TOKEN.
• A swift endpoint URL for the project (tenant) for which token is generated.
• A unified file and object access storage policy that is named SwiftOnFileFS is already created.
1. Create a container that is named unified_access with unified file and object access storage policy
by running the curl command as follows:
3. Download the object that is in the unified file and object access container by running the curl
command as follows:
4. List the contents of the unified file and object access container by running the curl command as
follows:
object-server-sof.conf file
This file contains identity management modes for unified file and object access (id_mgmt). This file
contains AD domain name (ad_domain) if AD is configured.
tempfile_prefix = .ibmtmp_ Indicates the prefix to be used for the temporary file
that is created when a file uploaded.
disable_fallocate = true Overrides the default swift allocate behavior, and
relies on the GPFS allocate features, excludes 'fast fail'
checks.
disk_chunk_size = 65536 Indicates the size of chunks to read or write to disk
(needs be equal to the file system block size).
network_chunk_size = 65536 Indicates the size of chunks to read or write over the
network (needs to be equal to the file system block
size).
log_statsd_host = localhost If it is not set, the StatsD feature is disabled.
log_statsd_port = 8125 Indicates the port number for the StatsD server.
log_statsd_default_sample_rate = 1.0 Defines the probability of sending a sample for any
specified event or timing measurement.
log_statsd_sample_rate_factor = 1.0 It is not recommended to set it to a value less than
1.0. If the frequency of logging is too high, tune the
log_statsd_default_sample_rate instead.
log_statsd_metric_prefix = Indicates the prefix that is added to every metric sent
to the StatsD server.
retain_acl = yes Indicates whether to copy the ACL from an existing
object. Allowed values are yes or no.
retain_winattr = yes Indicates whether to copy the Windows attributes
from an existing object. Allowed values are yes or no.
retain_xattr = yes Indicates whether to copy the extended attributes for
the user namespace from an existing object. Allowed
values are yes or no.
retain_owner = yes Indicates whether to copy the UID/GID owners from
an existing object. Allowed values are yes or no.
Note: Files with the .ibmtmp prefix or the one configured in the object-server-sof.conf
configuration file are not objectized.
When you set the retain_* options to yes, the following attributes are retained:
• The extended attributes in the user namespace except for the user.swift.metadata key that
contains swift metadata and it is expected to be new.
• Windows attributes
spectrum-scale-object.conf file
This file contains cluster or fileset configuration information. This file is unique to a site.
spectrum-scale-objectizer.conf file
• Contains the ibmobjectizer service configuration information
object-server.conf file
This file is used to set Swift timeout values on the lock_path calls to handle GPFS delays better.
/etc/sysconfig/memcached file
• Used to improve the performance of the internal lookups in the framework
proxy-server.conf file
This file is used to improve the performance of the internal lookups in the framework
Note: Only some options are configurable. If an option cannot be changed, it is mentioned in the
respective option description.
Attention: When a configuration file is changed by using these commands, it takes several
seconds for the changes to be synchronized across the whole cluster (depending on the size of the
cluster). Therefore, when you run multiple commands to change configuration files, you must plan
for an adequate time interval between the execution of these commands.
4. Save the following IBM Spectrum Protect configuration files for each IBM Spectrum Protect client node
in the same safe location outside of your GPFS cluster.
/etc/adsm/TSM.PWD
Contains the client password that is needed to access IBM Spectrum Protect. This file is present
only when the IBM Spectrum Protect server setting of authentication is set to on.
/opt/tivoli/tsm/client/ba/bin/dsm.sys and
/opt/tivoli/tsm/client/ba/bin/dsm.opt
Contains the IBM Spectrum Protect client configuration files.
In this example:
-N
Specifies the nodes that are involved in the backup process. These nodes need to be configured
for the IBM Spectrum Protect server that is being used.
-S
Specifies the global snapshot name to be used for the backup.
--tsm-servers
Specifies which IBM Spectrum Protect server is used as the backup target, as specified in the
IBM Spectrum Protect client configuration dsm.sys file.
There are several other parameters available for the mmbackup command that influence the
backup process, and the speed with which its handles the system load. For example, you can
increase the number of backup threads per node by using the -m parameter. For the full list of
parameters available, see the mmbackup command in the IBM Spectrum Scale: Command and
Programming Reference.
d) Run the following command to remove the snapshot that was created in step 6a:
mmdelsnapshot <file system device> <snapshot name>
You can use the following example:
mmdelsnapshot smallfs objects_globalsnap1
If changes are needed, edit the file in a text editor and follow the included instructions to use it as
input for the mmcrnsd command and run the following command:
mmcrnsd -F StanzaFile
5. Run the following command to mount the object file system on all of the nodes:
mmmount <file system device> -a
For example, mount the file system with the following command:
Note: If a cluster configuration has an isolated node and network groups and CES IP addresses have been
assigned to those groups, parts of the object store are not accessible.
In this configuration, a network and node group that must be used for object can be configured in the
spectrum-scale-object.conf file. Only the CES IP addresses of this group are used for object.
Note: Only one object group can be used.
Note: If the Singleton and database attributes of the IP address assignments are changed manually by
using the mmces address change command, only the IP addresses that belong to the object group can
be used.
Configuration example
In the following example, LAN1 is used as the object group, IP1, IP2, and IP3 are used for object. And, the
object store is fully available. If only LAN1 is used, the used object services will be limited to Node1,
Node2, and Node3. To distribute the object load to all the nodes in the cluster, create a network that
spans across all nodes. Create an object group and assign all nodes to it. Add new CES IP addresses, at
least one CES IP address per protocol node. Then, assign the IP addresses to the same Object Group.
Run the following command to move the existing CES IP addresses to the group:
2. To set up the object group when object has already been configured, run the following command. The
following command is on one line:
/usr/lpp/mmfs/bin/mmcesobjcrring --sync
3. To set up the object group when object has not been configured, use the --ces-group option of the
mmobj swift base command:
CES IP addresses ranging from ces_ip8 to ces_ip14 are used by the object store and the object load
is distributed to all the nodes in the cluster. These IP addresses can be used for client connections.
These IP addresses can also be used for traffic between the Swift proxy service and the account,
container, and object services.
This policy places the most frequently accessed objects in the SSD-backed system pool until the
system pool reaches 70% of its capacity usage. Frequently accessed objects are placed in the gold
pool until it reaches 75% capacity usage.
Note:
The temporary files that are generated by Swift are not moved between storage tiers because they are
all eventually replaced with permanent files that have the .data extension. Moving temporary files to
system, gold, or silver storage pools results in unnecessary data movement.
2. To enable the object heatmap policy for unified file and object access, identify the filename prefix for
temporary files that are created by Swift in unified file and object access. The file name prefix is
configured in the object-server-sof.conf directory. Run the following command to fetch the file
name prefix:
3. Run the following command to determine the filesets that are enabled for unified file and object
access:
4. Run the following command to create a heat-based migration rule by creating the following file:
Note:
• The fileset name is derived from Step 3. Multiple fileset names can be separated by comma.
• The filename prefix in the WHERE clause is derived from Step 2. By using this filter, the migration of
temporary files is skipped - which avoids unnecessary data movement.
5. Run the following command to test the policy:
For more information, see the File heat: Tracking file access temperature topic in the IBM Spectrum Scale:
Administration Guide.
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
When default quotas are managed at the fileset level, those quotas have a higher priority than those set at
the file system level. If the status of the fileset-level defaults for one fileset is Initial, they will inherit
default limits from global fileset-level defaults. The status of newly added fileset-level default quotas can
be one of the following:
Initial
When the fileset is created, it will be in this state. All user and group quota accounts under the fileset
will not follow the fileset defaults.
Quota on
All user and group quota accounts under the fileset that are created later will follow the fileset quota
limits.
Quota off
All user and group quota accounts under the fileset that are created later will not follow the fileset
quota limits. The users and groups will follow global fileset-level defaults if they are valid. If those
defaults are not valid, the status will be initial.
Specific default quota recommendations for protocols:
• Since the protocols may have vastly different fileset requirements, it is not recommended to use default
quotas at the fileset level. Rather, set explicit quotas and limits for each fileset in use by any and all
protocols on a case-by-case basis.
• NFS: Prepare a default quota stanza file template, and at NFS export creation time, apply the default
user or group quotas to the export path (assuming the export is an independent fileset) using per-fileset
default quotas.
• SMB: Prepare a default quota stanza file template, and at SMB share creation time, apply the default
user or group quotas to the share path (assuming the export is an independent fileset) using per-fileset
default quotas.
• Object: IBM recommends using a single independent fileset, objectfs, for the object container. See IBM
Redpaper: A Deployment Guide for IBM Spectrum Scale Object for details. With regard to quotas, here are
the relevant sections from the Redpaper:
%quota:
device=fs1
command=setDefaultQuota
type=USR
blockQuota=25G
blockLimit=30G
filesQuota=10K
filesLimit=11K
%quota:
device=fs1
command=setDefaultQuota
type=GRP
blockQuota=75G
blockLimit=90G
filesQuota=30K
filesLimit=33K
# mmsetquota -F /tmp/defaultQuotaExample
mmedquota -u jesmith
Note: A quota limit of zero indicates that no quota limits are established.
The current (in use) block and inode usage is for display only, and it cannot be changed. When
establishing a new quota, zeros appear as limits. Replace the zeros, or old values if you are changing
existing limits, with values based on the user's needs and the resources available. When you close the
editor, GPFS checks the values and applies them. If an invalid value is specified, GPFS generates an error
message. If this occurs, reenter the mmedquota command. If the scope of quota limit enforcement is the
entire file system, mmedquota lists all instances of the same user (for example, jesmith) on different
GPFS file systems. If the quota enforcement is on a per-fileset basis, mmedquota lists all instances of the
same user on different filesets on different GPFS file systems.
You might find it helpful to maintain a quota prototype, a set of limits that you can apply by name to any
user, group, or fileset without entering the individual values manually. This makes it easy to set the same
limits for all. The mmedquota command includes the -p option for naming a prototypical user, group, or
fileset on which limits are to be based. The -p flag can be used only to propagate quotas from filesets
within the same file system.
For example, to set group quotas for all users in a group that is named blueteam to the prototypical
values established for prototeam, issue:
You can also reestablish default quotas for a specified user, group of users, or fileset when you use the -d
option on the mmedquota command.
Note: You can use the mmsetquota command as an alternative to the mmedquota command.
For complete usage information, see the mmedquota command and the mmsetquota command in the IBM
Spectrum Scale: Command and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Setting quotas for users on a per-project basis
A file system must be properly configured in order to set quotas for users. Use this information to set
quotas for any number of users on a per-project basis across protocols.
Listing quotas
The mmlsquota command displays the file system quota limits, default quota limits, and current usage
information.
Related tasks
Enabling and disabling GPFS quota management
You can enable GPFS quota management on new or existing GPFS file systems, establish quota values,
and disable quota management by following the steps in this topic.
Checking quotas
The mmcheckquota command counts inode and space usage for a file system and writes the collected
data into quota files.
Activating quota limit checking
%filesystem
quotasAccountingEnabled=yes
quotasEnforced=user;group;fileset
perfilesetQuotas=yes
When a file system is created, those quota attributes are set automatically. Quota accounting is
enabled on a perfileset basis for users and groups, and quotas are automatically enforced. This
means that when a quota is reached, the end user will not be able to add more data to the file
system.
mmcrfs fs5 nsd8
A listing of the file system config, by using the mmlsfs command, shows the following attributes
and values, that are set by the mmcrfs command:
mmlsfs fs5
...
-Q user;group;fileset Quotas accounting enabled
For more information on mmcrcluster user-defined profiles, see mmcrcluster command in the
IBM Spectrum Scale: Command and Programming Reference.
b. Whether a GPFS cluster was created with a configuration profile file, a GPFS file system can be
created with the quota attributes to be set. This can be done by calling the configuration profile file
explicitly from the command line:
mmcrfs fs6 nsd9 --profile=example
For more information on user-defined profiles, see mmcrfs command in the IBM Spectrum Scale:
Command and Programming Reference.
2. Create a fileset on the file system for the project by using the mmcrfileset command.
For example:
mmcrfileset fs5 projectX --inode-space=new
Note: It is recommended to create an independent fileset for the project.
3. Link the fileset by using the mmlinkfileset command.
The file system, fs5, must be mounted, by using the mmmount command. For example:
mmmount fs5 -a
mmchfs fs5 --inode-limit 400000:300000
Output:
mmlsfileset fs5 -L
Output:
Filesets in file
system 'fs5':
Name Id RootInode ParentId Created Inode Space MaxInodes AllocInodes
Comment
root 0 3 -- Sat Mar 28 13:40:33 2015 0 400000 310656 root
fileset
projectX 1 524291 -- Sat Mar 28 14:54:13 2015 1 200000 100032
7. If the project grows, or shrinks, and quota changes at the group level are needed, the mmsetquota
command can again be used to change the quotas for groupY on projectX. For example, if the
expected limits for projectX doubles:
mmsetquota fs5:projectX --group groupY --block 256G --files 300K
mmrepquota fs5:projectX
Output:
8. If the project is projected to exceed the inode limits for the fileset and file system, then these can also
be adjusted upwards. For more information, see the mmchfs command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Listing quotas
Checking quotas
The mmcheckquota command counts inode and space usage for a file system and writes the collected
data into quota files.
You must use the mmcheckquota command if any of the following are true:
1. Quota information is lost due to node failure.
Node failure might leave users unable to open files or deny them disk space that their quotas should
allow.
2. The in doubt value approaches the quota limit. To see the in doubt value, use the mmlsquota or
mmrepquota commands.
As the sum of the in doubt value and the current usage cannot exceed the hard limit, the actual block
space and number of files available to the user, group, or fileset might be constrained by the in doubt
value. Should the in doubt value approach a significant percentage of the quota, use the
mmcheckquota command to account for the lost space and files.
Note: Running mmcheckquota is also recommended (in an appropriate time slot) if the following
message is displayed after running mmrepquota, mmlsquota, or mmedquota:
mmcheckquota -v fs1
The information displayed shows that the quota information for USR7 was corrected. Due to a system
failure, this information was lost at the server, which recorded 0 subblocks and 0 files. The current usage
data that is counted is 96 subblocks and 3 files. This is used to update the quota:
Note: In cases where small files do not have an extra block that is allocated for them, quota usage might
show less space usage than expected.
For complete usage information, see the mmcheckquota command in the IBM Spectrum Scale: Command
and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Setting quotas for users on a per-project basis
A file system must be properly configured in order to set quotas for users. Use this information to set
quotas for any number of users on a per-project basis across protocols.
Listing quotas
The mmlsquota command displays the file system quota limits, default quota limits, and current usage
information.
Related tasks
Enabling and disabling GPFS quota management
You can enable GPFS quota management on new or existing GPFS file systems, establish quota values,
and disable quota management by following the steps in this topic.
Explicitly establishing and changing quotas
Use the mmedquota command to explicitly establish or change file system quota limits for users, groups
of users, or filesets.
Activating quota limit checking
Quota limit checking can be activated for users, groups, or fileset. Quota limit checking can also be
activated for any combination of users, groups, and filesets.
Deactivating quota limit checking
Listing quotas
The mmlsquota command displays the file system quota limits, default quota limits, and current usage
information.
If the scope of quota limit enforcement is the entire file system, mmlsquota -u or mmlsquota -g lists
all instances of the same user or group on different GPFS file systems. If the quota enforcement is on a
per-fileset basis, mmlsquota -u or mmlsquota -g lists all instances of the same user or group on
different filesets on different GPFS file systems.
If data replication is enabled in IBM Spectrum Scale, quota management includes the size of the
replicated data in calculating the amount of data that is in use by the user, group, or fileset. For example, if
the data replication factor is two and a user has used approximately 194 KiB of data, quota management
calculates the amount of data in use as 2 * 194 KiB = 388 KiB. (The 194 KiB is an approximation because
quota management rounds up to the next subblock unit size.) Thus the amount of data in use that is
reported by mmlsquota and mmrepquota (388 KiB) would be roughly twice the amount of data in use
than is reported by commands such as ls and du (194 KiB).
Quota management does not include replicated data or metadata in calculating the number of files in use.
If data replication is enabled, quota management replicates the file data and includes the replicated size
in calculating the amount of data in use, as described in the previous paragraph. If
ignoreReplicationForQuota is enabled, the quota commands ignore data replication factor. If
metadata replication is enabled, quota management replicates the inode of each file but the number of
files in use does not change. For example, if the data and metadata replication factors are both two and
the user has created 92 files, the total number of files in use is still 92. (The number of inodes in use is
also 92, because there is one inode per file. Copies of the 92 inodes are included in the replicated
metadata.) Thus the number of files in use that is reported by mmlsquota and mmrepquota is the same
regardless of whether data replication or metadata replication is enabled.
The mmlsquota command might report negative in-doubt values if quota management processes a
combination of up-to-date and out-of-date information. This condition is transient and can be ignored.
To display the quota information for one user, one group of users, or one fileset, issue the mmlsquota
command with the -g, -u, or -j option. If none of these options is specified, the command displays user
quotas for the user who issues the command.
To display default quota information, issue the mmlsquota command with the -d option. For example, to
display default quota information for users of all the file systems in the cluster, issue the following
command:
mmlsquota -d -u
In this example, file system fs1 shows that the default block quota for users is set at 5 GB for the soft
limit and 6 GB for the hard limit. For file system fs2, no default quotas for users are set.
When mmlsquota -d is specified in combination with the -u, -g, or -j options, default file system
quotas are displayed. When mmlsquota -d is specified without any of the -u, -g, or -j options, default
fileset-level quotas are displayed.
If you issue the mmlsquota command with the -e option, quota management collects updated
information from all the cluster nodes before it displays the output. If a node to which in-doubt space is
allocated fails before it can update quota management with its actual amount of space, this space might
not be included in the output. If the amount of in-doubt space approaches a significant percentage of the
quota, issue the mmcheckquota command to account for the lost space.
To collect and display updated quota information about a group blueteam, issue the mmlsquota
command with the -g and -e options:
mmlsquota -g blueteam -e
For complete usage information, see the mmlsquota command in the IBM Spectrum Scale: Command and
Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Setting quotas for users on a per-project basis
A file system must be properly configured in order to set quotas for users. Use this information to set
quotas for any number of users on a per-project basis across protocols.
Related tasks
Enabling and disabling GPFS quota management
You can enable GPFS quota management on new or existing GPFS file systems, establish quota values,
and disable quota management by following the steps in this topic.
Explicitly establishing and changing quotas
Use the mmedquota command to explicitly establish or change file system quota limits for users, groups
of users, or filesets.
Checking quotas
The mmcheckquota command counts inode and space usage for a file system and writes the collected
data into quota files.
Activating quota limit checking
mmquotaon -u fs1
mmlsfs fs1 -Q
For complete usage information, see the mmquotaon command and the mmlsfs command in the IBM
Spectrum Scale: Command and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
mmquotaoff -u fs1
mmlsfs fs1 -Q
For complete usage information, see the mmquotaoff command and the mmlsfs command in the IBM
Spectrum Scale: Command and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Setting quotas for users on a per-project basis
A file system must be properly configured in order to set quotas for users. Use this information to set
quotas for any number of users on a per-project basis across protocols.
Listing quotas
The mmlsquota command displays the file system quota limits, default quota limits, and current usage
information.
Related tasks
Enabling and disabling GPFS quota management
You can enable GPFS quota management on new or existing GPFS file systems, establish quota values,
and disable quota management by following the steps in this topic.
Explicitly establishing and changing quotas
Use the mmedquota command to explicitly establish or change file system quota limits for users, groups
of users, or filesets.
Checking quotas
The mmcheckquota command counts inode and space usage for a file system and writes the collected
data into quota files.
Activating quota limit checking
Quota limit checking can be activated for users, groups, or fileset. Quota limit checking can also be
activated for any combination of users, groups, and filesets.
Changing the scope of quota limit checking
The scope of quota enforcement is established when quotas are activated. By default, user and group
quota limits are enforced across the entire file system. Optionally, the scope of quota enforcement can be
limited to an individual fileset boundaries.
Creating file system quota reports
You can have GPFS prepare a quota report for a file system by using the mmrepquota command.
Restoring quota files
The method that is used for restoring GPFS quota files depends on the version of GPFS.
Managing quota by using GUI
mmrepquota -g -v -a
For complete usage information, see the mmrepquota command in the IBM Spectrum Scale: Command
and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Setting quotas for users on a per-project basis
This command must be run offline (that is, no nodes are mounted).
2. This will restore the user quota limits set for the file system, but the usage information will not be
current. To bring the usage information to current values, the command must be reissued:
mmcheckquota fs1
In scenario 1, if you want to nullify all quota configuration and then reinitialize it, follow these steps:
1. Remove the existing quota files that are corrupted.
a. Disable quota management:
mmchfs fs1 -Q no
3. Reestablish quota limits by issuing the mmedquota command or the mmdefedquota command.
4. Gather the current quota usage values by issuing the mmcheckquota command.
In scenario 2, quota files do not exist externally. Therefore, use mmbackupconfig and
mmrestoreconfig to restore quota configurations.
For complete usage information, see the mmcheckquota command, the mmdefedquota command, and the
mmedquota command in the IBM Spectrum Scale: Command and Programming Reference.
Related concepts
Default quotas
Default quota limits can be set for new users, groups, and filesets for a specified file system. Default
quota limits can also be applied at a more granular level for new users and groups in a specified fileset.
Implications of quotas for different protocols
Quotas can mean different things for different protocols. This section describes how quotas affect the
SMB and NFS protocols.
Setting quotas for users on a per-project basis
A file system must be properly configured in order to set quotas for users. Use this information to set
quotas for any number of users on a per-project basis across protocols.
Listing quotas
User repository
You can manage GUI users locally within the system and in an external authentication server such as
Microsoft Active Directory (AD) or Lightweight Directory Access Protocol Server (LDAP).
Managing users locally in the IBM Spectrum Scale system
By default, the IBM Spectrum Scale system uses an internal authentication repository for GUI users. That
is, the users who are created using the Services > GUI page are stored in the internal repository.
Managing GUI users in an external AD or LDAP server
By default, the IBM Spectrum Scale system uses an internal authentication repository for GUI users. You
can configure an external authentication server either through GUI or CLI.
You can use the Configure External Authentication option that is available under the External
Authentication tab to configure an external LDAP-based authentication method for authenticating the
GUI users.
Use the Test Connection option that is available under the External Authentication tab to find out
whether a user credential is available in the internal or external repository.
For more information about how to use the GUI configure an external authentication method for the GUI
users, see “Configuring external authentication for GUI users” on page 411.
If you specify multiple AD or LDAP servers, you might encounter a problem that a user with the same
user name exists in multiple user repositories. This user cannot be able to log in. To prevent this
situation, you can specify LDAP filters for User Principal Names (UPN) for a selected server
configuration.
Example for a scenario where UPN filters are enabled
2. Map an existing AD or LDAP group to the SecurityAdmin GUI role as shown in the following example:
Now you can log in with your AD or LDAP user and create more group mappings through the GUI on the
Services > GUI > Users page by using the Create Group Mapping option.
#owner:jesmith
#group:team_A
user::rwxc
group::rwx-
other::--x-
mask::rwxc
user:alpha:r-xc
group:audit:r-x-
group:system:rwx-
In this ACL:
• The first two lines are comments that show the file's owner, jesmith, and group name, team_A
• The next three lines contain the base permissions for the file. These three entries are the minimum
necessary for a GPFS ACL:
1. The permissions set for the file owner (user), jesmith
2. The permissions set for the owner's group, team_A
user::rwxc
group::rwx-
other::--x-
mask::rwxc
user:alpha:r-xc
group:audit:rw--
group:system:rwx-
In this example,
• The first three lines are the required ACL entries that set the permissions for the file's owner, the
owner's group, and for processes that are not covered by any other ACL entry.
• The last three lines contain named entries for specific users and groups.
• Because the ACL contains named entries for specific users and groups, the fourth line contains the
required mask entry, which is applied to all named entries (entries other than the user and other).
After you are satisfied that the correct permissions are set in the ACL file, you can apply them to the target
file with the mmputacl command. For example, to set permissions contained in the file project2.acl for
the file project2.history, enter:
mmgetacl project2.history
#owner:guest
#group:usr
user::rwxc
group::rwx- #effective:rw--
other::--x-
mask::rw-c
user:alpha:rwxc #effective:rw-c
group:audit:rwx- #effective:rw--
group:system:-w--
You can issue the mmputacl command without using the -i option to specify an ACL input file, and make
ACL entries through standard input. However, the -i option is more useful for avoiding errors when you
are creating a new ACL.
For complete usage information, see the mmputacl command and the mmgetacl command in the IBM
Spectrum Scale: Command and Programming Reference.
Related tasks
Displaying traditional GPFS access control lists
Applying an existing traditional GPFS access control list
Changing traditional GPFS access control lists
Deleting traditional GPFS access control lists
mmgetacl project2.history
The first two lines are comments that are displayed by the mmgetacl command, showing the owner and
owning group. All entries containing permissions that are not allowed (because they are not set in the
mask entry) display a comment that shows their effective permissions.
For complete usage information, see the mmgetacl command in the IBM Spectrum Scale: Command and
Programming Reference.
Related tasks
Setting traditional GPFS access control lists
Use the following information to set GPFS access control lists (ACLs).
Applying an existing traditional GPFS access control list
Changing traditional GPFS access control lists
Deleting traditional GPFS access control lists
mmgetacl project.notes
#owner:guest
#group:usr
user::rwxc
group::rwx- #effective:rw--
other::--x-
mask::rw-c
user:alpha:rwxc #effective:rw-c
group:audit:rwx- #effective:rw--
group:system:-w--
For complete usage information, see the mmgetacl command and the mmputacl command in the IBM
Spectrum Scale: Command and Programming Reference.
Related tasks
Setting traditional GPFS access control lists
Use the following information to set GPFS access control lists (ACLs).
Displaying traditional GPFS access control lists
Changing traditional GPFS access control lists
Deleting traditional GPFS access control lists
mmeditacl project2.history
The current ACL entries are displayed by using the default editor, if the EDITOR environment variable
specifies a complete path name. When the file is saved, the system displays information similar to:
mmdelacl project2
mmgetacl project2
#owner:uno
#group:system
user::rwxc
group::r-x-
other::--x-
You cannot delete the base permissions, which remain in effect after this command is executed.
For complete usage information, see the mmdelacl command and the mmgetacl command in the IBM
Spectrum Scale: Command and Programming Reference.
Related tasks
Setting traditional GPFS access control lists
Use the following information to set GPFS access control lists (ACLs).
Displaying traditional GPFS access control lists
Applying an existing traditional GPFS access control list
Changing traditional GPFS access control lists
group:staff:r-x-:allow
(X)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (-)SYNCHRONIZE (-)READ_ACL (X)READ_ATTR
(-)READ_NAMED
(-)DELETE (-)DELETE_CHILD (-)CHOWN (X)EXEC/SEARCH (-)WRITE_ACL (-)WRITE_ATTR
(-)WRITE_NAMED
2. A Directory ACL is similar to this. It can include inherit ACL entries that do not apply to the directory
itself, but instead become the initial ACL for any objects that are created within the directory.
special:group@:----:deny:DirInherit:InheritOnly
(X)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (-)SYNCHRONIZE (-)READ_ACL (X)READ_ATTR
(-)READ_NAMED
(-)DELETE (-)DELETE_CHILD (-)CHOWN (X)EXEC/SEARCH (-)WRITE_ACL (-)WRITE_ATTR
(-)WRITE_NAMED
#NFSv4 ACL
#owner:smithj
#group:staff
special:owner@:rwxc:allow:FileInherit
(X)READ/LIST (X)WRITE/CREATE (X)APPEND/MKDIR (-)SYNCHRONIZE (X)READ_ACL (X)READ_ATTR
(-)READ_NAMED
(X)DELETE (X)DELETE_CHILD (X)CHOWN (X)EXEC/SEARCH (X)WRITE_ACL (X)WRITE_ATTR
(-)WRITE_NAMED
special:owner@:rwxc:allow:DirInherit:InheritOnly
(X)READ/LIST (X)WRITE/CREATE (X)APPEND/MKDIR (-)SYNCHRONIZE (X)READ_ACL (X)READ_ATTR
(-)READ_NAMED
(X)DELETE (X)DELETE_CHILD (X)CHOWN (X)EXEC/SEARCH (X)WRITE_ACL (-)WRITE_ATTR
(-)WRITE_NAMED
user:smithj:rwxc:allow
(X)READ/LIST (X)WRITE/CREATE (X)APPEND/MKDIR (-)SYNCHRONIZE (X)READ_ACL (X)READ_ATTR
(-)READ_NAMED
Note: In IBM Spectrum Scale 5.0.3, a difference in the handling of the NFSv4 ACL bit SYNCHRONIZE
can cause access issues for Microsoft Windows clients. The change is that when ACL data is returned
to the SMB client, the SYNCHRONIZE bit on ACL "allow" entries is passed unchanged. But Microsoft
Windows clients require the SYNCHRONIZE bit to be set for renaming files or directories. Files that are
written by Microsoft Windows clients usually have the SYNCHRONIZE bit set.
To restore the pre-5.0.3 behavior, issue the following command for each SMB share that is affected by
the problem:
In the long term, it is a good idea to change the ACLs for all files and directories that are missing the
SYNCHRONIZE bit instead of modifying the SMB configuration.
Related concepts
NFS V4 ACL translation
Considerations when using GPFS with NFS V4 ACLs
Related tasks
Setting NFS V4 access control lists
Displaying NFS V4 access control lists
Applying an existing NFS V4 access control list
Changing NFS V4 access control lists
Deleting NFS V4 access control lists
Related reference
Exceptions and limitations to NFS V4 ACLs support
Review the exceptions and limitations to NFS V4 ACLs in IBM Spectrum Scale.
Table 36. Removal of a file with ACL entries DELETE and DELETE_CHILD
ACL Allows ACL Denies DELETE not UNIX mode
DELETE DELETE specified bits only
ACL Allows DELETE_CHILD Permit Permit Permit Permit
ACL Denies DELETE_CHILD Permit Deny Deny Deny
DELETE_CHILD not Permit Deny Deny Deny
specified
The UNIX mode bits are used in cases where the ACL is not an NFS V4 ACL.
#NFSv4 ACL
The lines that follow the first one are then processed according to the rules of the expected ACL type.
An NFS V4 ACL is similar to the sample shown:
#NFSv4 ACL
#owner:root
#group:system
special:owner@:rwxc:allow
(X)READ/LIST (X)WRITE/CREATE (-)APPEND/MKDIR (X)SYNCHRONIZE (X)READ_ACL (-)READ_ATTR
(-)READ_NAMED
(X)DELETE (-)DELETE_CHILD (-)CHOWN (X)EXEC/SEARCH (X)WRITE_ACL (X)WRITE_ATTR (-)WRITE_NAMED
special:owner@:----:deny
(-)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (-)SYNCHRONIZE (-)READ_ACL (-)READ_ATTR
(X)READ_NAMED
(-)DELETE (X)DELETE_CHILD (X)CHOWN (-)EXEC/SEARCH (-)WRITE_ACL (-)WRITE_ATTR (X)WRITE_NAMED
user:guest:r-xc:allow
(X)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (X)SYNCHRONIZE (X)READ_ACL (-)READ_ATTR
(-)READ_NAMED
(X)DELETE (-)DELETE_CHILD (-)CHOWN (X)EXEC/SEARCH (X)WRITE_ACL (-)WRITE_ATTR (-)WRITE_NAMED
user:guest:----:deny
(-)READ/LIST (-)WRITE/CREATE (-)APPEND/MKDIR (-)SYNCHRONIZE (-)READ_ACL (-)READ_ATTR
(X)READ_NAMED
(-)DELETE (X)DELETE_CHILD (X)CHOWN (-)EXEC/SEARCH (-)WRITE_ACL (X)WRITE_ATTR (X)WRITE_NAMED
This ACL shows four ACL entries (an allow and deny entry for each of owner@ and guest).
In general, constructing NFS V4 ACLs is more complicated than traditional ACLs. Users new to NFS V4
ACLs can find it useful to start with a traditional ACL. They can allow either mmgetacl or mmeditacl to
provide the NFS V4 translation, by using the -k nfs4 flag as a starting point when creating an ACL for a
new file.
Related concepts
NFS V4 ACL Syntax
NFS V4 ACL translation
Considerations when using GPFS with NFS V4 ACLs
Related tasks
Displaying NFS V4 access control lists
Applying an existing NFS V4 access control list
Changing NFS V4 access control lists
Deleting NFS V4 access control lists
Related reference
Exceptions and limitations to NFS V4 ACLs support
Review the exceptions and limitations to NFS V4 ACLs in IBM Spectrum Scale.
Mapping between SMB protocol Security Descriptors and NFSv4 ACLs stored in the
file system
The SMB protocol uses Security Descriptors to describe the permissions on a file or directory. The
Discretionary Access Control Lists (DACL) from the Security Descriptors are mapped to and from the
NFSv4 ACLs stored in the file system. That way, only one authoritative ACL exists for each file or directory.
The structure of NFSv4 ACLs and DACLs is similar. The ACL consists of a list of entries. Each entry contains
the elements: The principal (the user or group the entry is referring to), inheritance flags, the type (allow
or deny) and the permissions being granted or denied in this entry.
Depending on the configured id mapping method for a domain, the mapping from the Security Descriptor
to the NFSv4 ACL is also done slightly differently. The reason here is that the –unixmap-domain and –
Table 37. Mapping from NFSv4 ACL entry to SMB Security Descriptor
Entry in NFSv4 ACL Mapped to SMB Security Descriptor entry
Principal Inheritance Principal Inheritance Comment
special:everyone@ Any EVERYONE Same (No comment)
special:owner@ Includes CREATOR OWNER Same with the An entry that
FileInherit or exclusion of the applies to the
DirInherit current file or current file or
folder added folder and marked
for inheritance can
Applies to current Mapped user Same result in mapping
folder (not one NFS4 entry in
InheritOnly) two Security
Descriptor entries.
special:group@ Includes CREATOR GROUP Same with the An entry that
FileInherit or exclusion of the applies to the
DirInherit current file or current file or
folder added folder and marked
for inheritance can
Applies to current Mapped group Same result in mapping
folder (not one NFS4 entry in
InheritOnly) two Security
Descriptor entries.
Explicit entry Any Matching principal Same (No comment)
Mapping between SMB protocol Security Descriptors and NFSv4 ACL with the --
unixmap-domains or --ldapmap-domains id mappings
In this case, each user in Active Directory is mapped to a uid and each group in Active Directory is mapped
to a gid. This carries the limitation that a file or directory cannot be owned by a group as the owner of an
object in the Spectrum Scale file system is always a uid, not a gid. The mapping of entries from an SMB
Security Descriptor to a NFSv4 ACL in this case is done according to the following table:
Table 38. Mapping from SMB Security Descriptor to NFSv4 ACL entry with unixmap or ldapmap id
mapping
Entry in SMB Security Descriptor Mapped to NFSv4 ACL entry
Principal Inheritance Principal Inheritance
EVERYONE Any special:everyone@ Same
Mapping between SMB protocol Security Descriptors and NFSv4 ACL with the
internal id mapping
The default id mapping method creates id mappings based on an internal database on the CES protocol
nodes. This id mapping method assigns both, a uid and a gid, to each SID. This has the advantage that
files and objects can be owned by a group. This also affects the mapping from the Security Descriptor to
the NFSv4 ACL, as most entries are now mapped to gid entries:
Table 39. Mapping from SMB Security Descriptor to NFSv4 ACL entry with default id mapping
Entry in SMB Security Descriptor Mapped to NFSv4 ACL entry
Principal Inheritance Principal Inheritance
EVERYONE Any special:everyone@ Same
Related concepts
Authorizing object users
The Object Storage service of the IBM Spectrum Scale system uses Keystone service for identity
management. The identity management service consists of user authentication and authorization
processes.
Authorization limitations
Authorization limitations are specific to the protocols that are used to access data.
ACL inheritance
The inheritance flags in ACL entry of parent directories are used to control the inheritance of authorization
to the child files and directories. The inheritance flag gives you the granularity to specify whether the
inheritance defined in an ACL entry applies to the current directory and its children or only to the
subdirectories and files that are contained in the parent directory. ACL entries are inherited to the child
directories or files at the time of creation. Changes made to the ACL of a parent directory are not
propagated to child directories or files. However, in case of SMB, you can specify to propagate the
inheritance changes from a parent to all its child by using File Explorer, command line, or PowerShell.
In the long term, it is a good idea to change the ACLs for all files and directories that are missing the
SYNCHRONIZE bit instead of modifying the SMB configuration.
Table 40. ACL permissions required to work on files and directories, while using SMB protocol (table 1 of 2)
ACL Operation ACL Permission
Create
Traverse List Read folders /
folder / folder / Read extended Create files / append
execute file read data attribute attribute write data data
Execute file X X
List folder X
Read data from file X X X
Read attributes X
Create file X
Create folder X
Write data to file X X X X
Write file attributes
Write folder attributes
Delete file P X P
Delete folder P X P
Rename file P X P
Rename folder P X P P
Read file permissions
Read folder
permissions
Write file permissions
Write folder
permissions
Take file ownership
Table 41. ACL permissions required to work on files and directories, while using SMB protocol (table 2 of 2)
ACL Operation ACL Permission
Write Delete Read Write
Write extended subfolder permission permission Take
attribute attributes and files Delete s s ownership
Execute file
List folder
Read data from
file
Read attributes
Create file
Create folder
Write data to file X X
Write file X
attributes
Write folder X
attributes
Delete file P or X
Delete folder P or X
Rename file P or X
Rename folder P or X
Read file X
permissions
Read folder X
permissions
Write file X X
permissions
Write folder X X
permissions
Take file X
ownership
Take folder X
ownership
Table 43. ACL permissions required to work on files and directories, while using NFS protocol (table 2 of 2)
ACL Operation ACL Permission
Write Delete Take
Write extended subfolder ownershi
attribute attributes and files Delete Read ACL Write ACL p
Execute file
List folder
Read data from file
Read attributes
Create file
Create folder
Write data to file
The following are the considerations on the ACL read and write permissions:
1. The files that require "Traverse folder / execute file" permission do not require the "Bypass Traverse
Check" attribute to be enabled. This attribute is enabled by default on the files.
2. The "Read extended attribute" permission is required by the SMB clients with recent Microsoft
Windows versions (for Microsoft Windows 2008, Microsoft Windows 2012, and Microsoft Windows 8
versions) for file copy operations. The default ACLs set without inheritance do not contain this
permission. It is recommended that you use inherited permissions where possible and enable this
permission in the inherited permissions to prevent the default value to be used and cause problems.
Migrating data through SMB to the IBM Spectrum Scale cluster requires a user ID with the enhanced
permissions. The ownership of a file cannot be migrated by a normal IBM Spectrum Scale user. Therefore,
you need to configure an “admin user” to allow data migration. For more information on how to configure
the “admin users” parameter, see the mmsmb export add and mmsmb export change sections in mmsmb
command in the IBM Spectrum Scale: Command and Programming Reference.
mkdir -p /ibm/gpfs0/testsmbexport
2. Change the owner and group of the fileset or directory using chown and chgrp respectively. For
example:
2. Issue either the ls -la command or the mmgetacl command to view the owner of the export. For
example:
ls -la /ibm/gpfs0/testsmbexport
Or
mmgetacl /ibm/gpfs0/testsmbexport
Apart from the tasks that are listed earlier in this section, the following table provides a quick overview of
the tasks that can be performed to manage ACLs and the corresponding IBM Spectrum Scale command.
Important: The mmgetacl, mmputacl, and mmeditacl commands are available to change the ACLs
directly. As the SMB clients might depend on the order of entries in the ACL, it is not recommended that
you change the ACLs directly on GPFS while using the SMB protocol. Changing an ACL directly in GPFS
also does not account for inherited entries. So, it is recommended that you change the ACLs from a
windows client.
The object users are authorized to the object data and resources by creating and managing roles and
ACLs. The roles and ACLs define the actions that can be done by the user on the object resources such as
accessing data, managing the projects, creating projects, read, write, and run permissions.
Related concepts
Authorizing file protocol users
The IBM Spectrum Scale system uses ACLs to authorize users who access the system through file
protocols such as NFS and SMB.
Authorization limitations
Authorization limitations are specific to the protocols that are used to access data.
Creating containers
The Object Storage organizes data in account, container, and object. Each account and container is an
individual database that is distributed across the cluster. An account database contains the list of
containers in that account. A container database contains the list of objects in that container.
It is the responsibility of the Keystone server administrator to create and manage accounts. The account
defines a namespace for containers. A container must be unique within the owning account and account
must use a unique name within the project. The admin account is created by default.
Use the following procedure to create containers.
To work with this function in the IBM Spectrum Scale GUI, log on to the GUI and select Object >
Containers.
1. Run the swift post container command to create a container by using the Swift command-line
client.
In the following example, the Keystone administrator creates a public_readOnly container in
admin account:
2. Run the following command to list the containers that are available for the account.
In the following example, the system lists the containers that are available in the admin project:
3. Run the following command to list the accounts, containers, or objects details.
In the following example, the system displays the admin account details:
In the following example, the system displays the public_readOnly' container details, on the admin
account:
By default, only users who are having a Keystone role that is specified in the proxy-server.conf
operator_roles option are allowed to create container on an account.
Run the following command to list operator_roles on the IBM Spectrum Scale system during
installation:
Related tasks
“Creating read ACLs to authorize object users” on page 445
The Keystone administrator can create container ACLs to grant read permissions using X-Container-
Read headers in curl tool or –read-acl flag in the Swift command-line client.
“Creating write ACLs to authorize object users” on page 447
The Keystone administrator can create container ACLs to grant write permissions using X-Container-Write
headers in the curl tool or –write-acl flag in the Swift command-line client.
2. Issue the swift post command to provide public read access to the public_readOnly container.
Note: The .r:* ACL specifies access for any referrer regardless of account affiliation or user name.
The .rlistings ACL allows to list the containers and read (download) objects.
3. Issue the swift stat command at the container level to see the access details.
4. As the student user from the students account, list and download the details of public_readOnly
container that is created in the admin account.
Listing the details:
5. As the student1 user from the students account, receive deny write access, while trying to upload new
content in the public_readOnly container:
Forbidden
Table 45. ACL options that are available to manipulate object read ACLs
Permission Read ACL options
Read for all referrers .r:*
Read and list for all referrers and listing .r:*,.rlistings
Read and list for a user in a specific project <project_id>:<user_id>
Note: In ACL settings, you must specify project IDs and user IDs rather than project names and user
names. In a sequence of ACLs, separate the ACLs with commas: –read-acl
c592e4f4:bdd3218,87c14a43:db2e994a.
Related tasks
“Creating containers” on page 443
The Object Storage organizes data in account, container, and object. Each account and container is an
individual database that is distributed across the cluster. An account database contains the list of
containers in that account. A container database contains the list of objects in that container.
“Creating write ACLs to authorize object users” on page 447
The Keystone administrator can create container ACLs to grant write permissions using X-Container-Write
headers in the curl tool or –write-acl flag in the Swift command-line client.
2. Create a container that is named writeOnly with write permissions for a member user (with an ID of
4720614) who is part of the admin project (46b37eb) and a student1 user (f58b7c09) who is part of
the students project (d5c05730). In the X-Container-Write statement, you must specify the
project and user IDs rather than the names:
# curl -i http://tully-ces-ip.adcons.spectrum:8080/v1/AUTH_bea5a0c632e54eaf85e9150a16c443ce
/writeOnly -X PUT -H "Content-Length: 0" -H "X-Auth-Token: ${token}" -H
"X-Container-Write: 46b37eb:4720614,d5c05730:f58b7c09" -H "X-Container-Read: "
HTTP/1.1 201 Created
Content-Length: 0
Content-Type: text/html; charset=UTF-8
X-Trans-Id: txf7b0bfef877345949c61c-005567b9d1
Date: Fri, 29 May 2015 00:58:57 GMT
3. Issue a token as student1 from the students project and upload an object by using the curl tool:
# curl -i http://tully-ces-ip.adcons.spectrum:8080/v1/AUTH_bea5a0c632e54eaf85e9150a16c443ce
/writeOnly/imageA.JPG -X PUT -H "X-Auth-Token: ${token}" --upload-file imageA.JPG
HTTP/1.1 100 Continue
HTTP/1.1 201 Created
Last-Modified: Fri, 29 May 2015 01:11:28 GMT
Content-Length: 0
Etag: 95d8c44b757f5b0c111750694dffef2b
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx6caa0570bfcd419782274-005567bcbe
Date: Fri, 29 May 2015 01:11:28 GMT
# curl -i http://tully-ces-ip.adcons.spectrum:8080/v1/AUTH_bea5a0c632e54eaf85e9150a16c443ce
/writeOnly/imageA.JPG -X HEAD -H "X-Auth-Token: ${token}"
HTTP/1.1 403 Forbidden
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx4f7dfbfd74204785b6b50-005567bd8c
Content-Length: 0
Date: Fri, 29 May 2015 01:14:52 GMT
Note: This operation fails as the user does not have the necessary privileges.
5. Grant read permissions to student1 user of the students project. In the X-Container-Read
statement, you must specify the project and user IDs rather than the names:
# curl -i http://tully-ces-ip.adcons.spectrum:8080/v1/AUTH_
bea5a0c632e54eaf85e9150a16c443ce
/writeOnly -X POST -H "Content-Length: 0" -H "X-Auth-Token:
${token}" -H "X-Container-Read: d5c05730:f58b7c09"
HTTP/1.1 204 No Content
Content-Length: 0
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx77aafe0184da4b68a7756-005567beac
Date: Fri, 29 May 2015 01:19:40 GMT
6. Verify whether the sutdent1 user has the read access now:
# curl -i http://tully-ces-ip.adcons.spectrum:8080/v1/AUTH_bea5a0c632e54eaf85e9150a16c443ce
/writeOnly -X GET -H "X-Auth-Token: ${token}"
HTTP/1.1 200 OK
Content-Length: 11
X-Container-Object-Count: 1
Accept-Ranges: bytes
X-Storage-Policy: Policy-0
X-Container-Bytes-Used: 5552466
X-Timestamp: 1432861137.91693
Content-Type: text/plain; charset=utf-8
X-Trans-Id: tx246b39018a5c4bcb90c7f-005567bff3
Date: Fri, 29 May 2015 01:25:07 GMT
imageA.JPG
Authorization limitations
Authorization limitations are specific to the protocols that are used to access data.
Export considerations
Keep these points in mind when exporting a GPFS file system to NFS. The operating system being used
and the version of NFS might require special handling or consideration.
/gpfs/dir1 cluster1(rw,fsid=745)
The administrator must assign fsid values subject to the following conditions:
1. The values must be unique for each file system.
2. The values must not change after reboots. The file system should be unexported before any change is
made to an already assigned fsid.
3. Entries in the /etc/exports file are not necessarily file system roots. You can export multiple
directories within a file system. In the case of different directories of the same file system, the fsids
must be different. For example, in the GPFS file system /gpfs, if two directories are exported (dir1
and dir2), the entries might look like this:
/gpfs/dir1 cluster1(rw,fsid=745)
/gpfs/dir2 cluster1(rw,fsid=746)
4. If a GPFS file system is exported from multiple nodes, the fsids should be the same on all nodes.
Configuring the directories for export with NFSv4 differs slightly from the previous NFS versions. To
configure the directories, do the following:
1. Define the root of the overall exported file system (also referred to as the pseudo root file system) and
the pseudo file system tree. For example, to define /export as the pseudo root and export /gpfs/dir1
and /gpfs/dir2 which are not below /export, run:
2. Edit the /etc/exports file. There must be one line for the pseudo root with fsid=0. For the preceding
example:
/export cluster1(rw,fsid=0)
/export/dir1 cluster1(rw,fsid=745)
/export/dir2 cluster1(rw,fsid=746)
The two exported directories (with their newly bound paths) are entered into the /etc/exports file.
Large installations with hundreds of compute nodes and a few login nodes or NFS-exporting nodes
require tuning of the GPFS parameters maxFilesToCache and maxStatCache with the mmchconfig
command.
This tuning is required for the GPFS token manager (file locking), which can handle approximately
1,000,000 files in memory. The token manager keeps track of a total number of tokens, which equals
5000 * number of nodes. This will exceed the memory limit of the token manager on large
configurations. By default, each node holds 5000 tokens.
For information about the default values of maxFilesToCache and maxStatCache, see the description
of the maxStatCache attribute in the topic mmchconfig command in the IBM Spectrum Scale: Command
and Programming Reference.
In versions of IBM Spectrum Scale earlier than 5.0.2, the stat cache is not effective on the Linux platform
unless the Local Read-Only Cache (LROC) is configured. For more information, see the description of the
maxStatCache parameter in the topic mmchconfig command in the IBM Spectrum Scale: Command and
Programming Reference.
If you are running at SLES 9 SP 1, the kernel defines the sysctl variable
fs.nfs.use_underlying_lock_ops, which determines whether the NFS lockd is to consult the file
system when granting advisory byte-range locks. For distributed file systems like GPFS, this must be set
to true (the default is false).
You can query the current setting by issuing the command:
sysctl fs.nfs.use_underlying_lock_ops
sysctl -p
2. The -k nfs4 or -k all flag is required. Initially, a file system has the -k posix setting, and only
traditional GPFS ACLs are allowed. To export a file system using NFS V4, NFS V4 ACLs must be
enabled. Since NFS V4 ACLs are vastly different and affect several characteristics of the file system
objects (directories and individual files), they must be explicitly enabled. This is done either
exclusively, by specifying -k nfs4, or by allowing all ACL types to be stored.
Note: In IBM Spectrum Scale 4.2 and later, NFS connections are limited to a maximum of 2250 for a large
number of NFS exports. The maximum number of NFS exports supported is 1000.
/etc/rc.d/init.d/nfs stop
stopsrc -g nfs
/etc/rc.d/init.d/nfs start
startsrc -g nfs
Related concepts
NFS usage of GPFS cache
Synchronous writing using NFS
NFS automount considerations
Clustered NFS and GPFS on Linux
Related tasks
Exporting a GPFS file system using NFS
Figure 10 on page 458 illustrates a multi-cluster configuration with multiple NSD servers. In this
configuration:
• The two nodes in Cluster 1 are defined as the NSD servers (you can have up to eight NSD server nodes).
• All three clusters are connected with Gigabit Ethernet.
• Cluster 1 shares an InfiniBand switch network with Cluster 2 and an InfiniBand switch network with
Cluster 3.
In order to take advantage of the fast networks and to use the nodes in Cluster 1 as NSD servers for
Cluster 2 and Cluster 3, you must configure a subnet for each of the supported clusters. For example
issuing the command:
• mmchconfig subnets="<IB_Network_1> <IB_Network_1>/Cluster1" in Cluster 2 allows nodes N2
through Nx to use N1 as an NSD server with InfiniBand Network 1 providing the path to the data.
• mmchconfig subnets="<IB_Network_2> <IB_Network_2>/Cluster1" in Cluster 3 allows nodes
N2+x through Ny+x to use N1+x as an NSD server with InfiniBand Network 2 providing the path to the
data.
When you implement file access from other clusters, consider these topics:
• “Remote user access to a GPFS file system” on page 459
• “Mounting a remote GPFS file system” on page 463
This allows you to separate the tasks performed by each cluster. Storage cluster owns the file systems
and the storage. Protocol clusters contain the protocol node that provides access to the remotely
mounted file system through NFS or SMB. In this configuration, each cluster is managed independently.
For more information, see “Important information about remote access” on page 471.
Here, the storage cluster owns a file system and the protocol cluster remotely mounts the file system. The
protocol nodes (CES nodes) in the protocol cluster export the file system via SMB and NFS.
You can define one set of protocol nodes per cluster, using multiple independent protocol clusters which
remotely mount file systems. Protocol clusters can share access to a storage cluster but not to a file
system. Each protocol cluster requires a dedicated file system. Each protocol cluster can have a different
authentication configuration, thus allowing different authentication domains while keeping the data at a
central location. Another benefit is the ability to access existing ESS-based file systems through NFS or
SMB without adding nodes to the ESS cluster.
mmchconfig release=LATEST
Note: Nodes that run an older version of IBM Spectrum Scale on the remote cluster will no longer be able
to mount the file system. Command fails if any nodes running an older version are mounted at time
command is issued.
To change the file system version, issue the following command for each file system on the storage
cluster:
8. On owningCluster, the system administrator issues the mmauth grant command to authorize
accessingCluster to mount specific file systems that are owned by owningCluster:
9. On accessingCluster, the system administrator must define the cluster name, contact nodes and
public key for owningCluster:
This command provides the system administrator of accessingCluster a means to locate the
serving cluster and mount its file systems.
10. On accessingCluster, the system administrator issues one or more mmremotefs commands to
identify the file systems in owningCluster that are to be accessed by nodes in
accessingCluster:
where:
11. On accessingCluster, the system administrator enters the mmmount command to mount the file
system:
mmmount mygpfs
Table 46 on page 465 summarizes the commands that the administrators of the two clusters need to
issue so that the nodes in accessingCluster can mount the remote file system fs1, which is owned by
owningCluster, assigning rfs1 as the local name with a mount point of /rfs1.
Exchange public keys (file /var/mmfs/ssl/ Exchange public keys (file /var/mmfs/ssl/
id_rsa.pub) id_rsa.pub)
mmremotecluster add owningCluster ... mmauth add accessingCluster ...
mmremotefs add rfs1 -f fs1 -C owningCluster - mmauth grant accessingCluster -f fs1 ...
T /rfs1
mmauth show
To authorize a third cluster, say cluster3, to access file systems owned by cluster1, the administrator
of cluster1 issues this command:
To completely revoke cluster3 authorization to access file systems owned by cluster1, the
administrator of cluster1 issues this command:
subnets='10.200.0.0/CL2.kgn.ibm.com 10.200.0.0/CL3.kgn.ibm.com'
where the 10.200.0.0 subnet is listed twice, is not allowed. Therefore, subnets that span multiple
clusters have to be assigned a cluster name pattern or a semicolon-separated cluster name list. It is
possible to combine these, for example, items in semicolon-separated cluster lists can be plain names
or regular expressions, as in the following:
subnets='1.0.0.1/CL[23].kgn.ibm.com;OC.xyz.ibm.com'
If the subnets attribute lists multiple subnets, and there are multiple subnets in common between
the local cluster and a given remote cluster, then the first subnet in common in the list is used for
communications between the local and remote clusters. As an example, suppose that the subnets
attribute is set as follows, on cluster CL2.kgn.ibm.com:
subnets='10.200.0.0/CL[23].kgn.ibm.com 10.201.0.0/CL[23].kgn.ibm.com'
If node CL2N1 on cluster CL2.kgn.ibm.com has network interfaces with IP addresses 10.200.0.1
and 10.201.0.1, and node CLN31 on cluster CL3.kgn.ibm.com has network interfaces with IP
addresses 10.200.0.5 and 10.201.0.5, then the communication between these two nodes will flow
over the 10.200.0.0 subnet, with CL2N1 using the interface with IP address 10.200.0.1, and CLN31
using the interface with IP address 10.200.0.5.
Specifying a cluster name or a cluster name pattern for each subnet is only needed when a private
network is shared across clusters. If the use of a private network is confined within the local cluster,
then no cluster name is required in the subnet specification.
After this command is issued, cluster1 will have two keys (referred to as the 'old key' and the 'new
key') that can both be used to access cluster1 file systems.
2. The system administrator of cluster1 now gives the file /var/mmfs/ssl/id_rsa.pub (that
contains the new key) to the system administrator of cluster2, who desires to continue to access the
cluster1 file systems. This operation requires the two administrators to coordinate their activities,
and must occur outside of the GPFS command environment.
3. On cluster2, the system administrator issues the mmremotecluster update command to make
the new key known to his system:
where:
cluster1
Is the real name of cluster1 as given by the mmlscluster command on a node in cluster1.
cluster1_id_rsa.pub
Is the name of the file obtained from the administrator of cluster1 in Step “2” on page 469.
This permits the cluster desiring to mount the file system to continue mounting file systems owned by
cluster1.
4. On cluster1, the system administrator verifies that all clusters desiring to access cluster1 file
systems have received the new key and activated it using the mmremotecluster update command.
5. On cluster1, the system administrator issues the mmauth genkey commit command to commit
the new key as the only valid access key. The old key will no longer be accepted once this command
completes successfully:
Once the new public key has been committed, the old public key will no longer be accepted. As a
result, any remote cluster administrator who has not been given the new key (see the preceding Step
After this command is issued, cluster2 will have two keys (referred to as the 'old key' and the 'new
key') that can both be used when a connection is established to any of the nodes in cluster2.
2. The system administrator of cluster2 now gives the file /var/mmfs/ssl/id_rsa.pub (that
contains the new key) to the system administrator of cluster1, the owner of the file systems. This
operation requires the two administrators to coordinate their activities, and must occur outside of the
GPFS command environment.
3. On cluster1, the system administrator issues the mmauth update command to make the new key
known to his system:
where:
cluster2
Is the real name of cluster2 as given by the mmlscluster command on a node in cluster2.
cluster2_id_rsa.pub
Is the name of the file obtained from the administrator of cluster2 in Step “2” on page 470.
This permits the cluster desiring to mount the file system to continue mounting file systems owned by
cluster1.
4. The system administrator of cluster2 verifies that the administrator of cluster1 has received the
new key and activated it using the mmauth update command.
5. On cluster2, the system administrator issues the mmauth genkey commit command to commit
the new key as the only valid access key. The old key will no longer be accepted once this command
completes successfully:
NIST compliance
The nistCompliance configuration variable allows the system administrator to restrict the set of
available algorithms and key lengths to a subset of those approved by NIST.
mmchconfig nistCompliance=off
command on the version 4.1 cluster, before the mmremotecluster add command can be issued. The
key exchange will work even if the version 4.1 cluster already has a NIST-compliant key.
If remote clusters are present, follow the procedure described in the “Changing security keys with remote
access” on page 469 section (under Chapter 29, “Accessing a remote GPFS file system,” on page 457) to
update the key on the remote clusters.
Once all nodes in the cluster are running at least version 4.1, run the following command from one of the
nodes in the cluster:
mmchconfig release=LATEST
From one of the nodes in the cluster, run the following command:
mmchconfig nistCompliance=SP800-131A
For clusters at the version 5.1 level or higher, setting nistCompliance to off is not allowed. The
nistCompliance value must be set to SP800-131A. The existing clusters that are running with
nistCompliance value set to off must be changed to SP800-131A before migrating the cluster to the
version 5.1 level. The nistCompliance value can be changed to SP800-131A at the same time when
the cluster is being migrated to the version 5.1 level.
If you want to set the nistCompliance value to off or continue to upgrade the version 5.1 level or
higher with nistCompliance value set to off, use the option --accept-no-compliance-to-nist-
standards. For more information, see the topic Completing the upgrade to a new level of IBM Spectrum
Scale in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
Note: It is not recommended to use the --accept-no-compliance-to-nist-standards option and
this option might not be available in the subsequent releases.
Storage pools
Physically, a storage pool is a collection of disks or RAID arrays. Storage pools also allow you to group
multiple storage systems within a file system.
Using storage pools, you can create tiers of storage by grouping storage devices based on performance,
locality, or reliability characteristics. For example, one pool could be an enterprise class storage system
that hosts high-performance Fibre Channel disks and another pool might consist of numerous disk
controllers that host a large set of economical SATA disks.
There are two types of storage pools in GPFS, internal storage pools and external storage pools. Internal
storage pools are managed within GPFS. External storage pools are managed by an external application
such as IBM Spectrum Protect. For external storage pools, GPFS provides tools that allow you to define an
interface that your external storage manager uses to access your data. GPFS does not manage the data
placed in external storage pools. Instead, GPFS manages the movement of data to and from external
storage pools. Storage pools allow you to perform complex operations such as moving, mirroring, or
deleting files across multiple storage devices, providing storage virtualization and a single management
context.
Internal GPFS storage pools are meant for managing online storage resources. External storage pools are
intended for use as near-line storage and for archival and backup operations. However, both types of
storage pools provide you with a method to partition file system storage for considerations such as:
• Improved price-performance by matching the cost of storage to the value of the data
pool=dataPoolA
If a storage pool is not specified, the disk is by default assigned to the system storage pool.
The metadata-block-size flag on the mmcrfs command can be used to create a system pool with a
different block size from the user pools. This can be especially beneficial if the default block size is larger
than 1 MB. If data and metadata block sizes differ, the system pool must contain only metadataOnly
disks. For more information, see the topic Block size in the IBM Spectrum Scale: Concepts, Planning, and
Installation Guide.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 475
3. Rebalance the data across all disks in the new storage pool by issuing the mmrestripefs -P
command.
mmlsfs fs1 -P
For file system fs1, there are three storage pools: the system storage pool and user storage pools named
sp1 and sp2.
mmlsattr -L myfile
File myfile is assigned to the storage pool named sp1 and is part of the root fileset.
This example shows that storage pool sp1 in file system fs1 consists of eight disks and identifies details
for each disk including:
• Name
• Size
• Failure group
• Data type
• Free space
Chapter 30. Information lifecycle management for IBM Spectrum Scale 477
means that if you are going to replicate the entire file system, every storage pool in the file system must
have at least two failure groups.
Note: Depending on the configuration of your file system, if you try to enable file replication in a storage
pool having only one failure group, GPFS will either give you a warning or an error message.
With external pools, GPFS provides metadata processing and the flexibility of using extended file
attributes. The external storage manager is responsible for moving files from GPFS and returning them
upon the request of an application accessing the file system. Therefore, when you are using external
storage pools, you must use an external file management application such as IBM Spectrum Protect. The
external application is responsible for maintaining the file once it has left the GPFS file system. For
example, GPFS policy rules create a list of files that are eligible for migration. GPFS hands that list to IBM
Spectrum Protect which migrates the files to tape and creates a reference file in the file system that has
pointers to the tape image. When a file is requested, it is automatically retrieved from the external storage
pool and placed back in an internal storage pool. As an alternative, you can use a GPFS policy rule to
retrieve the data in advance of a user request.
The number of external storage pools is only limited by the capabilities of your external application. GPFS
allows you to define external storage pools at any time by writing a policy that defines the pool and makes
that location known to GPFS. External storage pools are defined by policy rules and initiated by either
storage thresholds or use of the mmapplypolicy command.
For additional information, refer to “Working with external storage pools” on page 518.
Related concepts
Internal storage pools
Internal GPFS storage pools are controlled by GPFS policies and commands. There are two types of
internal GPFS storage pools, the required system storage pool and up to seven optional user storage
Overview of policies
A policy is a set of rules that describes the life cycle of user data based on the attributes of files. Each rule
defines an operation or definition, such as "migrate to a pool and replicate the file."
You can perform the following tasks with rules:
• Initial file placement
• Snapshot data placement
• File management
• Restoring file data
• Encryption-specific uses. For more information, see the topic Encryption in the IBM Spectrum Scale:
Command and Programming Reference.
• File compression and decompression. For more information about file compression and decompression,
see the topics “Policy rules: Terms” on page 483 and “File compression” on page 180.
When a file is created or restored, the placement policy determines the location of the file's data and
assigns the file to a storage pool. All data written to that file is placed in the assigned storage pool.
Similarly, if the file system has snapshots and a file is written to, the snapshot placement policy
determines the storage pool where the snapshot blocks are placed.
The placement policy defining the initial placement of newly created files, snapshot data, and the rules for
placement of restored data must be installed into GPFS with the mmchpolicy command. If a GPFS file
system does not have a placement policy installed, all the data is stored in the first data storage pool.
Only one placement policy can be installed at a time. If you switch from one placement policy to another,
or make changes to a placement policy, that action has no effect on existing files. However, newly created
files are always placed according to the currently installed placement policy.
The management policy determines file management operations such as migration, deletion, and file
compression or decompression.
In order to migrate or delete data, you must use the mmapplypolicy command. To compress or
decompress data, you can use either the mmapplypolicy command with a MIGRATE rule or the
mmchattr command. You can define the file management rules and install them in the file system
together with the placement rules. As an alternative, you may define these rules in a separate file and
explicitly provide them to mmapplypolicy using the -P option. In either case, policy rules for placement
Chapter 30. Information lifecycle management for IBM Spectrum Scale 479
or migration may be intermixed. Over the life of the file, data can be migrated to a different storage pool
any number of times, and files can be deleted or restored.
Note: In a multicluster environment, the scope of the mmapplypolicy command is limited to the nodes
in the cluster that owns the file system.
Note: File compression or decompression using the mmapplypolicy command is not supported on the
Windows operating system.
File management rules can also be used to control the space utilization of GPFS online storage pools.
When the utilization for an online pool exceeds the specified high threshold value, GPFS can be
configured, through user exits, to trigger an event that can automatically start mmapplypolicy and
reduce the utilization of the pool. Using the mmaddcallback command, you can specify a script that will
run when such an event occurs. For more information, see the topic mmaddcallback command in the IBM
Spectrum Scale: Command and Programming Reference.
GPFS performs error checking for file-placement policies in the following phases:
• When you install a new policy, GPFS checks the basic syntax of all the rules in the policy.
• GPFS also checks all references to storage pools. If a rule in the policy refers to a storage pool that does
not exist, the policy is not installed and an error is returned.
• When a new file is created, the rules in the active policy are evaluated in order. If an error is detected,
GPFS logs an error, skips all subsequent rules, and returns an EINVAL error code to the application.
• Otherwise, the first applicable rule is used to store the file data.
Default file placement policy:
When a GPFS file system is first created, the default file placement policy is to assign all files to the
system storage pool. You can go back to the default policy by running the command:
For more information on using GPFS commands to manage policies, see “Managing policies” on page 511.
Related concepts
Policy rules
A policy rule is an SQL-like statement that tells GPFS what to do with the data for a file in a specific
storage pool if the file meets specific criteria. A rule can apply to any file being created or only to files
being created within a specific fileset or group of filesets.
The mmapplypolicy command and policy rules
The mmapplypolicy command has policy rules that are based on the characteristics of different phases.
Working with external storage pools
With external storage pools you can migrate files to storage pools managed by an external application
such as IBM Spectrum Protect.
Backup and restore with storage pools
When you back up data or restore data to a storage pool, consider the following descriptions.
ILM for snapshots
ILM for snapshots can be used to migrate snapshot data.
Related tasks
Managing policies
Policies and the rules that they contain are used to assign files to specific storage pools.
Related reference
Policy rules: Examples and tips
Policy rules
A policy rule is an SQL-like statement that tells GPFS what to do with the data for a file in a specific
storage pool if the file meets specific criteria. A rule can apply to any file being created or only to files
being created within a specific fileset or group of filesets.
A policy rule specifies one or more conditions that, when true, cause the rule to be applied. Conditions
can be specified by SQL expressions, which can include SQL functions, variables, and file attributes. Some
of the many available file attributes are shown in the following list. For more information, see “File
attributes in SQL expressions” on page 489:
• Date and time when the rule is evaluated, that is, the current date and time
• Date and time when the file was last accessed
• Date and time when the file was last modified
• Fileset name
• File name or extension
• File size
• User ID and group ID
Note: Some file attributes are not valid in all types of policy rules.
GPFS evaluates policy rules in order, from first to last, as they appear in the policy. The first rule that
matches determines what is to be done with that file. For example, when a client creates a file, GPFS
scans the list of rules in the active file placement policy to determine which rule applies to the file. When a
rule applies to the file, GPFS stops processing the rules and assigns the file to the appropriate storage
pool. If no rule applies, an EINVAL error code is returned to the application.
There are nine types of policy rules that allow you to define specific actions that GPFS will implement on
the file data. Each rule has clauses that control candidate selection, namely when the rule is allowed to
match a file, what files it will match, the order to operate on the matching files and additional attributes to
show for each candidate file. Different clauses are permitted on different rules based upon the semantics
of the rule.
Related concepts
Overview of policies
A policy is a set of rules that describes the life cycle of user data based on the attributes of files. Each rule
defines an operation or definition, such as "migrate to a pool and replicate the file."
The mmapplypolicy command and policy rules
The mmapplypolicy command has policy rules that are based on the characteristics of different phases.
Working with external storage pools
With external storage pools you can migrate files to storage pools managed by an external application
such as IBM Spectrum Protect.
Backup and restore with storage pools
When you back up data or restore data to a storage pool, consider the following descriptions.
ILM for snapshots
ILM for snapshots can be used to migrate snapshot data.
Related tasks
Managing policies
Policies and the rules that they contain are used to assign files to specific storage pools.
Related reference
Policy rules: Examples and tips
Chapter 30. Information lifecycle management for IBM Spectrum Scale 481
Before you write and apply policies, consider the following advice.
RULE ['RuleName']
SET POOL 'PoolName'
[LIMIT (OccupancyPercentage)]
[REPLICATE (DataReplication)]
[FOR FILESET ('FilesetName'[,'FilesetName']...)]
[ACTION (SqlExpression)]
[WHERE SqlExpression]
RULE ['RuleName']
SET SNAP_POOL 'PoolName'
[LIMIT (OccupancyPercentage)]
[REPLICATE (DataReplication)]
[FOR FILESET ('FilesetName'[,'FilesetName']...)]
[ACTION (SqlExpression)]
[WHERE SqlExpression]
• Group pool rule; used to define a list of pools that may be used as a pseudo-pool source or destination
in either a FROM POOL or TO POOL clause within another rule
For more information about file compression and decompression, see the topic “Policy rules: Terms” on
page 483 and the topic File compression in the IBM Spectrum Scale: Administration Guide.
• File deletion rule
RULE ['RuleName']
RESTORE TO POOL 'PoolName'
[LIMIT (OccupancyPercentage)]
[REPLICATE (DataReplication)]
[FOR FILESET ('FilesetName'[,'FilesetName']...)]
[ACTION (SqlExpression)]
[WHERE SqlExpression]
RULE ['RuleName']
EXTERNAL POOL 'PoolName'
EXEC 'InterfaceScript'
[OPTS 'OptionsString ...']
[ESCAPE '%SpecialCharacters']
[SIZE sum-number]
RULE ['RuleName']
EXTERNAL LIST 'ListName'
EXEC 'InterfaceScript'
[OPTS 'OptionsString ...']
[ESCAPE '%SpecialCharacters']
[THRESHOLD 'ResourceClass']
[SIZE sum-number]
rule 's6' set pool 'system' action(setxattr('user.action','set pool s6')) where name like
'sp%'
Chapter 30. Information lifecycle management for IBM Spectrum Scale 483
z
Cold data. Favors compression efficiency over access speed.
lz4
Active, nonspecific data. Favors access speed over compression efficiency.
zfast
Active genomic data in FASTA, SAM, or VCF format.
alphae
Active genomic data in FASTQ format. Slightly favors compression efficiency over access speed.
alphah
Active genomic data in FASTQ format. Slightly favors access speed over compression efficiency.
The following table summarizes the effect of each option on uncompressed or compressed files:
For more information, see the topic File compression in the IBM Spectrum Scale: Administration Guide.
Examples:
• The following rule compresses the files in the pool datapool that begin with the string green%.
Because the policy term COMPRESS specifies yes instead of a compression library, compression is
done with the default compression library, which is the z library.
RULE 'COMPR1' MIGRATE FROM POOL 'datapool' COMPRESS('yes') WHERE NAME LIKE 'green%'
• The following rule compresses genomic data in files with the extensions .fastq and .fq:
RULE ’COMPRESS_GENOMIC’ MIGRATE COMPRESS('alphae') WHERE lower(NAME) LIKE ’%.fastq’ OR lower(NAME)
LIKE ’%.fq’
DIRECTORIES_PLUS
Indicates that non-regular file objects (directories, symbolic links, and other items) must be included
in the list. If not specified, only ordinary data files are included in the candidate lists.
DELETE
Identifies a file deletion rule. A file that matches this rule becomes a candidate for deletion.
ESCAPE '%SpecialCharacters'
Specifies that path names and the SHOW('string') expressions within the associated file lists are
encoded with a scheme based on RFC3986 URI percent encoding.
Compare the two following rules:
Both rules specify that all characters except the "unreserved" characters in the set a-zA-Z0-9-_.~
are encoded as %XX, where XX comprises two hexadecimal digits.
However, the GPFS ESCAPE syntax adds to the set of "unreserved" characters. In the first rule, the
syntax ESCAPE '%' specifies a rigorous RFC3986 encoding. Under this rule, a path name such as /
root/directory/@abc+def#ghi.jkl appears in a file list in the following format:
%2Froot%2Fdirectory%2F%40abc%2Bdef%23ghi.jkl
In the second rule, the syntax ESCAPE '%/+@#' specifies that none of the characters in set /+@# are
escaped. Under this rule, the same path name appears in a file list in the following format:
/root/directory/@abc+def#ghi.jkl
If you omit the ESCAPE clause, the newline character is escaped as '\n', and the backslash
character is escaped as '\\'; all other characters are presented as is, without further encoding.
EXCLUDE
Identifies a file exclusion rule.
RULE ’x’ EXCLUDE
A file that matches this form of the rule is excluded from further consideration by any MIGRATE or
DELETE rules that follow.
RULE 'rule-name' LIST ’listname-y’ EXCLUDE
A file that matches this form of the rule is excluded from further consideration by any LIST rules
that name the same listname-y.
EXEC 'InterfaceScript'
Specifies an external program to be invoked to pass requests to an external storage management
application. InterfaceScript must be a fully qualified path name to a user-provided script or program
that supports the commands described in “User-provided program for managing external pools” on
page 520.
EXTERNAL LIST ListName
Defines an external list. This rule does not match files. It provides the binding between the lists that
are generated with regular LIST rules with a matching ListName and the external program that you
want to run with these lists as input.
EXTERNAL POOL PoolName
Defines an external storage pool. This rule does not match files but defines the binding between the
policy language and the external storage manager that implements the external storage.
FOR FILESET ('FilesetName'[,'FilesetName']...)
Specifies that the rule applies only to files within the specified filesets.
FROM POOL FromPoolName
Specifies the name of the source pool from which files are candidates for migration.
GROUP POOL PoolName
Defines a group pool. This rule supports the concept of distributing data files over several GPFS disk
pools.
Optionally, a LIMIT, specified as an occupancy percentage, can be specified for each disk pool; if not
specified, the limit defaults to 99%. The THEN keyword signifies that disk pools that are specified
before a THEN keyword are preferred over disk pools that are specified after. When a pool that is
defined by a GROUP POOL rule is the TO POOL target of a MIGRATE rule, the selected files are
distributed among the disk pools that comprise the group pool. Files of highest weight are put into the
most preferred disk pool up to the occupancy limit for that pool. If more files must be migrated, they
are put into the second most preferred pool up to the occupancy limit for that pool. Again, files of
highest weight are selected.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 485
If you specify a file that is defined by a GROUP POOL rule in a FROM POOL clause, the clause matches
any file in any of the disk pools in the group pool.
You can “repack” a group pool by WEIGHT. Migrate files of higher weight to preferred disk pools by
specifying a group pool as both the source and the target of a MIGRATE rule.
rule 'grpdef' GROUP POOL 'gpool' IS 'ssd' LIMIT(90) THEN 'fast' LIMIT(85) THEN 'sata'
rule 'repack' MIGRATE FROM POOL 'gpool' TO POOL 'gpool' WEIGHT(FILE_HEAT)
For testing or planning purposes, and when you use the mmapplypolicy command with the -I
defer or -I test option, you can specify a LIMIT larger than 100%.
The limit clause does not apply when the target TO POOL is a GROUP POOL. The limits that are
specified in the rule that defines the target GROUP POOL govern the action of the MIGRATE rule.
LIST ListName
Identifies a file list generation rule. A file can match more than one list rule but appears in a list only
once. ListName provides the binding to an EXTERNAL LIST rule that specifies the executable
program to call when the generated list is processed.
MIGRATE
Identifies a file migration rule. A file that matches this rule becomes a candidate for migration to the
pool specified by the TO POOL clause.
OPTS 'OptionsString ...'
Specifies optional parameters to be passed to the external program defined with the EXEC clause.
OptionsString is not interpreted by the GPFS policy engine.
REPLICATE (DataReplication)
Overrides the default data replication factor. This value must be specified as 1, 2, or 3.
RESTORE TO POOL PoolName
where Identifies a file restore rule. When you restore a file with the
gpfs_fputattrswithpathname() subroutine, you can use this rule to match files against their
saved attributes rather than the current file attributes. This rule also applies to a command that uses
that subroutine, such as the IBM Spectrum Protect command dsmc restore.
RULE ['RuleName']
Initiates the rule statement. RuleName identifies the rule and is used in diagnostic messages.
SET POOL {PoolName | EXCLUDE}
Identifies an initial file placement rule.
PoolName
Specifies the name of the storage pool where all files that match the rule criteria are placed.
EXCLUDE
Specifies that files that match the rule criteria are excluded from further consideration and will not
be stored in any pool. If you try to create a file that matches a SET POOL EXCLUDE rule, the file
system API returns the error ENOSPC.
SET SNAP_POOL PoolName
Identifies an initial snapshot placement rule. PoolName specifies the name of the storage pool where
all snapshot files that match the rule criteria are placed.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 487
GROUP_QUOTAS
Indicates that the LIST rule must use the occupancy percentage of the "hard limit" group
quota per the mmlsquota and mmedquota commands.
GROUP_QUOTA_SOFT
Indicates that the LIST rule must use the occupancy percentage of the "soft limit" group
quota per the mmlsquota and mmedquota commands.
POOL_CAPACITIES
Indicates that the LIST rule uses the occupancy percentage of the pool when it applies the
threshold rule. This value is the default value. This value is used if the threshold is not
specified in the EXTERNAL LIST rule but appears in the LIST rule.
USER_QUOTAS
Indicates that the LIST rule uses the occupancy percentage of the "hard limit" user quota per
the mmlsquota and mmedquota commands.
USER_QUOTA_SOFT
Indicates that the LIST rule uses the occupancy percentage of the "soft limit" user quota per
the mmlsquota and mmedquota commands.
Note: This option does not apply when the current rule operates on one group pool.
For more detail on how THRESHOLD can be used to control file migration and deletion, see “Phase
one: Selecting candidate files” on page 501 and “Pre-migrating files with external storage pools” on
page 523.
TO POOL ToPoolName
Specifies the name of the storage pool to which all the files that match the rule criteria are migrated.
This phrase is optional if the COMPRESS keyword is specified.
WEIGHT (WeightExpression)
Establishes an order on the matching files. Specifies an SQL expression with a numeric value that can
be converted to a double-precision floating point number. The expression can refer to any of the file
attributes and can include any constants and any of the available SQL operators or built-in functions.
WHEN (TimeBooleanExpression)
Specifies an SQL expression that evaluates to TRUE or FALSE, depending only on the SQL built-in
variable CURRENT_TIMESTAMP. If the WHEN clause is present and TimeBooleanExpression evaluates
to FALSE, the rule is skipped.
The mmapplypolicy command assigns the CURRENT_TIMESTAMP when it begins processing. It uses
either the actual Coordinated Universal Time date and time or the date specified with the -D option.
WHERE SqlExpression
Specifies an SQL expression that can reference file attributes as SQL variables, functions, and
operators. Some attributes are not available to all rules. Compares the file attributes specified in the
rule with the attributes of the file that is created.
SqlExpression must be an expression that evaluates to TRUE or FALSE, but can be any combination of
standard SQL syntax expressions, including built-in functions.
Omitting the WHERE clause entirely is equivalent to writing WHERE TRUE. The WHERE clause must be
the last clause of the rule.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 489
The following rule causes files within the same directory to be grouped and processed together during
deletion. Grouping the files can improve the performance of GPFS directory-locking and caching.
EXPIRATION_TIME
Specifies the expiration time of the file, expressed as an SQL time-stamp value. If the expiration time
of a file is not set, its expiration time is SQL NULL. You can detect such files by checking for
"EXPIRATION_TIME IS NULL".
Remember the following points:
• EXPIRATION_TIME is tracked independently from ACCESS_TIME and both values are maintained for
immutable files.
• Expiration time and indefinite retention are independent attributes. You can change the value of
either one without affecting the value of the other.
FILE_HEAT
Specifies the access temperature of a file based on the frequency of file access. With FILE_HEAT you
can build policy rules that migrate "hotter", more frequently accessed files to faster tiers of storage
and "cooler", less frequently accessed files to slower tiers of storage. For more information see “File
heat: Tracking file access temperature” on page 527.
Note: The FILE_HEAT attribute is updated only when the atime attribute is updated. Be aware that
the -S options of the mmcrfs command and the mmcrfs command control whether and when atime
is updated. You can also override the -S option temporarily with mount options that are specific to
IBM Spectrum Scale. For more information, see the topics mmchfs command and mmcrfs command in
the IBM Spectrum Scale: Command and Programming Reference and atime values in the IBM Spectrum
Scale: Concepts, Planning, and Installation Guide.
FILE_SIZE
Specifies the current size or length of the file, in bytes.
FILESET_NAME
Specifies the fileset where the path name for the files is located, or is to be created.
Note: Using the FOR FILESET clause has the same effect and is more efficient to evaluate.
GENERATION
Specifies a number that is incremented whenever an INODE number is reused.
GROUP_ID
Specifies the numeric group ID of the file's group.
GROUP_NAME
Specifies the group name that is associated with GROUP_ID.
INODE
Specifies the file's inode number.
KB_ALLOCATED
Specifies the number of kilobytes of disk space allocated for the file data.
MODE
Displays the type and permission bits of a file as a 10-character string. The string has the same format
as the first 10 characters of the output from the UNIX ls -l command. For example, -rwxr-xr-x is
the MODE string of a file that can be read or executed by its owner, its group, or any user, but written
only by its owner.
The first character of the MODE attributes displays the file type. The following values are supported:
d
Directory.
l
Link.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 491
m
Empty directory.
M
Co-managed.
2
Data blocks are replicated.
o
Offline.
O
Other (not F, D, nor L). For example, a device or named pipe.
p
Reparse point. A Microsoft Windows file attribute.
P
Active File Management (AFM) summary flag. Indicates that at least one specific AFM flag is set:
j, k, u, v, w, x, y, or z.
r
Has streams. A Microsoft Windows file attribute.
R
Read-only.
s
Sparse. A Microsoft Windows file attribute.
S
System. A Microsoft Windows file attribute.
t
Temporary. A Microsoft Windows file attribute.
u
File is cached. Internal to AFM.
U
The file is trunc-managed.
v
AFM create flag.
V
Read-managed.
w
AFM dirty data flag.
W
Write-managed.
x
AFM hard-linked flag.
X
Immutability.
y
AFM attribute-changed flag.
Y
Indefinite retention.
z
AFM local flag.
Z
Secure deletion.
Notes:
1. When file attributes are referenced in initial placement rules, only the following attributes are valid:
CREATION_TIME, FILESET_NAME, GROUP_ID, MODE, NAME, SNAP_NAME, and USER_ID. The
placement rules, like all rules with a clause, might also reference the current date and current time and
use them to control matching.
2. When file attributes are used for restoring files, the attributes correspond to the attributes at the time
of the backup, not to the current restored file.
3. For SQL expressions, if you want to show any of these attribute fields as strings (for example,
FILE_HEAT), use SHOW('[FILE_HEAT]') rather than SHOW('FILE_HEAT'), as the latter is
expanded.
4. All date attributes are evaluated in Coordinated Universal Time (a time standard abbreviated as UTC).
5. Note: To test whether a file is encrypted by IBM Spectrum Scale, do one of the following actions:
• In a policy, use the following condition:
mmlsattr -L FileName
Chapter 30. Information lifecycle management for IBM Spectrum Scale 493
Using built-in functions
With GPFS, you can use built-in functions in comparison predicates, between predicates, in predicates,
like predicates, mathematical value expressions, and boolean, string and numeric literals.
You may omit the last or both arguments. The defaults are effectively
GetXattrs('*','key^n=hexvalue,').
The GetXattrs function returns an empty string for files that have no extended attributes with keys
that match pattern.
The GetXattrs function is supported by the mmapplypolicy command, but it might return NULL in
other contexts.
SetBGF(BlockGroupFactor)
Specifies how many file system blocks are laid out sequentially on disk to behave like a single large
block. This option only works if --allow-write-affinity is set for the data pool. This applies only
to a new data block layout; it does not migrate previously existing data blocks.
SetWAD(WriteAffinityDepth)
Specifies the allocation policy to be used. This option only works if --allow-write-affinity is set
for the data pool. This applies only to a new data block layout; it does not migrate previously existing
data blocks.
SetWADFG("WadfgValueString")
Indicates the range of nodes (in a shared nothing architecture) where replicas of blocks in the file are
to be written. You use this parameter to determine the layout of a file in the cluster so as to optimize
the typical access patterns of your applications. This applies only to a new data block layout; it does
not migrate previously existing data blocks.
"WadfgValueString" is a semicolon-separated string identifying one or more failure groups in the
following format:
FailureGroup1[;FailureGroup2[;FailureGroup3]]
where each FailureGroupx is a comma-separated string identifying the rack (or range of racks),
location (or range of locations), and node (or range of nodes) of the failure group in the following
format:
Rack1{:Rack2{:...{:Rackx}}},Location1{:Location2{:...{:Locationx}}},ExtLg1{:ExtLg2{:...
{:ExtLgx}}}
1,1,1:2;2,1,1:2;2,0,3:4
means that the first failure group is on rack 1, location 1, extLg 1 or 2; the second failure group is on
rack 2, location 1, extLg 1 or 2; and the third failure group is on rack 2, location 0, extLg 3 or 4.
If the end part of a failure group string is missing, it is interpreted as 0. For example, the following are
interpreted the same way:
2
2,0
2,0,0
Notes:
1. Only the end part of a failure group string can be left off. The missing end part may be the third
field only, or it may be both the second and third fields; however, if the third field is provided, the
second field must also be provided. The first field must always be provided. In other words, every
comma must both follow and precede a number; therefore, none of the following are valid:
2,0,
2,
,0,0
0,,0
,,0
After installing this policy, a newly created file will have the same values for these three extended
attributes as it would if mmchattr were used to set them:
SetXattr('ExtendedAttributeName', 'ExtendedAttributeValue')
This function sets the value of the specified extended attribute of a file.
Successful evaluation of SetXattr in a policy rule returns the value TRUE and sets the named
extended attribute to the specified value for the file that is the subject or object of the rule. This
function is effective for policy rules (like MIGRATE and LIST) that are evaluated by mmapplypolicy
and for the policy placement rule, SET POOL, when a data file is about to be created.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 495
XATTR(extended-attribute-name [, start [, length]])
Returns the value of a substring of the extended attribute that is named by its argument as an SQL
VARCHAR value, where:
extended-attribute-name
Specifies any SQL expression that evaluates to a character string value. If the named extended
attribute does not exist, XATTR returns the special SQL value NULL.
Note: In SQL, the expression NULL || AnyValue yields NULL. In fact, with a few exceptions, the
special SQL value of NULL "propagates" throughout an SQL expression, to yield NULL. A notable
exception is that (expression) IS NULL always yields either TRUE or FALSE, never NULL.
For example, if you wish to display a string like _NULL_ when the value of the extended attribute
of a file is NULL you will need to code your policy rules file like this:
define(DISPLAY_NULL,[COALESCE($1,'_NULL_')])
rule external list 'a' exec ''
rule list 'a' SHOW(DISPLAY_NULL(xattr('user.marc')) || ' and ' ||
DISPLAY_NULL(xattr('user.eric')))
Here is an example execution, where either or both of the values of the two named extended
attributes may be NULL:
XATTR_INTEGER('xyz.jim',5,-1,'DECIMAL')
String functions
You can use these string-manipulation functions on file names and literal values.
Important tips:
1. You must enclose strings in single-quotation marks.
2. You can include a single-quotation mark in a string by using two single-quotation marks. For example,
'a''b' represents the string a'b.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 497
CHAR(expr[, length])
Returns a fixed-length character string representation of its expr argument, where:
expr
Can be any data type.
length
If present, must be a literal, integer value.
The resulting type is CHAR or VARCHAR, depending upon the particular function called.
The string that CHAR returns is padded with blanks to fill the length of the string. If length is not
specified, it defaults to a value that depends on the type of the argument (expr).
Note: The maximum length of a CHAR (fixed length string) value is 255 bytes. The result of evaluating
an SQL expression whose result is type CHAR may be truncated to this maximum length.
CONCAT(x,y)
Concatenates strings x and y.
HEX(x)
Converts an integer x into hexadecimal format.
LENGTH(x)
Determines the length of the data type of string x.
LOWER(x)
Converts string x into lowercase.
REGEX(String,'Pattern')
Returns TRUE if the pattern matches, FALSE if it does not. Pattern is a Posix extended regular
expression.
Note: The policy SQL parser normally performs M4 macro preprocessing with square brackets set as
the quote characters. Therefore, it is recommended that you add an extra set of square brackets
around your REGEX pattern string; for example:
NOT REGEX(STRING_VALUE,['^[^z]*$|^[^y]*$|^[^x]*$|[abc]'])
can be used to test if STRING_VALUE contains all of the characters x, y, and z, in any order, and none
of the characters a, b, or c.
REGEXREPLACE(string,pattern,result-prototype-string)
Returns a character string as result-prototype-string with occurrences of \i (where i is 0 through 9)
replaced by the substrings of the original string that match the ith parenthesis delimited parts of the
pattern string. For example:
When pattern does not match string, REGEXREPLACE returns the value NULL.
When a \0 is specified in the result-prototype-string, it is replaced by the substring of string that
matches the entire pattern.
SUBSTR(x,y,z)
Extracts a portion of string x, starting at position y, optionally for z characters (otherwise to the end of
the string). This is the short form of SUBSTRING. If y is a negative number, the starting position is
counted from the end of the string; for example, SUBSTR('ABCDEFGH',-3,2) == 'FG'.
Note: Do not confuse SUBSTR with substr. substr is an m4 built-in macro function.
Numerical functions
You can use numeric-calculation functions to place files based on either numeric parts of the file name,
numeric parts of the current date, or UNIX-client user IDs or group IDs.
These functions can be used in combination with comparison predicates and mathematical infix operators
(such as addition, subtraction, multiplication, division, modulo division, and exponentiation).
INT(x)
Converts number x to a whole number, rounding up fractions of .5 or greater.
INTEGER(x)
Converts number x to a whole number, rounding up fractions of .5 or greater.
MOD(x,y)
Determines the value of x taken modulo y (x % y).
Chapter 30. Information lifecycle management for IBM Spectrum Scale 499
HOUR(x)
Determines the hour of the day (a value from 0 to 23) of timestamp x.
MINUTE(x)
Determines the minute from timestamp x.
MONTH(x)
Determines the month of the year from date or timestamp x.
QUARTER(x)
Determines the quarter of year from date x. Quarter values are the numbers 1 through 4. For example,
January, February, and March are in quarter 1.
SECOND(x)
Returns the seconds portion of timestamp x.
TIMESTAMP(sql-numeric-value) or TIMESTAMP(sql-character-string-value)
Accepts any numeric value. The numeric value is interpreted as the number of seconds since January
1, 1970 (the standard UNIX epoch) and is converted to an SQL TIMESTAMP value.
Signed 64-bit LARGEINT argument values are supported. Negative argument values cause
TIMESTAMP to convert these values to timestamps that represent years before the UNIX epoch.
This function also accepts character strings of the form YYYY-MM-DD HH:MM:SS. A hyphen (-) or an at
sign (@) might appear instead of the blank between the date and the time. The time can be omitted.
An omitted time defaults to 00:00:00. The :SS field can be omitted, which defaults to 00.
WEEK(x)
Determines the week of the year from date x.
YEAR(x)
Determines the year from date or timestamp x.
All date and time functions use Universal Time (UT).
/*
Sample GPFS policy rules file
*/
Chapter 30. Information lifecycle management for IBM Spectrum Scale 501
For each file, the policy rules are considered, in order, from first rule to last:
• If the rule has a WHEN clause that evaluates to FALSE, the rule is skipped.
• If the rule has a FROM POOL clause, and the named pool does not match the POOL_NAME attribute of
the file, the rule is skipped. A FROM POOL clause that specifies a group pool name matches a file if any
pool name within the group pool matches the POOL_NAME attribute of the file.
• If there is a THRESHOLD clause and the current pool of the file has an occupancy percentage that is less
than the HighPercentage parameter of the THRESHOLD clause, the rule is skipped.
• If the rule has a FOR FILESET clause, but none of the named filesets match the FILESET_NAME
attribute of the file, the rule is skipped.
• If the rule has a WHERE clause that evaluates to FALSE, the rule is skipped. Otherwise, the rule applies.
• If the applicable rule is a LIST ’listname-y’ rule, the file becomes a candidate for inclusion in the named
list unless the EXCLUDE keyword is present, in which case the file will not be a candidate; nor will any
following LIST ’listname-y’ rules be considered for the subject file. However, the file is subject to LIST
rules naming other list names.
• If the applicable rule is an EXCLUDE rule, the file will be neither migrated nor deleted. Files matching
the EXCLUDE rule are not candidates for any MIGRATE or DELETE rule.
Note: Specify the EXCLUDE rule before any other rules that might match the files that are being
excluded. For example:
will migrate all the files that are not owned by root. If the MIGRATE rule was placed in the policy file
before the EXCLUDE rule, all files would be migrated because the policy engine would evaluate the rules
from first to last, and root's files would have to match the MIGRATE rule.
To exclude files from matching a LIST rule, you must create a separate LIST rule with the EXCLUDE
clause and place it before the LIST rule.
• If the applicable rule is a MIGRATE rule, the file becomes a candidate for migration to the pool specified
by the TO POOL clause.
When a group pool is the TO POOL target of a MIGRATE rule, the selected files are distributed among
the disk pools comprising the group pool, with files of highest weight going to the most preferred disk
pool up to the occupancy limit for that pool. If there are still more files to be migrated, those go to the
second most-preferred pool up to the occupancy limit for that pool (again choosing the highest-weight
files from among the remaining selected files); and so on for the subsequent most-preferred pools, until
either all selected files have been migrated or until all the disk pools of the group pool have been filled
to their respective limits.
• If the applicable rule is a DELETE rule, the file becomes a candidate for deletion.
• If there is no applicable rule, the file is not a candidate for migration or deletion.
• Each candidate file (for migration or deletion) is also associated with a LowPercentage occupancy
percentage value, which is taken from the THRESHOLD clause of the applicable rule. If not specified, the
LowPercentage value defaults to 0%.
• Each candidate file is also associated with a numeric weight, either computed from the
WeightExpression of the applicable rule, or assigned a default using these rules:
– If a LowPercentage is specified within a THRESHOLD clause of the applicable rule, the weight of the
candidate is taken as the KB_ALLOCATED attribute of the candidate file.
– If a LowPercentage is not specified within a THRESHOLD clause of the applicable rule, the weight of
the candidate is taken as +infinity.
Related concepts
Phase two: Choosing and scheduling files
Chapter 30. Information lifecycle management for IBM Spectrum Scale 503
• DELETE
• EXTERNAL LIST
• EXTERNAL POOL
• LIST
• MIGRATE
The output shows which files are scanned and which match rules or no rules. If a problem is not apparent,
you can add a SHOW() clause to your rule to see the values of file attributes or SQL expressions. To see
multiple values, enter a command like the following one:
where ExpressionX is the SQL variable or expression of function that you suspect or do not understand.
Beware that if any expression evaluates to SQL NULL, then the entire show clause is NULL, by the rules of
SQL. One way to show null vs. non-null values is to define a macro and call it as in the following example:
Note: For examples and more information on the -L flag, see the topic The mmapplypolicy -L command in
the IBM Spectrum Scale: Problem Determination Guide.
The following examples illustrate some useful policy rule techniques:
Chapter 30. Information lifecycle management for IBM Spectrum Scale 505
1. Delete files from the storage pool that is named pool_1 that were not accessed in the last 30 days
and that are named like temporary files or appear in any directory that is named tmp:
2. Use the SQL LIKE predicate to test file names and path names:
Where:
• A percent % wildcard in the name represents zero or more characters.
• An underscore (_) wildcard in the name represents 1 byte.
Use the optional ESCAPE clause to establish an escape character, when you need to match '_' or '%'
exactly.
3. Use the SQL UPPER and LOWER functions to ignore case when testing names:
5. Use the SQL SUBSTR and LENGTH functions to test the suffix of a name:
6. Use a WHEN clause to restrict rule applicability to a particular day of the week:
CURRENT_DATE is an SQL built in operand that returns the date portion of the CURRENT_TIMESTAMP
value.
7. Use the SQL IN operator to test several possibilities:
For information on how to use a macro processor such as m4 to make reading and writing policy rules
easier, see “Using macro processing utilities with policy rules” on page 510.
8. Use a FILESET clause to restrict the rule to files within particular filesets:
In this example there is no FROM POOL clause, so regardless of their current storage pool placement,
all files from the named filesets are subject to migration to storage pool pool_2.
Note: To have the migrate rule applied to snapshot files, you must specify the mmapplypolicy fs
-S snap1 option, where snap1 is the name of the snapshot where the files reside.
Notes:
a. Specify the EXCLUDE rule before rules that might match the files that are being excluded.
b. You cannot define a list and what to exclude from the list in a single rule. You must define two LIST
statements, one specifying which files are in the list and one specifying what to exclude from the
list. For example, to exclude files that contain the word test from the LIST rule allfiles, define
the following rules:
10. Use the SQL NOT operator with keywords, along with AND and OR:
11. To migrate only snapshot files that for which data blocks are allocated, use the following rule:
RULE "migrate snap data" MIGRATE FROM POOL X TO POOL Y WHERE KB_ALLOCATED > 0
Before you increase the data replication factor for any file, the file system must be configured to
support data replication.
13. The difference of two SQL Timestamp values can be compared to an SQL Interval value:
rule 'a' migrate to pool 'A' where CURRENT_TIMESTAMP - MODIFICATION_TIME > INTERVAL '10'
DAYS
rule 'b' migrate to pool 'B' where CURRENT_TIMESTAMP - MODIFICATION_TIME > INTERVAL '10'
HOURS
rule 'c' migrate to pool 'C' where CURRENT_TIMESTAMP - MODIFICATION_TIME > INTERVAL '10'
MINUTES
rule 'd' migrate to pool 'D' where CURRENT_TIMESTAMP - MODIFICATION_TIME > INTERVAL '10'
SECONDS
Chapter 30. Information lifecycle management for IBM Spectrum Scale 507
More information about weights is available in the next example.
A goal of this mmapplypolicy job is to reduce the occupancy percentage of the FROM POOL to the
low occupancy percentage specified on the THRESHOLD clause, if possible. The mmapplypolicy job
does not migrate or delete more files than are necessary to produce this occupancy percentage. The
task consists of these steps:
a. Each candidate file is assigned a weight.
b. All candidate files are sorted by weight.
c. The highest weight files are chosen to MIGRATE or DELETE until the low occupancy percentage is
achieved, or there are no more candidates.
The administrator who writes the rules must ensure that the computed weights are as intended, and
that the comparisons are meaningful. This is similar to the IBM Spectrum Protect convention, where
the weighting function for each file is determined by the equation:
X * access_age + Y * file_size
where:
access_age is DAYS(CURRENT_TIMESTAMP) - DAYS(ACCESS_TIME)
file_size is FILE_SIZE or KB_ALLOCATED
X and Y are weight factors that are chosen by the system administrator.
15. The WEIGHT clause can be used to express ideas like this (stated informally):
CASE
WHEN DAYS(CURRENT_TIMESTAMP) – DAYS(ACCESS_TIME) > 365
THEN 100000 + DAYS(CURRENT_TIMESTAMP) – DAYS(ACCESS_TIME)
WHEN DAYS(CURRENT_TIMESTAMP) – DAYS(ACCESS_TIME) < 30
THEN 0
ELSE
KB_ALLOCATED
END
16. The SHOW clause has no effect in matching files but can be used to define additional attributes to be
exported with the candidate file lists. It can be used for any purpose but is primarily used to support
file aggregation.
To support aggregation, you can use the SHOW clause to output an aggregation value for each file that
is selected by a rule. You can then output those values to a file list and input that list to an external
program that groups the files into aggregates.
17. If you have a large number of filesets against which to test, use the FILESET_NAME variable as
shown in the following example:
However, if you are testing against just a few filesets, you can use the FOR
FILESET(’xyz1’, ’xyz2’) form instead.
18. You can convert a time interval value to a number of seconds with the SQL cast syntax, as in the
following example:
define([toUnixSeconds],[toSeconds($1 - '1970-1-1@0:00')])
19. You can create a policy that lists the files that are created, accessed, or modified later than a
specified timestamp. The timestamp must be converted from native format to UTC format. The
following example policy lists all the files that were created after the timestamp 2017-02-21 04:56
IST:
cat policy
RULE 'filesRule' LIST 'files'
SHOW(varchar(kb_allocated) || ' ' || varchar(file_size))
WHERE (CREATION_TIME > TIMESTAMP('LAST_CREATE'))
To implement this policy, enter the following commands. The third line converts the time stamp to
UTC format.
Related concepts
Overview of policies
A policy is a set of rules that describes the life cycle of user data based on the attributes of files. Each rule
defines an operation or definition, such as "migrate to a pool and replicate the file."
Policy rules
A policy rule is an SQL-like statement that tells GPFS what to do with the data for a file in a specific
storage pool if the file meets specific criteria. A rule can apply to any file being created or only to files
being created within a specific fileset or group of filesets.
The mmapplypolicy command and policy rules
The mmapplypolicy command has policy rules that are based on the characteristics of different phases.
Working with external storage pools
With external storage pools you can migrate files to storage pools managed by an external application
such as IBM Spectrum Protect.
Backup and restore with storage pools
When you back up data or restore data to a storage pool, consider the following descriptions.
ILM for snapshots
ILM for snapshots can be used to migrate snapshot data.
Related tasks
Managing policies
Chapter 30. Information lifecycle management for IBM Spectrum Scale 509
Policies and the rules that they contain are used to assign files to specific storage pools.
define(access_age,(DAYS(CURRENT_TIMESTAMP) - DAYS(ACCESS_TIME)))
define(weight_expression,
CASE
WHEN access_age > 365
THEN 100000 + access_age
WHEN access_age < 30
THEN 0
ELSE
KB_ALLOCATED
END
)
If you would like to use megabytes or gigabytes instead of kilobytes to represent file sizes, and SUNDAY,
MONDAY, and so forth instead of 1, 2, and so forth to represent the days of the week, you can use macros
and rules like this:
define(MB_ALLOCATED,(KB_ALLOCATED/1024.0))
define(GB_ALLOCATED,(KB_ALLOCATED/1048576.0))
define(SATURDAY,7)
define(SUNDAY,1)
define(MONDAY,2)
define(DAY_OF_WEEK, DayOfWeek(CURRENT_DATE))
The mmapplypolicy command provides a -M option that can be used to specify m4 macro definitions
when the command is invoked. The policy rules may include variable identifiers whose values can be set
using one or more -M options on the mmapplypolicy command. The policy rules could then compare file
attributes to the currently provided values for the macro defined variables.
Among other things, this allows you to create a single policy file and reuse it for incremental backups
without editing the file for each backup. For example, if your policy file contains the rules:
The "mig1" rule will migrate old files that were not accessed since 2006/11/30 to an online pool named
"dead". The "bak1" rule will migrate files that have changed since the 2006_DEC snapshot to an external
pool named "archive". When the external script /opts/hpss/archiveScript is invoked, its
arguments will include "-server archive.abc.com".
Managing policies
Policies and the rules that they contain are used to assign files to specific storage pools.
A storage pool typically contains a set of volumes that provide a specific quality of service for a specific
use, such as to store all files for a particular application or a specific business division.
Managing policies includes:
• “Creating a policy” on page 511
• “Installing a policy” on page 512
• “Changing the active policy” on page 514
• “Listing policies” on page 515
• “Validating policies” on page 515
• “Deleting policies” on page 516
Related concepts
Overview of policies
A policy is a set of rules that describes the life cycle of user data based on the attributes of files. Each rule
defines an operation or definition, such as "migrate to a pool and replicate the file."
Policy rules
A policy rule is an SQL-like statement that tells GPFS what to do with the data for a file in a specific
storage pool if the file meets specific criteria. A rule can apply to any file being created or only to files
being created within a specific fileset or group of filesets.
The mmapplypolicy command and policy rules
The mmapplypolicy command has policy rules that are based on the characteristics of different phases.
Working with external storage pools
With external storage pools you can migrate files to storage pools managed by an external application
such as IBM Spectrum Protect.
Backup and restore with storage pools
When you back up data or restore data to a storage pool, consider the following descriptions.
ILM for snapshots
ILM for snapshots can be used to migrate snapshot data.
Related reference
Policy rules: Examples and tips
Before you write and apply policies, consider the following advice.
Creating a policy
Create a text file for your policy by following these guidelines.
• A policy must contain at least one rule.
• A policy file is limited to a size of 1 MB.
• When a file placement policy is applied to a file, the policy engine scans the list of rules in the policy in
order, starting at the top, to determine which rule applies to the file. When the policy engine finds a rule
Chapter 30. Information lifecycle management for IBM Spectrum Scale 511
that applies to the file, it stops processing the rules and assigns the file to the appropriate storage pool.
If no rule applies, the policy engine returns an EINVAL error code to the application.
Note: The last placement rule of a policy rule list should be in the following form so that the file is
assigned to a default pool if no other placement rule applies:
For file systems that are upgraded to V4.1.1 or later: If there are no SET POOL policy rules installed
to a file system by mmchpolicy, the system acts as if the single rule SET POOL 'first-data-pool' is in
effect, where first-data-pool is the firstmost non-system pool that is available for file data storage, if
such a non-system pool is available. ("Firstmost" is the first according to an internal index of all pools.)
However, if there are no policy rules installed and there is no non-system pool, the system acts as if SET
POOL 'system' is in effect.
For file systems that are upgraded to V4.1.1: Until a file system is upgraded, if no SET POOL rules are
present (set by mmchpolicy) for the file system, all data is stored in the 'system' pool.
• Comments within a policy must start with a /* and end with a */:
/* This is a comment */
For more information, see the topic “Policy rules” on page 481.
Related concepts
Using thresholds to migrate data between pools
Exhausting space in any one online storage pool generates a NO_SPACE event even though there might be
space available in other online storage pools. To create free space, file data can be moved to other online
storage pools, deleted, or moved to external storage pools.
Improvements in performance in very large file systems
Read about how to improve the performance of the mmapplypolicy command in very large file systems.
Related tasks
Installing a policy
Install a policy by following these guidelines.
Changing the active policy
When you prepare a file with the new or changed policy rules, then issue the mmchpolicy command.
Listing policies
When you use the mmlspolicy command to list policies, follow these guidelines.
Validating policies
When you validate a policy file, follow this guideline.
Deleting policies
When you remove the current policy rules and restore the file-placement policy, follow this guideline.
Improving performance with the --sort-command parameter
To improve performance of the mmapplypolicy command, follow these guidelines.
Installing a policy
Install a policy by following these guidelines.
To install a policy:
1. Create a text file containing the desired policy rules.
2. Issue the mmchpolicy command.
Related concepts
Using thresholds to migrate data between pools
Chapter 30. Information lifecycle management for IBM Spectrum Scale 513
mmaddcallback MIGRATION --command /usr/lpp/mmfs/bin/mmstartpolicy --event lowDiskSpace
--parms "%eventName %fsName --single-instance"
The --single-instance flag is required to avoid running multiple migrations on the file system at the
same time.
Related concepts
Improvements in performance in very large file systems
Read about how to improve the performance of the mmapplypolicy command in very large file systems.
Related tasks
Creating a policy
Create a text file for your policy by following these guidelines.
Installing a policy
Install a policy by following these guidelines.
Changing the active policy
When you prepare a file with the new or changed policy rules, then issue the mmchpolicy command.
Listing policies
When you use the mmlspolicy command to list policies, follow these guidelines.
Validating policies
When you validate a policy file, follow this guideline.
Deleting policies
When you remove the current policy rules and restore the file-placement policy, follow this guideline.
Improving performance with the --sort-command parameter
To improve performance of the mmapplypolicy command, follow these guidelines.
Listing policies
When you use the mmlspolicy command to list policies, follow these guidelines.
The mmlspolicy command displays policy information for a given file system. The information displayed
is:
• When the policy file was installed.
• The user who installed the policy file.
• The first line of the original policy file.
The mmlspolicy -L command returns the installed (original) policy file. This shows all the rules and
comments as they were in the policy file when it was installed. This is useful if you want to change policy
rules - simply retrieve the original policy file using the mmlspolicy -L command and edit it.
Related concepts
Using thresholds to migrate data between pools
Exhausting space in any one online storage pool generates a NO_SPACE event even though there might be
space available in other online storage pools. To create free space, file data can be moved to other online
storage pools, deleted, or moved to external storage pools.
Improvements in performance in very large file systems
Read about how to improve the performance of the mmapplypolicy command in very large file systems.
Related tasks
Creating a policy
Create a text file for your policy by following these guidelines.
Installing a policy
Install a policy by following these guidelines.
Changing the active policy
When you prepare a file with the new or changed policy rules, then issue the mmchpolicy command.
Validating policies
When you validate a policy file, follow this guideline.
Deleting policies
When you remove the current policy rules and restore the file-placement policy, follow this guideline.
Improving performance with the --sort-command parameter
To improve performance of the mmapplypolicy command, follow these guidelines.
Validating policies
When you validate a policy file, follow this guideline.
The mmchpolicy -I test command validates but does not install a policy file.
Related concepts
Using thresholds to migrate data between pools
Chapter 30. Information lifecycle management for IBM Spectrum Scale 515
Exhausting space in any one online storage pool generates a NO_SPACE event even though there might be
space available in other online storage pools. To create free space, file data can be moved to other online
storage pools, deleted, or moved to external storage pools.
Improvements in performance in very large file systems
Read about how to improve the performance of the mmapplypolicy command in very large file systems.
Related tasks
Creating a policy
Create a text file for your policy by following these guidelines.
Installing a policy
Install a policy by following these guidelines.
Changing the active policy
When you prepare a file with the new or changed policy rules, then issue the mmchpolicy command.
Listing policies
When you use the mmlspolicy command to list policies, follow these guidelines.
Deleting policies
When you remove the current policy rules and restore the file-placement policy, follow this guideline.
Improving performance with the --sort-command parameter
To improve performance of the mmapplypolicy command, follow these guidelines.
Deleting policies
When you remove the current policy rules and restore the file-placement policy, follow this guideline.
To remove the current policy rules and restore the default GPFS file-placement policy, specify DEFAULT
as the name of the policy file on the mmchpolicy command. This is equivalent to installing a policy file
with just one rule:
Related concepts
Using thresholds to migrate data between pools
Exhausting space in any one online storage pool generates a NO_SPACE event even though there might be
space available in other online storage pools. To create free space, file data can be moved to other online
storage pools, deleted, or moved to external storage pools.
Improvements in performance in very large file systems
Read about how to improve the performance of the mmapplypolicy command in very large file systems.
Related tasks
Creating a policy
Create a text file for your policy by following these guidelines.
Installing a policy
Install a policy by following these guidelines.
Changing the active policy
When you prepare a file with the new or changed policy rules, then issue the mmchpolicy command.
Listing policies
When you use the mmlspolicy command to list policies, follow these guidelines.
Validating policies
When you validate a policy file, follow this guideline.
Improving performance with the --sort-command parameter
Chapter 30. Information lifecycle management for IBM Spectrum Scale 517
– The -g parameter specifies a global work directory that can be accessed by the nodes that are
specified by the -N parameter.
– When both -N and -g are specified, mmapplypolicy uses high-performance and fault-tolerant
protocols during execution.
• If the exact order in which files are processed is not important, consider specifying the --choice-
algorithm fast algorithm, which works with the -N and -g options for parallel processing.
• If the order in which files are processed is not important at all, specify WEIGHT(0) in your MIGRATE,
LIST, and DELETE policy rules.
• Update the file system format to format level 13.01 (GPFS 3.5.0.1) or higher. File systems at this level
can support the following two features, among others:
– Storing small directories and small files in the inode.
– Fast extended attributes. For this feature, you must also update the file system by running
mmmigratefs.
These two features can improve the performance of the mmapplypolicy command. See the following
links:
Chapter 19, “File system format changes between versions of IBM Spectrum Scale,” on page 217
Completing the migration to a new level of IBM Spectrum Scale in the IBM Spectrum Scale:
Administration Guide
Related concepts
Using thresholds to migrate data between pools
Exhausting space in any one online storage pool generates a NO_SPACE event even though there might be
space available in other online storage pools. To create free space, file data can be moved to other online
storage pools, deleted, or moved to external storage pools.
Related tasks
Creating a policy
Create a text file for your policy by following these guidelines.
Installing a policy
Install a policy by following these guidelines.
Changing the active policy
When you prepare a file with the new or changed policy rules, then issue the mmchpolicy command.
Listing policies
When you use the mmlspolicy command to list policies, follow these guidelines.
Validating policies
When you validate a policy file, follow this guideline.
Deleting policies
When you remove the current policy rules and restore the file-placement policy, follow this guideline.
Improving performance with the --sort-command parameter
To improve performance of the mmapplypolicy command, follow these guidelines.
Where:
• PoolName defines the name of the storage pool
• InterfaceScript defines the program or script to be invoked to migrate data to or from the external pool
• OptionsString is an optional string that, if provided, will be passed to the InterfaceScript
You must have a separate EXTERNAL POOL rule for each external pool that you wish to define.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 519
Example of a rule that defines a storage pool
The following rule defines a storage pool called externalpoolA.
RULE EXTERNAL POOL 'externalpoolA' EXEC '/usr/hsm/bin/hsmControl' OPTS '-server=hsm-manager.nyc.com'
In this example:
• externalpoolA is the name of the external pool
• /usr/hsm/bin/hsmControl is the location of the executable script that will be invoked when there
are files for migration
• -server=hsm-manager.nyc.com is the location of storage pool externalpoolA
For additional information, refer to “User-provided program for managing external pools” on page 520.
where:
• InodeNumber is a 64-bit inode number.
• GenNumber is a 32-bit file generation number.
• SnapId is a 64-bit snapshot identifier.
Record format
The format of the records in each file list file can be expressed as shown in the following example.
Each file list file:
iAggregate:WEIGHT:INODE:GENERATION:SIZE:iRule:resourceID:attr_flags:
path-length!PATH_NAME:pool-length!POOL_NAME
[;show-length>!SHOW]end-of-record-character
where:
• iAggregate is a grouping index that is assigned by mmapplypolicy.
• WEIGHT represents the WEIGHT policy language file attribute.
• INODE represents the INODE policy language file attribute.
• GENERATION represents the GENERATION policy language file attribute.
• SIZE represents the SIZE policy language file attribute.
• iRule is a rule index number assigned by mmapplypolicy, which relates to the policy rules file that is
supplied with the -P argument.
• resourceID represents a pool index, USER_ID, GROUP_ID, or fileset identifier, depending on whether
thresholding is done with respect to pool usage or to user, group, or fileset quotas.
• attr_flags represents a hexadecimal encoding of some of the attributes that are also encoded by the
policy language variable MISC_ATTRIBUTES. The low-order 20 bits of attr_flags are taken from the
ia_flags word that is defined in the gpfs.h API definition.
• path-length represents the length of the character string PATH_NAME.
• pool-length represents the length of the character string POOL_NAME.
• show-length represents the length of the character string SHOW.
• end-of-record-character is \n or \0.
Note: You can only change the values of the iAggregate, WEIGHT, SIZE, and attr_flags fields. Changing the
values of other fields can cause unpredictable policy execution results.
All of the numeric fields are represented as hexadecimal strings, except the path-length, pool-length, and
show-length fields, which are decimal encoded. These fields can be preceded by a minus sign ( - ), which
indicates that the string that follows it contains escape sequences. In this case, the string might contain
occurrences of the character pair \n, which represents a single newline character with a hexadecimal
value of 0xA in the filename. Also, the string might contain occurrences of the character pair \\, which
represents a single \ character in the filename. A \ will only be represented by \\ if there are also
newline characters in the filename. The value of the length field within the record counts any escape
characters.
The encoding of WEIGHT is based on the 64-bit IEEE floating format, but its bits are flipped so that when a
file list is sorted using a conventional collating sequence, the files appear in decreasing order, according to
their WEIGHT.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 521
The encoding of WEIGHT can be expressed and printed using C++ as:
double w = - WEIGHT;
/* This code works correctly on big-endian and little-endian systems */
uint64 u = *(uint64*)&w; /* u is a 64 bit long unsigned integer
containing the IEEE 64 bit encoding of the double floating point
value of variable w */
uint64 hibit64 = ((uint64)1<<63);
if (w < 0.0) u = ~u; /* flip all bits */
else u = u | hibit64; /* force the high bit from 0 to 1,
also handles both “negatively” and “positively” signed 0.0 */
printf(“%016llx”,u);
The format of the majority of each record can be expressed in C++ as:
printf("%03x:%016llx:%016llx:%llx:%llx:%x:%x:%llx:%d!%s:%d!%s",
iAggregate, u /*encoding of –1*WEIGHT from above*/, INODE, … );
Notice that the first three fields are fixed in length to facilitate the sorting of the records by the field values
iAggregate, WEIGHT, and INODE.
The format of the optional SHOW string portion of the record can be expressed as:
For more information, see the topic mmapplypolicy command in the IBM Spectrum Scale: Command and
Programming Reference.
To move files from the internal system pool to storage pool "externalpoolA" you would simply define a
migration rule that may look something like this:
This would result in the external pool script being invoked as follows:
Similarly, a rule to migrate data from an external pool back to an internal storage pool could look like:
RULE 'MigFromExt' MIGRATE FROM POOL 'externalpoolA' TO POOL 'system' WHERE ...
This would result in the external pool script being invoked as follows:
Notes:
1. When migrating to an external storage pool, GPFS ignores the LIMIT and REPLICATION clauses in the
policy rule.
RULE 'exclude hsm system files' EXCLUDE WHERE PATH_NAME LIKE '%/.SpaceMan%'
If the file has been migrated or pre-migrated, this would result in the external pool script being invoked as
follows:
The script should delete a file from both the online file system and the external storage manager.
However, most HSM systems automatically delete a file from the external storage manager whenever the
Chapter 30. Information lifecycle management for IBM Spectrum Scale 523
online file is deleted. If that is how your HSM system functions, your script will only have to delete the
online file.
Related concepts
Overview of policies
Where:
• ListName defines the name of the external list
• InterfaceScript defines the program to be invoked to operate on the list of files
• OptionsString is an optional string that, if provided, will be passed to the InterfaceScript
See “User-provided program for managing external pools” on page 520.
Example
The following rule defines an external list called listfiles:
In this example:
• listfiles is the name of the external list
• /var/mmfs/etc/listControl is the location of the executable script that defines the operations on
the list of files
• -verbose is an optional flag to the listControl script
The EXTERNAL LIST rule provides the binding between the lists generated with regular LIST rules and the
external program that you want to run with these lists as input. For example, this rule would generate a
list of all files that have more than 1 MB of data in an internal storage pool:
Chapter 30. Information lifecycle management for IBM Spectrum Scale 525
By default, only user files are included in lists. To include directories, symbolic links, and other file system
objects, the DIRECTORIES_PLUS clause must be specified. For example, this rule would generate a list of
all objects in the file system.
Then, run the mmapplypolicy command with the -S snapname parameter to complete the migration.
Snapshot data belonging to AFM and AFM DR can also be migrated. Use the following rule:
In this example, data is migrated from POOL1 to POOL2. You must exclude files which are internal to AFM
while migrating snapshot data. An example of a rule to exclude such files is as under:
Note:
• The snapshot data cannot be migrated to external pools.
• The migration rules for snapshot data cannot be mixed with other rule types.
• SetXattr file function is not allowed on both the MIGRATE and SET SNAP_POOL rules for snapshot
files.
Snapshot data for specific snapshots can be placed in specific pools by using the following rule:
Include this rule in the set of rules installed for the file system. Placement of a snapshot file happens
when the first data block is copied to it because of the changes made to the file in the root file system.
Note: Snapshot data cannot be placed in external pools.
The placement rule can be applied to snapshot data belonging to AFM and AFM DR. In the following
example, snap pool is set as POOL1, for all snapshots having psnap as a sub-pattern in the name.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 527
The access counts to a file are tracked as an exponential moving average. An unaccessed file loses a
percentage of its accesses each period. The loss percentage and tracking period are set by the following
configuration values:
fileHeatPeriodMinutes
A nonzero value enables file access temperature tracking and specifies the frequency with which the
file heat attributes are updated. A value of 0 disables FILE_HEAT tracking. The default value is 0.
fileHeatLossPercent
This attribute specifies the percent of file access heat that an unaccessed file loses at the end of each
tracking period. The valid range is 0 - 100. The default value is 10. The tracking period is set by
fileHeatPeriodMinutes.
For more information, see the topic mmchconfig command in the IBM Spectrum Scale: Command and
Programming Reference.
File Heat can be configured on a per-cluster basis, not on a per–file system basis. Use
WEIGHT(FILE_HEAT) with a policy MIGRATE rule to prioritize migration by file temperature. (You can use
the GROUP POOL rule to define a group pool to be specified as the TO POOL target.) See “Policies for
automating file management” on page 479.
Be aware of the following factors:
• New values for fileHeatPeriodMinutes and fileHeatLossPercent are not effective until the
GPFS daemon is stopped and restarted.
• The file heat attribute of a file is accessible externally through the FILE_HEAT policy attribute. This
attribute is not updated until the update inode of the file is written to the storage media. You can trigger
the update by unmounting the file system.
• After a file access, the access temperature of the file is increased when the file access time (atime) is
set. If the updating of atime is suppressed or if relative atime semantics are in effect, proper
calculation of the file access temperature may be adversely affected.
Examples
1. The following command sets fileHeatPeriodMinutes to 1440 (24 hours) and
fileHeatLossPercent to 10, meaning that unaccessed files lose 10% of their heat value every 24
hours, or approximately 0.4% every hour (because the loss is continuous and increases geometrically):
mmchconfig fileheatperiodminutes=1440,fileheatlosspercent=10
#mmchconfig fileHeatPeriodMinutes=60
mmchconfig: Command successfully completed
#mmlsconfig | grep -i heat
fileHeatPeriodMinutes 60
b. Restart the GPFS daemon to make the new fileHeatPeriodMinutes value effective.
#mmshutdown
#mmstartup
#mmlsattr -d -X /c23/10g
file name: /c23/10g
security.selinux
In this example the file access temperature of the file has never been set, so the mmlsattr
command does not report any file heat.
e. Run the dd command-line utility to read the file from the storage device:
f. Wait a short while for the inode of the file to be written to the storage device. You can force this
action by unmounting the file system.
g. Issue the mmlsattr command to verify that the file heat is updated:
#mmlsattr -d -X /c23/10g
file name: /c23/10g
....
security.selinux
gpfs.FileHeat
h. Issue the mmlsattr command again to display the hexadecimal values of the cluster attributes:
#mmlsattr -d -X -L /c23/10g
file name: /c23/10g
....
security.selinux:
....
gpfs.FileHeat: 0x000000EE42A40400
In this example the file heat of the file is 0x000000EE42A40400. The FILE_HEAT policy attribute
returns this value.
3. Below is an example of migration rules to rebalance data between the pools, moving the hottest data
to the platinum pool until it is 70% full, then moving the next hottest data to the gold pool until it is
80% full, then the silver and finally all remaining data to the offline bronze pool.
/* Define pool group using three on-line pools and the external off-line pool. */
RULE 'DefineTiers' GROUP POOL 'TIERS'
IS 'platinum' LIMIT(70)
THEN 'gold' LIMIT(80)
THEN 'silver' LIMIT(90)
THEN 'bronze'
Filesets
In most file systems, a file hierarchy is represented as a series of directories that form a tree-like
structure. Each directory contains other directories, files, or other file-system objects such as symbolic
links and hard links. Every file system object has a name associated with it, and is represented in the
namespace as a node of the tree.
In addition, GPFS utilizes a file system object called a fileset. A fileset is a subtree of a file system
namespace that in many respects behaves like an independent file system. Filesets provide a means of
Chapter 30. Information lifecycle management for IBM Spectrum Scale 529
partitioning the file system to allow administrative operations at a finer granularity than the entire file
system:
• Filesets can be used to define quotas on both data blocks and inodes.
• The owning fileset is an attribute of each file and can be specified in a policy to control initial data
placement, migration, and replication of the file's data. See “Policies for automating file management”
on page 479.
• Fileset snapshots can be created instead of creating a snapshot of an entire file system.
GPFS supports independent and dependent filesets. An independent fileset is a fileset with its own inode
space. An inode space is a collection of inode number ranges reserved for an independent fileset. An
inode space enables more efficient per-fileset functions, such as fileset snapshots. A dependent fileset
shares the inode space of an existing, independent fileset. Files created in a dependent fileset are
assigned inodes in the same collection of inode number ranges that were reserved for the independent
fileset from which it was created.
When the file system is created, only one fileset, called the root fileset, exists. The root fileset is an
independent fileset that cannot be deleted. It contains the root directory as well as any system files such
as quota files. As new files and directories are created, they automatically become part of the parent
directory's fileset. The fileset to which a file belongs is largely transparent for ordinary file access, but the
containing fileset can be displayed along with the other attributes of each file using the mmlsattr -L
command.
The root directory of a GPFS file system is also the root of the root fileset.
Fileset namespace
A newly created fileset consists of an empty directory for the root of the fileset, and it is initially not linked
into the file system's namespace. A newly created fileset is not visible to the user until it is attached to the
namespace by issuing the mmlinkfileset command.
Filesets are attached to the namespace with a special link called a junction. A junction is a special
directory entry, much like a POSIX hard link, that connects a name in a directory of one fileset (source) to
the root directory of another fileset (target). A fileset may be the target of only one junction, so that a
fileset has a unique position in the namespace and a unique path to any of its directories. The target of the
junction is referred to as the child fileset, and a fileset can have any number of children. From the user's
viewpoint, a junction always appears as if it were a directory, but the user is not allowed to issue the
unlink or rmdir commands on a junction.
Once a fileset has been created and linked into the namespace, an administrator can unlink the fileset
from the namespace by issuing the mmunlinkfileset command. This makes all files and directories
within the fileset inaccessible. If other filesets were linked below it, the other filesets become
inaccessible, but they do remain linked and will become accessible again when the fileset is re-linked.
Unlinking a fileset, like unmounting a file system, fails if there are open files. The mmunlinkfileset
command has a force option to close the files and force the unlink. If there are open files in a fileset and
the fileset is unlinked with the force option, future references to those files will result in ESTALE errors.
Once a fileset is unlinked, it can be re-linked into the namespace at its original location or any other
location (it cannot be linked into its children since they are not part of the namespace while the parent
fileset is unlinked).
The namespace inside a fileset is restricted to a single, connected subtree. In other words, a fileset has
only one root directory and no other entry points such as hard links from directories in other filesets.
Filesets are always connected at the root directory and only the junction makes this connection.
Consequently, hard links cannot cross fileset boundaries. Symbolic links, of course, can be used to
provide shortcuts to any file system object in the namespace.
The root fileset is an exception. The root fileset is attached to the local namespace using the standard
mount command. It cannot be created, linked, unlinked or deleted using the GPFS fileset commands.
See “Managing filesets” on page 536.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 531
Filesets are not specifically related to storage pools, although each file in a fileset physically resides in
blocks in a storage pool. This relationship is many-to-many; each file in the fileset can be stored in a
different user storage pool.
Filesets and global snapshots
A GPFS global snapshot preserves the contents of the entire file system, including all its filesets, even
unlinked ones.
Fileset-level snapshots
Instead of creating a global snapshot of an entire file system, a fileset snapshot can be created to
preserve the contents of a single independent fileset plus all dependent filesets that share the same
inode space.
Filesets and backup
The mmbackup command and IBM Spectrum Protect are unaware of the existence of filesets. When
restoring a file system that had been backed up to IBM Spectrum Protect, the files are restored to their
original path names, regardless of the filesets of which they were originally a part.
Related tasks
Managing filesets
Chapter 30. Information lifecycle management for IBM Spectrum Scale 533
Fileset-level snapshots
Instead of creating a global snapshot of an entire file system, a fileset snapshot can be created to
preserve the contents of a single independent fileset plus all dependent filesets that share the same
inode space.
If an independent fileset has dependent filesets that share its inode space, then a snapshot of the
independent fileset will also include those dependent filesets. In other words, a fileset snapshot is a
snapshot of the whole inode space.
Each independent fileset has its own hidden .snapshots directory in the root directory of the fileset that
contains any fileset snapshots. The mmsnapdir command allows setting an option that makes global
snapshots also available through .snapshots in the root directory of all independent filesets.
The .snapshots directory in the file system root directory lists both global snapshots and fileset
snapshots of the root fileset (the root fileset is an independent fileset). This behavior can be customized
with the mmsnapdir command.
Fileset snapshot names need not be unique across different filesets, so it is valid to use the same name
for fileset snapshots of two different filesets because they will appear under .snapshots in two different
fileset root directories.
Note: In order to use the snapshot name in a fileset backup, the name needs to be unique to the file
system.
You can restore independent fileset snapshot data and attribute files with the mmrestorefs command.
For complete usage information, see the topic mmrestorefs command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Fileset namespace
A newly created fileset consists of an empty directory for the root of the fileset, and it is initially not linked
into the file system's namespace. A newly created fileset is not visible to the user until it is attached to the
namespace by issuing the mmlinkfileset command.
Filesets and quotas
The GPFS quota commands support the -j option for fileset block and inode allocation.
Filesets and storage pools
Filesets are not specifically related to storage pools, although each file in a fileset physically resides in
blocks in a storage pool. This relationship is many-to-many; each file in the fileset can be stored in a
different user storage pool.
Filesets and global snapshots
A GPFS global snapshot preserves the contents of the entire file system, including all its filesets, even
unlinked ones.
Filesets and backup
The mmbackup command and IBM Spectrum Protect are unaware of the existence of filesets. When
restoring a file system that had been backed up to IBM Spectrum Protect, the files are restored to their
original path names, regardless of the filesets of which they were originally a part.
Related tasks
Managing filesets
Chapter 30. Information lifecycle management for IBM Spectrum Scale 535
Managing filesets
Managing your filesets includes:
• “Creating a fileset” on page 536
• “Deleting a fileset” on page 538
• “Linking a fileset” on page 539
• “Unlinking a fileset” on page 540
• “Changing fileset attributes” on page 540
• “Displaying fileset information” on page 541
Related concepts
Fileset namespace
A newly created fileset consists of an empty directory for the root of the fileset, and it is initially not linked
into the file system's namespace. A newly created fileset is not visible to the user until it is attached to the
namespace by issuing the mmlinkfileset command.
Filesets and quotas
The GPFS quota commands support the -j option for fileset block and inode allocation.
Filesets and storage pools
Filesets are not specifically related to storage pools, although each file in a fileset physically resides in
blocks in a storage pool. This relationship is many-to-many; each file in the fileset can be stored in a
different user storage pool.
Filesets and global snapshots
A GPFS global snapshot preserves the contents of the entire file system, including all its filesets, even
unlinked ones.
Fileset-level snapshots
Instead of creating a global snapshot of an entire file system, a fileset snapshot can be created to
preserve the contents of a single independent fileset plus all dependent filesets that share the same
inode space.
Filesets and backup
The mmbackup command and IBM Spectrum Protect are unaware of the existence of filesets. When
restoring a file system that had been backed up to IBM Spectrum Protect, the files are restored to their
original path names, regardless of the filesets of which they were originally a part.
Creating a fileset
Filesets are created with the mmcrfileset command.
By default, filesets are created as dependent filesets that share the inode space of the root. The --
inode-space ExistingFileset option can be used to create a dependent fileset that shares inode space
with an existing fileset. The --inode-space new option can be used to create an independent fileset
with its own dedicated inode space.
A newly created fileset consists of an empty directory for the root of the fileset and it is initially not linked
into the existing namespace. Consequently, a new fileset is not visible and files cannot be added to it, but
the fileset name is valid and the administrator can establish quotas on it or policies for it. The
administrator must link the fileset into its desired location in the file system's namespace by issuing the
mmlinkfileset command in order to make use of it.
After the fileset is linked, the administrator can change the ownership and permissions for the new root
directory of the fileset, which default to root and 0700, to allow users access to it. Files and directories
copied into or created within the directory of the fileset become part of the new fileset.
Note the following restrictions on fileset names:
• The name must be unique within the file system.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 537
An independent fileset has a separate inode space but shares physical storage with the remainder of
the file system. Maximum number of inodes and preallocation of inodes for an independent fileset
can be specified while creating the fileset. A dependent fileset shares the inode space and snapshot
capability of the containing independent fileset.
8. In the Maximum number of inodes field, specify the maximum number of file system objects such as
files, directories, or links that can be stored under the independent fileset, including that of the
related child filesets.
9. In the Allocated number of inodes field, specify the number of inodes that is allocated when the
fileset is created. The maximum allowed inodes cannot be less than the allocated number.
10. Click Edit in the Edit Action Control section to define access control list for the users who can access
the fileset.
Note: Only NFSv4 ACL semantics are supported in the GUI. The Edit Access Control section is not shown
when creating filesets in a file system that supports only POSIX ACL.
11. Select the archive mode to be used from the options that are available under the Archive Mode
section.
The Archive Mode or the integrated archive mode (IAM) mode provides control to prevent files from
being changed or deleted unexpectedly. You can set this option either while creating a fileset or when
you modify it. The following options are available to set the archive mode of a fileset. The available
values are listed in the order of increasing the level of restriction:
• Off: No immutability mode is set and the fileset behaves like a regular fileset. This is the default
value.
• Advisory: Allows setting retention times and WORM protection, but files can be deleted based on
the file permissions.
• Non-Compliant: In addition to the restrictions in the advisory mode, files cannot be deleted if the
retention time has not expired. However, retention times can be reset, and files can be deleted but
not changed.
• Compliant: In addition to the restrictions in the non-compliant mode, retention time cannot be
reset. When the retention time has expired, files can be deleted but not changed.
• Compliant Plus: In addition to the restrictions in the compliant mode, renaming of empty
directories is not allowed.
12. Click Create.
Fileset is created and linked to the junction path. You can see the newly created fileset in the fileset table.
Deleting a fileset
Filesets are deleted with the mmdelfileset command.
There are several notes to keep in mind when deleting filesets:
• The root fileset cannot be deleted.
• A fileset that is not empty cannot be deleted unless the -f flag is specified.
• A fileset that is currently linked into the namespace cannot be deleted until it is unlinked with the
mmunlinkfileset command.
• A dependent fileset can be deleted at any time.
• An independent fileset cannot be deleted if it has any dependent filesets or fileset snapshots.
• Deleting a dependent fileset that is included in a fileset or global snapshot removes it from the active
file system, but it remains part of the file system in a deleted state.
• Deleting an independent fileset that is included in any global snapshots removes it from the active file
system, but it remains part of the file system in a deleted state.
• A fileset in the deleted state is displayed in the mmlsfileset output with the fileset name in
parenthesis. If the -L flag is specified, the latest including snapshot is also displayed. The --deleted
option of the mmlsfileset command can be used to display only deleted filesets.
Linking a fileset
After the fileset is created, a junction must be created to link it to the desired location in the file system's
namespace using the mmlinkfileset command.
The file system must be mounted in order to link a fileset. An independent fileset can be linked into only
one location anywhere in the namespace, specified by the JunctionPath parameter:
• The root directory
• Any subdirectory
• The root fileset or to any other fileset
A dependent fileset can only be linked inside its own inode space.
If JunctionPath is not specified, the junction is created in the current directory and has the same name as
the fileset being linked. After the command completes, the new junction appears as an ordinary directory,
except that the user is not allowed to unlink or delete it with the rmdir command it. The user can use the
mv command on the directory to move to a new location in the parent fileset, but the mv command is not
allowed to move the junction to a different fileset.
For complete usage information, see the topic mmlinkfileset command in the IBM Spectrum Scale:
Command and Programming Reference.
Related tasks
Creating a fileset
Filesets are created with the mmcrfileset command.
Deleting a fileset
Filesets are deleted with the mmdelfileset command.
Unlinking a fileset
A junction to a fileset is removed with the mmunlinkfileset command, which unlinks the fileset only
from the active directory namespace. The linked or unlinked state of a fileset in a snapshot is unaffected.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 539
The unlink fails if there are files open in the fileset, unless the -f option is specified. The root fileset
cannot be unlinked.
Changing fileset attributes
To change a fileset's junction, you have to first unlink the fileset using the mmunlinkfileset command,
and then create the new junction using the mmlinkfileset command.
Displaying fileset information
Fileset status and attributes are displayed with the mmlsfileset command.
Unlinking a fileset
A junction to a fileset is removed with the mmunlinkfileset command, which unlinks the fileset only
from the active directory namespace. The linked or unlinked state of a fileset in a snapshot is unaffected.
The unlink fails if there are files open in the fileset, unless the -f option is specified. The root fileset
cannot be unlinked.
After issuing the mmunlinkfileset command, the fileset can be re-linked to a different parent using the
mmlinkfileset command. Until the fileset is re-linked, it is not accessible.
Note: If run against a file system that has an unlinked fileset, mmapplypolicy will not traverse the
unlinked fileset.
Attention: If you are using the IBM Spectrum Protect Backup-Archive client you must use caution
when you unlink filesets that contain data backed up by IBM Spectrum Protect. IBM Spectrum
Protect tracks files by pathname and does not track filesets. As a result, when you unlink a fileset,
it appears to IBM Spectrum Protect that you deleted the contents of the fileset. Therefore, the IBM
Spectrum Protect Backup-Archive client inactivates the data on the IBM Spectrum Protect server
which may result in the loss of backup data during the expiration process.
For complete usage information, see the topic mmunlinkfileset command in the IBM Spectrum Scale:
Command and Programming Reference.
Related tasks
Creating a fileset
Filesets are created with the mmcrfileset command.
Deleting a fileset
Filesets are deleted with the mmdelfileset command.
Linking a fileset
After the fileset is created, a junction must be created to link it to the desired location in the file system's
namespace using the mmlinkfileset command.
Changing fileset attributes
To change a fileset's junction, you have to first unlink the fileset using the mmunlinkfileset command,
and then create the new junction using the mmlinkfileset command.
Displaying fileset information
Fileset status and attributes are displayed with the mmlsfileset command.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 541
To change a fileset's junction, you have to first unlink the fileset using the mmunlinkfileset command,
and then create the new junction using the mmlinkfileset command.
You can apply immutability and appendOnly restrictions either to individual files within a fileset or to a
directory.
An immutable file cannot be changed or renamed. An appendOnly file allows append operations, but not
delete, modify, or rename operations.
An immutable directory cannot be deleted or renamed, and files cannot be added or deleted under such a
directory. An appendOnly directory allows new files or subdirectories to be created with 0 byte length; all
such new created files and subdirectories are marked as appendOnly automatically.
The immutable flag and the appendOnly flag can be set independently. If both immutability and
appendOnly are set on a file, immutability restrictions will be in effect.
To set or unset these attributes, use the following command options:
mmchattr -i {yes | no}
Sets or unsets a file to or from an immutable state.
-i yes
Sets the immutable attribute of the file to yes.
-i no
Sets the immutable attribute of the file to no.
mmchattr -a {yes | no}
Sets or unsets a file to or from an appendOnly state.
-a yes
Sets the appendOnly attribute of the file to yes.
-a no
Sets the appendOnly attribute of the file to no.
Note: Before an immutable or appendOnly file can be deleted, you must change it to mutable or set
appendOnly to no (by using the mmchattr command).
Storage pool assignment of an immutable or appendOnly file can be changed; an immutable or
appendOnly file is allowed to transfer from one storage pool to another.
mmlsattr -L myfile
Once a file has been set as immutable or appendOnly, the following file operations and attributes work
differently from the way they work on regular files:
delete
An immutable or appendOnly file cannot be deleted.
modify/append
An appendOnly file cannot be modified, but it can be appended. An immutable file cannot be modified
or appended.
Note: The immutable and appendOnly flag check takes effect after the file is closed; therefore, the file
can be modified if it is opened before the file is changed to immutable.
mode
An immutable or appendOnly file's mode cannot be changed.
ownership, acl
These attributes cannot be changed for an immutable or appendOnly file.
extended attributes
These attributes cannot be added, deleted, or modified for an immutable or appendOnly file.
timestamp
The timestamp of an immutable or appendOnly file can be changed.
directory
If a directory is marked as immutable, no files can be created, renamed, or deleted under that
directory. However, a subdirectory under an immutable directory remains mutable unless it is
explicitly changed by mmchattr.
If a directory is marked as appendOnly, no files can be renamed or deleted under that directory.
However, 0 byte length files can be created.
The following table shows the effects of file operations on an immutable file or an appendOnly file:
Table 48. The effects of file operations on an immutable file or an appendOnly file
Operation immutable appendOnly
Add, delete, modify, or rename No No
Append No Yes
Change ownership, mode, or acl No No
Change atime, mtime, or ctime Yes Yes
Add, delete, or modify Disallowed by external methods Same as for immutable.
extended attributes such as setfattr.
Allowed internally for dmapi,
directio, and others.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 543
Table 48. The effects of file operations on an immutable file or an appendOnly file (continued)
Operation immutable appendOnly
Set an immutable file back to Yes Not applicable
mutable
Set an appendOnly file back to a Not applicable Yes
non-appendOnly state
Table 49. IAM modes and their effects on file operations on immutable files
File operation Regular mode Advisory mode Noncompliant Compliant Compliant-
mode mode plus mode
Modify No No No No No
Append No No No No No
Rename No No No No No
Change No No No No No
ownership, acl
Change mode No No No No No
Change atime, Yes mtime and Same as Same as Same as
mtime, ctime ctime can be advisory mode advisory mode advisory mode
changed.
atime is
overloaded by
expiration time.
Expiration time
can be changed
by using the
mmchattr --
expiration-
time command
(alternatively
mmchattr -E)
or touch. You
can see the
expiration time
by using stat as
atime.
Rename or Yes for rename. No for rename. No for rename. No for rename. No for rename.
delete a non-
No for delete Yes for delete. Yes for delete Yes for delete Yes for delete
empty directory
only if the only if the only if the only if the
directory immutable file immutable file immutable file
contains has expired. has expired. has expired.
immutable
files.
Chapter 30. Information lifecycle management for IBM Spectrum Scale 545
Table 49. IAM modes and their effects on file operations on immutable files (continued)
File operation Regular mode Advisory mode Noncompliant Compliant Compliant-
mode mode plus mode
Remove user No Yes Yes Yes Yes
write
permission to
change a file to
immutable
Display No Yes Yes Yes Yes
expiration time
instead of
atime for stat
call
Set a directory Yes No No No No
to be
immutable
Chapter 30. Information lifecycle management for IBM Spectrum Scale 547
• Migration
• Migration to external pool
• Placement
• Compression
• Migration and compression
• Deletion
• Exclude
• Encryption
• Encryption specification
• Encryption exclude
• External pool
7. Click Add to add the rule to the policy. The rule is added to the policy.
8. Select the rule from the list of rules that are added to the policy. The rule definition appears on the
right pane.
9. Modify the default values of the rule based on the requirement.
10. Click Apply Changes after you make the required changes.
11. To remove a rule from an active policy, select the rule form the list of rules that are configured for the
policy, and clear the Enable checkbox from the right pane. Make sure that you click Apply Changes
whenever you update rules of a policy.
12. Click Run Policy if you want to run the policy irrespective of the conditions specified in the rules of
the policy. Usually, the system runs the policy when the conditions mentioned in the rules are met.
For example, migration starts when the thresholds that are defined in the migration rule is reached.
Creating a snapshot
Use the mmcrsnapshot command to create a snapshot of an entire GPFS file system at a single point in
time. Snapshots appear in the file system tree as hidden subdirectories of the root.
Global snapshots appear in a subdirectory in the root directory of the file system, whose default name
is .snapshots. If you prefer to access snapshots from each directory rather than traversing through the
root directory, you can use an invisible directory to make the connection by issuing the mmsnapdir
command. See “Linking to a snapshot” on page 554 for more information.
Before issuing the command, the directory structure would appear similar to:
/fs1/file1
/fs1/userA/file2
/fs1/userA/file3
After the command has been issued, the directory structure would appear similar to:
/fs1/file1
/fs1/userA/file2
/fs1/userA/file3
/fs1/.snapshots/snap1/file1
/fs1/.snapshots/snap1/userA/file2
/fs1/.snapshots/snap1/userA/file3
If a second snapshot were to be created at a later time, the first snapshot would remain as is. A snapshot
can be made only of an active file system, not of an existing snapshot. The following command creates
another snapshot of the same file system:
After the command has been issued, the directory structure would appear similar to:
/fs1/file1
/fs1/userA/file2
/fs1/userA/file3
/fs1/.snapshots/snap1/file1
/fs1/.snapshots/snap1/userA/file2
/fs1/.snapshots/snap1/userA/file3
/fs1/.snapshots/snap2/file1
/fs1/.snapshots/snap2/userA/file2
/fs1/.snapshots/snap2/userA/file3
For complete usage information, see the topic mmcrsnapshot command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Reading a snapshot with the policy engine
Managing snapshots using IBM Spectrum Scale GUI
Use Files > Snapshots page in the IBM Spectrum Scale GUI to manage snapshots through GUI.
Related tasks
Listing snapshots
Use the mmlssnapshot command to display existing snapshots of a file system and their attributes.
Restoring a file system from a snapshot
Listing snapshots
Use the mmlssnapshot command to display existing snapshots of a file system and their attributes.
The -d option displays the amount of storage used by a snapshot. GPFS quota management does not take
the data blocks used to store snapshots into account when reporting on and determining if quota limits
have been exceeded. This is a slow operation and its usage is suggested for problem determination only.
For example, to display the snapshot information for the file system fs1 with additional storage
information, issue the following command:
mmlssnapshot fs1 -d
For complete usage information, see the topic mmlssnapshot command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Reading a snapshot with the policy engine
Managing snapshots using IBM Spectrum Scale GUI
Use Files > Snapshots page in the IBM Spectrum Scale GUI to manage snapshots through GUI.
Related tasks
Creating a snapshot
Use the mmcrsnapshot command to create a snapshot of an entire GPFS file system at a single point in
time. Snapshots appear in the file system tree as hidden subdirectories of the root.
Restoring a file system from a snapshot
Use the mmrestorefs command to restore user data and attribute files in an active file system from a
snapshot.
Linking to a snapshot
Snapshot root directories appear in a special .snapshots directory under the file system root.
Deleting a snapshot
Use the mmdelsnapshot command to delete GPFS snapshots of a file system.
/fs1/file1
/fs1/userA/file2
/fs1/userA/file3
/fs1/.snapshots/snap1/file1
/fs1/.snapshots/snap1/userA/file2
/fs1/.snapshots/snap1/userA/file3
If the directory userA is then deleted, the structure becomes similar to this:
/fs1/file1
/fs1/.snapshots/snap1/file1
/fs1/.snapshots/snap1/userA/file2
/fs1/.snapshots/snap1/userA/file3
The directory userB is then created using the inode originally assigned to userA, and another snapshot is
taken:
/fs1/file1
/fs1/userB/file2b
/fs1/userB/file3b
/fs1/.snapshots/snap1/file1
/fs1/.snapshots/snap1/userA/file2
/fs1/.snapshots/snap1/userA/file3
/fs1/.snapshots/snap2/file1
/fs1/.snapshots/snap2/userB/file2b
/fs1/.snapshots/snap2/userB/file3b
/fs1/file1
/fs1/userA/file2
/fs1/userA/file3
/fs1/.snapshots/snap1/file1
/fs1/.snapshots/snap1/userA/file2
/fs1/.snapshots/snap1/userA/file3
/fs1/.snapshots/snap2/file1
/fs1/.snapshots/snap2/userB/file2b
/fs1/.snapshots/snap2/userB/file3b
For complete usage information, see the topic mmrestorefs command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Reading a snapshot with the policy engine
Managing snapshots using IBM Spectrum Scale GUI
Use Files > Snapshots page in the IBM Spectrum Scale GUI to manage snapshots through GUI.
Related tasks
Creating a snapshot
Use the mmcrsnapshot command to create a snapshot of an entire GPFS file system at a single point in
time. Snapshots appear in the file system tree as hidden subdirectories of the root.
Listing snapshots
Use the mmlssnapshot command to display existing snapshots of a file system and their attributes.
Linking to a snapshot
Snapshot root directories appear in a special .snapshots directory under the file system root.
Deleting a snapshot
Use the mmdelsnapshot command to delete GPFS snapshots of a file system.
Linking to a snapshot
Snapshot root directories appear in a special .snapshots directory under the file system root.
If you prefer to link directly to the snapshot rather than always traverse the root directory, you can use the
mmsnapdir command with the -a option to add a .snapshots subdirectory to all directories in the file
system. These .snapshots subdirectories will contain a link into the corresponding directory for each
snapshot that includes the directory in the active file system.
Unlike .snapshots in the root directory, however, the .snapshots directories added by the -a option of
the mmsnapdir command are invisible in the sense that the ls command or readdir() function does
not return .snapshots. This is to prevent recursive file system utilities such as find or tar from
entering into the snapshot tree for each directory they process. For example, if you enter ls -a /fs1/
userA, the .snapshots directory is not listed. However, you can enter ls /fs1/userA/.snapshots
or cd /fs1/userA/.snapshots to confirm that .snapshots is present. If a user wants to make one of
their snapshot directories more visible, it is suggested to create a symbolic link to .snapshots.
The inode numbers that are used for and within these special .snapshots directories are constructed
dynamically and do not follow the standard rules. These inode numbers are visible to applications through
standard commands, such as stat, readdir, or ls. The inode numbers reported for these directories
can also be reported differently on different operating systems. Applications should not expect consistent
numbering for such inodes.
Specifying the -r option on the mmsnapdir command reverses the effect of the -a option, and reverts to
the default behavior of a single .snapshots directory in the root directory.
The -s option allows you to change the name of the .snapshots directory. For complete usage
information, see the topic mmsnapdir command in the IBM Spectrum Scale: Command and Programming
Reference.
To illustrate this point, assume that a GPFS file system called fs1, which is mounted at /fs1, has one
snapshot called snap1. The file system might appear similar to this:
/fs1/userA/file2b
/fs1/userA/file3b
/fs1/.snapshots/snap1/userA/file2b
/fs1/.snapshots/snap1/userA/file3b
To create links to the snapshots from each directory, and instead of .snapshots, use the name .links,
enter:
/fs1/userA/file2b
/fs1/userA/file3b
/fs1/userA/.links/snap1/file2b
/fs1/userA/.links/snap1/file3b
/fs1/.links/snap1/userA/file2b
/fs1/.links/snap1/userA/file3b
mmsnapdir fs1 -r
After the command completes, the directory structure is similar to the following:
/fs1/userA/file2b
/fs1/userA/file3b
/fs1/.links/snap1/userA/file2b
/fs1/.links/snap1/userA/file3b
For complete usage information, see the topic mmsnapdir command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Reading a snapshot with the policy engine
Managing snapshots using IBM Spectrum Scale GUI
Use Files > Snapshots page in the IBM Spectrum Scale GUI to manage snapshots through GUI.
Related tasks
Creating a snapshot
Use the mmcrsnapshot command to create a snapshot of an entire GPFS file system at a single point in
time. Snapshots appear in the file system tree as hidden subdirectories of the root.
Listing snapshots
Use the mmlssnapshot command to display existing snapshots of a file system and their attributes.
Restoring a file system from a snapshot
Use the mmrestorefs command to restore user data and attribute files in an active file system from a
snapshot.
Deleting a snapshot
Use the mmdelsnapshot command to delete GPFS snapshots of a file system.
Deleting a snapshot
Use the mmdelsnapshot command to delete GPFS snapshots of a file system.
For example, to delete snap1 for the file system fs1, enter:
For complete usage information, see the topic mmdelsnapshot command in the IBM Spectrum Scale:
Command and Programming Reference.
Related concepts
Reading a snapshot with the policy engine
Managing snapshots using IBM Spectrum Scale GUI
Based on the this retention rule, the following snapshots are created and retained on March 20, 2016 at
06:10 AM:
Table 51. Example - Time stamp of snapshots that are retained based on the retention policy
Time stamp Condition based on which snapshot is retained
December 31 (Thursday, 11:01 PM) Keep latest snapshot for last 3 months
January 31 (Sunday, 11:01 PM) Keep latest snapshot for last 3 months
February 29 (Monday, 11:01 PM) Keep latest snapshot for last 3 months
March 5 (Saturday, 11:01 PM) Keep latest snapshot for last 2 weeks
March 12 (Saturday, 11:01 PM) Keep latest snapshot for last 2 weeks
March 14 (Monday, 11:01 PM) Keep latest snapshot for last 6 days
March 15 (Tuesday, 11:01 PM) Keep latest snapshot for last 6 days
March 16 (Wednesday, 11:01 PM) Keep latest snapshot for last 6 days
March 17 (Thursday, 11:01 PM) Keep latest snapshot for last 6 days
March 18 (Friday, 11:01 PM) Keep latest snapshot for last 6 days
March 19 (Saturday, 11:01 PM) Keep latest snapshot for last 6 days
March 20 (Sunday, 5:01 AM) Keep 2 most recent
March 20 (Sunday, 6:01 AM) Keep 2 most recent
According to this rule, 13 snapshots are retained on March 20, 2016 at 06:10 AM.
To schedule snapshot creation and retention, perform the following steps:
1. Go to Files > Snapshots.
2. Click Create Snapshot.
3. In the Create Snapshot window, enter the path of the file system or independent fileset for which
you need to create snapshots.
4. In the Snapshot name field, specify the name of the snapshot.
5. Click Snapshot Rules.
6. Click Create Rule to schedule the snapshot creation and retention. Create Snapshot Rule window is
displayed.
7. In the Name field, type the name of the snapshot scheduling rule.
8. In the Frequency field, select the frequency in which you need to create snapshot. You need to enter
some more details based on the value that is selected in the Frequency field. For example, if value
selected is Multiple Times an Hour, select the minutes of the hour in which you need to create
snapshots.
9. In the Retention fields, specify the number of snapshots that must be retained in a time period.
10. In the Prefix field, specify a prefix to be added with the name of the snapshots that are created with
this rule.
11. Click OK to save the changes.
Deleting snapshots
To manually delete the snapshots, right-click the snapshot from the Snapshots page and select Delete.
The snapshots that are automatically created based on the snapshot creation rule, are deleted
automatically based on the retention period specified in the rule. When the condition for deletion is met,
the GUI immediately starts to delete the snapshot candidates.
Alternately, if only one file is specified with the mmclone snap command, it will convert the file to a
read-only clone parent without creating a separate clone parent file. When using this method to create
a clone parent, the specified file cannot be open for writing or have hard links. For example, the
following command converts file1 into a clone parent.
2. Issue the mmclone copy command to create a writable clone from a clone parent. For example, the
following command creates a writable file clone called file2 from the clone parent snap1:
Creating a file clone where the source is in a snapshot only requires one step using the mmclone
command with the copy keyword. For example, the following command creates a writable file clone
called file3.clone from a file called file3 in a snapshot called snap2:
File clones of clones can also be created, as shown in the following example:
The echo command updates the last block of file clone file2. When file2 is snapped to snap2, the
mmclone snap operation is performed as described previously. When a block in file3 is read, the clone
parent inode is found first. For the case of the last block, with the hello text, the disk address will be
found in snap2. However, for other blocks, the disk address will be found in snap1.
For complete usage information, see the topic mmclone command in the IBM Spectrum Scale: Command
and Programming Reference.
ls -ils *.img
3. After the file clone is created, the mmclone show command is issued to show information about all
img files in the current directory:
# ls -ils *.img
148488 5752576 -rw-r--r-- 3 root root 21474836480 Jan 9 16:25 base.img
148485 0 -rw-r--r-- 1 root root 21474836480 Jan 9 16:19 test01.img
148480 0 -rw-r--r-- 1 root root 21474836480 Jan 9 16:25 test02.img
For complete usage information, see the topic mmclone command in the IBM Spectrum Scale: Command
and Programming Reference.
If this policy file was called pol.file, the following command would display the clone attributes:
Be sure to copy the temporary file that is created by the preceding command to a secure location so
that it can be retrieved and used during a disaster recovery.
To optionally check the status of the files that were pre-migrated with the previous command, use the
following command:
dsmls /smallfs/*
5. Create a global snapshot of the live file system, to provide a quiescent image for image backup, using a
command similar to the following:
6. Choose a staging area in which to save the GPFS metadata image files.
The image backup process stores each piece of the partial file system image backup in its own file in
the shared work directory typically used by policy runs. These files can become quite large depending
on the number of files in the file system. Also, because the file system holding this shared directory
must be accessible to every node participating in the parallel backup task, it might also be a GPFS file
system. It is imperative that the staging directory chosen be accessible to both the tsapolicy
archiver process and the IBM Spectrum Protect Backup-Archive client. This staging directory is
specified with the -g option of the mmimgbackup command.
7. Backup the file system image.
The following command will back up an image of the GPFS metadata from the file system using a
parallel policy run with the default IBM Spectrum Protect backup client to backup the file system
metadata image:
The metadata of the file system, the directories, inodes, attributes, symlinks, and so on are all
captured in parallel by using the archive module extension feature of the mmapplypolicy command.
After completing the parallel execution of the policy-driven archiving process, a collection of image
files in this format will remain. These image files are gathered by the mmimgbackup command and
archived to IBM Spectrum Protect automatically.
Related concepts
Restore procedure with SOBAR
This section provides a detailed example of the restore procedure used with SOBAR.
If changes are needed, edit the file in a text editor and follow the included instructions to use it as
input to the mmcrnsd command, then issue the following command:
mmcrnsd -F StanzaFile
sh OutputFile
• From the command line, issue an mmcrfs command similar to the one in the output file, but specify
the appropriate file system name and NSD disk(s). Do not specify the -Q option to ensure quotas
are not enabled. The inode size and metadata block size must be the same in the file system in
order to be restored as is in the original file system.
5. Restore essential file system configuration.
Using the mmrestoreconfig command, the essential file system configuration can be restored to
the file system that was just created in the previous step. Quota is disabled in this step because the
quota system must remain inactive until after the file system image has been restored. Filesets will
also be restored and linked, if necessary, using a method specific for image restore. The --image-
restore option should be used to restore the configuration data in the proper format for SOBAR; for
example:
6. Mount the file system in read-only mode for image restore with the following command:
mmmount smallfs -o ro
8. To optionally display the restored file system structure, use the following command:
ls -l /smallfs/*
mmumount smallfs
mmmount smallfs
rm -rf /smallfs/.SpaceMan
dsmmigfs restart
14. Resume HSM management on the newly reconstructed file system, to resume managing disk space
and to permit recall of files, with the following command:
15. To optionally display the managed file system from HSM, use the following command:
dsmls /smallfs/*
Related concepts
Backup procedure with SOBAR
This section provides a detailed example of the backup procedure used with SOBAR.
/var/mmfs/etc/ignoreAnyMount.<file_system_name>
/var/mmfs/etc/ignoreAnyMount.fs1
nodeA001:quorum-manager
nodeA002:quorum-manager
nodeA003:quorum-manager
nodeA004:client
nodeB001:quorum-manager
nodeB002:quorum-manager
nodeB003:quorum-manager
nodeB004:client
nodeC:quorum-client
mmcrcluster -N clusterNodes
Note: The cluster is created with the Cluster Configuration Repository (CCR) enabled. This option is
the default on IBM Spectrum Scale v4.1 or later.
2. Issue the following command to enable the unmountOnDiskFile attribute on nodeC:
Enabling this attribute prevents false disk errors in the SAN configuration from being reported to the
file system manager.
Important: In a synchronous replication environment, the following rules are good practices:
• The following rules apply to nodeC, which is the only node on site C and is also a client node and a
quorum node:
– Do not designate the nodeC as a manager node.
– Do not mount the file system on nodeC.
To avoid unexpected mounts, create the following empty file on nodeC:
/var/mmfs/etc/ignoreAnyMount.<file_system_name>
For example, if the file system is fs0, create the following empty file:
/var/mmfs/etc/ignoreAnyMount.fs0
%nsd: device=/dev/diskA1
servers=nodeA002,nodeA003
usage=dataAndMetadata
failureGroup=1
%nsd: device=/dev/diskA2
servers=nodeA003,nodeA002
usage=dataAndMetadata
failureGroup=1
%nsd: device=/dev/diskB1
servers=nodeB002,nodeB003
Important: Note that the stanzas make the following failure group assignments:
• The disks at site A are assigned to failure group 1.
• The disks at site B are assigned to failure group 2.
• The disk that is local to nodeC is assigned to failure group 3.
b) Issue the following command to create the NSDs:
mmcrnsd –F clusterDisks
c) Issue the following command to verify that the network shared disks are created:
mmlsnsd -m
4. Issue the following command to start IBM Spectrum Scale on all the nodes of the cluster:
mmstartup -a
5. Create a file system fs0 with default replication for metadata (-m 2) and data (-r 2).
Issue the following command:
6. Mount the file system fs0 on all the cluster nodes at site A and site B.
7. This step is optional and for ease of use.
Issue the following three commands to create node classes for sites A, B, and C:
mmcrnodeclass gpfs.siteA -N
prt001st001,prt002st001,prt003st001,prt004st001,nsd001st001,nsd002st001
mmcrnodeclass gpfs.siteB -N
prt008st001,prt007st001,prt006st001,prt005st001,nsd004st001,nsd003st001
You can now use node class names with IBM Spectrum Scale commands ("mm" commands) to recover
sites easily after a cluster failover and failback. For example, with the following command you can
bring down all the nodes on site B with one parameter, rather than having to pass all the node names
for site B into the command:
mmshutdown -N gpfs.siteB
Failover with the loss of tiebreaker site C with server-based configuration in use
If both site A and site C fail:
1. Shut the GPFS daemon down on the surviving nodes at site B, where the file gpfs.siteB lists all of the
nodes at site B:
mmshutdown -N gpfs.siteB
2. If it is necessary to make changes to the configuration, migrate the primary cluster configuration
server to a node at site B:
mmchcluster -p nodeB002
4. Relax file system descriptor quorum by informing the GPFS daemon to migrate the file system
descriptor off of the failed disks:
mmstartup -N gpfs.siteB
Failover with the loss of tiebreaker site C with Clustered Configuration Repository
(CCR) in use
If both site A and site C fail:
1. Shut the GPFS daemon down on the surviving nodes at site B , where the file gpfs.siteB lists all of the
nodes at site B :
2. Changing (downgrading) the quorum assignments when half or more of the quorum nodes are no
longer available at site B using the –- force option :
3. Relax file system descriptor quorum by informing the GPFS daemon to migrate the file system
descriptor off of the failed disks:
mmstartup -N gpfs.siteB
Failback procedures
Which failback procedure you follow depends upon whether the nodes and disks at the affected site have
been repaired or replaced.
If the disks have been repaired, you must also consider the state of the data on the failed disks:
• For nodes and disks that have been repaired and you are certain the data on the failed disks has not
been changed, follow either:
– failback with temporary loss and no configuration changes
– failback with temporary loss and configuration changes
• If the nodes have been replaced and either the disks have been replaced or repaired, and you are not
certain the data on the fail disks has not been changed, follow the procedure for failback with
permanent loss.
mmstartup -N gpfs.sitesAC
2. Restart the affected disks. If more than one disk in the file system is down, they must all be started at
the same time:
Related tasks
Failback with temporary loss and configuration changes in the server-based configuration
If the outage was of a temporary nature and your configuration has been altered, follow this procedure to
fail back to the original state in case primary and secondary configuration servers are in use.
Failback with temporary loss using the Clustered Configuration Repository (CCR) configuration
mechanism
If the outage was of a temporary nature and your configuration has been altered, follow this procedure to
failback to the original state, in case the Clustered Configuration Repository (CCR) configuration scheme is
in use.
Related reference
Failback with permanent loss
If an outage is of a permanent nature, follow steps to remove and replace the failed resources, and then
resume the operation of GPFS across the cluster.
Failback with temporary loss and configuration changes in the server-based configuration
If the outage was of a temporary nature and your configuration has been altered, follow this procedure to
fail back to the original state in case primary and secondary configuration servers are in use.
After all affected nodes and disks have been repaired and you are certain that the data on the failed disks
has not been changed:
1. Ensure that all nodes have the latest copy of the mmsdrfs file:
mmchcluster -p LATEST
For more information about the mmsdrfs file, see Recovery from loss of GPFS cluster configuration data
file in the IBM Spectrum Scale: Problem Determination Guide.
mmchcluster -p nodeA001
4. Start GPFS on the repaired nodes where the file gpfs.sitesAC lists all of the nodes at sites A and C:
mmstartup -N gpfs.sitesAC
5. Restore the file system descriptor quorum by informing the GPFS to include the repaired disks:
6. Bring the disks online and restripe the file system across all disks in the cluster to restore the initial
replication properties:
Failback with temporary loss using the Clustered Configuration Repository (CCR) configuration mechanism
If the outage was of a temporary nature and your configuration has been altered, follow this procedure to
failback to the original state, in case the Clustered Configuration Repository (CCR) configuration scheme is
in use.
After all affected nodes and disks have been repaired and you are certain the data on the failed disks has
not been changed, complete the following steps.
1. Shut down the GPFS daemon on the surviving nodes at site B , and on the former failed and now
recovered sites A and C, where the file gpfs.siteB lists all of the nodes at site B and the file
gpfs.siteA lists all of the nodes at site A and the tiebreaker node at site C:
mmshutdown -N gpfs.siteB
mmshutdown -N gpfs.siteA
mmshutdown -N nodeC
2. Restore original node quorum designation for the tiebreaker site C at site B and start GPFS on site C:
mmstartup -N gpfs.siteB
mmchnode --quorum -N nodeC
mmstartup -N nodeC
3. Restore original node quorum designation for site A at site B and start GPFS on site A:
mmchcluster –p nodeB002
mmdelnode -N nodeA001,nodeA002,nodeA003,nodeA004,nodeC
mmaddnode -N gpfs.sitesAC
mmchcluster -p LATEST
mmchcluster -p nodeA001
mmstartup -N gpfs.sitesAC
e. Prepare the new disks for use in the cluster, create the NSDs using the original disk descriptors for
site A contained in the file clusterDisksAC:
%nsd: device=/dev/diskA1
servers=nodeA002,nodeA003
usage=dataAndMetadata
failureGroup=1
%nsd: device=/dev/diskA2
servers=nodeA003,nodeA002
usage=dataAndMetadata
failureGroup=1
%nsd: device=/dev/diskC1
servers=nodeC
usage=descOnly
failureGroup=3mmcrnsd -F clusterDisksAC
f. Add the new NSDs to the file system specifying the -r option to rebalance the data on all disks:
mmdelnsd "gpfs1nsd;gpfs2nsd;gpfs5nsd"
mmdelnode -N nodeA001,nodeA002,nodeA003,nodeA004,nodeC
mmaddnode -N gpfs.sitesAC
mmstartup -N gpfs.sitesAC
d. Prepare the new disks for use in the cluster, create the NSDs using the original disk descriptors for
site A contained in the file clusterDisksAC:
%nsd: device=/dev/diskA1
servers=nodeA002,nodeA003
%nsd: device=/dev/diskA2
servers=nodeA003,nodeA002
usage=dataAndMetadata
failureGroup=1
%nsd: device=/dev/diskC1
servers=nodeC
usage=descOnly
failureGroup=3mmcrnsd -F clusterDisksAC
e. Add the new NSDs to the file system specifying the -r option to rebalance the data on all disks:
Related tasks
Failback with temporary loss and no configuration changes
If the outage was of a temporary nature and your configuration has not been altered, it is a simple process
to fail back to the original state.
Failback with temporary loss and configuration changes in the server-based configuration
If the outage was of a temporary nature and your configuration has been altered, follow this procedure to
fail back to the original state in case primary and secondary configuration servers are in use.
Failback with temporary loss using the Clustered Configuration Repository (CCR) configuration
mechanism
If the outage was of a temporary nature and your configuration has been altered, follow this procedure to
failback to the original state, in case the Clustered Configuration Repository (CCR) configuration scheme is
in use.
Figure 14. A synchronous active-active replication-based mirrored GPFS configuration with a tiebreaker site
nodeA001:quorum-manager
nodeA002:quorum-manager
nodeA003:quorum-manager
nodeA004:client
nodeB001:quorum-manager
nodeB002:quorum-manager
nodeB003:quorum-manager
nodeB004:client
nodeC:quorum-client
4. On the tiebreaker node, issue the mmchconfig command to set the unmountOnDiskFail attribute to
yes:
This action prevents false disk errors in the SAN configuration from being reported to the file system
manager.
5. Enable the unmountOnDiskFail option on the tiebreaker node preventing false disk errors in the
SAN configuration from being reported to the file system manager by issuing the mmchconfig
command:
6. Create an NSD over diskA. The disk descriptor contained in the file DiskDescFile is:
/dev/diskA:nodeA001:nodeA002:dataAndMetadata:1
mmstartup -a
8. Create a GPFS file system and mount it on all nodes at sites A and B.
Failover to the recovery site and subsequent failback for an active/active configuration
For an active/active storage replication based cluster, complete these steps to restore access to the file
system through site B after site A has experienced a disastrous failure.
2. Perform the appropriate commands to make the secondary replication devices available and change
their status from being secondary devices to suspended primary devices.
3. If you needed to relax node quorum or make configuration changes, migrate the primary cluster
configuration server to site B, issue this command:
mmchcluster -p nodeB001
4. If site C, the tiebreaker, failed along with site A, existing node quorum designations must be relaxed in
order to allow the surviving site to fulfill quorum requirements. To relax node quorum, temporarily
change the designation of each of the failed quorum nodes to non-quorum nodes:
5. Ensure the source volumes are not accessible to the recovery site:
• Disconnect the cable
• Define the nsddevices user exit file to exclude the source volumes
6. Restart the GPFS daemon on all surviving nodes:
mmstartup -N gpfs.siteB
mmshutdown -N gpfs.siteB
2. Perform the appropriate commands to make the secondary replication devices available and change
their status from being secondary devices to suspended primary devices.
3. If site C, the tiebreaker, failed along with site A, existing node quorum designations must be relaxed in
order to allow the surviving site to fulfill quorum requirements. To relax node quorum, temporarily
change the designation of each of the failed quorum nodes to nonquorum nodes using the –- force
option:
mmstartup -N gpfs.siteB
Note:
• Make no further changes to the quorum designations at site B until the failed sites are back on line and
the following failback procedure has been completed.
• Do not shut down the current set of nodes on the surviving site B and restart operations on the failed
sites A and C. This will result in a non-working cluster.
Failback procedure
After the operation of site A has been restored, the failback procedure is completed to restore the access
to the file system from that location. The following procedure is the same for both configuration schemes
(server-based and Clustered Configuration Repository (CCR)). The failback operation is a two-step
process:
1. For each of the paired volumes, resynchronize the pairs in the reserve direction with the recovery LUN
diskB acting as the sources for the production LUN diskA. An incremental resynchronization is
performed, which identifies the mismatching disk tracks, whose content is then copied from the
recovery LUN to the production LUN. Once the data has been copied and the replication is running in
the reverse direction this configuration can be maintained until a time is chosen to switch back to site
A.
2. Shut GPFS down at site B and reverse the disk roles (the original primary disk becomes the primary
again), bringing the replication pair to its initial state.
a. Stop the GPFS daemon on all nodes.
b. Perform the appropriate actions to switch the replication direction so that diskA is now the source
and diskB is the target.
c. If during failover you migrated the primary cluster configuration server to a node in site B:
1) Migrate the primary cluster configuration server back to site A:
mmchcluster -p nodeA001
3) Ensure that all nodes have the latest copy of the mmsdrfs file:
mmchcluster -p LATEST
mmstartup -a
Figure 15. A synchronous active-passive storage replication-based GPFS configuration without a tiebreaker
site
lunP1-lunR1 (source-target)
lunP2-lunR2 (source-target)
lunP3-lunR3 (source-target)
lunP4-lunR4 (source-target)
.
2. Create the recovery cluster selecting nodeR001 as the primary cluster data server node, nodeR002 as
the secondary cluster data server nodes, and the nodes in the cluster contained in the file
NodeDescFileR. The NodeDescFileR file contains the node descriptors:
nodeR001:quorum-manager
nodeR002:quorum-manager
nodeR003:quorum-manager
nodeR004:quorum-manager
nodeR005
3. Create the GPFS production cluster selecting nodeP001 as the primary cluster data server node,
nodeP002 as the secondary cluster data server node, and the nodes in the cluster contained in the file
NodeDescFileP. The NodeDescFileP file contains the node descriptors:
nodeP001:quorum-manager
nodeP002:quorum-manager
nodeP003:quorum-manager
nodeP004:quorum-manager
nodeP005
4. At all times the peer clusters must see a consistent image of the mirrored file system's configuration
state contained in the mmsdrfs file. After the initial creation of the file system, all subsequent updates
to the local configuration data must be propagated and imported into the peer cluster. Execute the
mmfsctl syncFSconfig command to resynchronize the configuration state between the peer
clusters after each of these actions in the primary GPFS cluster:
• Addition of disks through the mmadddisk command
• Removal of disks through the mmdeldisk command
• Replacement of disks through the mmrpldisk command
• Modifications to disk attributes through the mmchdisk command
• Changes to the file system's mount point through the mmchfs -T command
To automate the propagation of the configuration state to the recovery cluster, activate and use the
syncFSconfig user exit. Follow the instructions in the prolog of /usr/lpp/mmfs/samples/
syncfsconfig.sample.
mmstartup -a
6. Create the NSDs at the production site. The disk descriptors contained in the file DiskDescFileP are:
/dev/hdisk11:nodeP001:nodeP002:dataAndMetadata:-1
/dev/hdisk12:nodeP001:nodeP002:dataAndMetadata:-1
/dev/hdisk13:nodeP001:nodeP002:dataAndMetadata:-1
/dev/hdisk14:nodeP001:nodeP002:dataAndMetadata:-1
mmcrnsd –F DiskDescFileP
7. Create the GPFS file system and mount it on all nodes at the production site:
mmshutdown –a
2. Perform the appropriate commands to make the secondary replication devices available and change
their status from being secondary devices to suspended primary devices.
3. From a node in the recovery cluster start GPFS:
mmstartup –a
mmshutdown -N gpfs.siteB
2. Perform the appropriate commands to make the secondary replication devices available and change
their status from being secondary devices to suspended primary devices.
3. If site C, the tiebreaker, failed along with site A, existing node quorum designations must be relaxed in
order to allow the surviving site to fulfill quorum requirements. To relax node quorum, temporarily
change the designation of each of the failed quorum nodes to nonquorum nodes using the –- force
option:
4. Ensure that the source volumes are not accessible to the recovery site:
• Disconnect the cable
• Define the nsddevices user exit file to exclude the source volumes
mmstartup -N gpfs.siteB
Note: Make no further changes to the quorum designations at site B until the failed sites are back on line
and the following failback procedure has been completed. Do not shut down the current set of nodes on
the surviving site B and restart operations on the failed sites A and C. This will result in a non-working
cluster.
Failback procedure
After the physical operation of the production site has been restored, complete the failback procedure to
transfer the file system activity back to the production GPFS cluster. The following procedure is the same
for both configuration schemes (server-based and Clustered Configuration Repository (CCR)). The failback
operation is a two-step process:
1. For each of the paired volumes, resynchronize the pairs in the reserve direction with the recovery LUN
lunRx acting as the sources for the production LUN lunPx. An incremental resynchronization will be
performed which identifies the mismatching disk tracks, whose content is then copied from the
recovery LUN to the production LUN. Once the data has been copied and the replication is running in
the reverse direction this configuration can be maintained until a time is chosen to switch back to site
P.
2. If the state of the system configuration has changed, update the GPFS configuration data in the
production cluster to propagate the changes made while in failover mode. From a node at the recovery
site, issue:
3. Stop GPFS on all nodes in the recovery cluster and reverse the disk roles so the original primary disks
become the primaries again:
a. From a node in the recovery cluster, stop the GPFS daemon on all nodes in the recovery cluster:
mmshutdown –a
b. Perform the appropriate actions to switch the replication direction so that diskA is now the source
and diskB is the target.
c. From a node in the production cluster, start GPFS:
mmstartup –a
d. From a node in the production cluster, mount the file system on all nodes in the production cluster.
2. Run the establish FlashCopy pair task to create the following volume pairs:
3. From any node in the GPFS cluster, resume the file system activity:
NFS monitoring
Every node in the CNFS cluster runs a separate GPFS utility that monitors GPFS, NFS, and networking
components on the node. Upon failure detection and based on your configuration, the monitoring utility
might invoke a failover.
While an NFS server is in a grace period, the NFS monitor sets the NFS state of the server to "Degraded".
Related concepts
NFS failover
As part of GPFS recovery, the CNFS cluster failover mechanism is invoked. It transfers the NFS serving
load that was served by the failing node to another node in the CNFS cluster. Failover is done using
recovery groups to help choose the preferred node for takeover.
NFS locking and load balancing
Clustered Network File System (CNFS) supports a failover of all of the node’s load together (all of its NFS
IP addresses) as one unit to another node. However, if no locks are outstanding, individual IP addresses
can be moved to other nodes for load balancing.
CNFS network setup
In addition to one set of IP addresses for the GPFS cluster, a separate set of one or more IP addresses is
required for CNFS serving.
CNFS setup
You can set up a clustered NFS environment within a GPFS cluster.
CNFS administration
There are some common CNFS administration tasks in this topic along with a sample configuration.
NFS failover
As part of GPFS recovery, the CNFS cluster failover mechanism is invoked. It transfers the NFS serving
load that was served by the failing node to another node in the CNFS cluster. Failover is done using
recovery groups to help choose the preferred node for takeover.
The failover mechanism is based on IP address failover. The CNFS IP address is moved from the failing
node to a healthy node in the CNFS cluster. In addition, it guarantees NFS lock (NLM) recovery.
CNFS setup
You can set up a clustered NFS environment within a GPFS cluster.
To do this, follow these steps:
1. Designate a separate directory for the CNFS shared files:
mmchconfig cnfsSharedRoot=directory
where:
cnfsSharedRoot=directory
Is the path name to a GPFS directory, preferably on a small separate file system that is not
exported by NFS. The GPFS file system that contains the directory must be configured to be
mounted automatically upon GPFS start on each of the CNFS nodes (-A yes option on the
mmchfs command). cnfsSharedRoot is a mandatory parameter and must be defined first.
2. Add all GPFS file systems that need to be exported to /etc/exports. For NSF export considerations,
see the topic Exporting a GPFS file system using NFS in the IBM Spectrum Scale: Administration Guide.
3. If the shared directory from step 1 is in an exported file system, restrict access to that directory.
4. Use the mmchnode command to add nodes to the CNFS cluster:
where:
ip_address_list
Is a comma-separated list of host names or IP addresses to be used for GPFS cluster NFS serving.
node
Identifies a GPFS node to be added to the CNFS cluster.
For more information, see the topic mmchnode command in the IBM Spectrum Scale: Command and
Programming Reference.
5. Use the mmchconfig command to configure the optional CNFS parameters.
cnfsMountdPort=mountd_port
Specifies the port number to be used for the rpc.mountd daemon.
For CNFS to work correctly with the automounter (AMD), the rpc.mountd daemon on the different
nodes must be bound to the same port.
Found NFS version mismatch between CNFS and current running config, check the OS config
files.
6. If multiple failover groups are desired, assign a group ID to each NFS node:
To assign NFS nodes to different groups, use a group ID that is in a different range of ten. For example,
a node with group ID 2n will fail over only to nodes in the same range of ten (which means any node
with group ID 20 to 29). Failover in the same group will first look for one of the nodes with the same
group ID. If none are found, any node in the group range starting at n0 to n9 is selected.
Related concepts
NFS monitoring
Every node in the CNFS cluster runs a separate GPFS utility that monitors GPFS, NFS, and networking
components on the node. Upon failure detection and based on your configuration, the monitoring utility
might invoke a failover.
NFS failover
As part of GPFS recovery, the CNFS cluster failover mechanism is invoked. It transfers the NFS serving
load that was served by the failing node to another node in the CNFS cluster. Failover is done using
recovery groups to help choose the preferred node for takeover.
NFS locking and load balancing
Clustered Network File System (CNFS) supports a failover of all of the node’s load together (all of its NFS
IP addresses) as one unit to another node. However, if no locks are outstanding, individual IP addresses
can be moved to other nodes for load balancing.
CNFS network setup
In addition to one set of IP addresses for the GPFS cluster, a separate set of one or more IP addresses is
required for CNFS serving.
CNFS administration
There are some common CNFS administration tasks in this topic along with a sample configuration.
CNFS administration
There are some common CNFS administration tasks in this topic along with a sample configuration.
To query the current CNFS configuration, enter:
mmlscluster --cnfs
Note: This operation affects only the high-availability aspects of the CNFS functionality. Normal NFS
exporting of the data from the node is not affected. All currently defined CNFS IP addresses remain
unchanged. There will be no automatic failover from or to this node in case of a failure. If failover is
desired, GPFS should be shut down on the affected node prior to issuing the mmchnode command.
Note: If the GPFS daemon is running on a node on which CNFS is being re-enabled, the node will try to
activate its CNFS IP address. If the IP address was currently on some other CNFS-enabled node, that
activation would include a takeover.
To permanently remove nodes from the CNFS cluster, enter:
Note: This operation affects only the high-availability aspects of the CNFS functionality. Normal NFS
exporting of the data from the node is not affected. All currently defined CNFS IP addresses remain
unchanged. There will be no automatic failover from or to this node in case of a failure. If failover is
desired, GPFS should be shut down on the affected node prior to issuing the mmchnode command.
mkdir /gpfs/fs1/ha
3. Create a temporary file called /tmp/hanfs-list, which contains the following lines:
fin18 --cnfs-interface=fin18nfs
fin19 --cnfs-interface=fin19nfs
fin20 --cnfs-interface=fin20nfs
mmchconfig cnfsSharedRoot=/gpfs/fs1/ha
mmchnode -S /tmp/hanfs-list
6. Access the exported GPFS file systems over NFS. If one or more GPFS nodes fail, the NFS clients
should continue uninterrupted.
Related concepts
NFS monitoring
Every node in the CNFS cluster runs a separate GPFS utility that monitors GPFS, NFS, and networking
components on the node. Upon failure detection and based on your configuration, the monitoring utility
might invoke a failover.
NFS failover
As part of GPFS recovery, the CNFS cluster failover mechanism is invoked. It transfers the NFS serving
load that was served by the failing node to another node in the CNFS cluster. Failover is done using
recovery groups to help choose the preferred node for takeover.
NFS locking and load balancing
Clustered Network File System (CNFS) supports a failover of all of the node’s load together (all of its NFS
IP addresses) as one unit to another node. However, if no locks are outstanding, individual IP addresses
can be moved to other nodes for load balancing.
CNFS network setup
CES features
To successfully use Cluster Export Services (CES), you must consider function prerequisites, setup and
configuration, failover/failback policies, and other management and administration requirements.
mmshutdown -a
mmchconfig cesSharedRoot=shared_root_path
mmstartup -a
The recommendation for CES shared root directory is a dedicated file system. It can also reside in an
existing GPFS file system. In any case, the CES shared root directory must be on GPFS and must be
available when it is configured through the mmchconfig command.
To enable protocol nodes, the CES shared root directory must be defined. To enable protocol nodes, use
the following command:
Preparing to perform service actions on the CES shared root directory file system
The CES shared root directory file system must be kept available for protocols operation to function. If a
service action is to be performed on the CES shared root directory file system, perform the steps that
follow.
Commands such as mmshutdown, mmstartup and mmmount, can be passed in the cesnodes node
class parameter to ensure operation on all protocol nodes.
The following steps are used to perform service actions on the CES shared root file system:
1. Inform users of the impact to protocols. Quiesce protocol related I/O and mounts if possible. Quiesce
cluster functions in progress on protocol nodes such as recalls, migrations, AFM, backup, and any
policies that may be in use on the protocol nodes, or transition these cluster functions to other nodes.
Finally, verify that file system quorum can be achieved by the remaining cluster nodes.
mmshutdown -N cesnodes
Note: Only protocol nodes need to be shut down for service of the CES shared root directory file
system. However, other nodes may need to unmount the file system, depending on what service is
being performed.
Protocol nodes are now ready for service actions to be performed on the CES shared root directory or the
nodes themselves. To recover from a service action:
1. Start up GPFS on all protocol nodes:
mmstartup -N cesnodes
2. Make sure that the CES shared root directory file system is mounted on all protocol nodes:
By default, addresses are distributed among the CES nodes, but a new address can be assigned to a
particular node:
After a CES IP address is added to the address pool, you can manually move the address to a particular
node:
You can remove a CES IP address from the address pool with the mmces command:
Removing an address while there are clients connected causes the clients to lose those connections. Any
reconnection to the removed IP results in a failure. If DNS is used to map a name entry to one or more IP
addresses, update the DNS to ensure that a client is not presented an address that was already removed
from the pool. This process might also include invalidation of any DNS caches.
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
2. Ensure that there are no aliases that are defined in the network-scripts directory for this interface:
# ls -l /etc/sysconfig/network-scripts/ifcfg-eth1:*
ls: /etc/sysconfig/network-scripts/ifcfg-eth1:*: No such file or directory
After the node is enabled as a CES node, no further action is required. CES addresses are added as aliases
to the already configured adapters.
If you manually move the IP address by specifying mmces address move, it sets the affinity of all
moved CES IP addresses to the target node.
Automatic address distribution is performed in the background in a way as to not disrupt the protocol
servers more than necessary. If you want immediate redistribution of the addresses, use the mmces
command to force an immediate rebalance:
In order to prevent an interruption in service, IP addresses that have attributes assigned to them (for
example: object_database_node or object_singleton_node) are not rebalanced.
IPs without a node assignment will not fail back if they were re-assigned due to some failure condition.
You can run the following command to assign a node to an existing CES IP address:
You can run the following command to check the current assignment:
You can further control the assignment of CES addresses by placing nodes or addresses in CES groups.
For more information, see the topic “Configuring CES protocol service IP addresses” on page 42.
mmces service stop [NFS | OBJ | SMB | HDFS | BLOCK] [-N Node[,Node...]]
mmces service start [NFS | OBJ | SMB | HDFS | BLOCK] [-N Node[,Node...]]
• A node or a group of nodes can be suspended and resume normal operation with the following mmces
commands:
After a node is resumed, monitoring on the node is started and the node is eligible for address
assignments.
NFS monitoring
The NFS servers are monitored to check for proper functions. If a problem is found, the CES addresses of
the node are reassigned, and the node state is set to the failed state. When the problem is corrected,
the node resumes normal operation.
NFS clients
When you work with NFS clients, consider the following points:
• If you mount the same NFS export on one client from two different IBM Spectrum Scale NFS protocol
nodes, data corruption might occur.
• The NFS protocol version that is used as the default on a client operating system might differ from what
you expect. If you are using a client that mounts NFSv3 by default, and you want to mount NFSv4, then
you must explicitly specify the relevant NFSv4.0 or NFSv4.1 in the mount command. For more
information, see the mount command for your client operating system.
• To prevent NFS clients from encountering data integrity issues during failover, ensure that NFS clients
are mounted with the option -o hard.
• A client must mount an NFS export by using a CES IP address of a protocol node. If a hostname is used,
ensure that the name is unique and remains unique.
If a DNS Round Robin (RR) entry name is used to mount an NFSv3 export, data unavailability might
occur, due to unreleased locks. The NFS lock manager on IBM Spectrum Scale is not cluster-aware.
• If the client mounts an NFS export by using a CES IP address, which is an IPv6 address, you might need
to enclose the IPv6 address with square brackets. For example,
For more information about mounting with IPv6 address at the NFS client, see the man page for 'nfs'.
• Clients that are performing NFS mounts must use a retry timeout value that is marginally lower than the
NFS server grace period.
CES NFS server enters grace period after the daemon restarts, or when an IP address is released or a
new IP address is acquired. Previously connected clients reclaim their state (for example – file locks,
opens) within the grace period. The default value for grace period is 90 seconds.
The NFS client waits for a response from NFS server for a period that is indicated by timeo before
retrying requests. The timeo can be specified as an option during mount. The value of timeo is
expressed in deciseconds (one-tenth of a second). Clients performing NFS mounts with a retry timeout
value close to the NFS server grace period might cause application failures like I/O errors.
An example to set the retry timeout value as 40 seconds (overriding the Linux client's default value of
60 seconds for TCP) is - mount -o timeo=400 spectrumScaleCESIP:/path/to/
exportedDirectory /localMountPoint.
Integrated installation
The SMB services are installed by the integrated installer together with the CES framework and the other
protocols NFS and Object.
Object monitoring
The object servers are monitored to ensure that they function properly. If a problem is found, the CES
addresses of the node are reassigned, and the node state is set to failed. When the problem is corrected,
the node resumes normal operation.
Object failover
When a CES node leaves the cluster, the CES addresses that are assigned to that node are redistributed
among the remaining nodes. Remote clients that access the Object service might see active connections
drop or a pause in service while the while the CES addresses are moved to the new servers. Clients with
active connections to the CES addresses that are migrated might have their connections unexpectedly
drop. Clients are expected to retry their requests when this happens.
Certain Object-related services can be migrated when a node is taken offline. If the node was hosting the
backend database for Keystone or certain Swift services that are designated as singletons (such as the
auditor), those services are started on the active node that received the associated CES addresses of the
failed node. Normal operation of the Object service resumes after the CES addresses are reassigned and
necessary services automatically restarted.
Object clients
The Object service is based on Swift and Keystone, and externalizes their associated interfaces. Clients
should follow the associated specifications for those interfaces. Clients must be able to handle dropped
connections or delays during CES node failover. In such situations, clients should retry the request or
allow more time for the request to complete.
To connect to an Object service, clients should use a load balancer or DNS service to distribute requests
among the pool of CES IP addresses. Clients in a production environment should not use hard-coded CES
addresses to connect to Object services. For example, the authentication URL should refer to a DNS host
name or a load balancer front end name such as http://protocols.gpfs.net:35357/v3 rather than
a CES address.
As per this information, there are four inodes per account hash directory and four inodes per container
hash directory. In the worst case, there would be one suffix directory, one partition directory, and one
virtual device directory for each account and container. Therefore, the maximum inodes for accounts and
containers can be estimated as:
In a typical object store there are more objects than containers, and more containers than accounts.
Therefore, while estimating the required inodes, we estimate the number of inodes required for accounts
and containers to be seven times the maximum number of containers. The maximum required inodes can
be calculated as shown below:
max required inodes = (inodes for objects and hash directory) + (inodes required for hash
directories) +
(inodes required for partition directories and partition metadata) +
(inodes required for virtual devices) + (inodes required for containers)
max required inodes = (2 x maximum number of objects) + (4096 inodes per partition * 16384
partitions) +
(16384 partitions * 3) + (128 inodes) + (7 * maximum number of containers)
Important: As the number of objects grows, the inode requirement is dominated by the number of
objects. A safe rule of thumb is to allocate three inodes per expected object when there are 10M to 100M
expected objects. For more than 100M, you can allocate closer to 2.5 inodes per object.
Note: This applies to a case when all objects as well as account and container data are in the same fileset.
While using multiple storage policy filesets or a different fileset for account and container data, the
calculations must be adjusted.
HDFS overview
CES HDFS follows the same generic installation methods and prerequisites like the other protocols. For
more information about CES HDFS, see see the Overview and Limitations and Recommendations topics in
Big data and analytics support documentation.
Integrated installation
The HDFS services are installed by the integrated installer together with the CES framework and the other
protocols NFS, SMB, and Object.
Management command
With the mmhdfs and mmces commands, IBM Spectrum Scale provides a comprehensive entry point to
manage all HDFS-related configuration tasks.
HDFS monitoring
The monitoring framework detects HDFS Transparency name node and data node failures. The name
node triggers a failover if an unrecoverable error occurs. For more information, see the mmhealth,
mmhdfs, and the mmces commands in the IBM Spectrum Scale: Command and Programming Reference
guide.
4. When you remove the last node, CNFS is unconfigured and you see an output similar to this result:
[root@esnode3 ~]#
5. Consider de-refencing the GPFS variable cnfsSharedRoot, although this step is not a requirement.
6. You can now delete the /etc/exports file on each of the CNFS nodes. Ensure that you have a
backup copy of this file to use as a reference when you create the exports under CES NFS.
7. Run the systemctl disable nfs command to ensure kNFS does not start automatically.
4. If you have many exports to be converted to CES NFS, use the following command:
ExportCfgFile contains a listing of all your exports as defined in the format that is used for /etc/
ganesha/gpfs.ganesha.exports.conf.
5. Alternately, you can manually re-create each export on the CES cluster by using the mmnfs command.
6. Before you proceed to configure CES nodes, remove the NFS exports from the /etc/exports file
from each of the old CNFS nodes.
7. Add the IPs that were previously assigned to CNFS to the address pool to be managed by CES by using
the following command:
See “CES network configuration” on page 600 for details about how to use this command.
8. Ensure that the IP addresses are unique and valid for your subnet.
For more information about creating protocol data exports, see Fileset considerations for creating protocol
data exports in IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
Auto-generated ID mappings
Auto-generated ID mappings are the default. If no explicit mappings are created by the system
administrator in the Active Directory by using RFC 2307 attributes, all mappings between security
identifiers (SIDs) and UNIX IDs will be created automatically by using a reserved range in UNIX ID space.
Note: If you have a mix of GPFS running on Windows and other Windows clients by accessing the
integrated SMB server function, the ability to share data between these clients was not tested or
validated. With protocol support, the SMB server might also be configured to automatically generate ID
mapping. If you want to ensure that SMB users do not access data (share ID mapping) with Windows
users, ensure that the automatic range for SMB server is different from this range. The range of IDs
automatically generated for the SMB server can be controlled by mmuserauth.
Unless the default reserved ID range overlaps with an ID already in use, no further configuration is
needed to use the auto-generated mapping function. If you have a specific file system or subtree that are
only accessed by user applications from Windows nodes (even if AIX or Linux nodes are used as NSD
servers), auto-generated mappings are sufficient for all application needs.
The default reserved ID range that is used by GPFS starts with ID 15,000,000 and covers 15,000,000 IDs.
The reserved range should not overlap with any user or group ID in use on any AIX or Linux nodes. To
change the starting location or the size of the reserved ID range, use the following GPFS configuration
parameters:
sidAutoMapRangeLength
Controls the length of the reserved range for Windows SID to UNIX ID mapping.
sidAutoMapRangeStart
Specifies the start of the reserved range for Windows SID to UNIX ID mapping.
Note: For planning purposes, auto-generated ID mappings are stored permanently with file system
metadata. A change in the sidAutoMapRangeStart value is only effective for file systems that are
created after the configuration change.
Related concepts
Configuring ID mappings in Active Directory Users and Computers for Windows Server 2016 (and
subsequent) versions
You can configure ID mappings in Active Directory Users and Computers (ADUC) for Windows Server 2016
(and subsequent) versions. You can also compare how IDMU attributes map to RFC 2307 attributes.
Related tasks
Installing Windows IDMU
The Identity Management for UNIX (IDMU) feature is included in Windows Server. This feature needs to
be installed on the primary domain controller, as well as on any backup domain controllers. It is not
Figure 16. Opening the Active Directory Users and Computers directory
2. Enable Advanced Features from the View menu.
For information about how groups information for Microsoft Identity Management for UNIX (IDMU)
component UNIX attributes map to RFC 2307 attributes, use the following table:
Related concepts
Auto-generated ID mappings
Similarly, you need to specify at least two nodes on the DR cluster as gateway nodes. Using the example
setup, the command to specify gateway nodes on the DR cluster is as follows:
File to be used with secondary cluster in next step of cluster DR setup: /root//DR_Config
Note: In this command example, there are two exports that are not protected. During the configuration
step, any exports that are not protected through AFM DR generate a warning to the standard output of
the command.
2. Use the following command to transfer the DR configuration file from the primary cluster to the
secondary cluster.
root@clusternode-vm1's password:
DR_Config 100% 1551 1.5KB/s 00:00
3. On the secondary cluster, use the following command to create the independent filesets that is a part
of the pair of AFM DR filesets associated with those on the primary cluster. In addition to creating
filesets, this command also creates the necessary NFS exports.
Performing step 1/3, creation of independent filesets to be used for AFM DR.
Successfully completed step 1/3, creation of independent filesets to be used for AFM DR.
Performing step 2/3, creation of NFS exports to be used for AFM DR.
Successfully completed step 2/3, creation of NFS exports to be used for AFM DR.
Performing step 3/3, conversion of independent filesets to AFM DR secondary filesets.
Successfully completed step 3/3, conversion of independent filesets to AFM DR secondary filesets.
4. Ensure that all of the expected AFM DR pairs show as Active in the output of the mmafmctl
command and take corrective action if they do not.
# mmafmctl fs0 getstate
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ -------------
nfs-ganesha1 nfs://9.11.102.210/gpfs/fs0/nfs-ganesha1 Active clusternode-vm2 0 4
nfs-ganesha2 nfs://9.11.102.211/gpfs/fs0/nfs-ganesha2 Active clusternode-vm1.tuc.stglabs.ibm.com 0 4
combo1 nfs://9.11.102.210/gpfs/fs0/combo1 Active clusternode-vm1.tuc.stglabs.ibm.com 0 7
combo2 nfs://9.11.102.211/gpfs/fs0/combo2 Active clusternode-vm2 0 66
smb1 nfs://9.11.102.210/gpfs/fs0/smb1 Active clusternode-vm1.tuc.stglabs.ibm.com 0 65
smb2 nfs://9.11.102.211/gpfs/fs0/smb2 Active clusternode-vm1.tuc.stglabs.ibm.com 0 4
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ -------------
object_fileset nfs://9.11.102.211/gpfs/fs1/object_fileset Active clusternode-vm1.tuc.stglabs.ibm.com 0
95671
obj_sofpolicy1 nfs://9.11.102.211/gpfs/fs1/obj_sofpolicy1 Active clusternode-vm1.tuc.stglabs.ibm.com 0 27
obj_sofpolicy2 nfs://9.11.102.210/gpfs/fs1/obj_sofpolicy2 Active clusternode-vm1.tuc.stglabs.ibm.com 0 26
async_dr nfs://9.11.102.210/gpfs/fs1/.async_dr Active clusternode-vm1.tuc.stglabs.ibm.com 0 2751
Note: A state of Dirty is normal when data is actively being transferred from the primary cluster to
the secondary cluster.
File to be used with secondary cluster in next step of cluster DR setup: /root//DR_Config
2. Use the following command to transfer the DR configuration file from the primary cluster to the
secondary cluster.
root@clusternode-vm1's password:
DR_Config 100% 2566 2.5KB/s 00:00
3. On the secondary cluster, use the following command to create the independent filesets that will later
be paired with those on the primary cluster to form AFM DR pairs.
4. Transfer the data from all protected filesets on the primary cluster to the corresponding filesets on the
secondary cluster. If transferring files for which GPFS extended attributes also need to be transferred
(such as object data), you must use a method that transfers GPFS extended attributes. For this
purpose, you can use IBM Spectrum Protect (to back up data to tape and then restore it), GPFS cross-
cluster mount, and AFM. Standard SCP and standard rsync do not transfer GPFS extended attributes.
5. After all the data has been transferred to the secondary cluster, use the following command to
complete the setup on the secondary cluster.
Performing step 1/3, verification of independent filesets to be used for AFM DR.
Successfully completed 1/3, verification of independent filesets to be used for AFM DR.
Performing step 2/3, creation of NFS exports to be used for AFM DR.
Successfully completed step 2/3, creation of NFS exports to be used for AFM DR.
Performing step 3/3, conversion of independent filesets to AFM DR secondary filesets.
Successfully completed step 3/3, conversion of independent filesets to AFM DR secondary
filesets.
6. Ensure that all of the expected AFM DR pairs show as Active in the output of the mmafmctl
command and take corrective action if they do not.
# mmafmctl fs0 getstate
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ -------------
nfs-ganesha1 nfs://9.11.102.210/gpfs/fs0/nfs-ganesha1 Active clusternode-vm2 0 4
nfs-ganesha2 nfs://9.11.102.211/gpfs/fs0/nfs-ganesha2 Active clusternode-vm1.tuc.stglabs.ibm.com 0 4
combo1 nfs://9.11.102.210/gpfs/fs0/combo1 Active clusternode-vm1.tuc.stglabs.ibm.com 0 7
combo2 nfs://9.11.102.211/gpfs/fs0/combo2 Active clusternode-vm2 0 66
smb1 nfs://9.11.102.210/gpfs/fs0/smb1 Active clusternode-vm1.tuc.stglabs.ibm.com 0 65
smb2 nfs://9.11.102.211/gpfs/fs0/smb2 Active clusternode-vm1.tuc.stglabs.ibm.com 0 4
Note: A state of Dirty is normal when data is actively being transferred from the primary cluster to
the secondary cluster.
Performing step 1/4, saving current NFS configuration to restore after failback.
Successfully completed step 1/4, saving current NFS configuration to restore after failback.
Performing step 2/4, failover of secondary filesets to primary filesets.
Successfully completed step 2/4, failover of secondary filesets to primary filesets.
Performing step 3/4, protocol configuration restore.
Successfully completed step 3/4, protocol configuration restore.
Performing step 4/4, create/verify NFS AFM DR transport exports.
Successfully completed step 4/4, create/verify NFS AFM DR transport exports.
Performing step 1/4, saving current NFS configuration to restore after failback.
Successfully completed step 1/4, saving current NFS configuration to restore after failback.
Performing step 2/4, failover of secondary filesets to primary filesets.
================================================================================
= If all steps completed successfully, please remove and then re-create file
= authentication on the DR cluster.
= Once this is complete, Protocol Cluster Failover will be complete.
================================================================================
2. Remove the file authentication on the secondary cluster after failover. Then add back the file
authentication before failover is considered to be complete and client operations can resume, but
point to the secondary cluster.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
The system displays output similar to the following:
2. On the old primary cluster, use the following command one or more times until the amount of time it
takes to complete the operation is less than the RPO value that you have set.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
3. On the secondary cluster (acting primary), quiesce all client operations.
4. On the old primary cluster, use the following command one more time.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
5. On the old primary cluster, use the following command.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
6. On the old primary cluster, use the following command to restore configuration:
7. On the secondary cluster (acting primary), use the following command to convert it back to a
secondary cluster and associate it with the original primary cluster:
Performing step 1/2, converting protected filesets back into AFM DR secondary filesets.
Successfully completed step 1/2, converting protected filesets back into AFM DR secondary
filesets.
Performing step 2/2, restoring/recreating AFM DR-based NFS share configuration.
Successfully completed step 2/2, restoring/recreating AFM DR-based NFS share configuration.
================================================================================
= If all steps completed successfully, remove and then re-create file
= authentication on the Secondary cluster.
= Once this is complete, Protocol Cluster Failback will be complete.
================================================================================
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
The system displays output similar to the following:
2. On the old primary cluster, use the following command one or more times until the amount of time it
takes to complete the operation is less than the RPO value that you have set.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
3. On the secondary cluster (acting primary), quiesce all client operations.
4. On the old primary cluster, use the following command one more time.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
5. On the old primary cluster, use the following command.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
6. On the old primary cluster, use the following command to restore configuration:
================================================================================
= If all steps completed successfully, remove and then re-create file
= authentication on the Primary cluster.
7. On the primary cluster, remove the file authentication and then add it again.
8. On the secondary cluster (acting primary), use the following command to convert it back to a
secondary cluster and associate it with the original primary cluster.
Performing step 1/2, converting protected filesets back into AFM DR secondary filesets.
Successfully completed step 1/2, converting protected filesets back into AFM DR secondary
filesets.
Successfully completed step 1/2, converting protected filesets back into AFM DR secondary
filesets.
Performing step 2/2, restoring/recreating AFM DR-based NFS share configuration.
Successfully completed step 2/2, restoring/recreating AFM DR-based NFS share configuration.
================================================================================
= If all steps completed successfully, remove and then re-create file
= authentication on the Secondary cluster.
= Once this is complete, Protocol Cluster Failback will be complete.
================================================================================
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
9. On the secondary cluster, remove the file authentication and then add it again.
Performing step 1/2, generating recovery snapshots for all AFM DR acting primary filesets.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/combo1/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-1 to fileset link
point of
fileset fs0:combo1 on new primary cluster.
File to be used with new primary cluster in next step of failback to new primary cluster:
/root//DR_Config
2. Transfer the newly created DR configuration file to the new primary cluster.
root@clusternode-vm1's password:
DR_Config 100% 1996 2.0KB/s 00:00
3. On the new primary cluster, use the following command to create the independent filesets that will
receive the data transferred from the recovery snapshots.
Transfer data from recovery snapshots through outbound trucking to the newly created independent
filesets before proceeding to the next step.
4. Transfer data from within the recovery snapshots of the secondary cluster to the new primary cluster.
Note: Only one transfer is shown in the example below.
root@clusternode-vm1's password:
sending incremental file list
test
Attention: When transferring files that need to also transfer GPFS extended attributes, extra
steps are required. This example uses standard rsync which does not transfer extended
attributes.
5. On the new primary cluster, use the following command to convert the independent filesets to
primary filesets and generate a new DR configuration file that will be used on the primary cluster for
the next steps and then transferred to the secondary cluster to be used in a later step.
Performing step 1/2, conversion of independent filesets into new primary filesets to be used for AFM DR.
Successfully completed step 1/2, failback to primary on all AFM DR protected filesets.
Performing step 2/2, creation of output file for remaining failback to new primary steps.
Successfully completed step 2/2, creation of output file for remaining failback to new primary steps.
File to be used with new primary cluster in next step of failback to new primary cluster: /root//
DR_Config
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
7. On the new primary cluster, use the following command one or more times until the amount of time it
takes to complete the operation is less than the RPO value that you have set.
11. On the new primary cluster, use the following command to restore the protocol and export services
configuration information.
Note: The --new-primary option must be used to ensure protocol configuration is restored
correctly.
The system displays output similar to the following:
12. Transfer the updated DR configuration file from the new primary cluster to the secondary cluster.
root@clusternode-vm1's password:
DR_Config 100% 2566 2.5KB/s 00:00
13. On the secondary cluster, use the following command to register the new primary AFM IDs to the
independent filesets on the secondary cluster acting as part of the AFM DR pairs.
Performing step 1/2, converting protected filesets back into AFM DR secondary filesets.
Successfully completed step 1/2, converting protected filesets back into AFM DR secondary
filesets.
Performing step 2/2, recreating AFM DR-based NFS share configuration.
Successfully completed step 2/2, recreating AFM DR-based NFS share configuration.
================================================================================
= If all steps completed successfully, remove and then re-create file
= authentication on the Secondary cluster.
= Once this is complete, Protocol Cluster Failback will be complete.
================================================================================
Performing step 1/2, generating recovery snapshots for all AFM DR acting primary filesets.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/combo1/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-1 to fileset link
point of
fileset fs0:combo1 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/combo2/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-2 to fileset link
point of
fileset fs0:combo2 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/nfs-ganesha1/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-3 to fileset
link
point of fileset fs0:nfs-ganesha1 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/nfs-ganesha2/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-4 to fileset
link
point of fileset fs0:nfs-ganesha2 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/smb1/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-5 to fileset link
point of
fileset fs0:smb1 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs0/smb2/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DEBF-6 to fileset link
point of
fileset
fs0:smb2 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs1/.async_dr/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DECB-2 to fileset link
point of fileset fs1:async_dr on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs1/obj_sofpolicy1/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DECB-3 to
fileset link
point of fileset fs1:obj_sofpolicy1 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs1/obj_sofpolicy2/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DECB-4 to
fileset link
point of fileset fs1:obj_sofpolicy2 on new primary cluster.
Transfer all data under snapshot located on acting primary cluster at:
/gpfs/fs1/object_fileset/.snapshots/psnap0-newprimary-base-rpo-090B66F65623DECB-1 to
fileset link
point of fileset fs1:object_fileset on new primary cluster.
Successfully completed step 1/2, generating recovery snapshots for all AFM DR acting primary
filesets.
Performing step 2/2, creation of recovery output file for failback to new primary.
Successfully completed step 2/2, creation of recovery output file for failback to new
primary.
File to be used with new primary cluster in next step of failback to new primary cluster:
/root//DR_Config
2. Transfer the newly created DR configuration file to the new primary cluster.
root@clusternode-vm1's password:
DR_Config 100% 1996 2.0KB/s 00:00
3. On the new primary cluster, use the following command to create the independent filesets that will
receive the data transferred from the recovery snapshots.
root@clusternode-vm1's password:
sending incremental file list
test
Attention: When transferring files that need to also transfer GPFS extended attributes, extra
steps are required. This example uses standard rsync which does not transfer extended
attributes.
5. On the new primary cluster, use the following command to convert the independent filesets to
primary filesets and generate a new DR configuration file that will be used on the primary cluster for
the next steps and then transferred to the secondary cluster to be used in a later step.
Performing step 1/2, conversion of independent filesets into new primary filesets to be used for AFM DR.
Successfully completed step 1/2, failback to primary on all AFM DR protected filesets.
Performing step 2/2, creation of output file for remaining failback to new primary steps.
Successfully completed step 2/2, creation of output file for remaining failback to new primary steps.
File to be used with new primary cluster in next step of failback to new primary cluster: /root//
DR_Config
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
7. On the new primary cluster, use the following command one or more times until the amount of time it
takes to complete the operation is less than the RPO value that you have set.
Note: The --input-file-path parameter is optional but it might be needed if access to the
configuration file is not available in the configuration fileset.
10. On the new primary cluster, use the following command to stop the failback process and convert the
new primary filesets to read/write.
11. On the new primary cluster, use the following command to restore the protocol and export services
configuration information.
Note: The --new-primary option must be used to ensure protocol configuration is restored
correctly.
The system displays output similar to the following:
================================================================================
= If all steps completed successfully, remove and then re-create file
= authentication on the Primary cluster.
= Once this is complete, Protocol Cluster Configuration Restore will be complete.
================================================================================
12. On the primary cluster, remove the file authentication and then add it again.
13. Transfer the updated DR configuration file from the new primary cluster to the secondary cluster.
root@clusternode-vm1's password:
DR_Config 100% 2566 2.5KB/s 00:00
14. On the secondary cluster, use the following command to register the new primary AFM IDs to the
independent filesets on the secondary cluster acting as part of the AFM DR pairs.
Performing step 1/2, converting protected filesets back into AFM DR secondary filesets.
Successfully completed step 1/2, converting protected filesets back into AFM DR secondary
filesets.
Performing step 2/2, restoring AFM DR-based NFS share configuration.
Successfully completed step 2/2, restoring AFM DR-based NFS share configuration.
================================================================================
= If all steps completed successfully, remove and then re-create file
= authentication on the Secondary cluster.
15. On the secondary cluster, remove the file authentication and then add it again.
For backup, you can use IBM Spectrum Protect (formerly known as Tivoli Storage Manager) or some
other tool. For example, you can use mmbackup as follows:
2. On the primary cluster, restore data from the off cluster storage into the configuration fileset. If
mmbackup was used to back up the configuration fileset, the IBM Spectrum Protect command to
restore is similar to the following:
3. On the primary cluster, use the following command to restore the configuration information:
In some cases, running the mmcesdr primary restore command might display the following error
message:
Saved configuration file does not exist.. In this case, do the following:
• If this cluster is part of a Protocols DR relationship, place a copy of the DR configuration file at a
specified location and run the mmcesdr primary restore command again using the --input-
file-path option.
• If this cluster is not part of a Protocols DR relationship, run this command again with the --file-
config --restore option to force restoring the file configuration information. The system displays
output similar to the following:
================================================================================
4. On the primary cluster, remove the file authentication and then add it again:
Note: If you want to perform a restore as part of a failback (either to an old primary cluster or a new
primary cluster) and want to re-create the file configuration/exports, use one of the following
commands:
mmcesdr primary restore
or
mmcesdr primary restore --file-config --recreate.
Note: No output is generated by the command, because this command is designed to be scripted and
run on a regular basis or run as a part of a callback. The update command can only be used to update
the primary configuration after Protocols DR has been configured. If no secondary cluster exists, use
the mmcesdr primary backup command to back up configuration for later restore.
Failover steps for object configuration if you are using local authentication for
object
Use the following steps on a protocol node in the secondary cluster to fail over the object configuration
data when you are using local authentication for object.
You need to determine the following two values in the secondary cluster:
Cluster host name
Specifies the DNS value that returns a CES IP address from the pool of addresses in the secondary
cluster.
Object database node
Specifies the CES IP address that is configured to run the postgresql-obj database for object services.
You can find this value as the address designated as the object_database_node in the output of
the mmces address list command:
Important:
The following object steps need to be run on the node designated as object_database_node in the
secondary cluster. Running these object steps makes sure that postgresql-obj and Keystone servers
can connect during this configuration process.
1. Run the following command to stop the object protocol services:
2. Make two changes in the preserved Cluster Configuration Repository (CCR) configuration to update it
for the DR environment:
a) Edit the keystone.conf file to change the database connection address to
object_database_node of the secondary cluster:
Change this:
[database]
connection = postgresql://keystone:[email protected]/keystone
to this:
[database]
connection = postgresql://keystone:[email protected]/keystone
Note: If the mmcesdr command is used to save the protocol cluster configuration, then the
preserved copy of the keystone.conf file is at the following location:
CES_shared_root_mount_point/.async_dr/Failover_Config/Object_Config/
latest/ccr_files/keystone.conf
You can edit the file directly to make this change or use the openstack-config command.
Retrieve the current value by using get, and then update it using the set option:
b) The ks_dns_name variable is one of the object-related variables that was originally preserved from
CCR. Modify the value of this variable to the cluster hostname of the secondary cluster.
Note: If the mmcesdr command is used to save the protocol cluster configuration, then the
preserved copy of the ks_dns_name variable is located as a line in the following file:
CES_shared_root_mount_point/.async_dr/Failover_Config/Object_Config/
latest/ccr_vars/file_for_ccr_variables.txt
Change the value of the variable in this preserved copy of the file.
3. [Optional] If spectrum-scale-localRegion.conf exists from CCR, change the cluster hostname
and cluster ID properties to the cluster host name and cluster ID as shown in the output of the
mmlscluster command.
4. Restore the Postgres database information to the shared root directory. The directory needs to be
first cleaned out before the archive is restored. Cleaning out the directory can be done by running
commands similar to the following, assuming that the directory was .tar file or .zip file when it
was backed up:
a) Run the following command to delete the old Postgres data:
rm -rf <shared_root_location>/object/keystone/*
b) Run the following command to verify that the shared root directory is empty:
ls <shared_root_location>/object/keystone
d) Run the following command to delete the process status file from the primary:
rm -rf <shared_root_location>/object/keystone/postmaster.pid
ls <shared_root_location>/object/keystone
5. Restore the object configuration CCR files except objRingVersion, including keystone.conf with
the modification for object_database_node, with a command similar to the following:
6. If object policies are present, restore the object policy-related CCR files.
7. Restore the object configuration CCR file objRingVersion.
8. Restore the object configuration CCR variables, including ks_dns_name with the modification for
cluster host name, with a command similar to the following:
9. Run the following command to start the Postgres database. Then, verify that the Postgres database is
running:
source /root/openrc
11. Run the following command for the value of the api_v3 pipeline. Save the output of this command
into the variable <savedAPI_V3Pipeline>.
mmobj config list --ccrfile keystone-paste.ini --section pipeline:api_v3 --
property pipeline.
If the value of the api_v3 pipeline does not have the string admin_token_auth, then do the
following:
a) Make a note that the api_v3 pipeline had to be updated.
b) Generate the new value of the api_v3 pipeline by inserting the string admin_token_auth
directly after the string token_auth in the saved copy of the api_v3 pipeline.
c) Run the following command to change the api_v3 pipeline value: mmobj config change --
ccrfile keystone-paste.ini --section pipeline:api_v3 --property pipeline
--value <newAPI_V3Pipeline>.
<newAPI_V3Pipeline> is the updated value from the previous step.
d) Run the following command to list the updated api_v3 pipeline value and make sure that the
string isadmin_token_authis present: mmobj config list --ccrfile keystone-
paste.ini --section pipeline:api_v3 --property pipeline.
12. Save the restored CCR copy of the keystone.conf to the local location using a command similar to
the following command:
Also, update the owner and the group of this file using the following command:
Note: If SSL is enabled, SSL certificates need to be in place when you save the keystone.conf file
from another cluster.
13. If the DEFAULT admin_token set, run the following command to save its current value:
If the command returns a value, save it. The value needs to be restored later.
14. In the keystone.conf file, run the following command to set admin_token to ADMIN by using
openstack-config:
15. Run the following command to set the following environment variables:
16. Run the following command to start Keystone services and get the list of endpoint definitions:
17. Update the host name specified in the endpoint definitions in the URL value from the endpoint list.
The values in the endpoint table might have the cluster host name (such as ces1) from the primary
system. They need to be updated for the cluster host name in the DR environment. In some
environments, the cluster host name is the same between the primary and secondary clusters. If that
is the case, skip this step.
a) Delete the existing endpoints with the incorrect cluster host name. For each of the endpoints, use
the ID value to delete the endpoint. Run the following command to delete each of the six
endpoints:
b) Run the following commands to re-create the endpoints with the cluster host name of the
secondary cluster:
The CHN variable in the following commands is the cluster host name for the secondary cluster.
c) Run the following command to verify that the endpoints are now using the correct cluster:
18. If the api_v3 pipeline had to be updated previously, run the following command to return it to its
original value: mmobj config change --ccrfile keystone-paste.ini --section
pipeline:api_v3 --property pipeline --value <savedAPI_V3Pipeline>
, where <savedAPI_V3Pipeline> is the value of the api_v3 pipeline that is saved.
19. Depending on whether a value for the DEFAULT admin_token was previously set, do one of the
following:
• If a value for the DEFAULT admin_token was previously set, run the following command to reset
it to that value:
• If there was no previous value for the DEFAULT admin_token, run the following command to
delete the value that was set to convert the endpoint definitions:
20. Run the following commands to stop the services that were manually started earlier and clean up:
21. Run the following command to start the object protocol services:
2. Restore the object configuration CCR files except objRingVersion with a command similar to the
following:
3. If object policies are present, restore the object policy-related CCR files (that is *.builder and
*.ring.gz files).
4. Restore the object configuration CCR file objRingVersion.
5. Restore the object configuration CCR variables with a command similar to the following:
Important:
The following object steps need to be run on the node designated as object_database_node in the
primary cluster. Running these object steps makes sure that postgresql-obj and Keystone servers can
connect during this configuration process.
1. Run the following command to stop the object protocol services:
2. Restore the Postgres database information to the shared root directory. The directory needs to be first
cleaned out before the archive is restored. Cleaning out the directory can be done with commands
similar to the following, assuming that the directory was .tar or .zip file when it was backed up:
a) Run the following command to delete the old Postgres data:
rm -rf <shared_root_location>/object/keystone/*
b) Run the following command to verify that the shared root directory is empty:
ls <shared_root_location>/object/keystone
d) Run the following command to delete the process status file from the primary:
rm -rf <shared_root_location>/object/keystone/postmaster.pid
ls <shared_root_location>/object/keystone
3. UN the following command to restore the object configuration CCR files except objRingVersion:
4. If object policies are present, restore the object policy-related CCR files (that is *.builder and
*.ring.gz files).
5. Restore the object configuration CCR file objRingVersion.
6. Run the following command to restore the object configuration CCR variables:
10. Remove the SMB shares that are not protected using AFM DR independent filesets.
3. Delete all files from the /var/lib/ctdb/persistent directory on all protocol nodes.
8. Issue the following command on the failback cluster to start the NFS service:
If the NFS exports are independent filesets, AFM based Disaster Recovery (AFM DR) can be used to
replicate the data.
The NFS protocol related CCR files that need to be backed up are as follows.
• gpfs.ganesha.main.conf
• gpfs.ganesha.nfsd.conf
• gpfs.ganesha.log.conf
• gpfs.ganesha.exports.conf
• gpfs.ganesha.statdargs.conf
The following NFS protocol related CCR variable needs to be backed up.
• nextexportid
Related concepts
Object data required for protocols cluster DR
Data required for object protocol in a disaster recovery scenario is as follows.
SMB data required for protocols cluster DR
Data required for the SMB protocol in case of a disaster recovery scenario is as follows.
Authentication related data required for protocols cluster DR
Authentication data that is necessary in a disaster recovery scenario is as follows.
CES data required for protocols cluster DR
2. Edit the saved gpfs.ganesha.exports.conf export configuration file to remove all exports that are
not protected through AFM-DR independent filesets.
3. Restore the NFS-related CCR files. For a list of these files, see “NFS data required for protocols cluster
DR” on page 650.
4. Restore the nextexportid CCR variable.
5. Load the exports file by issuing the following command:
2. Restore the NFS related CCR files. For a list of these files, see “NFS data required for protocols cluster
DR” on page 650.
3. Restore the nextexportid CCR variable.
4. Load the exports file using the following command:
mmchconfig readReplicaPolicy=default
• To specify that the policy read replicas from the local disk, if the local disk has data, issue the
following:
mmchconfig readReplicaPolicy=local
• To specify that the policy read replicas from the fastest disk to read from based on the disk's read
I/O statistics, run the following:
mmchconfig readReplicaPolicy=fastest
Note: In an FPO-enabled file system, if you run data locality awareness workload over FPO, such as
Hadoop or Spark, configure readReplicaPolicy as local to read data from the local disks to reduce
the network bandwidth consumption.
See the description of storage pool stanzas that follows. Also, see the following command
descriptions in the IBM Spectrum Scale: Command and Programming Reference:
• mmadddisk
• mmchconfig
• mmcrfs
Storage pool stanzas
Storage pool stanzas are used to specify the type of layout map and write affinity depth, and to enable
write affinity, for each storage pool.
Storage pool stanzas have the following format:
%pool:
pool=StoragePoolName
blockSize=BlockSize
usage={dataOnly | metadataOnly | dataAndMetadata}
layoutMap={scatter | cluster}
allowWriteAffinity={yes | no}
writeAffinityDepth={0 | 1 | 2}
blockGroupFactor=BlockGroupFactor
See the following command descriptions in the IBM Spectrum Scale: Command and Programming
Reference:
• mmadddisk
• mmcrfs
• mmchpool
Recovery from disk failure
A typical shared nothing cluster is built with nodes that have direct-attached disks. Disks are not
shared between nodes as in a regular GPFS cluster, so if the node is inaccessible, its disks are also
inaccessible. GPFS provides means for automatic recovery from these and similar common disk
failure situations.
The following command sets up and activates the disk recovery features:
mmchconfig restripeOnDiskFailure=yes -i
mmchconfig metadataDiskWaitTimeForRecovery=seconds
mmchconfig dataDiskWaitTimeForRecovery=seconds
The default value for metadataDiskWaitTimeForRecovery is 1800 seconds. The default value for
dataDiskWaitTimeForRecovery is 3600 seconds.
See the following command description in the IBM Spectrum Scale: Command and Programming
Reference:
• mmchconfig
Use the mmlslicense -L command to view license information for the cluster.
Nodes with no disks in the file system are called as diskless nodes. Run the mmchlicense client --
accept -N command to accept the client license for disks that have no disks in the IBM Spectrum Scale
file system.
Start the IBM Spectrum Scale cluster to verify whether it starts successfully. Use the mmstartup –a
command to start the IBM Spectrum Scale cluster and the mmgetstate –a command to view the state
of the IBM Spectrum Scale cluster.
# gpfstest9
%nsd: nsd=node9_meta_sdb device=/dev/sdb servers=gpfstest9 usage=metadataOnly failureGroup=1 pool=system
#gpfstest10
%nsd: nsd=node10_meta_sda device=/dev/sda servers=gpfstest10 usage=metadataOnly failureGroup=2 pool=system
#gpfstest11
If any disks are previously used by IBM Spectrum Scale, you must use the -v no flag to force IBM
Spectrum Scale to use them again.
Note: Use the -v no flag only if you are sure that the disk can be used by IBM Spectrum Scale.
Use the # mmcrnsd -F diskfile [-v no] command to create NSDs and use the mmlsnsd –m
command to display the NSDs.
# PAGE_POOL=$((${TOTAL_MEM}*25/(100*1024)))
# mmchconfig pagepool=${PAGE_POOL}M
# mmstartup -a
# mmgetstate -a
Use the mmlsconfig and mmdiag commands to see the configuration changes:
# mmlsconfig
# mmdiag --config
For more information on the pool configuration, see “Create IBM Spectrum Scale Network Shared Disks
(NSD)” on page 661.
# mmmount all -a
# mmlsfs all
# mmlsdisk gpfs-fpo-fs –L
Use the mmdf command to view the disk usage for the file system:
# mmdf gpfs-fpo-fs
# cat policyfile
After you create the rule file, use the mmchpolicy command to enable the policy:
Use the mmlspolicy command to display the currently active rule definition:
# mmlspolicy gpfs-fpo-fs –L
After the fileset is created, it must be linked to a directory under this IBM Spectrum Scale file system
mount point. This example uses /mnt/gpfs/mapred/local for intermediate data and /mnt/gpfs/tmp
for temporary data. As /mnt/gpfs/mapred/local is a nested directory, the directory structure must
exist before linking the fileset. These two directories are required for configuring Hadoop.
# mmlsfileset gpfs-fpo-fs -L
The next step to setting up the filesets is to apply a IBM Spectrum Scale policy so the filesets act like local
directories on each node. This policy instructs IBM Spectrum Scale not to replicate the data for these two
filesets, and since these filesets are stored on the data pool, they can use FPO features that keeps local
writes on local disks. Metadata must still be replicated three times, which can result in performance
overhead. File placement policies are evaluated in the order they are entered, so ensure that the policies
for the filesets appear before the default rule.
# cat policyfile
rule 'R1' SET POOL 'datapool' REPLICATE (1,1) FOR FILESET ('mapred-local-fileset')
rule 'R2' SET POOL 'datapool' REPLICATE (1,1) FOR FILESET ('mapred-tmp-fileset')
Use the mmlspolicy command to display the currently active rule definition:
# mmlspolicy gpfs-fpo-fs –L
In each of these filesets, create a subdirectory for each node that run Hadoop jobs. Based on the sample
environment, this script creates these subdirectories:
# cat mk_gpfs_local_dirs.sh
mkdir -p /mnt/gpfs/tmp/${nodename}
mkdir -p /mnt/gpfs/mapred/local/${nodename}
done
# mmlsattr /mnt/gpfs/mapred/local/testRep1
replication factors
-------------------------------------
1 ( 3) 1 ( 3) /mnt/gpfs/mapred/local/testRep1
# mmlsattr /mnt/gpfs/testRep3
replication factors
-------------------------------------
3 ( 3) 3 ( 3) /mnt/gpfs/testRep3
# mkdir -p /mnt/gpfs/user
To make sure that MapReduce jobs can write to the IBM Spectrum Scale file system, assign permissions
to the CLUSTERADMIN user. CLUSTERADMIN is the user who starts Hadoop namenode and datanode
service, for example, user hdfs.
# ls -lR /mnt/gpfs
Changes made in this manner (echoing changes to sysfs) do not persist over reboots. To make these
changes permanent, enable the changes in a script that runs on every boot or (generally preferred)
create a udev rule.
The following sample script sets deadline scheduler for all disks in the cluster that are defined to IBM
Spectrum Scale (this example must be run on the node with passwordless access to all the other
nodes):
#!/bin/bash
/usr/lpp/mmfs/bin/mmlsnsd -X | /bin/awk ' { print $3 " " $5 } ' | \
/bin/grep dev |
while read device node ; do
device=$(echo $device | /bin/sed 's/\/dev\///' )
/usr/lpp/mmfs/bin/mmdsh -N $node "echo deadline >
/sys/block/$device/queue/scheduler"
Done
As previously stated, changes made by echoing to sysfs files (as per this example script) take effect
immediately on running the script, but do not persist over reboots. One approach to making such
changes permanent is to enable a udev rule, as per this example rule to force all block devices to use
deadline scheduler after rebooting. To enable this rule, you can create the following file as /etc/
udev/rules.d/99-hdd.rules):
In the next step, give an example of how to create udev rules that apply only to the devices used by
IBM Spectrum Scale.
2. disk IO parameter change
To further tune the block devices used by IBM Spectrum Scale, run the following commands from the
console on each node:
These block device tuning settings must be large enough for SAS/SATA disks. For /sys/block/
<device>/queue/max_sectors_kb, the tuning value chosen must be less than or equal to /sys/
block/<device>/queue/max_hw_sectors_kb. Many SAS/SATA devices allow setting 16384 for
max_hw_sectors_kb, but not all devices may accept these values. If your device does not allow for the
block device tuning recommendations above, try setting smaller values and cutting the
recommendations in half until the tuning is successful. For example, if setting max_sectors_kb to
16384 results in a write error:
If it is not desirable to tune all block devices with the same settings, multiple rules can be created with
specific tuning for the appropriate devices. To create such device specific rules, you can use the
‘KERNEL’ match key to limit which devices udev rules apply to (for example, KERNEL==sdb). The
following example script can be used to create udev rules that tune only the block devices used by IBM
Spectrum Scale:
#!/bin/bash
#clean up any existing /etc/udev/rules.d/99-hdd.rules files
/usr/lpp/mmfs/bin/mmdsh -N All "rm -f /etc/udev/rules.d/100-hdd.rules"
#collect all disks in use by GPFS and create udev rules one disk at a time
/usr/lpp/mmfs/bin/mmlsnsd -X | /bin/awk ' { print $3 " " $5 } ' | \
/bin/grep dev |
while read device node ; do
device=$(echo $device | /bin/sed 's/\/dev\///' )
echo $device $node
echo "ACTION==\"add|change\", SUBSYSTEM==\"block\", \
KERNEL==\"$device\", ATTR{device/model}==\"*\", \
ATTR{queue/nr_requests}=\"256\", \
ATTR{device/queue_depth}=\"32\", ATTR{queue/max_sectors_kb}=\"16384\" "> \
/tmp/100-hdd.rules
/usr/bin/scp /tmp/100-hdd.rules $node:/tmp/100-hdd.rules
/usr/lpp/mmfs/bin/mmdsh -N $node "cat /tmp/100-hdd.rules >>\
/etc/udev/rules.d/100-hdd.rules"
Done
Note: The previous example script must be run from a node that has ssh access to all nodes in the
cluster. This previous example script will create udev rules that will set the recommended block device
tuning on future reboots. To put the recommended tuning values from steps 1 and 2 in place
immediately in effect, the following example script can be used:
#!/bin/bash
/usr/lpp/mmfs/bin/mmlsnsd -X | /bin/awk ' { print $3 " " $5 } ' | \
/bin/grep dev |
while read device node ; do
device=$(echo $device | /bin/sed 's/\/dev\///' )
/usr/lpp/mmfs/bin/mmdsh -N $node "echo deadline >\
/sys/block/$device/queue/scheduler"
/usr/lpp/mmfs/bin/mmdsh -N $node "echo 16384>\
/sys/block/$device/queue/max_sectors_kb"
/usr/lpp/mmfs/bin/mmdsh -N $node "echo 256 >\
/sys/block/$device/queue/nr_requests"
/usr/lpp/mmfs/bin/mmdsh -N $node "echo 32 >\
/sys/block/$device/device/queue_depth"
Done
Note: The physical disk read cache must be enabled no matter what kind of disk is used. For SAS/SATA
disks without RAID adapters, run the following command to check whether the disk read cache is
enabled or not:
If the value of RCD (Read Cache Disable) is 0, the physical disk read cache is enabled. On Linux,
usually the physical disk read cache is enabled by default.
4. Tune vm.min_free_kbytes to avoid potential memory exhaustion problems.
When vm.min_free_kbytes is set to its default value, in some configurations it is possible to encounter
memory exhaustion symptoms when free memory must be available. It is recommended that
vm.min_free_kbytes be set to between 5~6 percent of the total amount of physical memory, but no
more than 2GB should be allocated for this reserve memory.
To tune this value, add the following into /etc/sysctl.conf and then run 'sysctl -p' on Red Hat® or
SuSE:
vm.min_free_kbytes = <your-min-free-KBmemory>
5. OS network tuning
If your network adapter is 10Gb Ethernet adapter, you can put the following into /etc/sysctl.conf
and then run /sbin/sysctl -p /etc/sysctl.conf on each node:
sunrpc.udp_slot_table_entries = 128
sunrpc.tcp_slot_table_entries = 128
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.core.rmem_default=4194304
net.core.wmem_default=4194304
net.core.netdev_max_backlog = 300000
net.core.somaxconn = 10000
net.ipv4.tcp_rmem = 4096 4224000 16777216
net.ipv4.tcp_wmem = 4096 4224000 16777216
net.core.optmem_max=4194304
If your cluster is based on InfiniBand adapters, see the guide from your InfiniBand adapter vendor.
If you bond two adapters and configure xmit_hash_policy=layer3+4 with bond mode 4 (802.3ad, the
recommended bond mode), IBM Spectrum Scale of one node has only one TCP/IP connection with
another node in the cluster for data transfer. This might make the network traffic only over one
physical connection if the network traffic is not heavy.
If your cluster size is not large (for example, only one physical switch is enough for your cluster nodes),
you could try bonding mode 6 (balance-alb, no special support from switch). This might give better
Change the level of data and metadata replication for any file system by running mmchfs by using
the same -r (DefaultDataReplicas) and -m (DefaultMetadataReplicas) flags to change the default
replication options and then mmrestripefs (with the -R flag) to restripe the file system to match
the new default replication options.
For example:
For more information, see the topics mmchfs command and mmcrfs command in the IBM Spectrum
Scale: Command and Programming Reference.
3. Define the data and the metadata distribution across the NSD server nodes in the cluster:
Ensure that clusters larger than 4 nodes are not defined with a single (dataAndMetadata) system
storage pool.
For performance and RAS reasons, it is recommended that data and metadata be separated in some
configurations (which means that not all the storage is defined to use a single dataAndMetadata
system pool).
These guidelines focus on the RAS considerations related to the implications of losing metadata
servers from the cluster. In IBM Spectrum Scale Shared Nothing configurations (which recommend
setting the unmountOnDiskFail=meta option), a given file system is unmounted when the number
of nodes experiencing metadata disk failures is equal to or greater than the value of the
DefaultMetadataReplicas option defined for the file system (the -m option to the mmcrfs
command as per above). So, for a file system with the typically configured value
DefaultMetadataReplicas=3, the file system will unmount if metadata disks in three separate
locality group IDs fail (when a node fails, all the internal disks in that node will be marked down).
Note: All the disks in the same file system on a given node must have the same locality group ID.
The Locality ID refers to all three elements of the extended failure group topology vector (For
example, the vector 2,1,3 could represent rack 2, rack position 1, node 3 in this portion of the rack).
To avoid file system unmounts associated with losing too many nodes serving metadata, it is
recommended that the number of metadata servers be limited when possible. Also metadata servers
must be distributed evenly across the cluster to avoid the case of a single hardware failure (such as
the loss of a frame/rack or network switch) leading to multiple metadata node failures.
Some suggestions for separation of data and metadata based on cluster size:
1-5 All nodes must have both data and metadata disks.
Depending on the available disks it is optional: both the data and metadata can be
stored on each disk in this configuration (in which case, the NSDs will all be defined as
dataAndMetadata) or the disks can be specifically allocated for data or metadata.
If the disk number per node is equal to or less than 3, define all the disks as
dataAndMetadata.
If the disk number per node is larger than 3, take the 1:3 ratio for metadataOnly disk and
dataOnly disk if your applications are meta data IO sensitive. If your applications are not
metadata IO sensitive, consider using 1 metadataOnly disk.
10 - 19 There are several different layouts, for example, 2 nodes per virtual rack for 10-node
cluster; for 20-node cluster, you can take every 4 nodes per virtual rack or every 2 nodes
per virtual rack; for 15-node cluster, you can take every 3 nodes per virtual rack.
You must keep at least 5 failure groups for meta data and data. This can ensure that you
have enough failure groups for data restripe when you have failures from 2 failure
groups.
To make it simple, it is suggested that every 2 nodes are defined as a virtual rack, with
the first element of the extended failure group kept the same for nodes in the same
virtual rack, and every virtual rack must have a node with metadata disks defined.
For example, for an 18-node cluster, node1~node18, node1 and node2 are considered
as a virtual rack. You can select some disks from node1 as metadataOnly disks and other
disks from node1 and all disks from node2 as dataOnly disks. Ensure that these nodes
are in the same failure group (for example, all dataOnly disks from node1 are of failure
group 1,0,1, all dataOnly disks from node2 are of failure group 1,0,2).
20 or Usually, it is recommended that the virtual rack number be greater than 4 but less than
more 32 with each rack of the same node number. Each rack will be defined as one unique
failure group and you will have 5+ failure groups that can tolerate failures from 2 failure
groups for data restripe. Select one node from each rack to serve as meta data node.
For example, for a 24-node cluster, you can split the clusters into 6 virtual racks with 4
nodes per rack. For 21-node cluster, it is recommended to take 7 virtual racks with 3
nodes per rack. For node number larger than 40, as a starting point, it's recommended
that approximately every 10 nodes should be defined as a virtual rack, with the first
element of the extended failure group kept the same for nodes in the same virtual rack.
As for meta data, every virtual rack should have one node with metadataOnly disks
defined. if you have more than 10+ racks, you could only select 5~10 virtual racks
configured with metadata disks.
As for how many disks must be configured as metadataOnly disks on the node which is
selected for metadataOnly disks, this depends on the exact disk configuration and
workloads. For example, if you configure one SSD per virtual rack, defining the SSD from
each virtual rack as metadataOnly disks will work well for most workloads.
Note:
a. If you are not considering the IOPS requirement from the meta IO operations, usually 5% of the
total disk size in the file system must be kept for meta data. If you can predict how many files your
9. Change the following IBM Spectrum Scale configuration options and then restart IBM Spectrum
Scale.
Note: For IBM Spectrum Scale 4.2.0.3 or 4.2.1 and later, the restart of IBM Spectrum Scale can be
delayed until the next step, because tuning workerThreads will require a restart.
Set each configuration option individually:
mmchconfig readReplicaPolicy=local
mmchconfig unmountOnDiskFail=meta
mmchconfig restripeOnDiskFailure=yes
mmchconfig nsdThreadsPerQueue=10
mmchconfig nsdMinWorkerThreads=48
mmchconfig prefetchaggressivenesswrite=0
mmchconfig prefetchaggressivenessread=2
For versions of IBM Spectrum Scale earlier than 5.0.2, also set one of the following values:
mmchconfig maxStatCache=512
mmchconfig maxStatCache=0
In versions of IBM Spectrum Scale earlier than 5.0.2, the stat cache is not effective on the Linux
platform unless the Local Read-Only Cache (LROC) is configured. For more information, see the
description of the maxStatCache parameter in the topic mmchconfig command in the IBM Spectrum
Scale: Command and Programming Reference.
Set all the configuration options at once by using the mmchconfig command:
mmchconfig readReplicaPolicy=local,unmountOnDiskFail=meta,
restripeOnDiskFailure=yes,nsdThreadsPerQueue=10,nsdMinWorkerThreads=48,
prefetchaggressivenesswrite=0,prefetchaggressivenessread=2
For versions of IBM Spectrum Scale earlier than 5.0.2, also include one of the following expressions:
maxStatCache=512 or maxStatCache=0.
The maxMBpS tuning option must be set as per the network bandwidth available to IBM Spectrum
Scale. If you are using one 10 Gbps link for the IBM Spectrum Scale network traffic, the default value
of 2048 is appropriate. Otherwise scale the value of maxMBpS to be about twice the value of the
network bandwidth available on a per node basis.
For example, for two bonded 10 Gbps links an appropriate setting for maxMBpS is:
Change workerThreads to 512 (the default is 128) to enable additional thread tuning. This change
requires that IBM Spectrum Scale be restarted to take effect.
Note: For IBM Spectrum Scale 4.2.0.3 or 4.2.1 or later, it is recommended that the following
configuration parameters not be changed (setting workerThreads to 512, or (8*cores per node),
will auto-tune these values): parallelWorkerThreads, logWrapThreads, logBufferCount,
maxBackgroundDeletionThreads, maxBufferCleaners, maxFileCleaners, syncBackgroundThreads,
syncWorkerThreads, sync1WorkerThreads, sync2WorkerThreads, maxInodeDeallocPrefetch,
flushedDataTarget, flushedInodeTarget, maxAllocRegionsPerNode, maxGeneralThreads,
worker3Threads, and prefetchThreads.
After you enable auto-tuning by tuning the value of workerThreads, if you previously changed any
of these settings (parallelWorkerThreads, logWrapThreads, and so on) you must restore them back
to their default values by running mmchconfig <tunable>=Default.
b. For IBM Spectrum Scale 4.1.0.x, 4.1.1.x, 4.2.0.0, 4.2.0.1, 4.2.0.2, the default values will work for
most scenarios. Generally only worker1Threads tuning is required:
For IBM Spectrum Scale 4.1.0.x, 4.1.1.x, 4.2.0.0, 4.2.0.1, 4.2.0.2, worker1Threads=72 is a good
starting point (the default is 48), though larger values have been used in database environments
and other configurations that have many disks present.
11. Customers running IBM Spectrum Scale 4.1.0, 4.1.1, and 4.2.0 must change the default configuration
of trace to run in overwrite mode instead of blocking mode.
To avoid potential performance problems, customers running IBM Spectrum Scale 4.1.0, 4.1.1, and
4.2.0 must change the default IBM Spectrum Scale tracing mode from blocking mode to overwrite
mode as follows:
This assumes that 500MB can be made available on each node for IBM Spectrum Scale trace buffers.
If 500MB are not available, then set a lower appropriately sized trace buffer.
12. Consider whether pipeline writing must be enabled.
By default, data ingestion node writes 2 or 3 replicas of the data to the target nodes over the network
in parallel when pipeline writing is disabled (enableRepWriteStream=0). This takes additional
network bandwidth. If pipeline writing is enabled, the data ingestion node only writes one replica
over the network and the target node writes the additional replica. Enabling pipeline writing
(mmchconfig enableRepWriteStream=1 and restarting IBM Spectrum Scale daemon on all
nodes) can increase IO write performance in the following two scenarios:
Note: If the cluster is not dedicated for Hadoop workloads, take the default value for the above
configurations.
For Hadoop-like workloads, one JVM process can open a lot of files. Therefore, tune the ulimit values:
vim /etc/security/limits.conf
# add the following lines at the end of /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
kernel.pid_max
Usually, the default value is 32K. If you see the error allocate memory or unable to create new
native thread, try to increase kernel.pid_max by adding kernel.pid_max=99999 at the end
of /etc/sysctl.conf and then sysctl -p.
Database workload customers using direct I/O must also enable the following preStealPct tuning
depending on the IBM Spectrum Scale levels:
• 3.5 (any PTF level)
• 4.1.1 (below PTF 10)
• 4.2.0 (any PTF level)
• 4.2.1 (below PTF 2).
The database workload customers with direct I/O enabled who are running older code levels must tune
preStealPct as follows:
After upgrading to IBM Spectrum Scale from one of the previously referenced older code levels to a higher
level (especially 4.1.1 PTF 10, 4.2.1 PTF 2, or 4.2.2.0 or higher), you can set the configuration option
preStealPct=0 to its default value as follows:
spark_shuffle_file_buffer=$(/usr/lpp/mmfs/bin/mmlsfs
<filesystem_name> -B | tail -1 | awk ' { print $2} ')
Need to set the Spark configuration option spark.shuffle.file.buffer to the value assigned to
$spark_shuffle_file_buffer.
Defining a large block size for IBM Spectrum Scale file systems used for spark shuffle operations can
improve system performance. However, using a block size larger than 2M can offer useful
improvements on typical hardware used in FPO configurations is not proven.
2. Configure spark.local.dir with local path.
Do not put the Spark’s shuffle data into the IBM Spectrum Scale file system because this slows down
the shuffle process.
Confirming file system has already unmounted in all related nodes through command:
mmlsmount <fsName> -L
6. Suspend disks
Suspend all attached disks in nodes for this upgrade cycle to make sure that GPFS does not try to
allocate new data block from these disks. GPFS can still read valid data block from suspended disk
mmlsdisk <fsName>
mmshutdown -N <nodeList>
mmgetstate -a
8. Upgrade GPFS
You can upgrade GPFS packages in each node of this upgrade cycle.
For general information on how to install GPFS packages on nodes, see the following topics in the
IBM Spectrum Scale: Concepts, Planning, and Installation Guide:
• Installing IBM Spectrum Scale on Linux nodes and deploying protocols
• Installing IBM Spectrum Scale on AIX nodes
• Installing IBM Spectrum Scale on Windows nodes
9. Start GPFS
After all packages are ready, you can start up GPFS:
mmstartup -N <nodeList>
mmgetstate -a
When these disks are in "ready" status and if some of these disks are in “down” availability, you can
start these disks through the following command:
This might take a while since GPFS must do incremental data sync up to keep all data in these
suspended disks are up to date. The time it needs depends on how much data has changed when the
disks were kept in suspended status. You have to wait for mmchdisk start command to finish to
do next step.
Confirming all disks are in ready status and up state through command:
mmlsdisk <fsName>
mmlsmount <fsName> -L
mmchconfig restripeOnDiskFailure=no -i
It's necessary to includes -i option for this change to take effect immediately and permanently.
13. Upgrade GPFS cluster version and file system version
Issue mmchconfig release=LATEST and mmchfs -V compat to ensure the upgrade is
successful and the cluster would never revert to the old build for minor GPFS upgrade. It is
recommended to use mmchfs –V compat to enable backward-compatible format changes.
For major GPFS upgrade, consult IBM Support Center to verify compatibility between the different
GPFS major versions, before issuing mmchfs –V full. For information about specific file system
format and function changes when you upgrade to the current release, see Chapter 19, “File system
format changes between versions of IBM Spectrum Scale,” on page 217.
Rolling upgrades
During a regular upgrade, the IBM Spectrum Scale service is interrupted. For a regular upgrade, you must
shut down the cluster and suspend the application workload of the cluster. During a rolling upgrade, there
is no interruption in the IBM Spectrum Scale service. In a rolling upgrade, the system is upgraded node by
node or failure group by failure group. During the upgrade, IBM Spectrum Scale runs on a subset of nodes.
In a rolling upgrade, nodes from the same failure group must be upgraded at the same time. If nodes from
two or more failure groups stop functioning, only a single data copy is available online. Also, if the quorum
node stops functioning, the quorum relationship in the cluster is broken. Therefore, the quorum node
must be excluded from the rolling upgrade of the failure node.
Failure detection
The node state
Learn how to find the state of the nodes in an IBM Spectrum Scale cluster.
To check the node state, issue the mmgetstate command with or without the -a option, as in the
following examples:
1) mmgetstate
2) mmgetstate -a
Be aware of the differences between the down, unknown, and unresponsive states:
• A node in the down state is reachable but the GPFS daemon on the node is not running or is recovering
from an internal error.
• A node in the unknown state cannot be reached from the node on which the mmgetstate command
was run.
• A node in the unresponsive state is reachable but the GPFS daemon on the node is not responding.
To follow up on investigating the state of a node, check if the node is functioning or has a network issue.
For more information, see the topic mmgetstate command in the IBM Spectrum Scale: Command and
Programming Reference.
Disk Failures
This section describes how to handle a disk failure.
In an FPO deployment model with IBM Spectrum Scale the restripeOnDiskFailure=yes
configuration parameter should be set to yes. When a disk is not functioning, auto recovery enables the
disk to start functioning. Auto recovery enlists the help of any node in the cluster to help recover data.
This may affect the file system I/O performance on all nodes, because data might have to be copied from
a valid disk to recover the disk.
mmlsmgr
b. Do the following actions for the tschdisk and tsrestripefs processes on each of the file
system manager nodes in your list:
1) If you are not connected to a file system manager node, connect to it with ssh.
2) Issue the following command to list the back-end processes that are running and their
command IDs:
where <commandID> is the command ID of the back-end process from the previous step. The
following example uses command ID 92 from the example in the previous step:
4) Run the mmfsadm command again to verify that the process is no longer running:
Check the disk status again by running the mmlsdisk -e command and confirm that all disks are now
in the Ready state. If some disks are still in the Suspended state, there might be a hardware media or a
connection problem. Save the names of these disks in the brokenDiskList file.
3. Save the disks that do not have the Up availability in the downDiskList file. Each line in downDiskList
file stores a disk name. Start these disks by running the following command:
Check the disk status by running the mmlsdisk -e command to confirm that all disks have the Up
availability. Disks that do not have the Up availability might have a hardware media or connection
problem. Save the names of these disks in the tobeSuspendDiskList file. Suspend these disks by
running the following command:
4. If a disk is in Suspended status after you restart it, there might be a hardware media or connection
problems. To keep your data safe, migrate it to the suspended disks by running the following
command:
mmrestripefs <fsName> -r
After a file system restripe, all data in the suspended disks is migrated to other disks. At this point, all
the data in the file system has the desired level of protection.
5. Check the disk connections and the disk media for disks that are in the Suspended state and repeat
step 2 through step 4. If a failure occurs again, delete these disks from file system by running the
mmdeldisk command.
If one file has some replica on down disks and if you make an update against this replica on down
disks, the inode gets marked with the dataupdatemiss or metaupdatemiss flags (if the replica on
down disks is metadata, it will be metaupdatemiss; if the replica on down disks is data, it will be
dataupdatemiss). You could run mmlsattr -d -L /path/to/file to check these flags. These
two flags could only be cleaned by mmchdisk Device start. If some down disks cannot be brought
back with mmchdisk Device start, these flags will be kept even if you run mmdeldisk or
mmrestripefs -r. To remove these flags, you could stop one NSD disk and then run mmchdisk
start to bring it back immediately. This will clean up all the missupdate flags.
If you are unable to delete a broken disk, contact IBM support.
Deleting disks when auto recovery is not enabled (check this by mmlsconfig
restripeOnDiskFailure):
Deleting NSD disks from the file system can trigger disk or network traffic because of data protection. If
your cluster is busy with application IO and the application IO performance is important, schedule a
maintenance window to delete these broken disks from your file system. Follow the steps in the “Starting
the disk failure recovery” on page 689 section to check if a disk is physically broken and handle the
broken disks.
Node failure
In an FPO deployment, each node has locally attached disks. When a node fails or has a connection
problem with other nodes in a cluster, disks in this node become unavailable. Reboot a node to repair a
hardware issue or patch the operating system kernel. Both these cases are node failures.
If auto recovery is enabled, that is, the restripeOnDiskFailure=yes parameter is set to yes, and a
failed node is recovered within auto recovery wait time (check the details described in the Auto Recovery
for Disk Failure section), auto recovery handles the node failure automatically by bringing up down disks
and ensuring all data has the desired replication. If a node is not recovered within the auto recovery wait
time, auto recovery migrates the data off the disks in the failed node to other disks in cluster.
Attention: Due to an earlier configuration change the file system may contain data that is at risk
of being lost.
Use the mmlsmgr command to identify the cluster manager node. Use the Remote file copy command
that is configured for the cluster.
4. Start IBM Spectrum Scale on the replacement node by running the mmstartup -N <replacement
node> command. Confirm that IBM Spectrum Scale state is active by running the mmgetstate -N
<replacement node> command.
5. Prepare a stanza file to create NSDs by running the mmcrnsd command and add these disks into file
system by running the mmadddisk command.
# mmlsnsd -X
In the above output means the physical disk for the nsd mucxs531d08 is not recognized by the OS. If a
disk is not detected, check the corresponding node to see if the disk is physically broken. If the
undetected disks cannot be recovered quickly, remove them from the down disk list.
4. Run the mmchdisk <fs-name> start -d <down disk in step3>.
If it succeeds, go to step5); if not, open PMR against the issue.
5. If the undetected disks cannot be recovered, run the mmrestripefs <fs-name> -r to fix the
replica of the data whose part of replica are located in these undetected disks.
Data locality
In an FPO cluster, if the data storage pool is enabled with allowWriteAffinity=yes, the data locality
is decided by the following order:
• WADFG is set by mmchattr or the policy.
• Default WAD or WAD is set by policy and the data ingesting node.
If the file is set with WADFG, the locality complies with WADFG independent of where the data is
ingested. If the file is not set with WADFG, the locality is decided according to the WAD and data-ingesting
node. Also, data locality configurations are the required configurations. If there are no disks available to
comply with the configured data locality, the IBM Spectrum Scale FPO stores the data in other disks.
The data locality might be broken if there are mmrestripefs -r and mmrestripefile after disk failure
or node failure. If your applications need data locality for good performance, restore the data locality after
node failure or disk failure.
# /usr/lpp/mmfs/samples/fpo/mmgetlocation -f /sncfs/file1G
[FILE INFO]
------------------------------------------------------------------------
blockSize 1024 KB
blockGroupFactor 128
metadataBlockSize 131072K
writeAffinityDepth 1
flags:
data replication: 2 max 2
storage pool name: fpodata
[SUMMARY INFO]
------------------------------------------------------------------------------------------------
----------
Replica num Nodename TotalChunkst
The summary at the end of the output shows that, for the file /sncfs/file1G, 8 chunks of the first
replica are located on the node c8f2n04. The 8 chunks of the second replica are located on the c8f2n05
node.
For IBM Spectrum Scale 4.2.2.0 and earlier, perform the following steps to get the block location of files.
cd /usr/lpp/mmfs/samples/fpo/
g++ -g -DGPFS_SNC_FILEMAP -o tsGetDataBlk -I/usr/lpp/mmfs/include/ tsGetDataBlk.C -L/usr/lpp/mmfs/lib/ -lgpfs
./tsGetDataBlk <filename> -s 0 -f <data-pool-block-size * blockGroupFactor> -r 3
In the above example, the block size of data pool is 2 Mbytes, the blockGroupFactor of the data pool is
128. So, the META_BLOCK (or chunk) size is 2MB * 128 = 256Mbytes. Each output line represents one
chunk. For example, Block 0 in the above is located in the disks with disk id 2, 4 and 6 for 3 replica.
To know the node on which the three replicas of Block 0 are located, check the mapping between disk ID
and nodes:
Check the mapping between disks and nodes by mmlsdisk (the 9th column is the disk id of NSD) and
mmlsnsd:
The three replicas of Block 0 are located in disk ID 2 (NSD name node1_sdc, node name is
gpfstest1.cn.ibm.com), disk ID 4 (NSD name node2_sdb, node name is gpfstest2.cn.ibm.com), and disk
ID 6 (NSD name node6_sdc, node name is gpfstest6.cn.ibm.com). Check each block of the file to see if
the blocks are located correctly. If the blocks are not located correctly, fix the data locality.
mmgetlocation
For IBM Spectrum Scale 4.2.3, mmgetlocation supports the -Y option.
Synopsis
mmgetlocation {[-f filename] | [-d directory]}
[-r {1|2|3|all}]
[-b] [-L] [-l] [-Y] [--lessDetails]
[-D [diskname,diskname,...]]
[-N [nodename,nodename,...]]
Parameters
-f filename
Specifies the file whose block location you want to query. It should be absolute file path. For one file,
the system displays the block/chunk information and the file block summary information.
-d directory
Specifies the directory whose block location you want to query. All files under <directory> will be
checked and summarized together. <directory> must be the absolute directory path. The system
displays one block summary for each file and one directory summary with the block information. The
options -f and -d are exclusive.
Note: The sub-directories under <directory> won't be checked.
[-r {1|2|3|all}]
Specifies the replica that you want to query for the block location. 2 means replica 1 and replica 2. By
default, the value is set to all.
-b
The block location is considered as file system block or as FPO chunk(file system block size *
blockGroupFactor). By default, the value is set to no.
Notes
1. Only tested over Linux.
2. Does not recursively process the subdirectories if option -d is specified.
3. For FPO, if both -D and -N are specified, the -N option must be with only one node because no two
NSDs in FPO belong to the same node.
4. For mmgetlocation -Y, the system displays the output in the following formats:
a. mmgetlocation:fileSummary:filepath:blockSize:metadataBlockSize:dataReplica:metadataReplica
:
storagePoolName:allowWriteAffinity:writeAffinityDepth:blockGroupFactor:(-Y -L specified)
b. mmgetlocation:fileDataInfor:chunkIndex:offset:NSDName:NSDServer:diskID:failureGroup:
reserved:NSDName:NSDServer:diskID:failureGroup:reserved:NSDName:NSDServer:diskID:failureGr
oup:
reserved: if there are 2 or 3 replicas, repeat
"nsdName:nsdServer:diskID:failureGroup:reserved:"
if the option "-L" is not specified, the value of "diskID" and "failureGroup" will be
blank
.
c. mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:nsdName:blocks:(-l specified)
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:(-l not specified) if
there are
more than 1 NSD for replica #, each one will be output as one line if the value of
"nsdName" in
one line is "all", that means, the option "-l" is not given.
d. mmgetlocation:dirSummary:path:replicaIndex:nsdServer:nsdName:blocks:(-l specified)
Note: If the value of nsdName in one line is all, the option -l is not given. So, for the option -f, the
output is:
a
b
c
From the summary at the end of the output, you can know, for the file /sncfs/file1G,
8 chunks of the 1st replica are located on the node c3m3n03.
The 8 chunks of the 2nd replica are located on the node c3m3n04 and c3m3n02,
The 8 chunks of the 3nd replica are located on the node c3m3n04 and c3m3n02.
l /usr/lpp/mmfs/samples/fpo/mmgetlocation -d /sncfs/t2 -L -Y
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:fileDataSummary:/sncfs/t2/_partition.lst:1:c3m3n04:1:
mmgetlocation:fileDataSummary:/sncfs/t2/_partition.lst:2::1:
mmgetlocation:fileDataSummary:/sncfs/t2/_partition.lst:3::1:
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:fileDataSummary:/sncfs/t2/part-r-00000:1:c3m3n04:2:
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:fileDataSummary:/sncfs/t2/part-r-00002:1:c3m3n04:2:
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:fileDataSummary:/sncfs/t2/part-r-00001:1:c3m3n02:2:
mmgetlocation:dirDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:dirDataSummary:/sncfs/t2/:1:c3m3n04:5:
mmgetlocation:dirDataSummary:/sncfs/t2/:1:c3m3n02:2:
l /usr/lpp/mmfs/samples/fpo/mmgetlocation -f /sncfs/file1G -Y -L
mmgetlocation:fileSummary:filepath:blockSize:metadataBlockSize:dataReplica:metadataReplica:
storagePoolName:allowWriteAffinity:writeAffinityDepth:blockGroupFactor:
mmgetlocation:fileSummary:/sncfs/file1G:1048576::3:3:fpodata:yes:1:128:
mmgetlocation:fileDataInfor:chunkIndex:offset:NSDName:NSDServer:diskID:failureGroup:
reserved:NSDName:NSDServer:diskID:failureGroup:reserved:NSDName:NSDServer:diskID:failureGroup:reserved:
mmgetlocation:fileDataInfor:0:0):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n02_sdc:c3m3n02:3:1,0,
0::data_c3m3n04_sdc:c3m3n04:9:2,0,0::
mmgetlocation:fileDataInfor:1:134217728):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n04_sdc:c3m3n04:9:2,0,
0::data_c3m3n02_sdc:c3m3n02:3:1,0,0::
mmgetlocation:fileDataInfor:2:268435456):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n02_sdc:c3m3n02:3:1,0,
0::data_c3m3n04_sdc:c3m3n04:9:2,0,0::
mmgetlocation:fileDataInfor:3:402653184):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n04_sdc:c3m3n04:9:2,0,
0::data_c3m3n02_sdc:c3m3n02:3:1,0,0::
mmgetlocation:fileDataInfor:4:536870912):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n02_sdc:c3m3n02:3:1,0,
0::data_c3m3n04_sdc:c3m3n04:9:2,0,0::
mmgetlocation:fileDataInfor:5:671088640):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n04_sdc:c3m3n04:9:2,0,
0::data_c3m3n02_sdc:c3m3n02:3:1,0,0::
mmgetlocation:fileDataInfor:6:805306368):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n02_sdc:c3m3n02:3:1,0,
0::data_c3m3n04_sdc:c3m3n04:9:2,0,0::
mmgetlocation:fileDataInfor:7:939524096):data_c3m3n03_sdd:c3m3n03:5:3,0,0::data_c3m3n04_sdc:c3m3n04:9:2,0,
0::data_c3m3n02_sdc:c3m3n02:3:1,0,0::
mmgetlocation:fileDataSummary:path:replicaIndex:nsdServer:blocks:
mmgetlocation:fileDataSummary:/sncfs/file1G:1:c3m3n03:8:
mmgetlocation:fileDataSummary:/sncfs/file1G:2:c3m3n04:4:
mmgetlocation:fileDataSummary:/sncfs/file1G:2:c3m3n02:4:
mmgetlocation:fileDataSummary:/sncfs/file1G:3:c3m3n04:4:
mmgetlocation:fileDataSummary:/sncfs/file1G:3:c3m3n02:4:
l For IBM Spectrum Scale earlier than 4.2.2.0 perform the following steps to get block location of files.
1. cd /usr/lpp/mmfs/samples/fpo/
g++ -g -DGPFS_SNC_FILEMAP -o tsGetDataBlk -I/usr/lpp/mmfs/include/ tsGetDataBlk.C -L/usr/lpp/mmfs/lib/ -lgpfs
2. ./tsGetDataBlk <filename> -s 0 -f <data-pool-block-size * blockGroupFactor> -r 3
3. Check the output of the program tsGetDataBlk:
[root@gpfstest2 sncfs]# /usr/lpp/mmfs/samples/fpo/tsGetDataBlk /sncfs/test -r 3
File length: 1073741824, Block Size: 2097152
Parameters: startoffset:0, skipfactor: META_BLOCK, length: 1073741824, replicas 3
numReplicasReturned: 3, numBlksReturned: 4, META_BLOCK size: 268435456
Block 0 (offset 0) is located at disks: 2 4 6
Block 1 (offset 268435456) is located at disks: 2 4 6
Block 2 (offset 536870912) is located at disks: 2 4 6
Block 3 (offset 805306368) is located at disks: 2 4 6
4. In the above example, the block size of data pool is 2Mbytes, the blockGroupFactor of the
data pool is 128. So, the META_BLOCK (or chunk) size is 2MB * 128 = 256Mbytes. Each output line represents one chunk.
For example, Block 0 in the above is located in the disks with disk id 2, 4 and 6 for 3 replica.
In order to know the node on which the three replicas of Block 0 are located, check the mapping between disk ID and nodes:
Check the mapping between disks and nodes by mmlsdisk (the 9th column is the disk id of NSD) and mmlsnsd:
[root@gpfstest2 sncfs]# mmlsdisk sncfs –L
disk driver sector failure holds holds avail- storage
name type size group metadata data status ability disk id pool remarks
------------ -------- ------ ----------- -------- ----- ------- --------- ------- --------- ---------
node1_sdb nsd 512 1 Yes No ready up 1 system desc
node1_sdc nsd 512 1,0,1 No Yes ready up 2 datapool
Synopsis
localityCopy Device {-s {[Fileset]: Snapshot | srcDir | filePath}
{-t targetDir} [-l | -b] [-f] [-r]
[-a | -N {Node[,Node...] | NodeFile | NodeClass}]
Parameters
Device
The device name of the file system to which the disks belong. File system names need not be fully-
qualified. fs0 is as acceptable as /dev/fs0. This must be the first parameter.
{-s {[Fileset]: Snapshot | srcDir | filePath}
Snapshot is the snapshot name. If :Snapshot is specified, the global snapshot is named Snapshot
from Device. If there are more than 1 snapshots existing from :Snapshot or Snapshot, it will fail. Also,
if it is fileset snapshot, ensure that the fileset is linked. srcDir is the source directory that is copied.
The directory must exist in device. If the directory is the JunctionPath of one fileset, the fileset
must be linked before running the script. filePath is the file path that will be copied.
Note: Snapshot is the snapshot name. srcDir and filePath must be absolute path.
-ttargetDir
Specifies the target directory to which the files from the snapshot or the directory will be copied.
targetDir must be absolute and must exist on the node that is running the command.
-l
Only consider the locality if more than one node is involved. This might make some nodes busier than
others. If there are active application jobs over the cluster and these jobs need enough network
bandwidth, option -l makes the data copy consume as less as network bandwidth. When multiple
nodes are specified with option -N, option -l might make the copy running over limited nodes and
therefore take longer to finish data copy.
-b
Considers the locality if more than one node is involved and distributes the copy tasks among all
involved nodes.
Notes
1. If your file system mount point has special character, excluding +,-,_, it is not supported by this script.
2. If the file path contains special character, such as a blank character or a line break character, the file is
not copied with warning.
3. When option -a or -N is specified, the file system for the -t targetDir must be mounted if it is from
external NFS or another IBM Spectrum Scale file system.
4. Only copies the regular data file, does not copy link, special files.
5. If one file is not copied, the file is displayed and not copied again in the same invocation.
6. You must specify option -s with snapshot. For directory, the file list is not rescanned to detect any
newly created files or subdirectories.
mmlsattr -d -L /sncfs/test
file name: /sncfs/test
metadata replication: 3 max 3
data replication: 3 max 3
immutable: no
appendOnly: no
flags:
storage pool name: datapool
fileset name: root
snapshot name:
Write Affinity Depth Failure Group(FG) Map for copy:1 1,0,1
Write Affinity Depth Failure Group(FG) Map for copy:2 2,0,1
Write Affinity Depth Failure Group(FG) Map for copy:3 3,0,1
creation time: Thu Mar 24 16:15:01 2016
Misc attributes: ARCHIVE
If you see gpfs.WADFG (as per the preceding example) from the output of mmlsattr, the file is
configured with WADFG, and, in this gpfs.WADFG case, follow the instructions in “Restoring the locality
for files with WADFG” on page 701. If you do not see the gpfs.WADFG text, go to the step2.
2. Select the node to store all the blocks from the first replica of the data. One disk from this node is used
to store the first replica of the file, assuming that this node has at least one local disk that serves the
GPFS file system.
In IBM Spectrum Scale 4.2.2.0 and later, mmrestripefile -l is optimized to reduce unnecessary
data movement. For files with WAD=1, if the target node is from the same failure group as the current
node holding the replica 1 of blocks, mmrestripefile -l does not move the second and third
replica. If it is not, mmrestripefile -l moves three replicas of all the blocks
3. If you are using IBM Spectrum Scale 4.1.1.0 or later:
a) ssh to the target node selected in step 2
b) run mmrestripefile –l filename for each filename to set the data locality for.
If you are using IBM Spectrum Scale 4.1.1.0 or earlier
a) ssh to the target node selected in step 2
b) mmchdisk <fs-name> suspend -d "any-one-data-disk"
c) mmchdisk <fs-name> resume -d "any-one-data-disk"
d) mmrestripefile -b filename
4. Check the data locality by running:
/usr/lpp/mmfs/samples/fpo/tsGetDataBlk /sncfs/test -r 3
Disk Replacement
This topic describes how to replace a disk.
Note: At any time, you cannot run the mmrpldisk command to replace one stopped disk used by the file
system (Check the disk availability from the mmlsdisk fs-name -L command output. Also, the to-be-
replaced disk must be up for availability).
If you want to replace more than one disk, run the mmrpldisk command multiple times. The PIT job is
triggered to scan the whole inode space to migrate the data to disks that are going to be replaced. The IO
traffic is triggered and is time-consuming if you have to run the mmrpldisk command multiple times. To
speed the replacement process, see the following sub sections to replace more than one disk in the file
system.
• If extended outages (days and weeks) are expected, it is recommended to remove that node and all
associated disks from the cluster to avoid this outage from affecting subsequent recovery actions.
• If the failed disk is meta disk, during auto recovery, GPFS will try to suspend the failed disk using the
mmchdisk <file-system> command. If the remaining failure groups of meta or data disks is less
than the value of -r/-m, this will make mmchdisk <file-system> suspend/fail, and therefore auto
recovery will not take further actions.
diskFailure Event
This event is triggered when a disk I/O operation fails. Upon I/O failure, IBM Spectrum Scale marks the
disk from read/up to ready/down. This I/O failure can also be caused by a node, because all disks
connected by the node become unavailable, or a disk failure.
The disk state is ready/down.
nodeJoin Event
This event is triggered when a node joins the cluster after a node reboot or rejoined after losing
membership to the cluster or getting started after an extended outage. Scope of the recovery is all file
systems to which the node disks might belong to. In most case, the disk state can be ready/up if no I/O
operation has been performed or ready/down. However, based on the prior events, the state could vary to
suspended/down or unrecovered/recovering.
Recovery process
1. Perform simple checks on the disks assigned to the file systems.
2. Check if a tschdisk start is already running from a prior event. Kill the process to include disks from
the current nodes.
3. Start all disks on all nodes by running: tschdisk start -a to optimize recovery time. This
command requires all nodes in the cluster to be functioning in order to access all the disks in the file
system.
4. Start All down disks on all Active nodes by running: tschdisk start -F<file containing disk
list>.
5. If the file system version is 5.0.2 and later, auto recovery will run mmchdisk fs-name resume -d
<suspended-disk-by-auto-recovery>. If the file system version is earlier than 5.0.2, this
command will not be executed.
6. After successful completion, for file system version 5.0.2 and later, all disks must be in the ready/up
state. For file system version earlier than 5.0.2, all disks must be in the suspended/up state.
For file system version 5.0.2 and later, if the administrator runs mmchdisk fs-name suspend -d
<disks> and these disks do not resume by auto recovery, the administrator needs to resume these
disks manually.
If a new diskFailure event is triggered while tschdisk start is in progress, the disks will not be restored
to the Up state until the node joins the cluster and triggers a nodeJoin event.
Recovery process
1. Wait for the specified duration to give the failed nodes a chance to recover.
2. Check the Down nodes count, Down disks count and available data and metadata FG count to check
against the maximum limit.
3. Build a list of disk to act upon, ignoring suspended, empty, to be emptied.
4. Run tsrestripefs to restore replica count to the stated values.
5. After successful completion, disks can be in the suspended/down state or no action may be taken if
the nodeJoin event is triggered within the recoveryWaitPeriod.
Restrictions
An FPO environment includes restrictions.
The following restrictions apply:
• Storage pool properties can be set only when the pool is created and cannot be changed later.
• All disks in an FPO pool must be assigned an explicit failure group.
• All disks in an FPO pool must have exactly one NSD server associated with them.
• All disks in an FPO pool that share an NSD server must belong to the same failure group.
• When replacing a disk in an FPO pool, the old and new disks must have the same NSD server.
• Disks must be removed from the file system before NSD servers can be changed.
• FPO is not supported on Windows and ZLinux.
• FPO is not supported on ECE.
There might be additional limitations and restrictions. For the latest support information, see the IBM
Spectrum Scale FAQ in IBM Knowledge Center (www.ibm.com/support/knowledgecenter/STXKQY/
gpfsclustersfaq.html).
Encryption keys
GPFS uses the following types of encryption keys:
master encryption key (MEK)
An MEK is used to encrypt file encryption keys.
MEKs are stored in remote key management (RKM) servers and are cached by GPFS components. To
ensure the currency of the cached keys and that they are not removed from the server, the key cache
is periodically refreshed from the RKM servers according to the value of the
encryptionKeyCacheExpiration parameter. For more information, see mmchconfig command in
the IBM Spectrum Scale: Command and Programming Reference. GPFS receives information about the
RKM servers in a separate /var/mmfs/etc/RKM.conf configuration file. Encryption rules present in
the encryption policy define which MEKs should be used, and the /var/mmfs/etc/RKM.conf file
provides a means of accessing those keys. The /var/mmfs/etc/RKM.conf also specifies how to
access RKMs containing MEKs used to encrypt files created under previous encryption policies.
An MEK is identified with a unique Keyname that combines the name of the key and the RKM server on
which it resides. See “Encryption policy rules” on page 708 for Keyname format.
file encryption key (FEK)
An FEK is used to encrypt sectors of an individual file. It is a unique key that is randomly generated
when the file is created. For protection, it is encrypted (or "wrapped") with one or more MEKs and
stored in the gpfs.Encryption extended attribute of the file.
A wrapped FEK cannot be decoded without access to the MEK (or MEKs) used to wrap it. Therefore, a
wrapped FEK is useless to an attacker and does not require any special handling at object deletion
Encryption policies
An encryption policy consists of a set of policy rules for one of two purposes: managing the encryption of
a group of files or re-wrapping the file encryption keys of already encrypted files.
The following encryption policy rules are available:
• The ENCRYPTION IS rule specifies how a file is to be encrypted and how file encryption keys (FEKs) are
to be wrapped (that is, encrypted) with master encryption keys (MEKs).
• The SET ENCRYPTION rule describes a group of files to be encrypted and specifies the type of
encryption (as defined by an earlier ENCRYPTION IS rule) that is to be done.
• The SET ENCRYPTION EXCLUDE command signals the end of a series of SET ENCRYPTION rules.
• The CHANGE ENCRYPTION KEYS rule re-wraps FEKs. FEKs that were previously wrapped with a
specified MEK are unwrapped and then re-wrapped with a new MEK.
The first three types of rules appear in policies to encrypt files. The fourth type of rule typically appears in
a policy by itself or with other CHANGE ENCRYPTION KEYS rules.
Encryption policies are configured with the mmchpolicy command. A policy for re-wrapping FEKs is
applied with the mmapplypolicy command. A policy for encrypting a set of files is applied whenever a
file is created or is restored from backup.
When a file is created or is restored, the following steps occur:
1. IBM Spectrum Scale evaluates the rules in the policy sequentially. The type of processing depends on
the type of rule:
• For an ENCRYPTION IS rule, the encryption specification is saved for future use.
• For a SET ENCRYPTION rule, if the created or restored file does not match the file description in the
rule, the rule is skipped and processing goes on to the next rule. If the file does match the file
description in the rule, encryption is postponed until the entire policy is scanned.
• If a SET ENCRYPTION EXCLUDE command is encountered, evaluation of the rules stops.
Note: Evaluation of the rules also stops if the end of the of the policy is reached or if the file matches
the file description of eight SET ENCRYPTION rules. Eight is the maximum number of SET
ENCRYPTION rules that can be applied to one file.
2. After the encryption policy is evaluated, a FEK is generated and the file is encrypted with it.
3. Then the FEK is wrapped separately for each of the SET ENCRYPTION rules that the file matched. For
example, if the file matched three SET ENCRYPTION rules, then three separate wrappings of the FEK
are created. The wrapped FEKs are stored in the gpfs.Encryption extended attribute of the file.
Only one of the wrapped FEKs needs to be unwrapped to access the file.
Notes:
1. When an encryption policy is changed, the changes apply only to the encryption of subsequently
created files.
2. Encryption policies are defined on a per-file-system basis by a system administrator. After the
encryption policies are put in place, they can result in files in different filesets or with different names
being encrypted differently.
where:
ALGO EncParamString
specifies the encryption parameter string, which defines the following:
• encryption algorithm
• key length
• mode of operation
• key derivation function
The following encryption parameter strings are valid:
COMBINE CombineParamString
specifies a string that defines the mode to be used to combine MEKs specified by the KEY
statement.
WRAP WrapParamString
specifies a string that defines the encryption algorithm and the wrapping mode to be used to wrap
the FEK.
The following wrapping parameter string values are valid:
KeyId:RkmId
where
KeyId
An internal identifier that uniquely identifies the key inside the RKM. Valid characters for KeyId
are the following: 'A' through 'Z'; 'a' through 'z'; '0' through '9'; and '-' (hyphen). The minimum
length of KeyId is one character; the maximum length is 42 characters.
RkmId
The identifier of the /var/mmfs/etc/RKM.conf entry for the RKM that manages the key. An
RKM ID must be unique within the cluster, must be 1-21 characters in length, and can contain
only the characters a - z, A - Z, 0 - 9, or underscore (_). The first character cannot be a
numeral.
Notes:
1. The maximum number of keys you can specify with the ENCRYPTION IS rule is eight.
2. The number of keys that can be used to encrypt a single file is permanently limited by the
inode size of the file system.
3. You cannot specify the same key more than once in a given ENCRYPTION IS rule. Also, do not
specify keys with identical values in an ENCRYPTION IS rule. Specifying the same key or
identically-valued keys could result in a security breach for your data.
SET ENCRYPTION
The SET ENCRYPTION rule is similar to the SET POOL rule. If more than one such rule is present, all
SET ENCRYPTION rules are considered and the FEK is wrapped once for each of the rules that apply
(up to the maximum of eight). As mentioned in “Encryption keys” on page 707, if an FEK is wrapped
multiple times, only one of the wrapped-FEK instances needs to be unwrapped for the file to be
accessed.
If no SET ENCRYPTION rule is applicable when a file is created, the file is not encrypted.
where:
EncryptionSpecificationName
is the name of a specification defined by an ENCRYPTION IS rule.
To stop traversing policy rules at a certain point and encrypt using only those rules that have matched
up to that point, use the SET ENCRYPTION EXCLUDE rule:
ALGO ’AES:256:XTS:FEK:HMACSHA512’
COMBINE ’XORHMACSHA512’
WRAP ’AES:KWRAP
• DEFAULTNISTSP800131AFAST
This value is equivalent to the following parameters:
ALGO ’AES:128:XTS:FEK:HMACSHA512’
COMBINE ’XORHMACSHA512’
WRAP ’AES:KWRAP
The two default values have almost equivalent effects. The only difference is in the resulting length of the
FEK. The FEK is 256 bits in the first default value but 128 bits in the second one. Of the two default
values, DEFAULTNISTSP800131A is the better choice in most situations, because the 256-bit FEK
provides better security. However, because of its shorter FEK, DEFAULTNISTSP800131AFAST provides a
5 - 20% speedup in workloads that involve large block random reads and direct I/O. It is available in the
following IBM Spectrum Scale releases:
• 5.0.1 and later
• 5.0.0 with APAR IJ04786
• 4.2.3 with APAR IJ04788
• 4.1.1 with APAR IJ04789
Before you apply an encryption rule that contains -- DEFAULTNISTSP800131AFAST, ensure that all the
nodes are at the required release or APAR number.
The following example shows the use of -- DEFAULTNISTSP800131A:
Do not use the COMBINE parameter or the WRAP parameter in the same rule with --
DEFAULTNISTSP800131A or -- DEFAULTNISTSP800131AFAST.
Note:
In this example encryption policy:
• All files in fileset fs1 are treated as follows:
– If the extension is equal to enc4, the file is not encrypted. This happens because the ENCRYPTION
EXCLUDE rule is matched first, stopping the traversal of the remaining rules before any additional
matches can be made.
– If the extension is equal to enc1, the file is encrypted with a 256-bit FEK, using AES in XTS mode; the
FEK is preprocessed with HMAC with SHA-512, and the FEK is then wrapped twice:
- once with AES key wrap, with keys 1:RKM_1 and 2:RKM_2 combined via one round of XOR followed
by one round of HMAC with SHA-512
- once with AES in CBC-IV mode using key 4:RKM_2
This happens because both rules E1 and E3 apply, since extension enc1 matches both %.enc1 and
%.enc%. Note that the encryption algorithms specified by rule E1, which grant a stronger security
than those of rule E3, are chosen and applied.
– If the extension is equal to enc2, the file is encrypted with a 256-bit FEK, using AES in XTS mode; the
FEK is preprocessed with HMAC with SHA-512; and the FEK is then wrapped twice:
- once with AES key wrap using key 3:RKM_1
- once with AES in CBC-IV mode using key 4:RKM_2
This happens because both rules E2 and E3 apply, since extension enc2 matches both %.enc2 and
%.enc%.
– If the extension is equal to enc3, the file is encrypted with a 128-bit FEK, using AES in CBC mode; the
FEK is preprocessed with HMAC with SHA-512; and the FEK is then wrapped once with AES in CBC-IV
mode using key 4:RKM_2.
Rewrapping policies
Rewrapping policies are policies that change how a set of FEKs is encrypted by changing the set of MEKs
that wrap the FEKs. Rewrapping applies only to files that are already encrypted, and the rewrapping
operation acts only on the gpfs.Encryption EA of the files. Rewrapping is done by using the
mmapplypolicy command to apply a set of policy rules containing one or more CHANGE ENCRYPTION
KEYS rules. These rules have the form:
where:
• Keyname_1 is the unique identifier of the MEK to be replaced. (See “Encryption policy rules” on page
708 for Keyname format.)
• Keyname_2 is the unique identifier of the new MEK, which replaces the old MEK identified by
Keyname_1.
• The FOR FILESET and WHERE clauses narrow down the set of affected files.
Both Keyname_1 and Keyname_2 are listed, and only the files that currently use Keyname_1 have their
FEKs rewrapped with Keyname_2. Files that do not currently use Keyname_1 are not affected by the
operation.
Notes:
1. Only the first matching CHANGE ENCRYPTION KEYS rule is applied to each file. The rule rewraps each
wrapped version of the FEK that was encrypted with the MEK in the CHANGE ENCRYPTION KEYS rule.
2. The same MEK cannot be used more than once in a particular wrapping of the FEK.
Tip: The mmapplypolicy command always begins by scanning all of the files in the affected file system
or fileset to discover files that meet the criteria of the policy rule. In the preceding example, the criterion
is whether the file is encrypted with an FEK that is wrapped with the MEK Keyname_1. If your file system
or fileset is very large, you might want to delay running mmapplypolicy until a time when the system is
not running a heavy load of applications. For more information, see the topic “Phase one: Selecting
candidate files” on page 501.
Terms defined
The following terms are important:
device group
See tenant.
file encryption key
A file encryption key (FEK) is a key for encrypting file data. See “Encryption keys” on page 707.
host
See tenant.
key client
A key client is an entity in the cluster that represents the nodes that access encrypted files. The key
client receives master encryption keys (MEKs) from the tenant of the Remote Key Management (RKM)
server.
key server or Remote Key Management (RKM) server
A key server is a server that authenticates key clients and provides them with MEKs. Examples of key
server software products are IBM Security Key Lifecycle Manager (SKLM) and Thales Vormetric Data
Security Manager (DSM).
master encryption key
A master encryption key (MEK) is a key for encrypting FEKs.
tenant
A tenant is an entity on a key server that contains MEKs and certificates.
• In SKLM, a tenant is called a device group.
• In DSM, a tenant is called a host.
• The mmkeyserv command uses the generic keyword tenant.
Note: SKLM and supported versions of DSM have a complete implementation of the Key Management
Interoperability Protocol (KMIP) standard of the Organization for the Advancement of Structured
Information Standards (OASIS). IBM Spectrum Scale nodes use the KMIP protocol to retrieve keys from
SKLM and DSM servers.
However, if your file system was migrated from an earlier level, issue the following command to add
support for fast extended attributes:
For more information, see Completing the migration to a new level of IBM Spectrum Scale in the IBM
Spectrum Scale: Concepts, Planning, and Installation Guide.
The length of the RKM.conf file cannot exceed 1 MiB. No limit is set on the number of RKM stanzas, if the
length limit is not exceeded.
After the file system is configured with encryption policy rules, the file system is considered encrypted.
From that point on, each node that has access to that file system must have an RKM.conf file present.
Otherwise, the file system might not be mounted or might become unmounted.
Each RKM stanza in the RKM.conf file describes a connection between a local key client, a remote
tenant, and an RKM server. The following code block shows the structure of an RKM stanza:
RKM ID {
type = ISKLM
kmipServerUri = tls://host:port
keyStore = PathToKeyStoreFile
passphrase = Password
clientCertLabel = LabelName
tenantName = NameOfTenant
[connectionTimeout = ConnectionTimeout]
[connectionAttempts = ConnectionAttempts]
[retrySleep = RetrySleepUsec]
}
<server_name>=<IP_address:port_number>
The line must be added either immediately after the line that specifies the primary RKM server or
immediately after a line that specifies another backup RKM server. In the following example, the
maximum of five backup RKM servers is specified:
rkmname3 {
type = ISKLM
kmipServerUri = tls://host:port
kmipServerUri2 = tls://host:port # TLS connection to backup RKM server 1
kmipServerUri3 = tls://host:port # TLS connection to backup RKM server 2
kmipServerUri4 = tls://host:port # TLS connection to backup RKM server 3
kmipServerUri5 = tls://host:port # TLS connection to backup RKM server 4
kmipServerUri6 = tls://host:port # TLS connection to backup RKM server 5
keyStore = PathToKeyStoreFile
passphrase = Password
clientCertLabel = LabelName
tenantName = NameOfTenant
[connectionTimeout = ConnectionTimeout]
[connectionAttempts = ConnectionAttempts]
[retrySleep = RetrySleepUsec]
}
Note: In the regular setup method, you must add each line manually; in the simplified setup lines are
added automatically in response to mmkeyserv commands. For more information, see the following
subtopics:
• Regular setup: See the subtopic "Part 3: Configuring the remote key management (RKM) back end" in
the topic “Regular setup: Using SKLM with a self-signed certificate” on page 751.
• Simplified setup: See the subtopic "Adding backup key servers" in the topic “Simplified setup: Doing
other tasks” on page 745.
If at least one backup RKM server is configured, then whenever key retrieval from the primary RKM server
fails, IBM Spectrum Scale queries each backup RKM server in the list, in order, until it finds the MEK. The
addition of the URIs for the backup RKM servers is the only change that is required within IBM Spectrum
Scale. All other configuration parameters (certificates, keys, node, and tenant information) do not need to
...
kmipServerUri = tls://keysrv.ibm.com:5696
kmipServerUri2 = tls://keysrv_backup.ibm.com:5696
...
...
kmipServerUri = tls://keysrv_backup.ibm.com:5696
kmipServerUri2 = tls://keysrv.ibm.com:5696
...
• IBM Spectrum Scale 4.2 or later and a supported version of Thales Vormetric Data Security Manager
(DSM). For more information, see “Preparation for encryption” on page 714.
• GPFS Advanced Edition V4.2 or later and the regular setup method.
For more information, see “Preparation for encryption” on page 714.
Note: In the simplified setup, the mmkeyserv command sets the permission bits automatically.
These security-sensitive files include the following files:
– The RKM.conf file. For more information about this file, see “The RKM.conf file and the RKM stanza”
on page 716.
– The files in the client keystore directory, which include the keystore file, the public and private key
files for the client, and possibly other files. For more information about these files, see “The client
keystore directory and its files” on page 718.
Note: In the simplified setup, the mmkeyserv command automatically creates and distributes the
RKM.conf files and the files in the client keystore directory to every node in the cluster. The files are
located in the following directory on each node:
/var/mmfs/ssl/keyServ
CAUTION:
– Take appropriate precautions to ensure that the security-sensitive files are not lost or
corrupted. IBM Spectrum Scale does not manage or replicate the files.
– Ensure that the passphrase for the client certificate file is not leaked through other means,
such as the shell history.
• Client keystore files must be record-locked when the GPFS daemon starts. If the keystore files are
stored on an NFS mount, the encryption initialization process can hang. The cause is a bug that affects
the way NFS handles record locking. If you encounter this problem, upgrade your version of NFS or
store your keystore file on a local file system. If an upgrade is not possible and no local file system is
available, use a RAM drive to store the keystore files.
The setup procedure is greatly simplified by the use of the mmkeyserv command, which automates many
of the tasks that must be done manually in the regular setup:
• Creating and configuring client credentials.
• Creating a device group and master encryption keys in the RKM server.
• Creating and updating RKM.conf configuration files.
• Retrieving server certificates from the RKM server and storing them in client keystores.
• Propagating configuration information and client credentials to every node in the cluster.
See the following subtopics for instructions:
“Part 1: Installing and configuring SKLM” on page 721
mmlsconfig FIPS1402mode
The command returns yes if the cluster complies with FIPS or no if not.
b) On the SKLM server system, open the SKLMConfig.properties file.
Note: The default location of the SKLMConfig.properties file depends on the operating system:
• On AIX, Linux, and similar operating systems the directory is at the following location:
/opt/IBM/WebSphere/AppServer/products/sklm/config/
SKLMConfig.properties
• On Microsoft Windows, the directory is at the following location:
Drive:\Program Files (x86)\IBM\WebSphere\AppServer\products\sklm
\config\SKLMConfig.properties
c) Find the following line in the SKLMConfig.properties file:
fips=on
or
fips=off
If the line is not present in the file, then add it. Set the value to on to configure SKLM to comply with
FIPS, or set it to off to configure SKLM not to comply with FIPS.
4. Configure the SKLM server to have the same NIST SP800-131a (NIST) setting as the IBM Spectrum
Scale cluster. Follow these steps:
a) Determine the NIST setting of the cluster by issuing the following command:
mmlsconfig nistCompliance
The command returns SP800-131A if the cluster complies with NIST or off if not.
b) On the SKLM server system, open the SKLMConfig.properties file. For the location of this file,
see the note in Step 3.
c) Find the line in the SKLMConfig.properties file that begins with the following phrase:
TransportListener.ssl.protocols=
If the line is not present in the file, then add it. To configure SKLM to comply with NIST, set the
value as it is shown below:
TransportListener.ssl.protocols=TLSv1.2
To configure SKLM not to comply with NIST, set the value as it is shown below:
TransportListener.ssl.protocols=SSL_TLS
requireSHA2Signatures=true
Table 61. Configuring the cluster for encryption in the simplified setup
Step Actions
1 Verify the direct network connection between the IBM Spectrum Scale node and the
SKLM server.
2 Add the SKLM key server to the configuration.
3 Add a tenant to the key server.
4 Create a key client.
5 Register the key client to the tenant.
6 Create a master encryption key in the tenant.
7 Set up an encryption policy in the cluster.
8 Test the encryption policy.
where:
– ServerName is the host name or IP address of the SKLM key server that you want to add.
When no port number is specified, IBM Spectrum Scale automatically tries to connect with SKLM
through the default REST port number of each of the supported versions of SKLM serially, starting
with the earliest version, until it finds a successful connection with SKLM.
Note: The default REST port number depends on the version of SKLM that is installed on the RKM
server. For more information, see Firewall recommendations for IBM SKLM in the IBM Spectrum
Scale: Concepts, Planning, and Installation Guide.
• If SKLM is not configured to use its default REST port number, you must specify the correct port
number when you add the server. Issue a command like the following one:
where:
– ServerName is the host name or IP address of the SKLM key server that you want to add.
– RestPortNumber is the port number that SKLM uses to connect with its clients.
If you do not specify a port number or if you specify an incorrect port number, IBM Spectrum
Scale fails to connect with SKLM and displays an error message. For more information see the
description of the --port parameter in mmkeyserv command in the IBM Spectrum Scale:
Command and Programming Reference.
b) Respond to the prompts from the mmkeyserv server add command. See the example output
and prompts in the figure that follows:
1) Enter the SKLM administrator password when prompted.
2) To view the certificate chain of the SKLM server, enter view when prompted.
3) Verify that the certificates that are displayed have the same contents as the certificates in the
chain that you downloaded from SKLM.
4) Enter yes to trust the certificates or no to reject them.
5) If you trust the certificates, the command adds the RKM server to the encryption configuration.
In the following listing, key server keyserver01 is added:
c) Issue the mmkeyserv server show command to verify that the key server is added. The
following listing shows that keyserver01 is created:
3. Issue the mmkeyserv tenant add command to add a tenant to the key server. The command
creates the tenant on the SKLM server if it does not exist.
A tenant is an entity on the SKLM server that can contain encryption keys and certificates. SKLM uses
the term device group instead of tenant.
a) Issue the following command to add tenant devG1 to key server keyserver01. Enter the SKLM
administrator password when prompted:
b) Issue the mmkeyserv tenant show command to verify that the tenant is added. The following
listing shows that tenant devG1 is added to keyserver01:
4. Issue the mmkeyserv client create command to create a key client. A key client can request
master encryption keys from a tenant after it is registered to the tenant. The command creates a client
keystore on the node from which the command is issued and puts into the keystore a set of client
credentials and the certificate chain of the SKLM server. The command then copies the keystore to all
the nodes in the cluster. The keystore is stored in the following directory on each node of the cluster:
/var/mmfs/ssl/keyServ
a) Issue the following command to create key client c1Client1 for key server keyserver01. Enter
the SKLM administrator password and a passphrase for the new keystore when prompted:
Alternatively, issue the following command to create key client c1Client1 for key server
keyserver01 using a user-provided, CA-signed certificate. The client certificate file is
client1CertFile.cert, the client's key file is client1PrivFile.pem, and the CA chain file is
CACertChain.pem. Enter the SKLM administrator password and a passphrase for the new
keystore when prompted:
b) Issue the mmkeyserv client show command to verify that the key client is created. The
Certificate Type attribute is set to user-provided if the client was created with a CA-signed
certificate or to system-generated if the client was created with a self-signed certificate that was
generated by IBM Spectrum Scale.
In the following example, the output shows that key client c1Client1 was created for remote key
server keyserver01.gpfs.net and that the client certificate is a system-generated, self-signed
certificate:
In the following example, the output shows that key client c1Client1 was created with a user-
provided, CA-signed certificate:
5. Issue the mmkeyserv client register command to register the key client with the tenant:
You must provide a remote key management (RKM) ID as an input for this command. The RKM ID will
become the identifier field of a new RKM stanza that describes the connection between this key client,
this tenant, and this key server. For more information about the RKM stanza, see “The RKM.conf file
and the RKM stanza” on page 716.
It is a good practice to use a format like the following one to ensure that the RKM ID is unique:
keyServerName_tenantName
For example, the RKM ID for the key server and the tenant in these instructions is
keyserver01_devG1.
a) Issue the following command to register key client c1Client1with tenant devG1 under RKM ID
keyserver01_devG1. Enter the requested information when prompted:
mmkeyserv: [I] Client currently does not have access to the key. Continue the
registration
process ...
mmkeyserv: Successfully accepted client certificate
b) Issue the command mmkeyserv tenant show to verify that the key client is known to the tenant.
The following listing shows that tenant devG1 lists c1Client1 as a registered client:
d) To see the contents of the RKM stanza, issue the mmkeyserv rkm show command.
In the following listing, notice that the RKM ID of the stanza is keyserver01_devG1, the string
that was specified in Step 5(a):
e) You can also see the RKM stanza by displaying the contents of the RKM.conf file on the node:
# cat /var/mmfs/ssl/keyServ/RKM.conf
keyserver01_devG1 {
type = ISKLM
kmipServerUri = tls://192.0.2.59:5696
keyStore = /var/mmfs/ssl/keyServ/serverKmip.1_keyserver01.c1Client1.1.p12
passphrase = pw4c1Client1
clientCertLabel = c1Client1
tenantName = devG1
}
6. Issue the mmkeyserv key create command to create a master encryption key in the tenant. The
following command creates a master encryption key in tenant devG1 of server
keyserver01.gpfs.net.
The command displays the UUID of the encryption key (not the key value itself) at line 3 of the listing:
RULE ’p1’ SET POOL ’system’ /* one placement rule is required at all times */
RULE ’Encrypt all files in file system with rule E1’
SET ENCRYPTION ’E1’
WHERE NAME LIKE ’%’
RULE ’simpleEncRule’ ENCRYPTION ’E1’ IS
ALGO ’DEFAULTNISTSP800131A’
KEYS('KEY-d4e83148-e827-4f54-8e5b-5e1b5cc66de1:keyserver01_devG1')
In the last line of the policy, the character string within single quotation marks (') is the key name. A
key name is a compound of two parts in the following format:
KeyID:RkmID
where:
KeyID
Specifies the UUID of the key that you created in Step 6.
CAUTION: Installing a new policy with the mmchpolicy command removes all the
statements in the previous policy. To add statements to an existing policy without deleting
the previous contents, collect all policy statements for the file system into one file. Add the
new statements to the file and install the contents of the file with the mmchpolicy
command.
1) Issue the following command to install the policy rules in file enc.pol for file system
c1FileSystem1:
2) You can list the new encryption policy with the following command:
# mmlspolicy c1FileSystem1 -L
The policy engine detects the new file, encrypts it, and wraps the file encryption key in a master
encryption key.
b) To verify that the file hw.enc is encrypted, issue the following command to display the encryption
attribute of the file.
The output shows that the file is encrypted:
Note: In the simplified setup, the mmkeyserv command sets the permission bits automatically.
These security-sensitive files include the following files:
– The RKM.conf file. For more information about this file, see “The RKM.conf file and the RKM stanza”
on page 716.
– The files in the client keystore directory, which include the keystore file, the public and private key
files for the client, and possibly other files. For more information about these files, see “The client
keystore directory and its files” on page 718.
Note: In the simplified setup, the mmkeyserv command automatically creates and distributes the
RKM.conf files and the files in the client keystore directory to every node in the cluster. The files are
located in the following directory on each node:
/var/mmfs/ssl/keyServ
CAUTION:
– Take appropriate precautions to ensure that the security-sensitive files are not lost or
corrupted. IBM Spectrum Scale does not manage or replicate the files.
– Ensure that the passphrase for the client certificate file is not leaked through other means,
such as the shell history.
• Client keystore files must be record-locked when the GPFS daemon starts. If the keystore files are
stored on an NFS mount, the encryption initialization process can hang. The cause is a bug that affects
the way NFS handles record locking. If you encounter this problem, upgrade your version of NFS or
store your keystore file on a local file system. If an upgrade is not possible and no local file system is
available, use a RAM drive to store the keystore files.
The setup procedure is greatly simplified by the use of the mmkeyserv command, which automates many
of the tasks that must be done manually in the regular setup:
• Creating and configuring client credentials.
• Creating a device group and master encryption keys in the RKM server.
• Creating and updating RKM.conf configuration files.
• Retrieving server certificates from the RKM server and storing them in client keystores.
• Propagating configuration information and client credentials to every node in the cluster.
mmlsconfig FIPS1402mode
The command returns yes if the cluster complies with FIPS or no if not.
b) On the SKLM server system, open the SKLMConfig.properties file.
Note: The default location of the SKLMConfig.properties file depends on the operating system:
• On AIX, Linux, and similar operating systems the directory is at the following location:
/opt/IBM/WebSphere/AppServer/products/sklm/config/
SKLMConfig.properties
• On Microsoft Windows, the directory is at the following location:
Drive:\Program Files (x86)\IBM\WebSphere\AppServer\products\sklm
\config\SKLMConfig.properties
c) In the SKLMConfig.properties file, find the line that begins fips=. To configure the FIPS
setting for SKLM, enter fips=on to comply with FIPS or fips=off not to comply. If the line is not
present in the file, add it.
4. Configure the SKLM server to have the same NIST SP800-131a (NIST) setting as the IBM Spectrum
Scale cluster. Follow these steps:
a) Determine the NIST setting of the cluster by issuing the following command:
mmlsconfig nistCompliance
The command returns SP800-131A if the cluster complies with NIST or off if not.
b) On the SKLM server system, open the SKLMConfig.properties file. For the location of this file,
see the note in Step 3.
c) Add the following line to configure SKLM to comply with NIST or remove it to configure SKLM not to
comply with NIST:
TransportListener.ssl.protocols=TLSv1.2
5. Configure IBM WebSphere Application Server so that it has the same NIST setting as the IBM
Spectrum Scale cluster.
See the topic Transitioning WebSphere Application Server to the SP800-131 security standard in the
volume WebSphere Application Server Network Deployment in the WebSphere Application Server online
documentation.
requireSHA2Signatures=true
d) In the SKLM command line interface, enter the following command on one line:
where:
-alias labelCsr
Specifies the certificate label of the CSR.
Table 62. Configuring the cluster for encryption in the simplified setup
Step Actions
1 Verify the direct network connection between the IBM Spectrum Scale node and the
SKLM server.
2 Add the SKLM key server to the configuration.
3 Add a tenant to the key server.
4 Create a key client.
1. Verify that the IBM Spectrum Scale node that you are working from has a direct network connection to
the RKM server.
2. Add the RKM server to the encryption configuration:
a) Copy and rename the certificates:
1) Copy the files of the server certificate chain into a directory on the node that you are working
from. A good location is the same directory in which the keystore.pwd file is located. Rename
each certificate file with the same prefix, followed by a numeral that indicates the order of the
certificate in the chain, followed by the file extension .cert. Start the numbering with 0 for the
root certificate. For example, if the chain consists of three certificate files and the prefix is
sklmChain, rename the files as follows:
sklmChain0.cert
sklmChain1.cert
sklmChain2.cert
Note: If the certificate chain contains more than three certificate files, combine the intermediate
files into one certificate file, set the numeral in the name of the combined certificate file to 1,
and set the numeral in the name of the endpoint certificate file to 2. For example, suppose that
the certificate chain contains four certificate files: sklmChain0.cert, sklmChain1.cert,
sklmChain2.cert, and sklmChain3.cert. Modify the certificate files in the following way:
• The sklmChain0.cert file needs no changes.
• Combine sklmChain1.cert and sklmChain2.cert into one file and name it
sklmChain1.cert.
• Rename sklmChain3.cert to sklmChain2.cert.
b) Use the mmkeyserv server add command to add the SKLM server to the encryption
configuration. Depending on how SKLM is configured, you might also need to specify a port number
for connecting with SKLM:
• If SKLM is configured to use its default REST port for communications with its clients, you do not
need to specify a port number when you add the server. Issue a command like the following one:
where:
– ServerName is the host name or IP address of the SKLM key server that you want to add.
– CertFilesPrefix is the path and the file name prefix of the files in the certificate chain. For the
files from the example in the previous step, the path and file name prefix is /root/
sklmChain. For more information, see mmkeyserv command in the IBM Spectrum Scale:
Command and Programming Reference.
When no port number is specified, IBM Spectrum Scale automatically tries to connect with SKLM
through the default REST port number of each of the supported versions of SKLM serially, starting
with the earliest version, until it finds a successful connection with SKLM.
Note: The default REST port number depends on the version of SKLM that is installed on the RKM
server. For more information, see Firewall recommendations for IBM SKLM in the IBM Spectrum
Scale: Concepts, Planning, and Installation Guide.
where:
– ServerName is the host name or IP address of the SKLM key server that you want to add.
– CertFilesPrefix is the path and the file name prefix of the files in the certificate chain. For the
files from the example in the previous step, the path and file name prefix is /root/
sklmChain. For more information, see mmkeyserv command in the IBM Spectrum Scale:
Command and Programming Reference.
– RestPortNumber is the port number that Security Key Lifecycle Manager uses to connect with
its clients.
If you do not specify a port number or if you specify an incorrect port number, IBM Spectrum
Scale fails to connect with SKLM and displays an error message. For more information, see
mmkeyserv command in the IBM Spectrum Scale: Command and Programming Reference.
c) Respond to the prompts by the mmkeyserv add server command. See the example output and
prompts in the figure that follows:
1) Enter the SKLM administrator password when prompted.
2) To view the certificate chain of the SKLM server, enter view when prompted.
3) Verify that the certificates that are displayed have the same contents as the certificates in the
chain that you downloaded from SKLM.
4) Enter yes to trust the certificates or no to reject them.
5) If you trust the certificates, the command adds the RKM server to the encryption configuration.
In the following listing, key server keyserver01 is added:
3. Issue the mmkeyserv tenant add command to add a tenant to the key server. The command
creates the tenant on the SKLM server if it does not exist.
A tenant is an entity on the SKLM server that can contain encryption keys and certificates. SKLM uses
the term device group instead of tenant.
a) Issue the following command to add tenant devG1 to key server keyserver01. Enter the SKLM
administrator password when prompted:
b) Issue the mmkeyserv tenant show command to verify that the tenant is added. The following
listing shows that tenant devG1 is added to keyserver01:
4. Issue the mmkeyserv client create command to create a key client. A key client can request
master encryption keys from a tenant after it is registered to the tenant. The command creates a client
keystore on the node from which the command is issued and puts into the keystore a set of client
credentials and the certificate chain of the SKLM server. The command then copies the keystore to all
the nodes in the cluster.
The keystore is stored in the following directory on each node of the cluster:
/var/mmfs/ssl/keyServ
a) Issue the following command to create key client c1Client1 for key server keyserver01. Enter
the SKLM administrator password and a passphrase for the new keystore when prompted:
Alternatively, issue the following command to create key client c1Client1 for key server
keyserver01 using a user-provided, CA-signed certificate. The client certificate file is
client1CertFile.cert, the client's key file is client1PrivFile.pem, and the CA chain file is
CACertChain.pem. Enter the SKLM administrator password and a passphrase for the new
keystore when prompted:
Issue the following command to create key client c1Client1 for key server keyserver01:
b) Issue the mmkeyserv client show command to verify that the key client is created. The
Certificate Type attribute is set to user-provided if the client was created with a CA-signed
certificate or to system-generated if the client was created with a self-signed certificate that was
generated by IBM Spectrum Scale. In the following example, the output shows that key client
c1Client1 was created for remote key server keyserver01.gpfs.net and that the client
certificate is a system-generated, self-signed certificate:
In the following example, the output shows that key client c1Client1 was created with a user-
provided, CA-signed certificate:
keyServerName_tenantName
For example, the RKM ID for the key server and the tenant in these instructions is
keyserver01_devG1.
a) Issue the following command to register key client c1Client1with tenant devG1 under RKM ID
keyserver01_devG1. Enter the requested information when prompted:
mmkeyserv: [I] Client currently does not have access to the key. Continue the
registration
process ...
mmkeyserv: Successfully accepted client certificate
b) Issue the command mmkeyserv tenant show to verify that the key client is known to the tenant.
The following listing shows that tenant devG1 lists c1Client1 as a registered client:
c) You can also issue the command mmkeyserv client show to verify that the tenant is known to
the client.
The following listing shows that client c1Client1 is registered with tenant devG1:
d) To see the contents of the RKM stanza, issue the mmkeyserv rkm show command.
In the following listing, notice that the RKM ID of the stanza is keyserver01_devG1, the string
that was specified in Step 5(a):
e) You can also see the RKM stanza by displaying the contents of the RKM.conf file on the node:
# cat /var/mmfs/ssl/keyServ/RKM.conf
keyserver01_devG1 {
type = ISKLM
kmipServerUri = tls://192.0.2.59:5696
keyStore = /var/mmfs/ssl/keyServ/serverKmip.1_keyserver01.c1Client1.1.p12
passphrase = pw4c1Client1
clientCertLabel = c1Client1
tenantName = devG1
}
RULE ’p1’ SET POOL ’system’ /* one placement rule is required at all times */
RULE ’Encrypt all files in file system with rule E1’
SET ENCRYPTION ’E1’
WHERE NAME LIKE ’%’
RULE ’simpleEncRule’ ENCRYPTION ’E1’ IS
ALGO ’DEFAULTNISTSP800131A’
KEYS('KEY-d4e83148-e827-4f54-8e5b-5e1b5cc66de1:keyserver01_devG1')
In the last line of the policy, the character string within single quotation marks (') is the key name. A
key name is a compound of two parts in the following format:
KeyID:RkmID
where:
KeyID
Specifies the UUID of the key that you created in Step 6.
RkmID
Specifies the RKM ID that you specified in Step 5(a).
b) Issue the mmchpolicy command to install the rule.
CAUTION: Installing a new policy with the mmchpolicy command removes all the
statements in the previous policy. To add statements to an existing policy without deleting
the previous contents, collect all policy statements for the file system into one file. Add the
new statements to the file and install the contents of the file with the mmchpolicy
command.
1) Issue the following command to install the policy rules in file enc.pol for file system
c1FileSystem1:
2) You can list the new encryption policy with the following command:
# mmlspolicy c1FileSystem1 -L
The policy engine detects the new file, encrypts it, and wraps the file encryption key in a master
encryption key.
b) To verify that the file hw.enc is encrypted, issue the following command to display the encryption
attribute of the file.
The output shows that the file is encrypted:
The encrypted file hw.enc is in c1FileSystem1 on Cluster1. To configure Cluster2 to have remote
access to file hw.enc, follow these steps:
1. From a node in Cluster2, connect to the remote Cluster1:
a) To set up access to the remote cluster and file system, follow the instructions in topic Chapter 29,
“Accessing a remote GPFS file system,” on page 457.
b) Run the mmremotefs add command to make the remote file system c1FileSystem1 known to
the local cluster, Cluster2:
Note: c1Filesystem1_Remote is the name by which the remote file system c1FileSystem1 is
known to Cluster2.
Note: After you have completed Step 1(b) and mounted the remote file system, if you try to access
the contents of file hw.enc from Cluster2, the command fails because the local cluster does not
have the master encryption key for the file:
# cat /c1FileSystem1_Remote/hw.enc
cat: hw.enc: Operation not permitted
mmfs.log:
Tue Mar 29 06:39:27.306 2016: [E]
Key 'KEY-d4e83148-e827-4f54-8e5b-5e1b5cc66de1:keyserver01_devG1'
could not be fetched. The specified RKM ID does not exist;
check the RKM.conf settings.
2. From a node in Cluster2, connect to the same SKLM key server, keyserver01, that Cluster1 is
connected to:
a) Run the mmkeyserv server add to connect to keyserver01:
View the certificate(s) to determine whether you want to trust the certifying authority.
Do you want to view or trust the certificate(s)? (view/yes/no) view
3. From a node in Cluster2, add the same tenant, c1Tenant1, that Cluster1 added:
a) Add the tenant devG1:
5. From a node in Cluster2, register the key client to the same tenant that Cluster1 is registered to.
The RKM ID must be the same as the one that Cluster1 uses, to allow files created with that RKM ID
on Cluster1 to be accessed from Cluster2. However, some of the information in the RKM stanza is
different:
a) Register the client in Cluster2 to the same tenant c1Tenant1:
e) You can also view the RKM stanza by displaying the contents of the RKM.conf file on the
command-line console:
# cat /var/mmfs/ssl/keyServ/RKM.conf
keyserver01_devG1 {
type = ISKLM
kmipServerUri = tls://192.168.40.59:5696
keyStore = /var/mmfs/ssl/keyServ/serverKmip.1_keyserver01.c2Client1.1.p12
passphrase = pwc2Client1
clientCertLabel = c2Client1
tenantName = devG1
}
6. You can now access the encrypted file hw.enc remotely from Cluster2:
a) Verify that you can access the contents of the file hw.enc:
# cat /c1FileSystem1_Remote/hw.enc
Hello World!
2. The following command shows the UUIDs of the encryption keys on tenant devG1 in keyserver01:
The command displays the UUIDs of the previously existing key and the five new keys.
Adding a tenant
A tenant is a container that resides on a key server and contains encryption keys. Before a key client can
request master encryption keys from a key server, you must add a tenant to the key server, create a key
client, and register the key client with the tenant. For more information, see “Simplified setup: Using
SKLM with a self-signed certificate” on page 719.
In some situations, you might need to access more than one tenant on the same key server. For example,
if you have several key clients that you want to use with the same key server, each key client must register
with a different tenant. For more information, see “Simplified setup: Valid and invalid configurations” on
page 739.
b) Verify that the tenant is added. The following command displays all the existing tenants:
devG2
Key Server: keyserver01.gpfs.net
Registered Client: (none)
The command output shows that c1Client1 is registered to both devG1 and the new devG2.
c) Verify the configuration of the RKM stanza. The following command displays all the RKM stanzas:
b) Verify that the key server is added. The following command displays information about all the
existing key servers:
keyserver11.gpfs.net
Type: ISKLM
IPA: 192.168.9.131
User ID: SKLMAdmin
REST port: 9080
Label: 2_keyserver11
NIST: on
FIPS1402: off
Backup Key Servers: keyserver12.gpfs.net,keyserver13.gpfs.net
Distribute: yes
Retrieval Timeout: 120
Retrieval Retry: 3
Retrieval Interval: 10000
The command shows two key servers, keyserver01 and the keyserver11.
3. Add a tenant to the key server.
The name of the tenant must be unique within the same key server, but it can be the same as the name
of a tenant in another key server:
a) Add the tenant devG1 to keyserver11:
devG2
Key Server: keyserver01.gpfs.net
Registered Client: c1Client1
devG1
Key Server: keyserver11.gpfs.net
Registered Client: (none)
b) Verify that the client is created. The command shows all the existing key clients:
c1Client11
Label: c1Client11
Key Server: keyserver11.gpfs.net
Tenants: (none)
c) Verify that the tenant shows that the client c1Client11 is registered with it:
d) You can also verify that the client shows that it is registered with tenant devG1:
e) Display the RKM stanzas for the cluster. They show the following relationships:
• With keyserver01, c1Client1 is registered with devG1 and devG2.
• With keyserver11, c1Client11 is registered with devG1.
f) Create encryption keys. The following command creates two keys in tenant devG1 on
keyserver11.
Attention:
• You can change the order in which the client tries backup key servers, by running the same
command with the key servers in a different order.
• You can delete backup key servers by specifying a list that contains the backup key servers
that you want to keep and omits the ones that you want to delete.
2. To verify, issue the mmkeyserv rkm show command to display the RKM stanzas:
keyserver01_devG2 {
type = ISKLM
kmipServerUri = tls://192.168.40.59:5696
keyStore = /var/mmfs/ssl/keyServ/serverKmip.1_keyserver01.c1Client1.1.p12
passphrase = pw4c1Client1
clientCertLabel = c1Client1
tenantName = devG2
}
keyserver11_devG1 {
type = ISKLM
kmipServerUri = tls://keyserver11.gpfs.net:5696
kmipServerUri12 = tls://keyserver12.gpfs.net:5696
kmipServerUri13 = tls://keyserver13.gpfs.net:5696
kmipServerUri14 = tls://keyserver14.gpfs.net:5696
kmipServerUri15 = tls://keyserver15.gpfs.net:5696
kmipServerUri16 = tls://keyserver16.gpfs.net:5696
keyStore = /var/mmfs/ssl/keyServ/serverKmip.2_keyserver11.c1Client11.1.p12
passphrase = pw4c1Client11
clientCertLabel = c1Client11
tenantName = devG1
}
CAUTION:
– Take appropriate precautions to ensure that the security-sensitive files are not lost or
corrupted. IBM Spectrum Scale does not manage or replicate the files.
– Ensure that the passphrase for the client certificate file is not leaked through other means,
such as the shell history.
• Client keystore files must be record-locked when the GPFS daemon starts. If the keystore files are
stored on an NFS mount, the encryption initialization process can hang. The cause is a bug that affects
the way NFS handles record locking. If you encounter this problem, upgrade your version of NFS or
store your keystore file on a local file system. If an upgrade is not possible and no local file system is
available, use a RAM drive to store the keystore files.
See the following subtopics for instructions:
“Part 1: Installing Security Key Lifecycle Manager” on page 752
“Part 2: Creating and exporting a server certificate” on page 753
“Part 3: Configuring the remote key management (RKM) back end” on page 755
“Part 4: Configuring more RKM back ends” on page 758
mmlsconfig FIPS1402mode
The command returns yes if the cluster complies with FIPS or no if not.
b) On the SKLM server system, open the SKLMConfig.properties file.
Note: The default location of the SKLMConfig.properties file depends on the operating system:
• On AIX, Linux, and similar operating systems:
/opt/IBM/WebSphere/AppServer/products/sklm/config/
SKLMConfig.properties
fips=on
4. Configure the SKLM server to have the same NIST SP800-131a (NIST) setting as the IBM Spectrum
Scale cluster. Follow these steps:
a) Determine the NIST setting of the cluster by entering the following command on the command line:
mmlsconfig nistCompliance
The command returns SP800-131A if the cluster complies with NIST or off if not.
b) On the SKLM server system, open the SKLMConfig.properties file. For the location of this file,
see the note in Step 3.
c) Add the following line to configure SKLM to comply with NIST or remove it to configure SKLM not to
comply with NIST:
TransportListener.ssl.protocols=TLSv1.2
5. If the cipher suites have been set at any time, SKLM 2.6.0.0 has a known issue that causes server
certificates always to be signed with SHA1withRSA. To work around the problem, follow these steps:
a) While the SKLM server is running, in the SKLMConfig.properties file, add or modify the
requireSHA2Signatures property as follows:
requireSHA2Signatures=true
• On Microsoft Windows:
where:
labelSSCert
Specifies the certificate label of the self-signed server certificate. You made a note of the label
in Step 2.
SKLM responds with output like the following example:
e) Make a note of the UUID of the certificate that is displayed on line 2 of the output. You need it in the
next substep and in Part 3.
f) To export the certificate, from the SKLM command line interface, enter the following command on
one line:
where:
certUUID
Specifies the UUID that you made a note of in the previous substep.
fileName
Specifies the path and file name of the certificate file in which the server certificate is stored.
SKLM exports the self-signed server certificate into the specified file.
g) Close the SKLM command line interface.
h) Copy the server certificate file to a temporary directory on the IBM Spectrum Scale node that you
are configuring for encryption.
4. In SKLM, create a device group and keys for the IBM Spectrum Scale cluster:
a) In the SKLM graphical user interface, click Advanced Configuration > Device Group.
b) In the Device Group table, click Create.
c) In the Create Device Group window, follow these steps:
1) Select the GPFS device family.
/var/mmfs/etc/RKMcerts
b) The following command creates the client keystore, stores a private key and a client certificate in it,
and also stores the trusted SKLM server certificate into it. From the command line, enter the
following command on one line:
/var/mmfs/etc/RKM.conf
Important: Verify that the files in the client keystore directory meet the requirements for security-
sensitive files that are listed in the Requirements section at the beginning of this topic.
b) Add a stanza with the following format:
stanzaName {
type = ISKLM
kmipServerUri = tls://raclette.zurich.ibm.com:5696
keyStore = /var/mmfs/etc/RKMcerts/SKLM.p12
passphrase = a_password
clientCertLabel = a_label
tenantName = GPFS_Tenant0001
}
keyServerName_tenantName
where tenantName is the name that you provide in the last line of the stanza. For example, the
RKM ID for the key server and key client in these instructions is:
raclette_GPFS_Tenant0001.
type
Always ISKLM.
kmipServerUri
The DNS name or IP address of the SKLM server and the KMIP SSL port. You can find this
information on the main page of the SKLM graphic user interface. The default port is 5696.
You can have multiple instances of this line, where the first instance represents the primary key
server and each additional instance represents a backup key server. You can have up to five
backup key servers. The following example has the primary key server and five backup key
servers:
stanzaName {
type = ISKLM
kmipServerUri = tls://raclette.zurich.ibm.com:5696
kmipServerUri2 = tls://raclette.fondue2.ibm.com:5696
kmipServerUri3 = tls://raclette.fondue3.ibm.com:5696
kmipServerUri4 = tls://raclette.fondue4.ibm.com:5696
kmipServerUri5 = tls://raclette.fondue5.ibm.com:5696
kmipServerUri6 = tls://raclette.fondue6.ibm.com:5696
keyStore = /var/mmfs/etc/RKMcerts/SKLM.p12
passphrase = a_password
clientCertLabel = a_label
tenantName = GPFS_Tenant0001
}
Warning: The mmchpolicy command in Step 5 will fail if you omit this step. The mmchpolicy
command requires the configuration files to be on the file system manager node.
a) Copy the RKM.conf file from the /var/mmfs/etc directory to the same directory on the file
system manager node.
b) Copy the keystore files that the RKM file references to the same directories on the file system
manager node. The recommended location for the keystore files is /var/mmfs/etc/RKMcerts/.
Important: Verify that the files in the client keystore directory meet the requirements for security-
sensitive files that are listed in the Requirements section at the beginning of this topic.
4. To configure other nodes in the cluster for encryption, copy the RKM.conf file and the keystore files to
those nodes.
Copy the files in the same way as you did in Step 3.
Important: Verify that the files in the client keystore directory meet the requirements for security-
sensitive files that are listed in the Requirements section at the beginning of this topic.
5. Install an encryption policy for the cluster:
Note: You can do this step on any node to which you copied the configuration files.
a) Create a policy that instructs GPFS to do the encryption tasks that you want.
The following policy is an example policy. It instructs IBM Spectrum Scale to encrypt all files in the
file system with a file encryption key (FEK) and to wrap the FEK with a master encryption key
(MEK):
RULE ’p1’ SET POOL ’system’ /* one placement rule is required at all times */
RULE ’Encrypt all files in file system with rule E1’
SET ENCRYPTION ’E1’
WHERE NAME LIKE ’%’
RULE ’simpleEncRule’ ENCRYPTION ’E1’ IS
ALGO ’DEFAULTNISTSP800131A’
KEYS(’KEY-326a1906-be46-4983-a63e-29f005fb3a15:SKLM_srv’)
In the last line of the policy, the character string within single quotation marks (') is the key name. A
key name is a compound of two parts in the following format:
KeyID:RkmID
where:
KeyID
Specifies the UUID of the key that you created in the SKLM graphic user interface in Part 2.
Trouble: If an encryption policy succeeds on one node but fails on another node in the same
cluster, verify that the failing node has the correct client keystore and stanza.
CAUTION: Installing a new policy with the mmchpolicy command removes all the
statements in the previous policy. To add statements to an existing policy without deleting
the previous contents, collect all policy statements for the file system into one file. Add the
new statements to the file and install the contents of the file with the mmchpolicy
command.
6. Import the client certificate into the SKLM server:
a) On the IBM Spectrum Scale node that you are configuring for encryption, send a KMIP request to
SKLM.
To send a KMIP request, try to create an encrypted file on the node. The attempt fails, but it causes
SKLM to put the client certificate in a list of pending certificates in the SKLM key server. The attempt
fails because SKLM does not yet trust the client certificate. See the following example:
# touch /gpfs0/test
touch: cannot touch `/gpfs0/test’: Permission denied
# tail -n 2 /var/adm/ras/mmfs.log.latest
Thu Mar 20 14:00:55.029 2014: [E] Unable to open encrypted file: inode 46088,
Fileset fs1, File System gpfs0.
Thu Mar 20 14:00:55.030 2014: [E] Error: key
’KEY-326a1906-be46-4983-a63e-29f005fb3a15:SKLM_srv’ could not be fetched (RKM
reported error -1004).
b) In the graphical user interface of SKLM, on the main page, click Pending client device
communication certificates.
c) Find the client certificate in the list and click View.
d) Carefully check that the certificate that you are importing matches the one created in the previous
step, then click Accept and Trust.
e) On the resulting screen, provide a name for the certificate and click Accept and Trust again.
f) On the node that you are configuring for encryption, try to create an encrypted file as you did in
Step (a).
This time the command succeeds. Enter an mmlsattr command to list the encryption attributes of
the new file:
# touch /gpfs0/test
# mmlsattr -n gpfs.Encryption /gpfs0/test
file name: /gpfs0/test
gpfs.Encryption: "EAGC????f?????????????? ??????w?^??>???????????? ?L4??
_-???V}f???X????,?G?<sH??0?)??M?????)?KEY-326a1906-be46-4983-a63e-29f005fb3a15?
sklmsrv?)?KEY-6aaa3451-6a0c-4f2e-9f30-d443ff2ac7db?RKMKMIP3?"
EncPar ’AES:256:XTS:FEK:HMACSHA512’
type: wrapped FEK WrpPar ’AES:KWRAP’ CmbPar ’XORHMACSHA512’
KEY-326a1906-be46-4983-a63e-29f005fb3a15:sklmsrv
From now on, the encryption policy rule causes each newly created file to be encrypted with a file
encryption key (FEK) that is wrapped in a master encryption key (MEK). You created the key in a
device group in the SKLM server and included its UUID as part of a key name in the security rule.
For more information, see “RKM back ends” on page 716 in “Preparation for encryption” on page 714.
CAUTION:
– Take appropriate precautions to ensure that the security-sensitive files are not lost or
corrupted. IBM Spectrum Scale does not manage or replicate the files.
– Ensure that the passphrase for the client certificate file is not leaked through other means,
such as the shell history.
• Client keystore files must be record-locked when the GPFS daemon starts. If the keystore files are
stored on an NFS mount, the encryption initialization process can hang. The cause is a bug that affects
the way NFS handles record locking. If you encounter this problem, upgrade your version of NFS or
store your keystore file on a local file system. If an upgrade is not possible and no local file system is
available, use a RAM drive to store the keystore files.
See the following subtopics for instructions:
“Part 1: Installing Security Key Lifecycle Manager” on page 760
“Part 2: Configuring SKLM” on page 761
“Part 3: Configuring the remote key management (RKM) back end” on page 763
“Part 4: Enabling encryption on other nodes” on page 768
mmlsconfig FIPS1402mode
The command returns yes if the cluster complies with FIPS or no if not.
b) On the SKLM server system, open the SKLMConfig.properties file.
Note: The default location of the SKLMConfig.properties file depends on the operating system:
• On AIX, Linux, and similar operating systems the directory is at the following location:
mmlsconfig nistCompliance
The command returns SP800-131A if the cluster complies with NIST or off if not.
b) On the SKLM server system, open the SKLMConfig.properties file. For the location of this file,
see the note in Step 3.
c) Add the following line to configure SKLM to comply with NIST or remove it to configure SKLM not to
comply with NIST:
TransportListener.ssl.protocols=TLSv1.2
5. Configure IBM WebSphere Application Server so that it has the same NIST setting as the IBM
Spectrum Scale cluster.
See the topic Transitioning WebSphere Application Server to the SP800-131 security standard in the
volume WebSphere Application Server Network Deployment in the WebSphere Application Server online
documentation.
• WebSphere Application Server can be configured to run SP800-131 in a transition mode or a
strict mode. The strict mode is recommended.
• When NIST is enabled, make sure that WebSphere Application Server certificate size is at least 2048
bytes and is signed with SHA256withRSA as described in the preceding link.
6. If the cipher suites were set at any time, SKLM 2.6.0.0 has a known issue that causes server
certificates always to be signed with SHA1withRSA. To work around the problem, follow these steps:
a) While the SKLM server is running, in the SKLMConfig.properties file, modify the
requireSHA2Signatures property as follows:
requireSHA2Signatures=true
d) In the SKLM command line interface, issue the following command on one line:
where:
-alias labelCsr
Specifies the certificate label of the CSR.
-cn server
Specifies the common name of the server in the certificate.
-validity daysValid
Specifies the validity period of the certificate in days.
-keyStoreName defaultKeyStore
Specifies the keystore name within SKLM where the CSR is stored. Typically, you would specify
defaultKeyStore as the name here.
-fileName fileName
Specifies the fully qualified path of the directory where the CSR is stored on the SKLM server
system, for example /root/sklmServer.csr.
-usage SSLSERVER
Specifies how the generated certificate is used in SKLM.
The following example shows the SKLM response:
b. If you have not already done so, save the files of the certificate chain to a secure location. Include
the root certificate file, any intermediate certificate files, and the endpoint certificate file. Now,
when a client certificate expires, you will not need to download the certificate chain from the server
again. You can add your local copy of the files in the server certificate chain to the new client
keystore. For more information, see “Renewing expired client certificates” on page 792.
4. Import the endpoint certificate into the SKLM server with the SKLM graphical user interface:
a) On the Welcome page, in the Action Items section, in the Key Groups and Certificates area, click
You have pending certificates.
b) In the Pending Certificates table, click the certificate that you want to import and click Import.
c) In the File name and location field, type the path and file name of the certificate file and click
Import.
5. In SKLM, create a device group for the IBM Spectrum Scale cluster:
a) In the SKLM graphical user interface, click Advanced Configuration > Device Group.
b) In the Device Group table, click Create.
c) In the Create Device Group window, follow these steps:
1) Select the GPFS device family.
2) Enter an appropriate name, such as GPFS_Tenant0001. The name is case-sensitive.
3) Make a note of the name. You need it in Part 3 when you create an RKM stanza.
4) Complete any other fields and click Create.
d) After SKLM creates the device group, it prompts you to add devices and keys. Do not add any
devices or keys. Instead, click Close. Keys are created in the next step.
6. Create master encryption keys for the device group.
a) In the SKLM graphical user interface, in the Key and Device Management table, select the device
group that you created in Step 5. In these instructions, the device group is named
GPFS_Tenant0001.
b) Click Go to > Manage keys and services.
c) In the management page for GPFS_Tenant0001, click Add > Key.
d) Enter the following information:
• The number of keys to be created.
• The three-letter prefix for key names. The key names are internal SKLM names and are not used
for GPFS encryption.
e) Make a note of the UUID of the key, such as KEY-326a1906-be46-4983-a63e-29f005fb3a15.
You need it in Part 3.
f) In the drop-down list at the bottom of the page, select Hold new certificate requests pending my
approval.
/var/mmfs/etc/RKMcerts
2. Issue the following command to create the client credentials. The command is all on one line:
where:
--prefix /var/mmfs/etc/RKMcerts/SKLM
Specifies the path and file name prefix of the client credential files that are generated.
--cname clientName
Specifies the name of the client in the certificate.
--pwd-file passwordFile
Specifies the path of a text file that contains the password for the client keystore. The password
must be 1 - 20 characters in length.
--fips fipsVal
Specifies the current FIPS 140-2 compliance mode of the IBM Spectrum Scale cluster. Valid values
are on and off. To find the current mode, issue the following command:
mmlsconfig fips1402mode
--nist nistVal
Specifies the current NIST SP 800-131A compliance mode of the IBM Spectrum Scale cluster.
Valid values are on and off. To find the current mode, issue the following command:
mmlsconfig nistCompliance
--days validDays
Specifies the number of days that the client certificate is valid.
--keylen keyBits
Specifies the number of bits for the client private RSA key.
The command creates three files that contain the private key, the public key, and the certificate for the
client.
3. Issue the following command to create the client keystore and store the private key and the client
certificate in it. The command is all on one line:
where:
--cert /var/mmfs/etc/RKMcerts/SKLM.cert
Specifies the path of the client certificate file. The path was specified in the --prefix parameter
Step 2. The file suffix is .cert.
--priv /var/mmfs/etc/RKMcerts/SKLM.priv
Specifies the path of the client private key file. The path was specified in the --prefix parameter
in the Step 2. The file suffix is .priv.
--label clientCertLabel
Specifies the label of the client certificate in the keystore.
--pwd-file passwordFile
Specifies the path of a text file that contains the password for the client keystore. The password
must be 1 - 20 characters in length.
--out /var/mmfs/etc/RKMcerts/SKLM.p12
Specifies the path of the client keystore.
--fips fipsVal
Specifies the current FIPS 140-2 compliance mode of the IBM Spectrum Scale cluster. Valid values
are on and off. To find the current mode, issue the following command:
mmlsconfig fips1402mode
mmlsconfig nistCompliance
4. Copy the certificate files of the server certificate chain from the temporary directory to the directory
that contains the client keystore. You gathered these files in Step 3 of Part 2. Rename each certificate
file with the same prefix, followed by a numeral that indicates the order of the certificate in the chain,
followed by the file extension .cert. Start the numbering with 0 for the root certificate. For example, if
the chain consists of three certificate files and the prefix is sklmChain, rename the files as follows:
sklmChain0.cert
sklmChain1.cert
sklmChain2.cert
If the certificate chain contains more than three certificate files, combine the intermediate files into
one certificate file, set the numeral in the name of the combined certificate file to 1, and set the
numeral in the name of the endpoint certificate file to 2. For example, suppose that the certificate
chain contains four certificate files: sklmChain0.cert, sklmChain1.cert, sklmChain2.cert,
and sklmChain3.cert. Modify the certificate files in the following way:
• The sklmChain0.cert file needs no changes.
• Combine sklmChain1.cert and sklmChain2.cert into one file and name it sklmChain1.cert.
• Rename sklmChain3.cert to sklmChain2.cert.
Important: If you have not already done so, save the files of the certificate chain to a secure location.
Include the root certificate file, any intermediate certificate files, and the endpoint certificate file. Now,
when a client certificate expires, you will not need to download the certificate chain from the server
again. You can add your local copy of the files in the server certificate chain to the new client keystore.
For more information, see “Renewing expired client certificates” on page 792.
5. Issue the following command to verify the certificate chain. The command is all on one line:
where:
-CAfile /var/mmfs/etc/RKMcerts/sklmChain0.cert
Specifies the path of the root certificate file.
-untrusted /var/mmfs/etc/RKMcerts/sklmChain1.cert
Specifies the path of the intermediate certificate file. If no intermediate certificates are in the
chain, omit this parameter.
/var/mmfs/etc/RKMcerts/sklmChain2.cert
Specifies the path of the endpoint certificate.
If there are only two certificates, omit the -untrusted parameter and issue the command as in the
following example:
6. Issue the following command to store the certificate chain into the client keystore. The command is all
on one line:
where:
mmlsconfig fips1402mode
--nist nistVal
Specifies the current NIST SP 800-131A compliance mode of the IBM Spectrum Scale cluster.
Valid values are on and off. To find the current mode, issue the following command:
mmlsconfig nistCompliance
Important: The new keystore must be record-locked when the GPFS daemon starts. If the keystore
files are stored on an NFS mount, the encryption initialization process can hang. The cause is a bug
that affects the way NFS handles record locking. If you encounter this problem, upgrade your version
of NFS or store your keystore file on a local file system. If an upgrade is not possible and no local file
system is available, use a RAM drive to store the keystore files.
7. Create an RKM.conf file and add a stanza to it that contains the information that is necessary to
connect to the SKLM key server. The RKM.conf file must contain a stanza for each connection
between a key client, an SKLM device group, and a key server.
a) In a text editor, create a new text file with the following path and name:
/var/mmfs/etc/RKM.conf
stanzaName {
type = ISKLM
kmipServerUri = tls://raclette.zurich.ibm.com:5696
keyStore = /var/mmfs/etc/RKMcerts/SKLM.p12
passphrase = a_password
clientCertLabel = a_label
tenantName = GPFS_Tenant0001
}
keyServerName_tenantName
where tenantName is the name that you provide in the last line of stanza. For example, the RKM
ID for the key server and key client in these instructions is: raclette_GPFS_Tenant0001.
stanzaName {
type = ISKLM
kmipServerUri = tls://raclette.zurich.ibm.com:5696
kmipServerUri = tls://raclette.fondue.ibm.com:5696
kmipServerUri = tls://raclette.fondue2.ibm.com:5696
keyStore = /var/mmfs/etc/RKMcerts/SKLM.p12
passphrase = a_password
clientCertLabel = a_label
tenantName = GPFS_Tenant0001
}
If the GPFS daemon cannot get an encryption key from the primary key server, it tries the
backup key servers in order.
keyStore
The path and name of the client keystore.
passphrase
The password of the client keystore and client certificate.
clientCertLabel
The label of the client certificate in the client keystore.
tenantName
The name of the SKLM device group. See “Part 1: Installing Security Key Lifecycle Manager” on
page 760.
8. Set up an encryption policy on the node that you are configuring for encryption.
a) Create a file management policy that instructs GPFS to do the encryption tasks that you want.
The following policy is an example. It instructs IBM Spectrum Scale to encrypt all files in the file
system with a file encryption key (FEK) and to wrap the FEK with a master encryption key (MEK):
RULE ’p1’ SET POOL ’system’ /* one placement rule is required at all times */
RULE ’Encrypt all files in file system with rule E1’
SET ENCRYPTION ’E1’
WHERE NAME LIKE ’%’
RULE ’simpleEncRule’ ENCRYPTION ’E1’ IS
ALGO ’DEFAULTNISTSP800131A’
KEYS(’KEY-326a1906-be46-4983-a63e-29f005fb3a15:SKLM_srv’)
In the last line of the policy, the character string within single quotation marks (') is the key name. A
key name is a compound of two parts in the following format:
KeyID:RkmID
where:
KeyID
Specifies the UUID of the key that you created in the SKLM graphic user interface in Part 2.
RkmID
Specifies the name of the RKM backend stanza that you created in the /var/mmfs/etc/
RKM.conf file.
b) Issue the mmchpolicy command to install the rule.
CAUTION: Installing a new policy with the mmchpolicy command removes all the
statements in the previous policy. To add statements to an existing policy without deleting
the previous contents, collect all policy statements for the file system into one file. Add the
# touch /gpfs0/test
touch: cannot touch `/gpfs0/test’: Permission denied
# tail -n 2 /var/adm/ras/mmfs.log.latest
Thu Mar 20 14:00:55.029 2014: [E] Unable to open encrypted file: inode 46088,
Fileset fs1, File System gpfs0.
Thu Mar 20 14:00:55.030 2014: [E] Error: key
’KEY-326a1906-be46-4983-a63e-29f005fb3a15:SKLM_srv’ could not be fetched (RKM
reported error -1004).
b) In the graphical user interface of SKLM, on the main page, click Pending client device
communication certificates.
c) Find the client certificate in the list and click View.
d) Carefully check that the certificate that you are importing matches the one created in the previous
step, then click Accept and Trust.
e) On the resulting screen, provide a name for the certificate and click Accept and Trust again.
f) On the node that you are configuring for encryption, try to create an encrypted file as you did in
Step (a).
This time the command succeeds. Issue an mmlsattr command to list the encryption attributes of
the new file:
# touch /gpfs0/test
# mmlsattr -n gpfs.Encryption /gpfs0/test
file name: /gpfs0/test
gpfs.Encryption: "EAGC????f?????????????? ??????w?^??>???????????? ?L4??
_-???V}f???X????,?G?<sH??0?)??M?????)?KEY-326a1906-be46-4983-a63e-29f005fb3a15?
sklmsrv?)?KEY-6aaa3451-6a0c-4f2e-9f30-d443ff2ac7db?RKMKMIP3?"
EncPar ’AES:256:XTS:FEK:HMACSHA512’
type: wrapped FEK WrpPar ’AES:KWRAP’ CmbPar ’XORHMACSHA512’
KEY-326a1906-be46-4983-a63e-29f005fb3a15:sklmsrv
From now on, the encryption policy rule causes each newly created file to be encrypted with a file
encryption key (FEK) that is wrapped in a master encryption key (MEK). You created the key in a
device group in the SKLM server and included its UUID as part of a key name in the security rule.
Important: See the security note and the caution at the beginning of this topic before Part 1.
Resolving the UUID length problem in IBM Spectrum Scale versions earlier
than 4.2.3
A UUID-length problem arises if a key client that is running a version of IBM Spectrum Scale earlier than
4.2.3 connects with SKLM version 2.7 or later as the key server. IBM Spectrum Scale versions earlier than
4.2.3 support a maximum length of 42 characters for the Universally Unique Identifier (UUID) of an
encryption key. However, SKLM versions 2.7 and later generate UUIDs of up to 48 characters in length,
including a 7 - 8 character Instance ID. To work around this problem, you can configure the SKLM 2.7 or
later key server to use one-character instance IDs. After the configuration, the server generates UUIDs
that have a maximum length of 42 characters. This method does not change existing UUIDs.
Note:
• IBM Spectrum Scale supports a maximum UUID key length of 60 characters in versions 4.2.3 and later.
• The instructions in this subsection apply only to versions of IBM Spectrum Scale earlier than 4.2.3. Do
not follow these steps with later versions of IBM Spectrum Scale.
To configure an SKLM 2.7 or later key server to generate UUIDs with a maximum length of 42 characters,
follow these steps:
1. Stop the SKLM server.
2. From the command line, change to the DB2/bin directory.
Note: The location of the DB2/bin directory depends on the operating system:
• On AIX, Linux, and similar operating systems, the directory is at the following location:
/opt/IBM/DB2SKLMV27/bin
• On Microsoft Windows, the directory is at the following location:
Drive:\Program Files\IBM\DB2SKLMV27\bin
If SKLM uses a preexisting DB2 installation, then the location of the bin directory might be different
and might be on another system.
3. Start the DB2 command-line tool. The method depends on the operating system:
• On AIX, Linux, and similar operating systems, enter the following command:
./db2
Database 1 entry:
Where:
database
Specifies the database name from the previous step.
userName
Specifies the SKLM DB2 user name that you set during SKLM installation. The default value is
sklmdb27.
password
Specifies the SKLM DB2 password that you set during SKLM installation.
6. Enter the following command to change the SKLM instance ID. The command is on one line:
where 1 is the one-character Instance ID that you want to set. DB2 displays output like the following
example:
commit
quit
CAUTION:
– Take appropriate precautions to ensure that the security-sensitive files are not lost or
corrupted. IBM Spectrum Scale does not manage or replicate the files.
– Ensure that the passphrase for the client certificate file is not leaked through other means,
such as the shell history.
• Client keystore files must be record-locked when the GPFS daemon starts. If the keystore files are
stored on an NFS mount, the encryption initialization process can hang. The cause is a bug that affects
the way NFS handles record locking. If you encounter this problem, upgrade your version of NFS or
store your keystore file on a local file system. If an upgrade is not possible and no local file system is
available, use a RAM drive to store the keystore files.
See the following subtopics for instructions:
“Part 1: Creating credentials for the key client” on page 771
“Part 2: Configuring the DSM key server” on page 775
“Part 3: Configuring the IBM Spectrum Scale node” on page 777
mmlsconfig nistCompliance
mmlsconfig FIPS1402mode
Follow the steps below. If you are using certificates for the client that are signed by a certificate authority
(CA), skip Step 1 and go to Step 2.
1. On the IBM Spectrum Scale node that you are configuring for encryption, run the mmgskkm command
to create the client credentials. Enter the following command on one line:
/usr/lpp/mmfs/bin/mmgskkm gen --prefix prefix --cname cname --pwd pwd --fips fips --nist nist
--days valid_days --keylen keylen
where:
--prefix prefix
Specifies the path and file name prefix of the directory where the output files are generated. For
example, if you want directory /var/mmfs/etc/RKMcerts to contain the output files, and you
want the output files to have the prefix kcVormetric, you can specify the parameter as follows:
--prefix /var/mmfs/etc/RKMcerts/kcVormetric
--cname cname
Specifies the name of the IBM Spectrum Scale key client. Valid characters are alphanumeric
characters, hyphen (-), and period (.). The name can be up to 54 characters long. In DSM, names
are not case-sensitive, so the use of uppercase letters is not recommended. For more information,
see the DSM documentation.
--pwd pwd
Specifies the password for the private key that this command creates.
--fips fips
Specifies whether the key client complies with FIPS 140-2. Specify on or off.
--nist nist
Specifies whether the key client complies with NIST SP800-131a. Specify on or off.
--validdays validdays
Specifies the number of days that the client certificate is valid.
--keylen keylen
Specifies the length in bits of the RSA key that is generated.
In the following example, the current directory is the output directory. Enter the command on one line:
The output files are a client certificate, a private key, and a public key. For example:
kcVormetric.cert
kcVormetric.priv
kcVormetric.pub
2. Issue the mmgskkm command to create a PKCS#12 keystore and to store the certificate and private
key of the client in it.
If you are using the certificate and private file from Step 1, issue the command with the following
parameters:
If you are using a certificate chain signed by a CA and the certificates are concatenated in a single file,
issue the command with the following parameters:
If you are using a certificate signed by a CA and the certificates are in separate files with the same file
prefix, issue the command with the following parameters:
The parameters have the same meanings across all three forms of the command:
--cert certFile
Specifies the client certificate file that you created in Step 1 or the client certificate file that is
signed by the CA.
--priv privFile
Species the private key file that you created in Step 1 or that matches the client certificate signed
by the CA.
--chain CACertChainFile
Specifies the CA certificate chain file, which contains the CA certificate chain that was used to sign
the client certificate. The chain starts with the CA root certificate, continues with any intermediate
CA certificates in order, and ends with CA certificate that signed the client certificate. All the
certificates are in base64 encoded PEM format. On UNIX-like systems, you can create such a file
by concatenating the CA certificates that you received or downloaded from the CA into a single file
with the cat command.
--prefix CACertFilesPrefix
Specifies the full path prefix of the CA certificates that are used to sign the client certificate. The CA
certificate files must have the format <CACertFilesPrefix><n>.cert, where
CACertFilesPrefix is the full path prefix for the CA certificate files, such as /tmp/CA/
certfiles, and <n> is a CA certificate index. The index is 0 for the CA root certificate and n - 1 for
the last intermediate CA certificate that signed the client certificate.
--label label
Specifies the label under which the private key is stored in the keystore.
--pwd pwd
Specifies the password of the keystore. You can use the same password that you specified for the
private key in Step 1.
--out keystore
The file name of the keystore.
The output of the command is a client keystore that contains the private key of the client and the
certificate or certificate chain of the client.
In the following example, the current directory contains the client credentials from Step 1. The
command is on one line:
In the following example, the current directory contains the client certificate, the private key, and the
client certificate chain. The command is on one line:
In all three examples, the output file is the client keystore ksVormetric.keystore, which contains
the client credentials.
Important: The keystore must be record-locked when the GPFS daemon starts. If the keystore files
are stored on an NFS mount, the encryption initialization process can hang. The cause is a bug that
affects the way NFS handles record locking. If you encounter this problem, upgrade your version of
NFS or store your keystore file on a local file system. If an upgrade is not possible and no local file
system is available, use a RAM drive to store the keystore files.
3. Retrieve the certificate chain of the DSM server.
Note: Before you can do this next step, you must install the DSM server, set up the DSM networking
configuration, and set up the server certificate. If you do not, then you might not be able to connect to
the DSM server or you might retrieve an invalid, default certificate chain.
Note: DSM does not support the use of imported server certificate chains for the TLS communication
on the KMIP port. You must create and use a server certificate chain signed by the DSM internal
certificate authority (CA).
Enter the following command on one line:
where:
--host host
Specifies the name or IP address of the remote system where the DSM server is running.
--port port
Specifies the port on the remote system for communicating with the DSM server (default 8445).
--prefix prefix
Specifies the path and file name prefix of the directory where the files in the certificate chain are
stored. For example, if you want to store the certificate chain in the directory /var/mmfs/etc/
RKMcerts, and you want the certificate files to have the prefix DSMServer, you can specify the
parameter as follows:
--prefix /var/mmfs/etc/RKMcerts/DSMServer
--keystore keystore
Specifies the path and file name of the client keystore that you created in Step 2.
--keypass keypass
Specifies a text file that contains the password of the client keystore as the first line. You must
create this text file. Store the password that you provided in Step 2.
--fips fips
Specifies whether the key client complies with FIPS 140-2. Specify on or off.
--nist nist
Specifies whether the key client complies with NIST SP800-131a. Specify on or off.
In the following example, the current directory contains the client keystore that was created in Step 2.
Enter the command on one line:
The command connects to the DSM server, retrieves the server certificate chain, and stores each
certificate into a separate local file in Base64-encoded DER format. Each file name has the format
prefixN.cert, where prefix is the prefix that you specified in the command and N is a digit that begins
at 0 and increases by 1 for each certificate in the chain, as in the following example:
DSM0.cert
DSM1.cert
4. Verify that the SHA-256 fingerprint in each retrieved certificate matches the fingerprint of the DSM
server:
a) To display the details of each certificate, enter the following sequence at the client command line,
where prefix is the prefix that you provided in Step 3:
b) Log in to the graphical user interface of the DSM server and display its SHA-256 fingerprint.
c) Verify that the fingerprints in the certificates match the fingerprint in the DSM server.
5. Add the certificates to the PKCS#12 keystore of the key client as trusted certificates. Enter the
following command on one line:
/usr/lpp/mmfs/bin/mmgskkm trust --prefix prefix --pwd pwd --out keystore --label serverLabel
--fips fips --nist nist
where:
--prefix prefix
Specifies the prefix that you specified in Step 3.
--pwd pwd
Specifies the password of the client keystore, which you provided in Step 3.
--out keystore
Specifies the path name of the keystore of the key client.
--label serverLabel
Specifies the label under which the server certificate chain is stored in the client keystore.
--fips fips
Specifies whether the key client complies with FIPS 140-2. Specify on or off.
--nist nist
Specifies whether the key client complies with NIST SP800-131a. Specify on or off.
In the following example, the current directory contains the client keystore and the certificate chain.
Enter the following command on one line:
/var/mmfs/etc/RKM.conf
stanzaName {
type = KMIP
kmipServerUri = tls://raclette.zurich.ibm.com:5696
keyStore = /var/mmfs/etc/RKMcerts/ksVormetricDMS.p12
passphrase = a_password
clientCertLabel = a_label
}
keyServerName_keyClientName
where keyClientName is the key client name from Part 1, Step 1. For example, the RKM ID for
the key server and key client in these instructions is: raclette_kcVormetric.
type
Always KMIP for the DSM server.
kmipServerUri
The DNS name or IP address of the DSM server and the DSM SSL port. Multiple kmipServerUri
entries may be added for high availability (HA), but note that the DSM servers must then be
RULE ’p1’ SET POOL ’system’ /* one placement rule is required at all times */
RULE ’Encrypt all files in file system with rule E1’
SET ENCRYPTION ’E1’
WHERE NAME LIKE ’%’
RULE ’simpleEncRule’ ENCRYPTION ’E1’ IS
ALGO ’DEFAULTNISTSP800131A’
KEYS('01-10:raclette_kcVormetric')
In the last line, the character string within single quotation marks (') is the key name. A key name is
a compound of two parts in the following format:
KeyID:RkmID
where:
KeyID
Specifies the UUID of the master encryption key that you created in the DSM Management
Console in Part 2.
RkmID
Specifies the name of the RKM stanza that you created in the /var/mmfs/etc/RKM.conf file
in Step 1.
b) Install the policy rule with the mmchpolicy command.
CAUTION: Installing a new policy with the mmchpolicy command removes all the
statements in the previous policy. To add statements to an existing policy without deleting
the previous contents, collect all policy statements for the file system into one file. Add the
new statements to the file and install the contents of the file with the mmchpolicy
command.
From now on, the encryption policy rule causes each newly created file to be encrypted with a file
encryption key (FEK) that is wrapped in a master encryption key (MEK).
With this information you can log on to the specified RKM server and find the server certificate that is
approaching expiration.
2020-11-04_13:55:07.838-0400: [W] The client certificate with label 'client1' for key server
with RKM ID 'RKM1' (192.168.9.135:5696) will expire at Nov 04 16:39:59 2020 EDT (-0400).
The procedure for identifying an expiring client certificate based on the RKM server information in the
error message depends on two circumstances:
• Whether more than one key client in the cluster has a connection with the RKM server that is specified
in the error message.
• Whether the encryption environment of the cluster is configured by the simplified setup method or the
regular setup method.
The following instructions assume that only one key client in the cluster has a connection with the
specified RKM server:
• Simplified method: If the encryption environment is configured by the simplified method, follow these
steps:
1. Make a note of the following information:
– The expiration date of the client certificate from the warning message.
– The IP address and port of the RKM server from the error message.
where <host_ID> is the IP address or host name of the RKM server from Step 1.
3. For each key client the command displays a block of information that includes the client certificate
label, the host name or IP address and the port of the RKM server, and other information.
4. This set of instructions assumes that only one key client in the cluster has a connection with the
specified RKM server. Therefore, in Step 3 the command displays only one block of information. The
label that is listed in this block of information is the label of the client certificate that is approaching
expiration.
• Regular method: If the encryption environment is configured by the regular method, follow these steps:
1. Make a note of the following information:
– The expiration date of the client certificate from the warning message
– The IP address and port of the RKM server from the error message.
– The host name of the RKM server that uses that IP address and port. Look this item up in your
system information.
2. On a node of the cluster that accesses encrypted files – that is, on a node that is successfully
configured for encryption – open the RKM.conf file with a text editor. For more information about
the RKM.conf file, see the topic “Preparation for encryption” on page 714.
3. In the RKM.conf file, follow these steps:
a. Find the stanza that contains the host name or IP address and the port of the RKM server from
Step 1. This information is specified in the kmipServerURI parameter of the stanza.
b. The client certificate label that is specified in that same stanza is the label of the client certificate
that is approaching expiration.
c. Make a note of the path of the keystore and the keystore password that are also specified in the
stanza. You can use this information to open the keystore with a tool such as the openssl key-
management utility and inspect the certificate.
If more than one key client in the cluster might have a connection with the RKM server that is specified in
the error message, then you must identify each such key client and search its keystore to find the
certificate that is approaching expiration. The following instructions are for both the simplified setup
method and the regular setup method:
1. Make a note of the expiration date of the client certificate and the IP address and port of the RKM
server in the error message. Also look up the host name of the RKM server.
2. List the stanzas of the RKM.conf file:
• For the simplified setup method, issue the following command from the command line:
• For the regular setup method, open the RKM.conf file with a text editor. You must do this step on a
node that is configured for encryption. For more information about the RKM.conf file, see the topic
“Preparation for encryption” on page 714.
3. Find the stanza or stanzas that contain the host name or IP address of the RKM server from Step 1. For
each such stanza, make a note of the client certificate label, the path of the keystore file, and the
password to the keystore file.
4. Open each keystore file from Step 3 with a tool such as the openssl key-management utility. In the
keystore file, find the client certificate label or labels from Step 3 and verify whether each client
certificate is approaching expiration.
Frequency of warnings
The frequency of warnings increases as the expiration date nears, as the following table illustrates:
A first warning is issued when both of the following conditions become true:
• At least 75 percent of the certificate validity period has passed.
• The time that remains falls within one of the warning windows.
Subsequent warnings are issued with the frequency that is listed in the second column of the preceding
table. For example, if the validity period is 30 days and begins at midnight on March 1, then the warnings
are issued as shown in the following list:
First warning: March 22 at 12:00 noon (.75 * 30 days = 22.5 days).
Second warning: March 23 at 12:00 noon (7.5 days remaining).
Third warning: March 24 at 12:00 noon (6.5 days remaining).
Warnings: Every 60 minutes from March 24 at 1:00 PM until March 29 at 12:00 midnight.
Warnings: Every 15 minutes from March 29 at 12:15 AM until March 30 at midnight.
Limitations
This feature has the following restrictions and limitations:
• Warnings are logged only on nodes that access encrypted files.
• Warnings are logged only for certificates that are used to authenticate a connection between a key
client and an RKM server that is still active.
• Warning messages identify only the type of certificate (client or server) and the IP address and port of
the RKM server.
Table 66. Comparing default lifetimes of key server and key client certificates
Item Type of certificate Default lifetime
IBM Spectrum Scale Client 3 years1
IBM Security Key Lifecycle Server 3 years
Manager (SKLM)
Thales Vormetric Data Security Server 10 years
Manager (DSM)
1Youcan create an IBM Spectrum Scale client certificate with a shorter or longer lifetime by issuing the
mmkeyserv client create command with the --days option.
Checking the expiration dates of RKM server and key client certificates
• If you are using the simplified setup method in IBM Spectrum Scale 5.0.3 or later, follow these steps for
the RKM server certificate and the key client certificate:
RKM server certificate
Issue the following command:
where ServerName is the host name or IP address that you specified for the server in the
mmkeyserv server add command. In the following example, the server name is hs21n62. The
expiration date of the server is displayed in the line that begins KMIP Certificate Expiration:
where ClientName is the name that you specified for the client in the mmkeyserv client create
command. In the following example, the client name is sklm4Client. The expiration date of the
client is displayed in the line that begins Certificate Expiration:
• If you are using the regular setup method, follow these steps for the RKM server certificate and the key
client certificate:
If the RKM server is running with a certificate chain from a CA, follow these steps:
1. Manually copy the files of the certificate chain from the server to a location that is accessible to
the key client.
Note: If you have not already done so, save the files of the certificate chain to a secure location.
Include the root certificate file, any intermediate certificate files, and the endpoint certificate file.
Now, when a client certificate expires, you will not need to download the certificate chain from
the server again. You can add your local copy of the files in the server certificate chain to the new
client keystore. For more information, see “Renewing expired client certificates” on page 792.
2. For each certificate in the chain, do the following actions:
b. In the mmgskkm print command output, find the expiration date for the server certificate. In
the following example, the expiration date is on the final line, which begins "Valid until":
788c8c9a3ec673ac7276283f6720ff4c910f9235042f2959eb37a466277d11a9f085112e28126b05c6451
6
50c9595bd21ab48aabac1ac1fab4a8e945f3dfd2de12c82f57c44e13d983305c3a7ba41d8d565c9db6a54
5
981c16b12af7538f85740e6d0500266cec9fc2cf4b878c7ef12d18fd10e43c0933d246ab825dc5f059c6b
b
0e82f5fabd302e661584deb63b5feb36ed603276a9684ea240874a504dada69670c0f83a9c8767e9744e2
4
a24c92dd02ca1aa94c83430d748db81ed415ac4c9b3e66593b4b2f15b094ca42a1abf6e4e9b17cba21162
c
10450c9d7314ff2ae8b62c32133c749d1d9d292d6fd320837b449a7d51a798b74b3e91cf542dc623fa
Signature algorithm: SHA256WithRSASignature
Key size: 2048
Issuer: CN=crypt
Subject: CN=crypt
Valid from: Feb 06 21:51:31 2020 EST (-0500)
Valid until: Apr 24 22:51:31 2028 EDT (-0400)
If the client certificate file is not available, issue the openssl command to extract the client
certificate from the client keystore and show the expiration date. In the following example, the
client keystore file is SKLM.p12:
[W] The key server sklm1 (port 5696) had a failure and will be
quarantined for 1 minute(s).
[E] Unable to create encrypted file testfile.enc (inode 21260,
fileset 0, file system gpfs1).
[E] Key 'KEY-uuid:sklm1' could not be fetched. Bad certificate.
2. Issue the following command to update the server certificate of the key server object:
The variable <serverName> is the name of the key server object that you want to update.
3. Enter the SKLMAdmin administrator password when prompted.
4. Enter yes to trust the SKLM REST certificate.
The key server object is updated with the self-signed server certificate.
2. Set up the files in the certificate chain by performing the following steps:
a. Copy the files for the new server certificate chain into the same directory.
b. Rename each certificate file with the same prefix, followed by a numeral that indicates the order of
the certificate in the chain, followed by the file extension .cert. Start the numbering with 0 for the
root certificate. For example, if the chain consists of three certificate files and the prefix is
sklmChain, rename the files as follows:
sklmChain0.cert
sklmChain1.cert
sklmChain2.cert
If the certificate chain contains more than three certificate files, combine the intermediate files into
one certificate file, set the numeral in the name of the combined certificate file to 1, and set the
numeral in the name of the endpoint certificate file to 2. For example, the certificate chain contains
four certificate files: sklmChain0.cert, sklmChain1.cert, sklmChain2.cert, and sklmChain3.cert.
3. Issue the following command to update the server certificate of the key server object:
The variable <serverName> is the name of the key server object that you want to update.
4. Enter the SKLMAdmin administrator password when prompted.
5. Enter yes to trust the certificate chain.
3. Issue the following command to update the key server object with the new WebSphere Application
Server certificate:
The variable <serverName> is the name of the key server object that you want to update.
4. Enter the SKLMAdmin administrator password when prompted.
5. Enter yes to trust the SKLM REST certificate.
The IBM Spectrum Scale client now trusts the new SKLM WebSphere Application Server certificate.
mmlsconfig FIPS1402mode
mmlsconfig nistCompliance
4. Optional: Display the contents of the retrieved server certificate file and verify that the information
matches the information in the new server certificate on the RKM server.
The mmgskkm command is available in IBM Spectrum Scale v4.2.1 and later. Issue the following
command:
where sklmChain is the path and file name prefix of the certificate files. You specified this prefix in
Step 3.
5. Issue the following command to add the retrieved server certificate to the client keystore:
The mmgskkm command is available in IBM Spectrum Scale v4.2.1 and later.
/usr/lpp/mmfs/bin/tsloadikm run
The IBM Spectrum Scale client now trusts the new self-signed SKLM server certificate.
sklmChain0.cert
sklmChain1.cert
sklmChain2.cert
If the certificate chain contains more than three certificate files, combine the intermediate files into
one certificate file, set the numeral in the name of the combined certificate file to 1, and set the
numeral in the name of the endpoint certificate file to 2. For example, suppose that the certificate
chain contains four certificate files: sklmChain0.cert, sklmChain1.cert, sklmChain2.cert,
and sklmChain3.cert. Modify the certificate files in the following way:
• The sklmChain0.cert file needs no changes.
• Combine sklmChain1.cert and sklmChain2.cert into one file and name it
sklmChain1.cert.
• Rename sklmChain3.cert to sklmChain2.cert.
Important: If you have not already done so, save the files of the certificate chain to a secure
location. Include the root certificate file, any intermediate certificate files, and the endpoint
certificate file. Now, when a client certificate expires, you will not need to download the certificate
chain from the server again. You can add your local copy of the files in the server certificate chain to
the new client keystore. For more information, see “Renewing expired client certificates” on page
792.
4. Optional: You can verify the server certificate chain by issuing the openssl verify command. The
command has the following usage:
where:
-CAfile <rootCaCert>
Specifies the root certificate file.
5. Issue the following command to add the new SKLM server certificate chain to the keystore.
The mmgskkm command is available in IBM Spectrum Scale v4.2.1 and later.
where:
--prefix <sklmChain>
Is the path and file name prefix of the certificate chain files that you set up in Step 3, such as /
root/sklmChain.
--out <keystore>
Is the path and file name of the client keystore from Step 1.
--pwd-file <pwd-file>
Is the path and file name prefix of the keystore password file that you created in Step 2.
--label <serverLabel>
Is the label under which to store the server certificate in the client keystore.
Note: The label must be unique in the keystore. Also, it cannot be the label of the expired server
certificate from the SKLM key server.
6. Copy the updated client keystore to all nodes in the IBM Spectrum Scale cluster.
7. Reload the new client keystore by one of the following methods:
• On any administration node in the cluster, run the mmchpolicy command to refresh the current
policy rules. You do not need to repeat this action on other nodes in the cluster.
• On each node of the cluster, unmount and mount the file system.
• In IBM Spectrum Scale v4.2.1 and later, issue the following command on each node of the cluster:
/usr/lpp/mmfs/bin/tsloadikm run
The IBM Spectrum Scale client now trusts the new SKLM server certificate chain.
mmlsconfig FIPS1402mode
--nist <nist>
Indicates whether the IBM Spectrum Scale cluster is using encryption that is in compliance with
NIST SP800-131A recommendations. Valid values are on or off. Enter the following command to
determine the state:
mmlsconfig nistCompliance
DSM server certificate chain: The DSM server certificate chain typically consists of two certificates, a
DSM internal root CA certificate and an endpoint certificate. The names of certificate files that you
retrieve in this step have the following format: the path and file name prefix that you specify in the --
prefix parameter, followed by a 0 for the root certificate or a 1 for the endpoint certificate, followed
by the suffix .cert. In the following example, the prefix is /root/dsmChain:
/root/dsmChain0.cert
/root/dsmChain1.cert
4. Optional: Display the contents of the retrieved server certificate files and verify that the information
matches the information in the new server certificate on the DSM server.
The mmgskkm command is available in IBM Spectrum Scale v4.2.1 and later. Issue the following
commands:
where dsmChain is the path and file name prefix of the certificate files that you retrieved in Step 3.
5. Issue the following command to add the new DSM server certificate chain to the client keystore.
The mmgskkm command is available in IBM Spectrum Scale v4.2.1 and later.
/usr/lpp/mmfs/bin/tsloadikm run
The IBM Spectrum Scale client now trusts the new self-signed DSM server certificate.
• If you want to replace the current system-generated self-signed certificate with a CA-signed
certificate, issue the mmkeyserv client update command and specify the CA-signed certificate
information. In the following example, the client CA-signed certificate file is /tmp/client.cert,
the client private key file is /tmp/client.key, and the CA certificate chain file is /tmp/CA-chain:
The mmkeyserv client update command deregisters the key client with the current certificate
from any tenants that it is registered to and deletes the key client. The command then creates a new
key client with the same name as the old one, creates a new self-signed client certificate or uses the
new CA-signed client certificate, and stores the new client certificate into the client keystore. Finally,
the command registers the new key client with any tenants that the old key client was registered to.
Go to Step 4.
3. This step describes the actions to take if the type of the certificate to be replaced is a user-provided
CA-signed certificate:
• If you want to replace the current user-provided CA-signed certificate with a system-generated self-
signed certificate, you must issue the mmkeyserv client update command with the --force
option. The following example is exactly like the command that is used to replace the system-
If you do not specify the --force option, the command displays an error message, as in the
following example:
• If you want to replace the current user-provided CA-signed certificate with another CA-signed
certificate, issue the mmkeyserv client update command and specify the CA-signed certificate
information. You do not have to specify the --force option because you are replacing the CA-signed
certificate with another CA-signed certificate. In the following example, the client CA-signed
certificate file is /tmp/client.cert, the client private key file is /tmp/client.key, and the CA
certificate chain file is /tmp/CA-chain:
The mmkeyserv client update command does the same actions that are described in the last
paragraph of Step 2.
4. Issue the mmkeyserv client show command and verify the new client certificate expiration date.
For more information, see the topic mmkeyserv command in the IBM Spectrum Scale: Command and
Programming Reference.
The new client certificate is accepted by the SKLM key server. The new key client is registered with any
tenants that the old key client was registered to.
2. Issue the mmkeyserv client update command to create a new client certificate to replace the
existing one. The command deregisters the key client with the existing certificate from any tenants
that it is registered to and deletes the key client. The command then creates a new key client with the
same name as the old one, creates a new client certificate, and stores the new client certificate into
the client keystore. Finally, the command registers the new key client with any tenants that the old key
client was registered to.
In the following example, the command provides the following a password file that contains the key
server password. It also specifies an expire time of 90 days for the new client certificate and provides
a password file that contains a new password for the client keystore:
In the following example,
3. Issue the mmkeyserv client show command and verify the new client certificate expiration date.
For more information, see the topic mmkeyserv command in the IBM Spectrum Scale: Command and
Programming Reference.
The new client certificate is accepted by the SKLM key server. The new key client is registered with any
tenants that the old key client was registered to.
2. Issue the following command to display information about the current clients.
The command output shows that the existing client c1Client0, which has the expired certificate, is
registered with tenant devG1 on key server keyserver01. The new client c1Client1 is not
registered with a tenant:
c1Client1
Label: c1Client1
Key Server: keyserver01
Tenants: (none)
Certificate expiration: 2023-04-22 15:41:21 (-0400)
3. Optional: Issue the following command and make a note of the RKM ID that is associated with the old
key client.
It is a good idea to reuse the RKM ID of the old key client when you register the new key client. If you
do so, then you do not have to update any of your encryption policy rules that specify the RKM ID:
See Step 5.
4. Issue the following command to deregister the current key client from the tenant. Notice that this
command also deletes the expired certificate:
Note: If you deregister a key client whose certificate is not yet expired, you cannot fetch keys until you
register a new key client:
5. Issue the following command to register the new key client with tenant devG1 in key server
keyserver01.
In the --rkm-id parameter, specify a valid RKM ID for the new connection.
Note: Here you can specify the RKM ID of the old key client to avoid having to update encryption policy
rules that reference that RKM ID. See Step 3.
For more information, see the topic mmkeyserv command in the IBM Spectrum Scale: Command and
Programming Reference.
The new client certificate is accepted by the SKLM key server. The new key client is registered with tenant
devG1.
Regular setup or DSM setup: Creating and installing a new key client
Follow these instructions if you are using either the regular setup method with an SKLM key server or the
regular setup with a DSM key server. To update an expired or unexpired client certificate, follow these
steps:
Note: The mmgskkm command and the msklmconfig command are available in IBM Spectrum Scale
4.2.1 and later.
1. Create a keystore password file that is accessible only by the root user, such as /root/
keystore.pwd, and store a password in it.
2. The next step depends on the type of client certificate that you want to use:
• If you want to create a key client with a system-generated self-signed certificate, go to Step 3.
where:
--prefix <prefix>
Is the path and file name prefix of the new certificate files and keystore file.
--cname <cname>
Is the name of the new IBM Spectrum Scale key client. The name can be up to 54 characters
in length and can contain alphanumeric characters, hyphen (-), and period (.). In DSM, names
are not case-sensitive, so it is a good practice not to include uppercase letters.
--fips <fips>
Is the current value of the FIPS1402mode configuration variable in IBM Spectrum Scale. Valid
values are yes and no. Issue the following command to see the current value:
mmlsconfig FIPS1402mode
--nist <nist>
Is the current value of the nistCompliance configuration variable in IBM Spectrum Scale.
Valid values are SP800-131A and off. To see the current value, issue the following
command:
mmlsconfig nistCompliance
--days <validdays>
Is the number of days that you want the client certificate to be valid.
--keylen <keylen>
Is the length in bits that you want for the RSA key that is generated.
b) Issue the mmgskkm store command to create a PKCS#12 keystore and to store the system-
generated client certificate and private key into it.
mmgskkm store --cert <certFile> --priv <privFile> --label <label> --pwd-file <pwd-file>
--out <keystore>
where:
--cert <certFile>
Is the client certificate file that you created in Step 3(a). The name of the file has the format
<prefix>.cert, where <prefix> is the path and file name prefix that you specified in Step
3(a).
--priv <privFile>
Is the private key file that you generated in Step 3(a). The name of the file has the format
<prefix>.priv, where <prefix> is the path and file name prefix that you specified in Step
3(a).
--label <label>
Is the label under which the new client certificate is stored in the keystore.
--pwd-file <pwd-file>
Is the path and file name of the keystore password file that you created in Step 1.
--out <keystore>
Is the path and file name of the new PKCS#12 keystore.
Note: It is a good practice to generate the keystore files into the directory /var/mmfs/etc/
RKMcerts.
4. This step describes the actions to take if you are creating a key client with a user-provided CA-signed
certificate.
a) Obtain the CA-signed certificate files from a CA.
b) Issue the mmgskkm store command to create a PKCS#12 keystore and to store the user-
provided CA-signed client certificate and private key into it.
where:
--cert <certFile>
Is the CA signed client certificate file in base64 encoded PEM format.
--priv <privFile>
Is the client’s private key file in base64 encoded PEM format, unencrypted.
{ —chain <CACertChainFile> | —prefix <CACertPrefix> }
Is the client credentials. Choose one of the following parameters:
—chain <CACertChainFile>
Is the CA certificate chain file that contains all the CA certificates, beginning with the root
CA certificate and ending with the last intermediate CA certificate that signed the client
certificate.
—prefix <CACertPrefix>
Is the full path prefix of the CA certificate files, named <CACertPrefix><index>.cert,
where <index> is 0 for the root CA certificate and the last index is the last intermediate CA
certificate that signed the client certificate.
--label <label>
Is the label under which the new client certificate is stored in the keystore.
--pwd-file <pwd-file>
Is the path and file name of the keystore password file that you created in Step 1.
--out <keystore>
Is the path and file name of the new PKCS#12 keystore.
5. The next step depend on the type of certificate that the SKLM server is using:
• If the SKLM server certificate is running with a self-signed certificate, go to Step 6.
• If the SKLM server is running with a CA-signed certificate chain, go to Step 7.
6. This step describes the actions to take if the SKLM server is running with a self-signed certificate.
a) Issue the mmsklmconfig command to retrieve the server certificate and add it to the client
keystore:
mmlsconfig FIPS1402mode
--nist <nist>
Is the current value of the nistCompliance configuration variable in IBM Spectrum Scale.
Valid values are SP800-131A and off. To see the current value, issue the following
command:
mmlsconfig nistCompliance
b) Optional: Issue the following command to display the certificate file that you downloaded in Step
6(a). Verify that the information matches the information that is displayed for the current server
certificate in the RKM GUI:
where serverPrefix is the path and file name prefix of the server certificate that you specified
in Step 6(a).
c) Update the RKM stanza for the new client credentials in the /var/mmfs/etc/RKM.conf file.
Make sure that the following values are correct:
• The keyStore term specifies the path and file name of the client keystore that you created in
Step 3(b).
• The passphrase term specifies the keystore password from Step 1.
• The clientCertLabel term specifies the label of the new client certificate from Step 3(b).
d) Go to Step 8.
7. This step describes the actions to take if the SKLM server is running with a CA-signed certificate
chain.
a) Gather the files of the server certificate chain into location that is accessible to the key client:
1) If you previously saved the certificate files of the server certificate chain into a secure location,
ensure that the server certificate chain files are accessible by the key client node. For more
information, see “Regular setup: Using SKLM with a certificate chain” on page 759.
If you did not previously save the files of the server certificate chain, follow these steps:
a) Manually copy the files of the server certificate chain from the SKLM server to a location
that is accessible from the key client.
b) Make backup copies of the server certificate files, in case they are lost or damaged.
2) Rename each certificate file with the same prefix, followed by a numeral that indicates the
order of the certificate in the chain, followed by the file extension .cert. Start the numbering
sklmChain0.cert
sklmChain1.cert
sklmChain2.cert
b) Optional: Issue the openssl command to display the certificate chain that you downloaded in
Step 7(a). Verify that the information matches the information that is displayed for the current
server certificate in the RKM GUI. In the following example the chain has three certificate files:
If the chain contains only two certificate files, omit the -untrusted option and issue the
openssl command in the following way:
Important: Combining the intermediate files into one certificate file is required only for the
openssl command. It is not required for the mmgskkm command.
c) Issue the following command to add the retrieved certificate chain to the client keystore:
where:
--prefix <serverPrefix>
Is the path and file name prefix for the RKM certificate chain that you specified in Step 4 (b).
8. Copy the updated /var/mmfs/etc/RKM.conf file and the new client keystore file to all the nodes
of the cluster.
/usr/lpp/mmfs/bin/tsloadikm run
10. Issue the following command to purge all master encryption keys from the cache of the GPFS
daemon:
This action ensures that subsequent reads and writes to files use the new client credentials.
The new client certificate is installed.
# touch /gpfs0/test
touch: cannot touch `/gpfs0/test’: Permission denied
# tail -n 2 /var/adm/ras/mmfs.log.latest
b) Find the RKM ID of the RKM stanza that specifies the new client keystore.
The RKM stanza is in the /var/mmfs/etc/RKM.conf file.
c) Verify that the RKM ID from the error message matches the RKM ID of the stanza.
3. Verify the pending client certificate in SKLM:
a) On the main page of the SKLM graphical user interface, click Pending client device communication
certificates..
b) In the list of certificates, select the new client certificate and click View.
c) Verify that the certificate matches the new client certificate.
d) If the certificates match, click Accept and Trust.
4. Enter a name for the new certificate and click Accept and Trust again.
5. Verify that the server accepts the new client certificate:
a) On the node that you are configuring for encryption, try to create an encrypted file as you did in step
2(a).
b) This time the command succeeds and the encrypted file is created.
SKLM trusts the new client certificate.
Encryption hints
Find useful hints for working with file encryption.
The command displays output as shown in the following example. The line of the output that begins
with the label Encrypted indicates whether the file is encrypted:
#mmlsattr -L textReport
name: textReport
metadata replication: 1 max 2
data replication: 1 max 2
immutable: no
appendOnly: no
flags:
storage pool name: system
fileset name: root
snapshot name:
creation time: Tue Jun 12 15:40:30 2018
Misc attributes: ARCHIVE
Encrypted: yes
For more information, see the topic mmlsattr command in the IBM Spectrum Scale: Command and
Programming Reference.
Secure deletion
Secure deletion of encrypted files includes not only deleting the files from the file system but also
deleting the appropriate MEKs from the remote key server (RKM) and from the key cache on each IBM
Spectrum Scale node.
Warning: You will not be able to delete such snapshots after the old MEK is deleted from the
key server.
5. Wait for the mmapplypolicy command from Step 3 to complete. Do not begin the next step until the
mmapplypolicy command from Step 3 is complete.
6. Remove the old key, KEY-old:isklmsrv. This step commits the secure deletion of all files that were
previously unlinked (and whose FEKs had therefore not been rewrapped with the new MEK, KEY-
new:isklmsrv).
From this point on, the new key is used for encryption, which is performed transparently to the
application.
Note: The mmdelfs command does not perform any secure deletion of the files in the file system to be
deleted. The mmdelfs command removes only the structures for the specified file system. To securely
delete files, follow these steps:
1. Identify all MEKs currently used to wrap the FEKs of files in the file system to be deleted. If this
information is not available through other means, follow these steps to obtain it:
a. Issue the mmlsattr -n gpfs.Encryption command on all files of the file system.
b. Parse the resulting output to extract all the distinct key names of the MEKs that are used.
Note: The following list describes the possible ways that an MEK might be in use in a file system:
a. The MEK is, or was at some point, specified in an encryption rule in the policy set on the file system.
b. An FEK rewrap has been run, rewrapping an FEK with another MEK.
2. Determine whether the identified MEKs were used to wrap FEKs in other file systems.
WARNING: If the same MEKs were used to wrap FEKs in other file systems, deleting those MEKs
results in irreparable data loss in the other file systems where those MEKs are used. Before you delete
such MEKs from the key servers, you must create one or more new MEKs and rewrap the files in the
other file systems.
3. After appropriately handling any MEKs that were used to wrap FEKs in other file systems (as explained
in the warning), delete the identified MEKs from their RKMs.
where:
Key
The key ID of the key that you want purged from the key cache, specified in the KeyId:RkmId syntax.
all
Indicates that the entire key cache is to be cleaned.
The scope of this command is limited to the local node and must be run on all nodes that accessed the
MEKs you are purging to ensure secure deletion.
Note: The steps for secure deletion and encryption key cache purging are similar to the steps for key
rotation. For more information, see “Key rotation: Replacing master encryption keys” on page 805.
Warning:
• Remember that after the old MEK is deleted from the RKM server, any encrypted data in files
whose FEKs are wrapped with the old MEK is unrecoverable:
– The encrypted data of files in filesets that were accidentally unlinked and therefore did not
undergo the rewrapping procedure is not recoverable through relinking. After the old MEK is
deleted from the server, it is impossible to access any file whose FEK was not rewrapped.
– Files in other file systems that are encrypted with a FEK that is wrapped with the old MEK are
not recoverable.
c) Issue the mmchpolicy command to change the policy rules to encrypt new files with the new
policy.
For more information, see “Encryption policy rules” on page 708.
3. Rewrapping the FEKs of existing files: This step describes how to rewrap the FEKs of existing files
with the new MEK:
a) Create a CHANGE ENCRYPTION KEYS policy rule to rewrap FEKs that are wrapped with the old
MEK. This rule scans a specified group of files, unwraps each FEK entry that is wrapped with the old
MEK, and rewraps the FEK entry with the new MEK. In the following example the rule finds all the
files that are wrapped with KEY-old:isklmsrv and rewraps them with KEY-new:isklmsrv:
This rule has optional POOL, FILESET, SHOW, and WHERE clauses to specify the group of files to be
rewrapped. For more information, see “Encryption policy rules” on page 708.
b) Issue the mmapplypolicy command to apply the policy rule that you created in Step 3(a). The
command rewraps the FEKs of the existing files with the new MEK.
Note: The first phase of the mmapplypolicy command's operation can be a lengthy process. In
this phase the command scans all of the files in the affected file system or fileset to discover files
that meet the criteria of the policy rule. If your file system or fileset is very large, you might want to
delay issuing the mmapplypolicy command until a time when the system is not running a heavy
load of applications. For more information see “Phase one: Selecting candidate files” on page 501.
Note: The mmapplypolicy command does not process files in unlinked filesets. If these files are
encrypted and the FEKs are wrapped with the old MEK, and if the old MEK is deleted from the RKM
server, the data in these files is unrecoverable.
4. Delete any snapshots that might contain files that are encrypted with the old MEK (KEY-
old:isklmsrv).
Warning: You will not be able to delete such snapshots after the old MEK is deleted from the
key server.
Do not begin the next step until the mmapplypolicy command from Step 3(b) has completed.
5. If the old MEK is no longer needed, delete it from the RKM server. In the regular encryption setup,
open the RKM server console and delete the old MEK. In the simplified encryption setup, issue the
mmkeyserv key delete command to delete the MEK.
Note: When you delete a MEK from the RKM server, any file that is encrypted with an FEK that is still
wrapped by the old MEK cannot be decrypted and its data is unrecoverable.
6. Delete the old MEK from the key cache on each node. The old MEK is present in the key cache of any
node that did I/O operations to a file whose FEK was wrapped with the old MEK. To delete the old MEK,
issue the following command on each node where the old MEK is cached:
/usr/lpp/mmfs/bin/tsctl/encKeyCachePurge 'KEY-old:isklmsrv'
For more information see the subtopic "Secure deletion and encryption key cache purging" in the help
topic “Secure deletion” on page 803.
Warning: If the steps for key rotation are not followed carefully, they can result in unrecoverable
data loss. Be aware of the following issues:
• Check other file systems that might contain files that are encrypted with the old MEK. If there are
such files, rewrap their FEKs with the new MEK before you delete the old MEK from the RKM
server.
• Test the policy rule by running the mmapplypolicy command with the -I test option. Check
the output to verify that the policy rule is selecting the correct set of files. Also verify that the
CHANGE ENCRYPTION KEYS statement specifies the correct old MEK and new MEK.
• To preserve the data in files that were deleted or were unlinked from filesets, restore the files
(from a backup or snapshot, if available) before you issue the mmapplypolicy command.
Remember that the mmapplypolicy command does not process unlinked files that were
deleted from filesets with operating system commands such as rm and unlink.
mmchconfig FIPS1402mode=yes
mmchconfig FIPS1402mode=no
When it is enabled, FIPS 140-2 mode applies only to the following two features of IBM Spectrum Scale:
• Encryption and decryption of file data when it is transmitted between nodes in the current cluster or
between a node in the current cluster and a node in another cluster. To enable this feature, issue the
following command:
mmchconfig cipherList=SupportedCipher
where SupportedCipher is a cipher that is supported by IBM Spectrum Scale, such as AES128-GCM-
SHA256. For more information, see the following topics:
– Security mode in the IBM Spectrum Scale: Administration Guide.
– Setting security mode for internode communications in a cluster in the IBM Spectrum Scale:
Administration Guide.
• Encryption of file data as it is written to storage media and decryption of file data as it is read from
storage media. For more information about file data encryption, see the following section of the
documentation:
– Encryption in the IBM Spectrum Scale: Administration Guide.
Note: For performance reasons, do not enable FIPS 140-2 mode unless all the nodes in the cluster
are running FIPS-certified kernels in FIPS mode. This note applies only to encryption of file data as it
is written to storage media and decryption of file data as it is read from storage media. This note does
not apply to encryption and decryption of file data when it is transmitted between nodes.
FIPS 140-2 mode does not apply to other components of IBM Spectrum Scale that use encryption, such
as object encryption.
For more information, see the topic mmchconfig command in the IBM Spectrum Scale: Command and
Programming Reference.
Limitation in IBM Spectrum Scale 4.2.0 and earlier with POWER8, little-endian
In IBM Spectrum Scale 4.2.0 and earlier, in a POWER8®, little-endian environment, the setting
FIPS1402mode=no is required for the following operations:
• File encryption
3. Send the certificate request to a trusted certificate authority to get a certificate file.
4. Create a PKCS12 store containing the certificate as shown in the following example:
openssl pkcs12 -export -in <yourCertificateFile> -inkey <nameOfYourKey>.key -out
<nameOfYourPKCS12File>.p12
The system prompts to set the export password as shown in the following example:
5. Generate a Java keystore file (.jks) by using the keytool. Issue the following commands to generate the
file.
The system prompts you to enter the destination keystore password. You need to use the same
password that you used while creating the PKCS12 store.
6. If you want to encode your password in XOR so that it does not get stored in plain text, use a security
utility as shown in the following example:
/usr/lpp/mmfs/gui/cli/sethttpskeystore <pathToKeystore>.jks
This command imports the keystore into the WebSphere configuration, which can be used for secure
connections. You will be prompted to insert your keystore password. You can use either plain text or
the XOR password, which you created in the previous step.
Note: The command /usr/lpp/mmfs/gui/cli/lshttpskeystore shows an active custom keystore
with a user-defined certificate. If you want to return to the default GUI certificate issue /usr/lpp/
mmfs/gui/cli/rmhttpskeystore.
Secured connection between the IBM Spectrum Scale system and the
authentication server
You can configure the following authentication servers to configure file and object access:
• Microsoft Active Directory (AD)
• Lightweight Directory Access Protocol (LDAP)
• Keystone
AD and LDAP can be used as the authentication server for both file and object access. Configuring the
Keystone server is a mandatory requirement for the object access to function. The keystone needs to
interact with the authentication server to resolve the authentication requests. You can configure either an
internal or external keystone server for object access. The following table lists the security features that
are used to secure the corresponding authentication server.
Table 67. Security features that are used to secure authentication server
Authentication server Supported protocols Security features
Active Directory File and Object Kerberos for file and TLS for
object.
Enabling secured connection between the IBM Spectrum Scale system and
authentication server
You need to secure the communication channel between the IBM Spectrum Scale system and
authentication server to secure the authentication server and hence to prevent unauthorized access to
data and other system resources.
Securing AD server
To secure the AD server that is used for file access, configure it with Kerberos and to secure AD used for
object access, configure it with TLS.
In the AD-based authentication for file access, Kerberos is configured by default. The following steps
provide an example on how to configure TLS with AD, while it is used for object access.
1. Ensure that the CA certificate for AD server is placed under /var/mmfs/tmp directory with the name
object_ldap_cacert.pem, specifically on the protocol node where the command is run. Perform
validation of CA cert availability with desired name at required location as shown in the following
example:
# stat /var/mmfs/tmp/object_ldap_cacert.pem
File: /var/mmfs/tmp/object_ldap_cacert.pem
Size: 2130 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169903 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 12:37:34.088837381 +0530
Modify: 2015-01-23 12:16:24.438837381 +0530
Change: 2015-01-23 12:16:24.438837381 +0530
2. To configure AD with TLS authentication for object access, issue the mmuserauth service create
command:
Note: The value that you specify for --servers must match the value in the TLS certificate. Otherwise
the command fails.
3. To verify the authentication configuration, use the mmuserauth service list command as shown
in the following example:
To verify the authentication configuration, use the mmuserauth service list command as shown
in the following example:
2. To configure LDAP with TLS as the authentication method for object access, issue the mmuserauth
service create command as shown in the following example:
2. Copy the CA certificate on the node on which the mmuserauth command is being run. The name and
the path of the CA certificate on the current node is /var/mmfs/tmp/ks_ext_cacert.pem.
3. Configure object authentication by using the mmuserauth service create command with the --
enable-ks-ssl option:
.....
.....
2. Ensure that the keytab file that is created is placed under the /tmp directory as krb5.keytab,
specifically on the node where the IBM Spectrum Scale authentication commands are submitted.
Perform validation of keytab file availability with the required name and location:
# stat /tmp/krb5.keytab
File: /tmp/krb5.keytab
Size: 502 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 103169898 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2015-01-23 14:31:18.244837381 +0530
Modify: 2015-01-23 12:45:05.475837381 +0530
Change: 2015-01-23 12:45:05.476837381 +0530
Birth: -
3. Issue the mmuserauth service create command on the IBM Spectrum Scale protocol node as
shown in the following example:
4. Issue the mmuserauth service list command to see the current authentication configuration as
shown in the following example:
5. Create Kerberos exports with krb5, krb5i, and krb5p security features on the IBM Spectrum Scale
node.
6. Issue the mmnfs export list command with krb5 option to see the authentication only
configuration.
Path Delegations Clients Access_Type Protocols Transports Squash Anonymous_uid Anonymous_gid SecType PrivilegedPort Export_id DefaultDelegation
Manage_Gids NFS_Commit
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------
/ibm/gpfs0/krb5 none * RW 3,4 TCP NO_ROOT_SQUASH -2 -2 KRB5 FALSE 2
none FALSE FALSE
Path Delegations Clients Access_Type Protocols Transports Squash Anonymous_uid Anonymous_gid SecType PrivilegedPort Export_id
DefaultDelegation Manage_Gids NFS_Commit
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------
/ibm/gpfs0/krb5i none * RW 3,4 TCP NO_ROOT_SQUASH -2 -2 KRB5I FALSE 3
none FALSE FALSE
8. Issue the mmnfs export list command with krb5p option to see the authentication and privacy
configuration.
Path Delegations Clients Access_Type Protocols Transports Squash Anonymous_uid Anonymous_gid SecType PrivilegedPort Export_id
DefaultDelegation Manage_Gids NFS_Commit
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------
/ibm/gpfs0/krb5p none * RW 3,4 TCP NO_ROOT_SQUASH -2 -2 KRB5P FALSE 4
none FALSE FALSE
For more information on how to work with the external storage pools and related policies, see “Working
with external storage pools” on page 518.
Note: Ensure that only a single instance of the policy is applied to migrate data to the external cloud
storage pool. This avoids any potential locking issues that might arise due to multiple policy instances
that try to work on the same set of files.
To ensure proper invocation of the policy on reaching threshold limits, see Threshold based migration
using callbacks example.
In the sample policy, the ‘OpenRead’ & ‘OpenWrite’ rule sections represent the transparent recall of a
migrated or non-resident file. Transparent cloud tiering software adds its own extended attributes
(dmapi.MCEA) to each file it processes. Displacement 5 in the extended attributes indicate the resident
state of the file. If it is ‘N’ (non-resident), the policy issues a recall request to bring back the data from the
cloud storage to the local file system for the requested Read or Write operation.
To apply a threshold policy to a file system, see “Using thresholds to migrate data between pools” on
page 513.
IBM Spectrum Scale also gives administrators a way to define policies to identify the files for migration,
and apply those policies immediately using the mmapplypolicy command. This is different from the
threshold-based policies (which are applied by using the mmchpolicy command). The Transparent cloud
tiering service currently does not support parallelism in migrating files simultaneously, but parallelism in
the mmapplypolicy command can be used to improve the overall throughput. Additionally, parallelism
can be achieved by using an ILM policy to migrate data or by driving separate, parallel CLI commands.
A sample command to apply a policy is given here:
where,
• gpfs0 indicates the IBM Spectrum Scale system
• -m indicates the number of threads created and dispatched during policy execution phase. Use the
mmcloudgateway command configuration tuning settings to set your migrate or recall thread counts.
Note: You must know the number of processors that are available on your Transparent cloud tiering
service node.
• -B indicates the maximum number of files passed to each invocation of the EXEC script specified in the
<rules.file>
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 825
Migrating files to the cloud storage tier
This topic provides a brief description on how to migrate files to the cloud storage tier by using
Transparent cloud tiering.
Note: Before you try to migrate files to the cloud storage tier, ensure that your cloud service configuration
is completed as summarized in Chapter 6, “Configuring and tuning your system for Cloud services,” on
page 73.
You can trigger migration of files from your file system to an external cloud storage tier either
transparently or manually. Transparent migration is based on the policies that are applied on a file system.
Data is automatically moved from the system pool to the configured external storage tier when the system
pool reaches a certain threshold level. A file can be automatically migrated to or from cloud storage pool
based on some characteristics of the file such as age, size, last access time, path. Alternatively, the user
can manually migrate specific files or file sets to a cloud storage pool. For more information on policy-
based migration, see “Applying a policy on a Transparent cloud tiering node” on page 823.
To manually trigger migration of the file file1, issue this command:
The state of the file becomes Non-resident after it is successfully migrated to the cloud storage tier.
If you want to migrate files in the co-resident state where the file has been copied to the cloud but also
allows the data to be retained on the file system, see “Pre-migrating files to the cloud storage tier” on
page 826.
command. For more information on manually migrating files to the cloud storage tier, see
mmcloudgateway command in the IBM Spectrum Scale: Command and Programming Reference.
To verify that the file is migrated in the co-resident state, issue the following command:
For transparent migration in the co-resident state, the following policy has to be applied to the files by
using the mmchpolicy command. A sample policy is available here: /opt/ibm/MCStore/samples/
coresidentMigrate.template:
/*******************************************************************************
* Licensed Materials - Property of IBM
*
* OCO Source Materials
*
* (C) Copyright IBM Corp. 2017 All Rights Reserved
*
* The source code for this program is not published or other-
* wise divested of its trade secrets, irrespective of what has
* been deposited with the U.S. Copyright Office.
*******************************************************************************/
define(
exclude_list,
(
FALSE
OR PATH_NAME LIKE '%/.mcstore/%'
OR PATH_NAME LIKE '%/.mcstore.bak/%'
)
)
/* Define premigrate pool, where files are migrated in co-resident state. This represent files moved
to cloud but also available locally on Scale file system.
* It is to be used for warmer data, as that data needs to be available locally on Scale file system
too, to avoid cloud round trips.
*/
RULE EXTERNAL POOL 'premigrate' EXEC '/usr/lpp/mmfs/bin/mmcloudgateway files' OPTS '--co-resident-state -F'
/* Define migrate pool, where files are migrated in non-resident state. This represent files are moved
to cloud and are not available locally.
* It is to be used for colder data depending on file size. Larger colder files are made non-resident,
where as smaller files (less than 4K) are kept co-resident.
*/
RULE EXTERNAL POOL 'migrate' EXEC '/usr/lpp/mmfs/bin/mmcloudgateway files' OPTS '-F'
/* This rule defines movement of warm data. Each file (irrespective of it's size) is moved to cloud
in a co-resident state.
* It means, file is available on the cloud and, access to it is possible from the hot-standby site
if needed.
* Here the sample time interval to indicate warm data is, data that is not accessed between 10
to 30 days.
* We don't want to pick up HOT data that is being accessed in last 10 days.
* Another advantage of this co-resident migration is when data eventually gets colder, since it
is already migrated to cloud, only file truncation happens later.
*/
RULE 'MoveWarmData' MIGRATE FROM POOL 'system'
THRESHOLD(0,0)
TO POOL 'premigrate'
WHERE NOT(exclude_list) AND
(CURRENT_TIMESTAMP - ACCESS_TIME > INTERVAL '10' DAYS) AND
(CURRENT_TIMESTAMP - ACCESS_TIME < INTERVAL '30' DAYS)
/* This rule defines movement of large files that are cold. Here, files that are above 4KB in size
are made non-resident to save
* space on Scale file system. For files that are smaller than 4KB are anyway stored in inode
block itself.
*/
RULE 'MoveLargeColdData' MIGRATE FROM POOL 'system'
THRESHOLD(0,0)
TO POOL 'migrate'
WHERE(KB_ALLOCATED > 4) AND NOT(exclude_list) AND
(CURRENT_TIMESTAMP - ACCESS_TIME > INTERVAL '30' DAYS)
/* This rule defines movement of smaller files that are cold. Here, files that are less than
4KB in size are made co-resident, as
* there is no saving in moving these files, as data resides within the inode block, and not
on disk. It avoids un-necessary recall cycles.
*/
RULE 'MoveSmallColdData' MIGRATE FROM POOL 'system'
THRESHOLD(0,0)
TO POOL 'premigrate'
WHERE(KB_ALLOCATED < 4) AND NOT(exclude_list) AND
(CURRENT_TIMESTAMP - ACCESS_TIME > INTERVAL '30' DAYS)
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 827
Recalling files from the cloud storage tier
This topic provides a brief description on how to recall files from the cloud storage tier by using
Transparent cloud tiering.
You can trigger recall of files from the cloud storage tier either transparently or manually. Transparent
recall is based on the policies that are applied on a file system. Data is automatically moved from the
cloud storage tier to the system pool when the system pool reaches a certain threshold level. A file can be
automatically recalled from the cloud storage tier based on some characteristics of the file such as age,
size, last access time, path. Alternatively, the user can manually recall specific files or file sets. For more
information on policy-based recall, see “Applying a policy on a Transparent cloud tiering node” on page
823.
You can enable or disable transparent recall for a container when a container pair set is created. For more
information, see “Binding your file system or fileset to the Cloud service by creating a container pair set”
on page 83.
Note: Like recalls in IBM Spectrum Archive and IBM Spectrum Protect for Space Management (HSM),
Transparent cloud tiering recall would be filling the file with uncompressed data and the user would need
to re-compress it by using mmrestripefs or mmrestripefile if so desired. Since we are positioning
compression feature for cold data currently, the fact of a file being recalled means the file is no longer
cold and leaving the file uncompressed would allow better performance for active files.
To manually trigger recall of the file file1, issue this command:
The state of the file becomes Co-resident after it is successfully recalled. If the file that has been recalled
no longer needs to be kept in the cloud tier it can be deleted. For more information on deleting a file in the
co-resident state, see “Cleaning up files transferred to the cloud storage tier” on page 829.
For more information on manually recalling files, see mmcloudgateway command in the IBM Spectrum
Scale: Command and Programming Reference.
Reconciling files between IBM Spectrum Scale file system and cloud storage
tier
This topic describes how to reconcile files that are migrated between IBM Spectrum Scale file systems
and the cloud tier. The reconcile function runs automatically as part of maintenance activities. While it is
possible to run reconcile from the CLI, it is generally not necessary to do so.
Note: To run reconcile on a given Transparent cloud tiering managed file system, ensure that enough
storage capacity is available temporarily under the root file system, to allow policy scan of a file system.
Rough space requirements are (300 x NF), where NF is the number of files. For example, if a Transparent
cloud tiering managed file system has 1 billion inodes, then temporary space requirement for reconcile
would be 300 GB (300 x 1 B). For more information, see the -s LocalWorkDirectory option in the
mmapplypolicy command in the IBM Spectrum Scale: Command and Programming Reference.
The purpose of reconcile to is ensure that the cloud database is aligned properly with the IBM Spectrum
Scale file system on state of files that have been tiered to the cloud. Such discrepancies can take place
due to power outages and other such failures. It is recommended that this command be run every couple
of months. This command needs to be run on every container pair. It should not be run in parallel with
other maintenance commands like full cloud database backup but should be run in parallel with other
maintenance commands (or migration policies) that affect that particular container. Also, this command
should not be run while a policy migrate is being run.
There is another reason that you may want to run reconcile. Although there is a policy currently in place to
automatically delete files in the cloud that have been deleted in the file system and similar support for
older versions of files, that support is not fully guaranteed to remove a file. When for legal reasons or
when there is a critical need to know for sure that a file has been deleted from the cloud, it is
recommended that you run the reconcile command as shown below.
...
Wed Nov 15 14:13:15 EST 2017 Processed 92617766 entries out of 92617766.
Wed Nov 15 14:13:19 EST 2017 Reconcile found 228866 files that had been
migrated and were not in the directory.
Wed Nov 15 14:13:19 EST 2017 Reconcile detected 0 deleted files that were
deleted more than 30 days ago.
Wed Nov 15 14:13:19 EST 2017 Reconcile detected 12 migrated files that have
been deleted from the local file system, but have not been deleted from object
storage because they are waiting for their retention policy time to expire.
Wed Nov 15 14:13:19 EST 2017 Please use the 'mmcloudgateway files cloudList'
command to view the progress of the deletion of the cloud objects.
Wed Nov 15 14:13:21 EST 2017 Reconcile successfully finished.
mmcloudgateway: Command completed.
gpfs_Container is the device name of the file system that is associated with the node class, and
MyContainer is the container where the cloud objects are stored.
You can delete files from cloud storage by using the deletion policy manager. However, you can also
guarantee deletion by using a reconcile to manage the mandatory deletions. For example, if a migrated
file is removed from the file system, a reconcile guarantees removal of the corresponding cloud objects
and references that are contained in the cloud directory. Additionally, if multiple versions of a file are
stored on the cloud, reconcile removes all older cloud versions (keeping the most recent). For example, if
a file is migrated, then updated, and migrated again. In this case, two versions of the file are stored on the
cloud. Reconcile removes the older version from the cloud. Reconcile also deletes cloud objects that are
no longer referenced.
Note: Reconcile removes entries from the cloud directory that references deleted file system objects.
Therefore, it is recommended that you restore any files that must be restored before you run a reconcile.
It is also recommended to run the reconciliation operation as a background activity during low load on the
Transparent cloud tiering service nodes.
where,
• --recall-cloud-file: When this option is specified, the files are recalled from the cloud storage
before deleting them on the cloud. The status of the local files becomes resident after the operation.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 829
• --delete-local-file: This option deletes both local files and the corresponding cloud object. There
is no recall here.
• --keep-last-cloud-file: This option deletes all the versions of the file except the last one from the
cloud. For example, if a file has three versions on the cloud, then versions 1 and 2 are deleted and
version 3 is retained.
• --require-local-file: This option removes the extended attribute from a co-resident file and
makes it resident, without deleting the corresponding cloud objects. The option requires the file data to
be present on the file system and will not work on a non-resident file.
• --File: This option can be used to process a file list similar to the one generated by the ILM policy.
The mmcloudgateway files delete command accepts files in GPFS file system as an input.
Note: Background maintenance automatically manages deletes from object storage for deleted or
reversioned files. Hence, manual deletion is not needed.
After the retention period expires, the marked files are permanently deleted from the cloud storage tier.
It is recommended that you apply the destroy policy that is described because of how file deletion works.
For example, when you delete files by using external commands, the cloud objects are immediately
marked for deletion only if you apply the destroy policy to the file system by using the mmchpolicy
command. If the destroy policy is not applied, the cloud objects are marked for deletion only when you
run the reconcile operation. The destroy policy is available here: /opt/ibm/MCStore/samples/
cloudDestroy.policy.template. Additionally, you need to apply the destroy policy along with other
policies such as transparent recall and migration.
If you want to permanently delete the marked files before the retention time expires, you can use the
following command:
Run the following command to set the retention period of the cloud objects to 60 days:
You can permanently delete the cloud objects that are marked for deletion from the cloud automatically
by using the destroy policy or the reconcile command.
Note: You must delete the objects only after 60 days of marking.
Run the following command if you want to delete these objects earlier than 60 days (for example, 30
days):
Cloud objects that were marked for deletion 30 days or earlier (for files that are marked for deletion) are
deleted. The cloud objects that were marked for deletion less than 30 days are retained.
For more information, see mmcloudgateway command in the IBM Spectrum Scale: Command and
Programming Reference.
mmcloudgateway files cloudList {--path Path [--recursive [--depth Depth]] [--file File] |
--file-versions File |
--files-usage --path Path [--depth Depth] |
--reconcile-status --path Path |
--path Path --start YYYY-MM-DD[-HH:mm] --end YYYY-MM-DD[-HH:mm]}
Note: You can specify --reconcile-status only if one reconcile is running at a time. (You can run
multiple reconciles in parallel, but the progress indication has this limitation.)
For example, to list all files in the current directory, issue this command:
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 831
To list all files in all directories under the current directory, issue this command:
To find all files named myfile in all directories under the current directory, issue this command:
To find all files named myfile in the current directory, issue this command:
To display information about all versions of file myfile in current directory, issue this command:
Restoring files
This topic provides a brief description on how to restore files that have been migrated to the cloud storage
tier if the original files are deleted from the GFPS file system.
This option provides a non-optimized (emergency) support for manually restoring files that have been
migrated to the cloud storage tier if the original stub files on the GPFS file system are deleted.
Note: Transparent cloud tiering does not save off the IBM Spectrum Scale directory and associated
metadata such as ACLs. If you want to save off your directory structure, you need use something other
than Transparent cloud tiering.
Before restoring files, you must identify and list the files that need to be restored by issuing the
mmcloudgateway files cloudList command.
Assume that the file, afile, is deleted from the file system but is present on the cloud, and you want to
find out what versions of this file are there on the cloud. To do so, issue the following command:
You can use the output of the cloudList command for restoring files. For more information on the
cloudList command, see “Listing files migrated to the cloud storage tier” on page 831.
To restore files, issue a command according to this syntax:
By using this command, you can restore files in two different ways. That is, the files to be restored along
with their options can be either specified at the command line, or in a separate file provided by the -F
option.
If you want to specify the options in a file, create a file with the following information (one option per line):
The following example shows how the content needs to be provided in a file (for example,
filestoberestored) for restoring the latest version of multiple files (file1, file2, and file3):
Files to be restored are separated by lines with %% and # represents the comments.
Now that you have created a file with all required options, you need to pass this file as input to the
mmcloudgateway files restore command, as follows:
Note: It is advised not to run the delete policy if there is some doubt that the retention policy might result
in deleting of the file before you can restore it.
For information on the description of the parameters, see the mmcloudgateway command in IBM
Spectrum Scale: Command and Programming Reference.
For example, issue the following command to restore configuration data from the file,
tct_config_backup_20170915_085741.tar:
You are about to restore the TCT Configuration settings to the CCR.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 833
Any new settings since the backup was made will be lost.
The TCT servers should be stopped prior to this operation.
Note: During the restore operation, Transparent cloud tiering servers are restarted on all the nodes.
For example, issue the following command to check the integrity of the database that is associated with
the container, container1:
MCSTG000130E: Command Failed with following reason: Request failed with error :
Database is potentially not in a good state and needs to be rebuilt.
mmcloudgateway: Command failed. Examine previous error messages to determine cause.
Note: Cloud services configurations contain sensitive security-related information regarding encryption
credentials, so you must store your configuration back-up in a secure location. This configuration
information is critical in helping you restore your system data, if necessary.
where,
filesystem is the device name of the file system whose database is corrupted and which is in need of
manual recovery.
--container-pair-set-name is the name of the container associated with the file system or fileset.
For example, if you want to recover the database associated with the file system, /dev/gpfs0 and the
container, container-1, issue this command:
Note: It is important that background maintenance be disabled when running this command. For more
information, see the Planning for maintenance activities topic in the IBM Spectrum Scale: Concepts,
Planning, and Installation Guide.
Overview
This section provides a brief introduction to SOBAR and the step-by-step instructions for backup and
restore by using SOBAR.
Scale out backup and restore (SOBAR) for Cloud services is a method of disaster recovery or service
migration that uses existing GPFS or SOBAR commands along with Cloud services scripts to back up
configuration and file system metadata on one cluster and restore this on a recovery cluster using one
sharing container pair set per node class.
Note: SOBAR works on file system boundaries, but with the Cloud services scripts, this procedure should
work whether you have configured Cloud services by file system or by fileset.
The high-level steps are as follows:
Note: This procedure is designed only for data tiered to object storage by Cloud services. All other data
needs to be backed up some other way.
Primary site
1. Allocate space in object storage for the backup: Create one sharing container pair set per Cloud
services node class that is shared between the primary and recovery clusters.
• This is used to export configuration data and metadata from the primary cluster to cloud and import
to the recovery cluster.
2. Allocate space in the associated file system for backup: Create a global file system directory to
handle the temporary space requirements of the SOBAR backup.
3. File system configuration backup: Back up the configuration of each file system associated with
Cloud services on the primary site. If you have defined Cloud services by file set, then specify the file
systems that those file sets are in. Back up the configuration of each file system on the primary site.
a. Securely transfer these files to a safe place
b. Use these to recreate compatible recovery-site file systems
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 835
4. File system metadata backup: Back up the Cloud services inode/metadata for file systems from a
Cloud services node on the primary site using mcstore_sobar_backup.sh. If you have defined
Cloud services by file set, then specify the file systems that those file sets are in.
• This script automatically uploads the backup to the sharing container pair set on the cloud that you
created earlier.
5. Cloud services configuration backup. Back up the Cloud services configuration data from a Cloud
services node on the primary site by using the mmcloudgateway service backupConfig
command.
• Securely transfer the resulting file to a safe place.
For detailed backup instructions, see “Procedure for backup” on page 838.
Recovery site
1. Recovery site hardware and configuration preparation: Prepare the recovery site to accommodate
all the file systems that you want to recover from the primary:
• Each file system on the recovery site must have at least as much capacity as its corresponding
primary-site file system. These file systems must be created, but not mounted.
Note: You need the full space for the entire file system even if you are restoring just file set subsets -
per SOBAR.
• If you do not already have these file systems created, then you can wait until after running the
mmrestoreconfig command in the subsequent step. The output generated by the
mmrestoreconfig command offers guidance on how to create the recovery file system.
2. Allocate temporary restore staging space for the file system backup image: It is recommended to
use a separate dedicated file system.
3. File system configuration restore: Restore the policies of each file system, fileset definitions, and
other resources.
4. Cloud services configuration restore: Download the Cloud services configuration file (that was
generated and pushed to the cloud by the mcstore_sobar_backup.sh script) using the
mcstore_sobar_download.sh script on the recovery cluster.
5. File system metadata restore: Restore the file system metadata by running the
mcstore_sobar_restore.sh script on the recovery site.
For detailed recovery instructions, see “Procedure for restore” on page 840.
Note: You can recall offline files from the cloud (both manually and transparently) on the restore site only.
Trying to recall offline files, migrated from the primary site, using a recall policy template does not work,
because the restore site cluster does not recognize these files to be part of an external pool. However,
files once migrated from the restore site can be recalled in bulk using a recall policy.
Inode Information
Total number of used inodes in all Inode spaces: 307942342
Total number of free inodes in all Inode spaces: 748602
Total number of allocated inodes in all Inode spaces: 308690944
Total of Maximum number of inodes in all Inode spaces: 410512384
b. Add up all the used inodes for all the file systems you are backing up and multiply by 4096 to
determine necessary space requirements (307942342*4096=1.26TB).
Note: This will automatically provide a buffer since the actual file will be compressed (tar) and the
final size will depend on the compression ratio).
6. Allocate space in associated file system for backup: This is a global file system directory that is
allocated to handle the temporary space requirements of the SOBAR backup.
• Use standard GPFS methodology or the install toolkit to allocate storage for this file system:
– Common GPFS Principles: “Common GPFS command principles” on page 161.
– Performing additional tasks using the installation toolkit: See Performing additional tasks using the
installation toolkit topic in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 837
a. On the primary cluster, use the mmdf command for each file system to determine the required
amount of space necessary for the matching recovery site file system (look for total blocks in the
second column).
b. If it is necessary to determine sizes for separated metadata and data disks, look for the
corresponding information on the primary site (look for data and metadata distribution in the
second column). For example,
Note: NSD details are filtered out, these are displayed in 1 KB blocks (use '--block-size auto'
to show in human readable format).
c. Use the previous information as a guide for allocating NSDs on the recovery site and preparing
stanza files for each file system.
Note: It is preferable to have the same number, size, and type of NSD for each file system on the
recovery site as on the primary site, however it is not a requirement. This simply makes the auto-
generated stanza file easier to modify in the recovery portion of this process.
3. Ensure that there are no preexisting Cloud services node classes on the recovery site, and that the
node classes that you create are clean and unused.
4. Create Cloud services node classes on the recovery site by using the same node class name as the
primary site. For more information, see the Creating a user-defined node class for Transparent cloud
tiering or Cloud data sharing topic in the IBM Spectrum Scale: Concepts, Planning, and Installation
Guide.
5. Install (or update) Cloud services server rpm on all Cloud services nodes on the recovery site. For more
information, see the Installation steps topic in the IBM Spectrum Scale: Concepts, Planning, and
Installation Guide.
6. Enable Cloud services on the appropriate nodes of the recovery-site. For example,
For more information, see “Designating the Cloud services nodes” on page 74.
7. Ensure that there is no active Cloud services configuration on the recovery site.
8. If this is an actual disaster, and you are transferring ownership of the Cloud services to the recovery
cluster, ensure that all write activity is suspended from the primary site while the recovery site has
ownership of Cloud services.
ls -l /root/powerleBillionBack_gpfs_tctbill*
b. Securely transfer the backup files to a safe location (they will be used later in the restore process
on the recovery site).
2. File system metadata backup (Back up the cloud data and automatically export it to the shared
container).
a. From a node in your Cloud services node class on your primary site, run the
mcstore_sobar_backup.sh script under the /opt/ibm/MCStore/scripts folder.
Note: Make sure the <global-filesystem-directory> you choose is mounted, accessible from all
nodes in the cluster, and has enough space to accommodate the backup.
The following is an example and a sample output:
b. Repeat the mcstore_sobar_backup.sh command for each file system you are backing up, using
the same sharing_container_pair_set_name and the same global-filesystem-
directory and the tct_node-class-names where appropriate.
3. Cloud services configuration backup
a. Issue this command: mmcloudgateway service backupConfig --backup-file
<backup_file>. For example,
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 839
mmcloudgateway: Starting backup
a. Transfer the cluster_backup_config files for each file system to the recovery cluster, as
follows:
Note: If NSD servers are used, then transfer the backups to one of them.
For example,
## *************************************************************
## Filesystem configuration file backup for file system: gpfs_tctbill1
## Date Created: Tue Mar 6 14:15:05 CST 2018
##
## The '#' character is the comment character. Any parameter
## modified herein should have any preceding '#' removed.
## **************************************************************
etc....
# %pool:
# pool=system
# blockSize=4194304
# usage=dataAndMetadata
# layoutMap=scatter
# allowWriteAffinity=no
#
######### File system configuration #############
## The user can use the predefined options/option values
## when recreating the filesystem. The option values
## represent values from the backed up filesystem.
#
# mmcrfs FS_NAME NSD_DISKS -i 4096 -j scatter -k nfs4 -n 100 -B 4194304 -Q yes
--version 5.0.0.0 -L 33554432 -S relatime -T /ibm/gpfs_tctbill1 --inode-limit
407366656:307619840
#
# When preparing the file system for image restore, quota
# enforcement must be disabled at file system creation time.
# If this is not done, the image restore process will fail.
...
####### Disk Information #######
## Number of disks 15
## nsd11 991486976
## nsd12 991486976
etc....
## nsd76 1073741824
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 841
## system 15011648512
etc...
###### Policy Information ######
## /* DEFAULT */
## /* Store data in the first data pool or system pool */
%nsd:
device=/dev/mapper/mpaths
nsd=nsd47
servers=nsdServer1,nsdServer2
usage=dataOnly
failureGroup=1
pool=system
%nsd:
device=/dev/mapper/mpatht
nsd=nsd48
servers= nsdServer2,nsdServer1
usage=dataOnly
failureGroup=1
pool=system
%nsd:
device=/dev/mapper/mpathbz
nsd=nsd49
servers= nsdServer1,nsdServer2
usage=metadataOnly
failureGroup=1
pool=system
b. Modify the restore_out_file to match the configuration on the recovery site. Example portion of
modified nsd stanzas for restore_out_file is as follows:
%nsd:
device=/dev/mapper/mpaths
nsd=nsd47
servers=nsdServer1,nsdServer2
usage=dataOnly
failureGroup=1
pool=system
%nsd:
device=/dev/mapper/mpatht
nsd=nsd48
servers= nsdServer2,nsdServer1
usage=dataOnly
failureGroup=1
pool=system
%nsd:
device=/dev/mapper/mpathbz
nsd=nsd49
servers= nsdServer1,nsdServer2
usage=metadataOnly
failureGroup=1
pool=system
b. Repeat the mmcrnsd command appropriately for each file system that you want to recover.
4. Create recovery-site file systems if necessary.
a. Use the same modified restore_out_file
(powerleBillionRestore_gpfs_tctbill1_02232018_nsd in this example) as input for the
mmcrfs command, which will create the file system. The following example is based on the
command included in the <restore_out_file> (note the '-Q yes' option has been removed). For
example,
b. Repeat the mmcrfs command appropriately for each file system that you want to recover.
5. Cloud services configuration restore (download SOBAR backup from the cloud for the file system).
a. Securely transfer the Cloud services configuration file to the desired location by using scp or any
other commands.
b. From the appropriate Cloud services server node on the recovery site (a node from the recovery
Cloud services node class), download the SOBAR.tar by using the
mcstore_sobar_download.sh script. This script is there in the /opt/ibm/MCStore/scripts
folder on your Cloud services node.
Note: Make sure your local_backup_dir is mounted and has sufficient space to accommodate
the SOBAR backup file. It is recommended to use a GPFS file system.
For example,
You are about to restore the TCT Configuration settings to the CCR.
Any new settings since the backup was made will be lost.
The TCT servers should be stopped prior to this operation.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 843
mmcloudgateway: Sending the command to node recovery-site-tct-node.
Stopping the Transparent Cloud Tiering service.
mmcloudgateway: The command completed on node recovery-site-tct-node.
etc...
mmcloudgateway: Sending the command to node recovery-site-tct-node.
Starting the Transparent Cloud Tiering service...
mmcloudgateway: The command completed on node recovery-site-tct-node.
etc...
6. File system configuration restore (Restore file system configuration on the recovery site)
Note: If your temporary restore staging space is on a Cloud services managed file system, then you
will have to delete and recreate this Cloud services managed file system at this point.
a. Restore policies for each file system using the mmrestoreconfig command.
For example,
--------------------------------------------------------
Configuration restore of gpfs_tctbill1 begins at Fri Mar 16 05:48:06 CDT 2018.
--------------------------------------------------------
mmrestoreconfig: Checking disk settings for gpfs_tctbill1:
mmrestoreconfig: Checking the number of storage pools defined for gpfs_tctbill1.
mmrestoreconfig: Checking storage pool names defined for gpfs_tctbill1.
mmrestoreconfig: Checking storage pool size for 'system'.
etc...
etc.....
Running file curation policy and converting co-resident files to Non resident.
This will take some time. Please wait until this completes..
etc...
Completed file curation policy execution of converting co-resident files to
Non resident files.
running rebuild db for all the tiering containers for the given file system :
gpfs_tctbill1
Running rebuild db for container pairset : powerlebill1spill2 and File System:
gpfs_tctbill1
mmcloudgateway: Command completed.
Running rebuild db for container pairset : powerlebill1spill1 and File System:
gpfs_tctbill1
mmcloudgateway: Command completed.
Running rebuild db for container pairset : powerlebill1 and File System: gpfs_tctbill1
etc...
b. Repeat the mcstore_sobar_restore.sh script appropriately for each file system that you want
to recover.
8. Enable Cloud services maintenance operations on the appropriate node class being restored on the
recovery site. For more information, see “Configuring the maintenance windows” on page 87.
9. Enable all Cloud services migration policies on the recovery site by using the --transparent-
recalls {ENABLE} option in the mmcloudgateway containerPairSet update command. For
more information, see “Binding your file system or fileset to the Cloud service by creating a container
pair set” on page 83.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 845
Table 69. Parameter description
Name Description
file_system_name (Device) Name of the file system to be backed up
filesystem_backup_config_file (OutputFile) A unique file name that holds information for a
specific backed-up file system:
• You will create a unique name
(filesystem_backup_config_file) for each backed-
up file system (which means you run this
command once for each file system you want to
back up)
Command: mcstore_sobar_backup.sh
Usage: mcstore_sobar_backup.sh <file_system_names>
<sharing_container_pairset_name> <node_class_name>
<global_filesystem_directory>.
Command: mcstore_sobar_download.sh
Usage: mcstore_sobar_download.sh <tct_config_backup_path>
<sharing_container_pairset_name> <node_class_name> <sobar_backup_tar_name>
<local_backup_dir>
Command: mcstore_sobar_restore.sh
Usage: mcstore_sobar_restore.sh <sobar_backup_path> <file_system_name>
<node_class_name> <rebuilddb_required: yes/no> <global_filesystem_directory>
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 847
Table 73. Parameter description (continued)
Name Description
rebuilddb_required Yes/no if a rebuild of the Cloud services metadata
database is required. If you have Cloud services
metadata database file systems separated from
your data-only file systems, you will need to back
them up as well.
global_filesystem_directory The path to the file system that is shared with the
primary site via the sharing container pair set.
Application considerations
Exporting applications need some mechanism to both notify other applications that new data is available
on the cloud and give those applications some way of understanding what objects were put to the cloud.
Cloud data sharing services provide a manifest to help applications communicate that new data is
available and what that data is. When data is exported, an option to build a manifest file can be specified.
This manifest is a text file that contains the name of the cloud objects exported and some other
information that can be used by an application that wants to import the full data, or a subsection of it.
When data is imported, there are cases in which not all the data is needed and this unneeded data can be
identified by information in the file metadata. In these cases, it is recommended that as a first pass the
file headers are imported only with the import-only-stub option. The policy engine can then be used
to import only those files that are needed, thereby saving transfer time and cost. For now this import of
stub includes metadata only for data that was previously exported by IBM Spectrum Scale.
Note: For many cloud services, enabling indexed containers can impact performance, so it is possible that
cloud containers are not indexed. For these situations, a manifest is mandatory. But even with indexing
enabled, for large containers that contain many objects, a manifest can be useful.
Additionally, this manifest utility can be used by a non-Spectrum Scale application to build a manifest file
for other applications, including IBM Spectrum Scale, to use for importing purposes.
There is a manifest utility that can run separate from IBM Spectrum Scale (it is a Python script) that can
be used to look at the manifest. It provides a way to list and filter the manifest content, providing comma
separated value output.
The following example exports a local file named /dir1/dir2/file1 to the cloud and store it in a
container named MyContainer. A manifest file will be created, and the object exported to the cloud will
have an entry in that manifest file tagged with MRI_Images.
To import files from a cloud storage tier, issue a command according to the following syntax:
The following example imports files from the cloud storage tier and creates a necessary local directory
structure.
For more information on the usage of the import and export functions, see the mmcloudgateway man
page.
Typically, this file is not accessed directly but rather is accessed using the manifest utility.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 849
A manifest utility produces a CSV stream entry format is as follows:
<TagID>,<CloudContainerName>,<TimeStamp>,<File/Object Name><newline>
where,
• TagID is an optional identifier the object is associated with.
• CloudContainerName is the name of the container the object was exported into.
• TimeStamp follows the format: "DD MON YYYY HH:MM:SS GMT".
• File/Object Name can contain commas, but not new line characters.
An example entry in a manifest utility stream output is as follows:
You can use the mmcloudmanifest tool to parse the manifest file that is created by the
mmcloudgateway files export command or by any other means. By looking at the manifest files, an
application can download the desired files from the cloud.
The mmcloudmanifest tool is automatically installed on your cluster along with Transparent cloud
tiering rpms. However, you must install the following packages for the tool to work:
• Install Python version 3.6
• Install pip. For more information, see https://packaging.python.org/install_requirements_linux/
• Install apache-libcloud package by running the sudo pip install apache-libcloud
command.
Note: Only while working with Swift3, installing latest version of apache-libcloud might not work.
Hence, run pip install apache-libcloud==1.3.0 to install the specific version to address the
dependency.
The syntax of the tool is as follows:
mmcloudmanifest
ManifestName [--cloud --properties-file PropertiesFile --manifest-container ManifestContainer
[--persist-path PersistPath]]
[--tag-filter TagFilter] [--container-filter ContainerFilter]
[--from-time FromTime] [--path-filter PathFilter]
[--help]
where,
• ManifestName: Specifies the name of the manifest object that is there on the cloud. For using a local
manifest file, specify the full path name to the manifest file.
• --properties-file PropertiesFile: Specifies the location of the properties file to be used when
retrieving the manifest file from the cloud. A template properties file is located at /opt/ibm/
MCStore/scripts/provider.properties. This file includes details such as the name of the cloud
storage provider, credentials, and URL.
• --persist-path PersistPath: Stores a local copy of the manifest file that is retrieved from the
cloud in the specified location.
• --manifest-container ManifestContainer: Name of the container in which the manifest is
located.
• --tag-filter TagFilter: Lists only the entries whose Tag ID # matches the specified regular
expression (regex).
• --container-filter ContainerFilter: Lists only the entries whose container name matches the
specified regex.
• --from-time FromTime: Lists only the entries that occur starting at or after the specified time stamp.
The time stamp must be enclosed within quotations, and it must be in the 'DD MON YYYY HH:MM:SS
GMT' format. Example: '21 Aug 2016 06:23:59 GMT'
The following command exports four CSV files tagged with "uk-weather", along with the manifest file,
"manifest.text", to the cloud:
ls -l /gpfs
total 64
drwxr-xr-x. 2 root root 4096 Oct 5 07:09 automountdir
-rw-r--r--. 1 root root 7859 Oct 18 02:15 MetData_Oct06-2016-Oct07-2016-ALL.csv
-rw-r--r--. 1 root root 7859 Oct 18 02:15 MetData_Oct07-2016-Oct08-2016-ALL.csv
-rw-r--r--. 1 root root 14461 Oct 18 02:15 MetData_Oct08-2016-Oct09-2016-ALL.csv
-rw-r--r--. 1 root root 14382 Oct 18 02:15 MetData_Oct09-2016-Oct10-2016-ALL.csv
-rw-r--r--. 1 root root 14504 Oct 18 02:15 MetData_Oct10-2016-Oct11-2016-ALL.csv
drwxr-xr-x. 2 root root 4096 Oct 17 14:12 weather_data
3. Run the following command to create a Cloud data sharing service by using the following command:
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 851
4. Use the sharing service that is created in the previous step and run the following command. Running
this command creates a container pair set that points to the same container name as the container in
the previous version of Transparent cloud tiering:
Note: You need to include the following parameters while you create a container pair set when
encryption is enabled in the older release:
• KeyManagerName
• ActiveKey
5. Run the following command to import the files:
To stop the Cloud services on a specific node or a list of nodes, issue a command according to this syntax:
For example, to stop the service on the node, 10.11.12.13, issue this command:
For example,
• To check the status of all available Transparent cloud tiering nodes in your cluster, issue this command:
• To check the status of all available Transparent cloud tiering nodes in a specific node class (TctNode),
issue this command:
• To check the status of all available Transparent cloud tiering nodes in a specific CSAP, issue this
command:
Node Daemon node name Status CSAP File System/Set Status Reasons
----------------------------------------------------------------------------------------------------------
1 jupiter-vm1192 STARTED swift-account swift-pairswift-point /gpfs/ Online ONLINE
Note: ONLINE status here means container exists on the cloud, but it does not guarantee that the
migrations would work. This is because there could be storage errors on object storage, due to which new
object creation might fail. To verify container status for migrations, issue the mmcloudgateway
containerpairset test command.
For more information on all the available statuses and their description, see the Transparent Cloud Tiering
status description topic in IBM Spectrum Scale: Command and Programming Reference.
GUI navigation
To work with this function in the GUI,
• Log on to the IBM Spectrum Scale GUI and select Files >Transparent cloud tiering
• Log on to the IBM Spectrum Scale GUI and select Monitoring>Statistics
Additionally, you can check the Cloud services status by using the mmhealth node show
CLOUDGATEWAY command.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 853
Checking the Cloud services version
This topic describes how to check the Cloud services versions of each node in a node class.
CLI commands do not work on a cluster if all nodes in a node class are not running the same version of
the Cloud services. For example, you have three nodes (node1, node2, node3) in a node class
(TCTNodeClass1). Assume that the Cloud services version of node1 is 1.1.1, of node2 is 1.1.1, and of
node3 is 1.1.2. In this case, the CLI commands specific to 1.1.2 do not work in the TCTNodeClass1 node
class.
To check the service version of all Transparent cloud tiering nodes in a cluster, issue the following
command:
To check for service versions associated with Cloud services nodes, issue a command according to this
syntax:
For example, to display the Cloud services version of the nodes, node1 and node2, issue the following
command:
To display the Cloud services version of each node in a node class, TCT, issue the following command:
Node Daemon node name TCT Type TCT Version Equivalent Product
Version
------------------------------------------------------------------------------------------------
1 jupiter-vm1192.pok.stglabs.ibm.com Server 1.1.5 5.0.1.0
To display the client version of each node, issue the following command on the client node:
Node Daemon node name TCT Type TCT Version Equivalent Product Version
------------------------------------------------------------------------------------------------
4 jupiter-vm649.pok.stglabs.ibm.com Client 1.1.5 5.0.1.0
To verify the client version of a particular node, issue the following command:
Node Daemon node name TCT Type TCT Version Equivalent Product Version
To check for all nodes in a node class, issue the following command:
Node Daemon node name TCT Type TCT Version Equivalent Product Version
------------------------------------------------------------------------------------------------
2 jupiter-vm482.pok.stglabs.ibm.com Server 1.1.5 5.0.1.0
1 jupiter-vm597.pok.stglabs.ibm.com Server 1.1.5 5.0.1.0
MCSTG00051E: File is not a regular file. Migration requests only support regular files.
error processing /<file-system-mount>/<folder1>/<folder-2>….
To migrate all files (including files within the subfolders) in one go, issue this command:
This command passes the entire list of files to a single migrate process in the background as follows:
Migrating Transparent cloud tiering specific configuration to cloud storage might lead to issues
While you move data to an external cloud storage tier, it is required not to migrate files within the
Transparent cloud tiering internal folder (.mcstore folder within the configured GPFS file system) to
cloud storage. It might lead to undesirable behavior for the Transparent cloud tiering service. To
address this issue, include the EXCLUDE directive in the migration policy.
Refer to the /opt/ibm/MCStore/samples folder to view sample policies that can be customized as
per your environment and applied on the file system that is managed by Transparent cloud tiering.
Running mmcloudgateway files delete on multiple files
Trying to remove multiple files in one go with the mmcloudgateway files delete delete-
local-file command fails with a NullPointerException. This happens while you clean up the
cloud metrics. Issue this command to remove the cloud objects:
Range reads from the cloud object storage is not supported for transparent recall.
When a file is transparently recalled, the file is entirely recalled.
Policy-based migrations
Policy-based migrations should be started only from Transparent cloud tiering server nodes. Client
nodes should be used only for manual migration.
File names with carriage returns or non-UTF-8 characters
Transparent cloud tiering does not perform any migration or recall operation on files whose names
include carriage returns or non-UTF-8 characters.
Chapter 43. Cloud services: Transparent cloud tiering and Cloud data sharing 855
File systems mounted with the nodev option
If a file system is mounted with the nodev option, then it cannot be mounted to a directory with an
existing folder with the same name as the file system. Transparent cloud tiering is not supported in
this situation.
Administrator cannot add a container pair set while managing a file system with 'automount' setting
turned on.
Make sure that automount setting is not turned on while a file system is in use with Transparent
cloud tiering.
Files created through NFS clients when migrated to the cloud storage tier
If caching is turned on on the NFS clients (with the --noac option) while mounting the file system,
files that are migrated to the cloud storage tier remain in the co-resident status, instead of the non-
resident status.
Transparent cloud tiering configured with proxy servers
IBM Security Key Lifecycle Manager does not work when Transparent cloud tiering is configured with
proxy servers.
Swift Dynamic Large Objects
Transparent cloud tiering supports Swift Dynamic Large Objects only.
No support for file systems earlier than 4.2.x
Cloud services support IBM Spectrum Scale file systems versions 4.2.x and later only.
Running reconciliation during heavy writes and reads on the file system
Reconciliation fails when it is run during heavy I/O operations on the file system.
For current limitations and restrictions, see IBM Spectrum Scale FAQs.
For more information, see the topic Interoperability of Transparent Cloud Tiering with other IBM Spectrum
Scale features in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
• To change the monitored events back to ALL events, run the following command:
For more information, see the mmaudit command in the IBM Spectrum Scale: Command and
Programming Reference.
To resolve this problem, try adjusting the following mlx4_core module parameters for the Mellanox
Translation Tables (MTTs). This adjustment does not apply to mlx5_core parameters.
1. Set log_mtts_per_seg to 0. This value is the recommended one.
2. Increase the value of log_num_mtt.
For more information see the following links:
How to increase MTT size in Mellanox HCA at http://community.mellanox.com/docs/DOC-1120.
Enabling verbsRdmaSend
The verbsRdmaSend attribute of the mmchconfig command enables or disables the use of
InfiniBand RDMA rather than TCP for most GPFS daemon-to-daemon communications. When the
attribute is disabled, only data transfers between an NSD server and an NSD client are eligible for
RDMA. When the attribute is enabled, the GPFS daemon uses InfiniBand RDMA connections for
daemon-to-daemon communications only with nodes that are at IBM Spectrum Scale 5.0.0 or later.
For more information, see mmchconfig command in the IBM Spectrum Scale: Command and
Programming Reference.
Enabling verbsRdmaSend
Read the discussion of setting verbsRdmaSend in “Settings for IBM Spectrum Scale 5.0.x and later”
on page 859 earlier in this topic. For 4.2.3.x, be aware of the following points:
• Do not enable verbsRdmaSend in clusters greater than 500 nodes.
• Disable verbsRdmaSend if either of the following types of error appears in the mmfs log:
– Out of memory errors
– InfiniBand error IBV_WC_RNR_RETRY_EXC_ERR
How GPFS pagepool size affects Mellanox InfiniBand RDMA (VERBS) configuration
Improperly configuring the Mellanox MTT can lead to the following problems:
• Excessive logging of RDMA-related errors in the IBM Spectrum Scale log file.
• Shutdown of the GPFS daemon due to memory limitations. This can result in the loss of NSD access if
this occurs on an NSD server node.
For more information, see the topic GPFS and Memory in the IBM Spectrum Scale: Concepts, Planning, and
Installation Guide.
Mellanox Variables
The Mellanox mlx4_core driver module has the following two parameters that control its MTT size and
define the amount of memory that can be registered by the GPFS daemon. The parameters are
log_num_mtt and log_mtts_per_seg and they are defined as a power of 2.
• log_num_mtt defines the number of translation segments that are used.
• log_mtts_per_seg defines the number of entries per translation segment.
Each log_mtts_per_seg maps a single page, as defined by the hardware architecture, to the mlx4_core
driver. For example, setting the variable log_num_mtt to 20 results in a value of 1,048,576 (segments)
which is 2 to the power of 20. Setting the variable log_mtts_per_seg to 3 results in the value of 8
(entries per segment) which is 2 to the power of 3. These parameters are set in the mlx4_core module of
the /etc/modprobe.conf file, or on a line at the end of /etc/modprobe.d/mlx4_core.conf file,
depending on your version of Linux. Here is an example of how the parameters can be set in those files.
Options mlx4_core log_num_mtt=23 log_mtts_per_seg=0
To check the configuration of the mlx4 driver use the following command:
# cat /sys/module/mlx4_core/parameters/log_num_mtt
23
# cat /sys/module/mlx4_core/parameters/log_mtts_per_seg
0
Note: NFS server maintains files in cache for 90 seconds after replication on AFM home. If data of an AFM
home using CES NFS is exported via SMB, SMB clients accessing those files during that period can
experience sharing violations.
1. Set up a home cluster. For more information, see Creating your GPFS cluster in IBM Spectrum Scale:
Administration Guide.
2. Configure a cache relationship for AFM filesets using the home cluster you just created.
The relationship between the home cluster and the cache cluster is set up by using NFS exports
defined at home cluster. The home cluster exports NFS mount points that AFM cache cluster uses to
synchronize data.
3. Create a file system and mount this file system on the home cluster. For more information, see
Managing file systems in IBM Spectrum Scale: Administration Guide.
The home side of the relationship is defined at the NFS share level. The home contains all the data
available from the NFS mount point.
4. At the home cluster, create and link one or more filesets. For more information, see Filesets in IBM
Spectrum Scale: Administration Guide.
These filesets are used to set up NFS exports at the home cluster. These export paths are fileset
junction paths where filesets are linked.
5. Export the fileset, one fileset at a time. Do one of the following:
Note: In this example, the IP address of the Gateway node of the cache cluster is 192.168.1.2. As an
Administrator, ensure that NFS exports are accessible only to nodes at the cache.
• If you are using KNFS, complete the following steps for KNFS export of the home filesystem:
/gpfs/fs1/sw2
192.168.1.2(rw,nohide,insecure,no_subtree_check,sync,no_root_squash,fsid=1069)
b. Re-start the NFS services on home cluster export servers. This starts all the necessary NFS
services and exports the given path to be used by the AFM cache.
c. If the file system goes down, you must export the file system again. The gateway nodes at the
cache site must have access to the exported directory and can be mounted using NFS.
• If you want to configure a file system on the home cluster with protocols nodes, complete the
following steps:
a. Use the mmnfs export add command to create export on junction path or the gpfs path of user
choice.
mmlscluster
mmgetstate -a
mmmount filesystemname
5. To create an AFM fileset and link the fileset, run the following command:
c. To enable AFM support for extended attributes and sparse files, configure the created fileset.
1) If you use CES NFS, run the following command to export the path:
For more information about the mmnfs command, see mmnfs in IBM Spectrum Scale: Command
and Programming Reference
2) If you use the default NFS, which is available with the operating system, do the following steps:
Update /etc/exports and add the following entry:
# exportfs -ra
Note: The client nodes IP/range must be the gateway node at the cache cluster.
2. Do the following steps at the cache cluster:
a. Identify a node and designate the node as a gateway node.
b. To provide a gateway role to the node in the cache cluster, run the following command:
d. Link the AFM fileset at the cache cluster to sync the AMF relationship with the home cluster.
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ ------------
fileset_SW nfs://node4/gpfs/fs1/fset001 Inactive
Note: Ensure that the home export is mountable on the gateway node at the cache cluster. AFM
internally mounts the home NFS export by using NFS v3.
f. Create a test file 'a' to move the AFM SW fileset from the inactive state to the active state.
# touch /gpfs/fs1/fileset_SW/a
# ls -l /gpfs/fs1/fileset_SW/
total 1
drwx------ 4 root root 4096 Oct 8 20:38 a
The AFM fileset state changes to the active state after some time.
The active state indicates that the home and cache relationship is established and synced.
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
Here, 'node2' is the gateway node at the cache cluster and 'node4' is the home export server.
g. Create more test files in the cache fileset and verify synchronization at the home cluster.
# cd /gpfs/fs1/fileset_SW
# for i in 1 2 3 4 ; do date > file$i; done
# ls -l
total 3
-rw-r--r-- 1 root root 30 Oct 9 20:22 a
-rw-r--r-- 1 root root 30 Oct 9 20:25 file1
-rw-r--r-- 1 root root 30 Oct 9 20:25 file2
-rw-r--r-- 1 root root 30 Oct 9 20:25 file3
-rw-r--r-- 1 root root 30 Oct 9 20:25 file4
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ ------------
fileset_SW nfs://node4/gpfs/fs1/fset001 Dirty node2 8 5
i. Wait for sometime and check again if the fileset state is 'Active'.
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ ------------
fileset_SW nfs://node4/gpfs/fs1/fset001 Active node2 0 13
3. To verify the available files in the home cluster, run the following command:
# ls -l /gpfs/fs1/fset001
total 3
-rw-r--r-- 1 root root 30 Oct 9 20:25 a
-rw-r--r-- 1 root root 30 Oct 9 20:28 file1
-rw-r--r-- 1 root root 30 Oct 9 20:28 file2
-rw-r--r-- 1 root root 30 Oct 9 20:28 file3
-rw-r--r-- 1 root root 30 Oct 9 20:28 file4
4. Run the following command to enable clients to mount above export paths at gateway nodes by using
NFS V3.
5. Enable afmEnableNFSSec at cache or primary cluster to yes. Run the following command:
#mmchconfig afmEnableNFSSec=yes -i
6. Create an AFM fileset for the prepared target and link the fileset to the target. Run the following
commands:
Local Name Remote Name Cluster name Mount Point Mount Options Automount Drive Priority
remoteHOME fshome node3.home /remote/fshome rw no – 0
Thu Oct 23 23:28:32 CEST 2014: mmmount: Mounting file systems ...
node1:/var/mmfs/ssl # cd /gpfs/cache
node1:/gpfs/cache # mmlinkfileset fs1 fileset_IW
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ -------------
node1:/gpfs/cache # cd fileset_IW
node1:/gpfs/cache/fileset_IW # ll
total 97
drwx------ 65535 root root 32768 Oct 23 23:47 .afm
drwx------ 65535 root root 32768 Oct 23 23:47 .pconflicts
drwx------ 65535 root root 32768 Oct 23 23:47 .ptrash
dr-xr-xr-x 2 root root 32768 Jan 1 1970 .snapshots
Note: If you are using CES NFS at home, replace c2m3n06 with ces_ip_of_secondary_node.
2. Create a secondary fileset. Run on a secondary cluster.
Get the primary ID of the GPFS fileset on the primary side (afmPrimaryId) before the actual
conversion. Use mmafmctl getPrimaryId command on the GPFS fileset on the primary side.
3. Link the secondary fileset on the secondary cluster by using the mmlinkfileset command.
Run mmlinkfileset fs1 secondary2 -J /ibm/fs1/secondary2.
The primary does not check the secondary for changes. If you are using quotas, ensure that the same
value is set for quotas on primary and secondary. On a primary fileset, eviction is disabled by default
and filesets do not expire. If you are using NFS, ensure that the NFS export on the secondary site is
accessible from the gateway nodes in the primary cluster. If you are using the NSD protocol, the
secondary file system needs to be mounted on the gateway nodes at the primary cluster.
4. Restart NFS on secondary.
Note: If you are using CES NFS, restart is not required.
After the primary and secondary are linked, the RPO snapshot (psnap0) gets queued from the primary
fileset, which gets replayed on the secondary fileset. The Async DR filesets are now ready for use.
• Do not run mmafmconfig command on the secondary site. Run mmafmctl gpfs0 getstate on the
primary to know the primary gateway node.
• Check fsid and primary id on the secondary, and ensure that any two secondary filesets do not
share the same fsid or primary id.
• psnap0 must be created at both sites for the filesets to synchronize. In cases like node shutdown,
process failure; psnap0 might not be created. Hence, filesets do not synchronize with the secondary.
Unlinking and relinking the filesets re-creates psnap0. The filesets then synchronize with the
secondary.
--afmtarget and --inband are mandatory options for the first conversion command on the fileset.
Conversion can get interrupted in the middle due to unforeseen reasons or in case of rare errors when
psnap0 creation is not successful. In such cases, fileset is converted to a primary but left in
PrimInitFail state.
Based on the reason behind the failure, the administrator must re-run the conversion command
without any argument. Alternatively, the fileset can be converted back to normal GPFS filesets and
converted again using the conversion command with arguments.
The --afmtarget option mentions the fileset path on the secondary site.
The --inband option is used for inband trucking. Primary id gets generated and the first RPO
snapshot psnap0 gets created. The entire data on the snapshot is queued to the secondary. Once the
data has replayed on the secondary after Step 3 (following), that is, the primary and secondary are
connected, it creates a psnap0 on the secondary ensuring that the psnap0 on the primary and the
secondary are the same. At this point, one can consider a relationship has been established.
The --check-metadata option checks if the disallowed types (like immutable/append-only files,
clones where the source belongs to a snapshot etc) are present in the GPFS fileset on the primary site
before the conversion. Conversion fails with this option if the disallowed types still exist on the primary
side. --check-metadata is not mandatory and performs a scan of the entire fileset to verify its contents,
and while it can be excluded if the fileset is known to be permissible for conversion, it should be used
when in doubt. This is the default option.
The --no check-metadata option is used to proceed with conversion without checking for the
disallowed types.
The --rpo option specifies the RPO interval in minutes for this primary fileset. By default, RPO is
disabled. You can use the mmchfileset command to modify the afmRPO value of the AFM DR fileset.
The --secondary-snapname is not applicable for converting AFM or GPFS filesets. This option is used
while establishing a new primary, as discussed in subsequent sections.
Gateway node assignments must be finalized and done preferably before conversion of GPFS or AFM
filesets to primary. If no gateway is present on the primary cluster during conversion, then primary
fileset might remain in the PrimInitFail state.
After the primary and secondary are connected with psnap0 from any one side, the primary is in Active
state. The two filesets are ready for use.
For more information, see mmafmctl command in IBM Spectrum Scale: Command and Programming
Reference.
Note: Parallel data transfers are not applicable to trucking even if the AFM target is mapping. Resync does
not split data transfers even if parallel data transfer is configured, and the target is a mapping.
where
newbucket
Specifies a bucket name.
192.0.2.*
IP of a server.
Note: If you do not set the keys for a bucket before the AFM to cloud object storage relation is set, the
mmafmcosconfig command fails.
3. Establish the AFM to cloud object storage relation by issuing the following command:
5. Get the report of all keys that are stored on the AFM to cloud object storage by issuing the following
command:
bucket2:lb1.ait.examplelabs.com=COS:BCGSt6BBCDqLowpVF2zd:lcxHFFYWB8XG1noeQDJPlGoHC2khBY8grlRQ
05Cv
6. If a bucket is removed or updated by using the delete option, delete access and secret keys by
issuing the following command:
# ls -lsh /gpfs/fs1/readonly/
total 0
0 -rwx------ 1 root root 13 Oct 20 2020 obj1
0 -rwx------ 1 root root 13 Oct 20 2020 obj2
0 -rwx------ 1 root root 13 Oct 20 2020 obj3
5. Pull objects data from the cloud object storage to the AFM to cloud object storage fileset.
# cat /gpfs/fs1/readonly/obj1
111111111111
# cat /gpfs/fs1/readonly/obj2
111111111111
# ls -lsh /gpfs/fs1/readonly/
total 1.0K
512 -rwx------ 1 root root 13 Oct 20 2020 obj1
512 -rwx------ 1 root root 13 Oct 20 2020 obj2
0 -rwx------ 1 root root 13 Oct 20 2020 obj3
Note: Data of the obj3 object is not read. Therefore, the object is uncached in the fileset.
Single-writer (SW)
In this mode, only an AFM to cloud object storage fileset can do all the write operation or data is
generated on the SW-mode fileset and the fileset does not check the cloud object storage for file or object
updates. Ensure that no write operation is done on the cloud object storage server.
Note: You cannot enforce this check.
A cloud object storage server can have some pre-existing data. The SW-mode fileset can replicate this
data by using the download or prefetch operation, and this data can be updated. Any updates in the
fileset data are queued on the gateway node and passed to the cloud object storage server. For more
information about the download operation, see mmafmcosctl command in the IBM Spectrum Scale:
Command and Programming Reference.
Example:
1. Create an SW-mode AFM to cloud object storage relation.
total 0
12+0 records in
12+0 records out
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.0155518 s, 202 MB/s
12+0 records in
12+0 records out
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.0150043 s, 210 MB/s
12+0 records in
12+0 records out
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.0160235 s, 196 MB/s
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ----------- ----------- ------------ -------------
singlewriter http://c1f1u11n07:80/singlewriter Active c7f2n05 0 7
5. Check whether the objects are synchronized to a cloud object storage server from a cloud object
storage GUI.
Name : object1
Date : 2020-10-20 08:54:06 EDT
Size : 3.0 MiB
ETag : b7a173514d704481128f96bae96c4735
Type : file
Metadata :
Content-Type: application/octet-stream
Name : object2
Date : 2020-10-20 08:54:07 EDT
Size : 3.0 MiB
ETag : d983316f3457644c45f3db63fb496060
Type : file
Metadata :
Content-Type: application/octet-stream
Name : object3
Date : 2020-10-20 08:54:07 EDT
Size : 3.0 MiB
ETag : 862841fbc08eff03878230a0b32e7c71
Type : file
Metadata :
Content-Type: application/octet-stream
Independent-writer (IW)
This mode allows multiple AFM to cloud object storage filesets to point to the same cloud object storage
bucket. Multiple AFM to cloud object storage filesets can be on the same IBM Spectrum Scale cluster or
on a different cluster. Also, they point to the cloud object storage server. There is no synchronous locking
between clusters when objects are updated on the cloud object storage server. Each AFM to cloud object
storage fileset reads from the cloud object storage server and makes updates to the cloud object storage
server independently. Reads and updates are based on the revalidation intervals and the asynchronous
delay.
# ls -lsh /gpfs/fs1/indwriter/
total 0
12+0 records in
12+0 records out
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.0158949 s, 198 MB/s
12+0 records in
12+0 records out
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.0150224 s, 209 MB/s
12+0 records in
12+0 records out
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.0153003 s, 206 MB/s
# ls -lsh /gpfs/fs1/indwriter/
total 9.0M
3.0M -rw-r--r-- 1 root root 3.0M Oct 20 09:04 object1
3.0M -rw-r--r-- 1 root root 3.0M Oct 20 09:04 object2
3.0M -rw-r--r-- 1 root root 3.0M Oct 20 09:04 object3
On COS:
Name : object1
Date : 2020-10-20 08:59:04 EDT
Size : 3.0 MiB
ETag : a1e25de2378c86479323de2345422923
Type : file
Metadata :
Content-Type: application/octet-stream
Name : object2
Date : 2020-10-20 08:59:05 EDT
Size : 3.0 MiB
ETag : 1bfa4345ba48dffdacc7037ce57cb112
Type : file
Metadata :
Content-Type: application/octet-stream
Name : object3
Date : 2020-10-20 08:59:05 EDT
Size : 3.0 MiB
ETag : c8d7c7a1da270b2ab5d2675083842326
# ls -lsh /gpfs/fs1/indwriter/
total 0
0 -rwx------ 1 root root 13 Oct 20 2020 obj1
0 -rwx------ 1 root root 13 Oct 20 2020 obj2
0 -rwx------ 1 root root 13 Oct 20 2020 obj3
7. Pull objects data from the cloud object storage to the AFM to cloud object storage fileset.
# cat /gpfs/fs1/indwriter/obj1
111111111111
# cat /gpfs/fs1/indwriter/obj2
111111111111
# ls -lsh /gpfs/fs1/indwriter/
total 1.0K
512 -rwx------ 1 root root 13 Oct 20 2020 obj1
512 -rwx------ 1 root root 13 Oct 20 2020 obj2
0 -rwx------ 1 root root 13 Oct 20 2020 obj3
2. Create three objects that have per-existing data on a cloud object storage.
3. Check whether the objects are cached.
# ls -lsh /gpfs/fs1/localupdates
total 0
0 -rwx------ 1 root root 13 Oct 20 2020 obj1
0 -rwx------ 1 root root 13 Oct 20 2020 obj2
0 -rwx------ 1 root root 13 Oct 20 2020 obj3
4. Pull objects data from the cloud object storage to the AFM to cloud object storage fileset.
# cat /gpfs/fs1/localupdates/obj1
111111111111
# cat /gpfs/fs1/localupdates/obj2
111111111111
# cat /gpfs/fs1/localupdates/obj3
111111111111
# ls -lsh /gpfs/fs1/localupdates
total 1.5K
512 -rwx------ 1 root root 13 Oct 20 2020 obj1
512 -rwx------ 1 root root 13 Oct 20 2020 obj2
512 -rwx------ 1 root root 13 Oct 20 2020 obj3
Name : obj1
Date : 2020-10-20 09:10:39 EDT
Size : 13 B
ETag : 87b8769b874865e65a4525bfe9e56ba8
Type : file
Metadata :
Content-Type: application/octet-stream
Name : obj2
Date : 2020-10-20 09:10:44 EDT
Size : 13 B
ETag : 87b8769b874865e65a4525bfe9e56ba8
Type : file
Metadata :
Content-Type: application/octet-stream
Name : obj3
Date : 2020-10-20 09:10:49 EDT
Size : 13 B
ETag : 87b8769b874865e65a4525bfe9e56ba8
Type : file
Metadata :
Content-Type: application/octet-stream
7. To push the created objects to the cloud object storage, upload the objects.
on COS :
Name : obj1
Date : 2020-10-20 09:19:08 EDT
Size : 21 B
ETag : a29344969f1524d72a050e910bb20ab0
Type : file
Metadata :
Content-Type: application/octet-stream
Name : obj2
Date : 2020-10-20 09:19:08 EDT
Size : 21 B
ETag : a29344969f1524d72a050e910bb20ab0
Type : file
Metadata :
Content-Type: application/octet-stream
Name : obj3
Date : 2020-10-20 09:19:08 EDT
Size : 21 B
ETag : a29344969f1524d72a050e910bb20ab0
Type : file
Metadata :
Content-Type: application/octet-stream
Note: http://c1f1u11n07:80 cloud object storage endpoint is used in the relation examples.
Along with these modes of operations, the AFM to cloud object storage has two more behavioral modes.
These modes are Object-FS and ObjectOnly.
Object-FS
In the Object-FS mode AFM to cloud object storage fileset is synchronized to the cloud object storage.
RO, LU, and IW modes of filesets synchronize metadata to and from the cloud object storage server. It
# ls -lsh /gpfs/fs1/afmtocos1/
total 20M
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object10
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object2
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object3
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object4
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object5
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object6
Note: The space consumed is 20M, that is, each object is consuming 2 Mb.
b. To check the disk usage, issue the following command:
# du -sh /gpfs/fs1/afmtocos1/
20M /gpfs/fs1/afmtocos1/
3. Evict an evict file that contains a list of files for the data eviction.
a. To get the list of files an evict file, issue the following command:
# cat /root/evictfile
/gpfs/fs1/afmtocos1/object1
/gpfs/fs1/afmtocos1/object2
/gpfs/fs1/afmtocos1/object3
/gpfs/fs1/afmtocos1/object4
/gpfs/fs1/afmtocos1/object5
4. To check evicted data blocks and the disk size, issue the following command:
# ls -lsh /gpfs/fs1/afmtocos1/
total 10M
0 -rw-r--r-- 1 root root 2.0M Sep 10 2020 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object10
0 -rw-r--r-- 1 root root 2.0M Sep 10 2020 object2
0 -rw-r--r-- 1 root root 2.0M Sep 10 2020 object3
0 -rw-r--r-- 1 root root 2.0M Sep 10 2020 object4
0 -rw-r--r-- 1 root root 2.0M Sep 10 2020 object5
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object6
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object7
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object8
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object9
The ls command shows that evicted data blocks and the disk size is 0 for object1 through object5.
5. To check the disk usage, issue the following command:
# du -sh /gpfs/fs1/afmtocos1/
10M /gpfs/fs1/afmtocos1/
Now the disk space is 10M because other 10M is evicted from five objects.
6. Bring back objects and files from a cloud object storage.
a. Issue to the following command:
# cd /gpfs/fs1/afmtocos1/
# ls -lsh /gpfs/fs1/afmtocos1/
total 20M
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object1
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object10
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object2
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object3
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object4
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object5
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object6
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object7
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object8
2.0M -rw-r--r-- 1 root root 2.0M Sep 10 2020 object9
# du -sh /gpfs/fs1/afmtocos1/
20M /gpfs/fs1/afmtocos1/
Now the used disk space is again 20Mb. This output shows that files are read and data is brought back
from the cloud object storage.
Note: The used inodes are 13. You need to evict 5 objects metadata.
2. To check the list of files in an evict file, issue the following command:
# cat /root/evictfile
/gpfs/fs1/afmtocos1/osbject1
/gpfs/fs1/afmtocos1/osbject2
/gpfs/fs1/afmtocos1/osbject3
/gpfs/fs1/afmtocos1/osbject4
/gpfs/fs1/afmtocos1/osbject5
# ls -l /gpfs/fs1/afmtocos1/
total 10240
-rwx------ 1 root root 2097152 Sep 10 2020 osbject1
-rw-r--r-- 1 root root 2097152 Sep 10 2020 osbject10
-rwx------ 1 root root 2097152 Sep 10 2020 osbject2
-rwx------ 1 root root 2097152 Sep 10 2020 osbject3
-rwx------ 1 root root 2097152 Sep 10 2020 osbject4
-rwx------ 1 root root 2097152 Sep 10 2020 osbject5
-rw-r--r-- 1 root root 2097152 Sep 10 2020 osbject6
-rw-r--r-- 1 root root 2097152 Sep 10 2020 osbject7
-rw-r--r-- 1 root root 2097152 Sep 10 2020 osbject8
-rw-r--r-- 1 root root 2097152 Sep 10 2020 osbject9
Now the used inodes are 13 because all evicted metadata is brought back to the cloud object
storage.
1. Create a relationship with a cloud object storage bucket by issuing the following command:
Note: The --keyfile option can be used to specify a key file that contains an access key and a secret
key. Instead of providing the access key and the secret key on a command line, you can use a key file.
The key file must contain two lines for akey and skey separated by a colon.
4. Check the cache state by issuing the following command:
touch /gpfs/fs1/singlewriter/dir1/object1
touch /gpfs/fs1/singlewriter/dir1/object2
touch /gpfs/fs1/singlewriter/dir1/object3
7. Check that these objects are played to a cloud object storage bucket.
Name : object1
Date : 2020-10-23 09:44:37 EDT
Size : 0 B
ETag : d41d8cd98f00b204e9800998ecf8427e
Type : file
Metadata :
Content-Type: application/octet-stream
Uploading objects
You can upload objects that are in the LU-mode.
Complete the following steps to upload an object:
1. Create LU-mode objects on a cloud object storage.
Name : obj2
Date : 2020-10-23 06:07:31 EDT
Size : 2.2 KiB
Name : obj3
Date : 2020-10-23 06:07:33 EDT
Size : 2.2 KiB
ETag : 6fdfdb7af5eb5ad7f610014985951941
Type : file
Metadata :
Content-Type: application/x-sh
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ -------------
localupdates http://c1f1u11n07:80/localupdates Active c7f2n05 0 10
4. Write data into objects, which will not be synchronized to a cloud object storage.
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------- ------------ ------------ -------------
localupdates http://c1f1u11n07:80/localupdates Active c7f2n05 0 10
These changes are local and are not pushed to the cloud object storage because it is in the LU-mode.
6. To synchronize objects to a cloud object storage, upload the objects.
Name : obj2
Downloading objects
Download of an object is important when the AFM to cloud object storage relation is created in the
ObjectOnly mode. With the ObjectOnly mode, the fileset does not automatically synchronize with a
cloud object storage. This behavior is the default behavior of operation.
You need to manually download data or metadata from the object storage server into the AFM to cloud
object storage filesets by using the mmafmcosctl command. The data transfer from a fileset to an object
storage server does not need any manual intervention (single-writer (SW), independent-writer (IW)
mode).
When selected objects are needed for an application to run on an AFM to cloud object storage fileset, they
can be downloaded by using the --objectlist option. All objects can be download by using the --all
option. These objects are prefetched or downloaded from a cloud object storage.
The modifications to objects on a cloud object storage are not synchronized to the home. Therefore, you
need to download the objects. The modification to objects in IW and SW-modes is pushed to the cloud
object storage.
1. Create an ObjectOnly IW-mode fileset.
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------ ----------- ------------ -------------
indwriter http://c1f1u11n07:80/indwriter Dirty c7f2n05 1 0
Fileset Name Fileset Target Cache State Gateway Node Queue Length Queue numExec
------------ -------------- ------------ ----------- ------------ -------------
indwriter http://c1f1u11n07:80/indwriter Active c7f2n05 0 1
Name : dd
Date : 2020-10-23 05:13:59 EDT
Size : 0 B
ETag : d41d8cd98f00b204e9800998ecf8427e
Type : file
Metadata :
Content-Type: application/octet-stream
Name : obj1
Date : 2020-10-23 05:20:48 EDT
Size : 2.2 KiB
ETag : 6fdfdb7af5eb5ad7f610014985951941
Type : file
Metadata :
Content-Type: application/x-sh
Name : obj2
Date : 2020-10-23 05:20:50 EDT
Size : 2.2 KiB
ETag : 6fdfdb7af5eb5ad7f610014985951941
Type : file
Metadata :
Content-Type: application/x-sh
Name : obj3
Date : 2020-10-23 05:20:51 EDT
Size : 2.2 KiB
ETag : 6fdfdb7af5eb5ad7f610014985951941
Type : file
Metadata :
Content-Type: application/x-sh
# cat /listfile
/gpfs/fs1/indwriter/obj1
/gpfs/fs1/indwriter/obj2
# ls -lash /gpfs/fs1/indwriter/
total 260K
512 drwx------ 5 root root 4.0K Oct 23 05:54 .
256K drwxr-xr-x 4 root root 256K Oct 23 05:18 ..
512 drwx------ 65535 root root 4.0K Oct 23 05:17 .afm
512 drwx------ 65535 root root 4.0K Oct 23 05:17 .pconflicts
512 drwx------ 65535 root root 4.0K Oct 23 05:17 .ptrash
512 dr-xr-xr-x 2 root root 8.0K Dec 31 1969 .snapshots
0 -rw-r--r-- 1 root root 0 Oct 23 05:19 dd
512 -rwx------ 1 root root 2.3K Oct 23 2020 obj1
512 -rwx------ 1 root root 2.3K Oct 23 2020 obj2
mmchconfig logPingPongSector=no
Using HAWC
Learn how to enable HAWC, set up storage for the recovery log, and do administrative tasks.
“Enabling HAWC” on page 895
“Setting up the recovery log in fast storage” on page 895
“Administrative tasks” on page 895
The following example shows how to specify the threshold when you create a new file system:
After HAWC is enabled, all synchronous write requests less than or equal to the write cache threshold are
put into the recovery log. The file system sends a response to the application after it puts the write
request in the log. If the size of the synchronous write request is greater than the threshold, the data is
written directly to the primary storage system in the usual way.
Administrative tasks
Learn how to do the following administrative tasks with HAWC:
Restriping after you add or remove a disk
As with any other pool, after you add or remove a disk from the system.log pool, run the
mmrestripefs -b command to rebalance the pool.
mmchconfig restripeOnDiskFailure=yes -i
mmchconfig metadataDiskWaitTimeForRecovery=Seconds
where Seconds is the number of seconds to wait. This setting helps to avoid doing a restripe after a
temporary outage such as a node rebooting. The default time is 300 seconds.
where LogFileSize is the size of the recovery log. For more information, see the topic mmchfs
command in the IBM Spectrum Scale: Command and Programming Reference guide.
3. Enable HAWC by setting the write cache threshold, as described earlier in this topic.
Many applications benefit greatly from large local caches. Not only is the data available with very low
latency, but the cache hit serves to reduce the load on the shared network and on the backend storage
itself, thus benefiting all nodes, even those without large caches.
Local solid-state disks (SSDs) provide an economical way to create very large caches. The SSD cache
serves as an extension to the local buffer pool. As user data or metadata is evicted from the buffer pool in
memory, it can be stored in the local cache. A subsequent access will retrieve the data from the local
cache, rather than from the home location. The data stored in the local cache, like data stored in memory,
remains consistent. If a conflicting access occurs, the data is invalidated from all caches. In a like manner,
if a node is restarted, all data stored in the cache is discarded.
In theory, any data or metadata can be stored in the local SSD cache, but the cache works best for small
random reads where latency is a primary concern. Since the local cache typically offers less bandwidth
than the backend storage, it might be unsuitable for large sequential reads. The configuration options
provide controls over what is stored in the cache. The default settings are targeted at small random I/O.
The local read-only cache (LROC) function is disabled by default. To enable it, the administrator must
define an NSD for an LROC device. The LROC device is expected to be a solid-state disk (SSD) accessible
via SCSI. The device is defined as a standard NSD by mmcrnsd, but the DiskUsage is set to
localCache. The NSD must have a primary server and is not allowed to have other servers. The primary
server must be the node where the physical LROC device is installed. The device is not exported to other
nodes in the cluster. The storage pool and failure group defined for the NSD are ignored and should be set
to null. The mmcrnsd command writes a unique NSD volume ID onto the device.
The minimum size of a local read-only cache device is 4 GB. The local read-only cache requires memory
equal to 1% of the capacity of the LROC device.
Once the LROC device is defined, the daemon code at the primary server node is automatically told to do
device discovery. The daemon detects that localCache is defined for its use and determines the
mapping to the local device. The daemon then informs the local read-only cache code to begin using the
device for caching. Currently, there is a limit of four localCache devices per node. Note that the daemon
code does not need to be restarted to begin using the cache.
The LROC device can be deleted by using the mmdelnsd command. Both mmcrnsd and mmdelnsd can be
issued while the daemon is running with file systems mounted and online. The call to delete the NSD first
informs the daemon that the device is being deleted, which removes it from the list of active LROC
devices. Any data cached on the device is immediately lost, but data cached on other local LROC devices
is unaffected. Once the mmdelnsd command completes, the underlying SSD can be physically removed
from the node.
The NSD name for the LROC device cannot be used in any other GPFS commands, such as mmcrfs,
mmadddisk, mmrpldisk, mmchdisk or mmchnsd. The device is shown by mmlsnsd as a localCache.
Note: To avoid a security exposure, by default IBM Spectrum Scale does not allow file data from
encrypted files, which is held in memory as cleartext, to be copied into an LROC device. However, you can
set IBM Spectrum Scale to allow cleartext from encrypted files to be copied into an LROC device with the
following command:
mmchconfig lrocEnableStoringClearText=yes
You might choose this option if you have configured your system to remove the security exposure.
Warning: If you allow cleartext from an encrypted file to be copied into an LROC device, you must take
steps to protect the cleartext while it is in LROC storage.
For more information, see the following links:
“Encryption and a local read-only cache (LROC) device” on page 809
The topic mmchconfig command in the IBM Spectrum Scale: Command and Programming Reference.
mmshutdown -a
2. Using the documented procedures for the operating system, add the new host names or IP addresses
to the network but do not remove the old ones yet. Do not restart the GPFS daemon on the nodes yet.
3. Follow the documented operating system procedures to make the old host names or IP addresses
active on the network without causing network conflicts with the new host names and IP addresses.
For example, you might be able to create temporary network aliases for the old IP addresses or host
names.
b) Issue the mmchnode command to apply the changes in the specification file:
If you could not make all the host names or IP addresses active on the network in Step 3, issue the
mmchnode command with the --force option:
5. If the IP addresses over which the subnets attribute is defined are changed, you must update the
subnets attribute to include the new addresses. To do so, issue the mmchconfig command and set
the subnets attribute to the new specification.
6. Issue the following command to start the GPFS daemon on all nodes:
mmstartup -a
7. Remove the old host names and IP addresses from the network.
8. Be sure to update any other IBM Spectrum Scale configurations that might contain the old IP
addresses or host names. For more information, see the subtopic "Updating IP addresses or host
names in other configurations" later in this topic.
b) Open the temporary file in a text editor and change any occurrence of an old node name or IP
address to the new one.
c) If you changed a node name or IP address in Step 2, issue the following command to update the
performance monitoring configuration:
d) If the performance monitoring configuration is a federation, and affected node is a collector, and
you are running a version of IBM Spectrum Scale that is earlier than 5.0.2, update the names and IP
addresses of the peers in the /opt/IBM/zimon/ZIMonCollector.cfg file on all the collector
nodes.
2. If the long admin node names (FQDN) of any call home group members are changed, you must delete
the affected call home groups and create new ones:
a) Issue the mmcallhome group list command to check the status of nodes that are members of
call home groups. If the command displays "------" instead of the name of a node, then the node
is deleted or its FQDN (including the domain) has changed.
b) If a node is deleted or its FQDN has changed, delete its call home group and create a new one. For
more information, see mmcallhome command in the IBM Spectrum Scale: Command and
Programming Reference.
mmchconfig enableIPv6=yes
After the command finishes successfully, you can start adding new nodes with IPv6 addresses.
If it is not possible to shut down GPFS on all of the nodes at the same time, issue the command:
mmchconfig enableIPv6=prepare
The next step is to restart GPFS on each of the nodes so that they can pick up the new configuration
setting. This can be done one node at a time when it is convenient. To verify that a particular node has
been refreshed, issue:
mmchconfig enableIPv6=commit
This command will only succeed when all GPFS daemons have been refreshed. Once this operation
succeeds, you can start adding new nodes with IPv6 addresses.
To convert an existing node from an IPv4 to an IPv6 interface, use one of the procedures described in
“Changing IP addresses or host names of cluster nodes” on page 899.
or
6. Ensure that the file system disks from the old GPFS cluster are properly connected, and are online and
available to be accessed from appropriate nodes of the new GPFS cluster.
7. To complete the movement of your file systems to the new cluster using the configuration file created
in Step “5” on page 903, issue one of these commands, depending on whether you are importing a
single file system or all of the file systems in the cluster:
or
mmchconfig tscTcpPort=PortNumber
When the main GPFS daemon (mmfsd) is not running on the primary and backup configuration server
nodes, a separate service (mmsdrserv) is used to provide access to the configuration data to the rest of
the nodes in the cluster. The port number used for this purpose is controlled with the mmsdrservPort
parameter. By default, mmsdrserv uses the same port number as the one assigned to the main GPFS
daemon. If you change the daemon port number, you must specify the same port number for mmsdrserv
using the following command:
mmchconfig mmsdrservPort=PortNumber
Do not change the mmsdrserv port number to a number different from that of the daemon port number.
Certain commands (mmadddisk, mmchmgr, and so on) require an additional socket to be created for the
duration of the command. The port numbers assigned to these temporary sockets are controlled with the
tscCmdPortRange configuration parameter. If an explicit range is not specified, the port number is
dynamically assigned by the operating system from the range of ephemeral port numbers. If you want to
restrict the range of ports used by IBM Spectrum Scale commands, use the mmchconfig command:
mmchconfig tscCmdPortRange=LowNumber-HighNumber
For related information, see the topic “Firewall recommendations for internal communication among
nodes” on page 908.
Table 74 on page 904 provides IBM Spectrum Scale port usage information:
Protocols TCP/IP
Source port range The source port range is chosen by the operating system
on the client side.
Is the service name/number pair in the See the IBM Spectrum Scale FAQ in IBM Knowledge
default /etc/services file shipped with AIX and Center (www.ibm.com/support/knowledgecenter/
Linux distributions? STXKQY/gpfsclustersfaq.html).
Is the service name/number pair added to /etc/ No
services by a product?
Binaries that listen on the ports /usr/lpp/mmfs/bin/mmfsd
/usr/lpp/mmfs/bin/mmsdrserv
mmchconfig tscTcpPort=PortNumber
mmchconfig mmsdrservPort=PortNumber
mmchconfig tscCmdPortRange=LowNumber-HighNumber
When is the service required? What depends on the On the IBM Spectrum Scale primary and secondary
service? cluster configuration servers, either mmsdrserv or
mmfsd needs to be running at all times to provide access
to IBM Spectrum Scale configuration data to the rest of
the cluster. On other nodes, mmfsd must be running in
order to mount a IBM Spectrum Scale file system.
Depending on the IBM Spectrum Scale configuration, a
node either has to be a member of the IBM Spectrum
Scale cluster or possess an authorized SSL key in order to
establish a connection.
When the daemon starts and its port is already in The daemon shuts down and tries to start over again.
use (for example, another resource has bound to it
Most GPFS daemon down error messages are in the
already), how does the daemon behave?
mmfs.log.previous log for the instance that failed. If the
daemon restarted, it generates a new mmfs.log.latest
log.
Begin problem determination for these errors by
examining the operating system error log. IBM Spectrum
Scale records file system or disk failures using the error
logging facility provided by the operating system: syslog
facility on Linux and errpt facility on AIX.
See the IBM Spectrum Scale: Problem Determination
Guide for further information.
Note: Ports configured for the IBM Spectrum Scale remote shell command (such as ssh) or the remote
file copy command (such as scp) and the ICMP echo command (network ping) also must be unblocked in
the firewall for IBM Spectrum Scale to function properly.
Protocol access (NFS, SMB, and Object) “Firewall recommendations for protocol access” on
page 909
IBM Spectrum Scale GUI “Firewall recommendations for IBM Spectrum
Scale GUI” on page 913
File encryption with IBM Security Key Lifecycle “Firewall recommendations for IBM SKLM” on
Manager (SKLM) page 914
Table 76. Recommended port numbers that can be used for installation
Components involved
Port Number Protocol Service Name in communication
8889 TCP Chef Intra-cluster and
installer server
10080 TCP Repository Intra-cluster and
installer server
123 UDP NTP Intra-cluster or external
depending on the NTP
server location
The port that is used during the installation (8889) can be blocked when the installation is over. You can
get the list of protocol IPs by using the mmlscluster --ces command. Use the mmlscluster
command to get the list of all internal IPs.
Chef is the underlying technology used by the installation toolkit. During installation, a Chef server is
started on the installation server, and repositories are created to store information about the various IBM
Spectrum Scale components. Each node being installed by the installation toolkit must be able to
establish a connection to the repository and the Chef server itself. Typically, the installation toolkit is run
on the intra-cluster network from a single node to all other nodes. An alternate method is available in
Table 77. Recommended port numbers that can be used for internal communication
Components that are
involved in
Port Number Protocol Service Name communication
1191 TCP GPFS Intra-cluster
22 TCP Remote shell command, Commands
such as SSH.
22 TCP Remote file copy Commands
command, such as SCP.
––- ICMP ICMP ECHO (ping). Intra-cluster
User-selected range TCP GPFS ephemeral port Intra-cluster
range
• The SSH and SCP port 22 is used for command execution and general node-to-node configuration as
well as administrative access.
• The primary GPFS daemons (mmfsd and mmsdrserv), by default, listen on port 1191. This port is
essential for basic cluster operation. The port can be changed manually by setting the mmsdrservPort
configuration variable with the mmchconfig mmsdrservPort=PortNumber command.
• The ephemeral port range of the underlying operating system is used when IBM Spectrum Scale creates
additional sockets to exchange data among nodes. This occurs while executing certain commands and
this process is dynamic based on the point in time needs of the command as well as other concurrent
cluster activities. You can define an ephemeral port range manually by setting the tscCmdPortRange
configuration variable with the mmchconfig tscCmdPortRange=LowNumber-HighNumber
command.
If the installation toolkit is used, the ephemeral port range is automatically set to 60000-61000. Firewall
ports must be opened according to the defined ephemeral port range. If commands such as mmlsmgr and
mmcrfs hang, it indicates that the ephemeral port range is improperly configured.
For related information, see the topic “IBM Spectrum Scale port usage” on page 903.
Note: NFSV3 uses the dynamic ports for NLM, MNT, and STATD services. When an NFS server is used with
the firewall, these services must be configured with static ports.
The following recommendations are applicable:
• Review your systems /etc/services file in order to select the static ports to use for MNT, NLM,
STATD, and RQUOTA services that are required by the NFSV4 server. Do not use a port that is already
• Allow all external communications on TCP and UDP port 111 by using the protocol node IPs.
• Allow all external communications on the TCP and UDP port that is specified with mmnfs config
change for MNT and NLM ports.
• Ensure that following steps are done after making any of these changes.
– Restart NFS after changing these parameters by using the following commands.
– Use rpcinfo -p to query the protocol nodes after any port changes to verify that proper ports are in
use.
– Remount any existing clients because a port change might have disrupted connections.
These ports are applicable only if keystone is hosted internally on the IBM Spectrum Scale system. The
following port usage is applicable:
• Allow all external communication requests that are coming from the admin or management network
and IBM Spectrum Scale internal IPs on port 35357.
• Allow all external communication requests that are coming from clients to IBM Spectrum Scale for
object storage on port 5000. Block all other external connections on this port.
Port usage to connect to the Postgres database for object protocol
The Postgres database server for object protocol is configured to use the following port:
It is recommended to allow connection only from Cluster node IPs (Internal IPs and Protocol node IPs) on
port 5431. Block all other communication requests on this port.
Note: The Postgres instance used by the object protocol uses port 5431. This is different from the default
port to avoid conflict with other Postgres instances that might be on the system including the instance for
IBM Spectrum Scale GUI.
Consolidated list of recommended ports that are used for installation, internal
communication, and protocol access
The following table provides a consolidated list of recommended ports and firewall rules.
Object swift-proxy- 8080 (proxy server) 5431 (Object TCP Protocol nodes
server Postgres only
35357 (keystone) TCP and UDP
instance)
keystone-all (for 11211
5000 (keystone
6200-6203 only)
postgresql-obj public)
(Object Storage)
11211
(Memcached)
All nodes of the IBM Spectrum Scale cluster must be able to communicate with the GUI nodes through
the ports 80 and 443. If multiple GUI nodes are available in a cluster, the communication among those
GUI nodes is carried out through the port 443.
Both the management GUI and IBM Spectrum Scale management API share the same ports. That is, 80
and 443. However, for APIs, the ports 443 and 80 are internally forwarded to 47443 and 47080
respectively. This is done automatically by an iptables rule that is added during the startup of the GUI and
is removed when the GUI is being stopped. The update mechanism for iptables can be disabled by setting
the variable UPDATE_IPTABLES to false, which is stored at: /etc/sysconfig/gpfsgui.
Note: The GUI cannot coexist with a web server that uses the same ports. You can change the GUI ports
to avoid any conflicts. For more information, see “IBM Spectrum Scale GUI port usage” on page 906.
The management GUI uses ZIMon to collect performance data. ZIMon collectors are normally deployed
with the management GUI and sometimes on other systems in a federated configuration. Each ZIMon
collector uses three ports, which can be configured in ZIMonCollector.cfg. The default ports are 4739,
9085, and 9084. The GUI is sending its queries on the ports 9084 and 9085 and these ports are
accessible only from the localhost. For more information on the ports used by the performance monitoring
tools, see “Firewall recommendations for Performance Monitoring tool” on page 915.
The port 4444 is accessible only from the localhost.
Table 87. Recommended port numbers that can be used for Performance Monitoring tool
Components that are
involved in
Port Number Protocol Service Name communication
4739 TCP and UDP Performance Monitoring Intra-cluster. This port
tool needs to be accessible
by all sensor nodes that
are sending
performance monitoring
data.
8123 TCP Object Metric collection Intra-cluster
8124 TCP Object Metric collection Intra-cluster
8125 UDP Object Metric collection Intra-cluster
8126 TCP Object Metric collection Intra-cluster
8127 TCP Object Metric collection Intra-cluster
Important:
• The 4739 port needs to be open when a collector is installed.
• The 9085 port needs to be open when there are two or more collectors.
• If the 9084 port is closed, accessing the collector to debug or to connect external tools or, even another
instance of the GUI, remotely is not possible, except from the node where the GUI and the collector are
installed.
Table 88. Required port number for mmbackup and HSM connectivity to IBM Spectrum Protect server
Port number Protocol Service name Components involved
in communication
1500 TCP TSM IBM Spectrum Protect
Backup-Archive client
communication with
server
For information on port requirements specific to the server end, see IBM Spectrum Protect
documentation on the IBM Knowledge Center.
Table 89. Recommended port numbers that can be used for call home
Port Number Function Protocol Host/ IP
443 Call home TCP and UDP esupport.ibm.com:
• 129.42.56.189
• 129.42.60.189
• 129.42.54.189
firewall-cmd --list-ports
firewall-cmd --get-zones
firewall-cmd --get-zone-of-interface=eth0
• Issue the following command to open port 1191 for TCP traffic.
• Issue the following command to open port 1191 for TCP traffic after reboot. Use this command to make
changes persistent.
SLES
1. Open the YaST tool by issuing the following command: yast
2. Click Security and Users > Firewall.
3. Select the Allowed Services tab and click Advanced....
4. Enter the desired port range in the from-port-start:to-port-end format and specify the
protocol (TCP or UDP). For example, enter 60000:60010 to open ports 60000 to 60010.
5. Click OK to close the Advanced dialog box.
6. Click Next and review the summary of your changes.
7. Click Finish to apply your changes.
• Issue the following command to stop and start Uncomplicated Firewall (UFW).
sudo iptables -S
sudo iptables -L
• Issue the following command to open port 1191 (GPFS) for outbound TCP traffic to internal subnet
172.31.1.0/24.
• Issue the following command to open port 445 (SMB) for outbound TCP traffic to external subnet
10.11.1.0/24 and only for adapter eth1.
• Issue the following command to open port 445 (SMB) for inbound TCP traffic to a range of CES IPs
(10.11.1.5 through 10.11.1.11) and only for adapter eth1.
sudo iptables -A INPUT -i eth1 -p tcp -m iprange --dst-range 10.11.1.5-10.11.1.11 --dport 445
-j ACCEPT
• Issue the following command to allow an internal network, eth1, to communicate with an external
network, eth0.
• [Red Hat Enterprise Linux 7.x specific] Issue the following command to open Chef port 8889 for
inbound traffic from subnet 10.18.0.0/24 on eth1 within the public zone.
• Issue the following command to save firewall rule changes to persist across a reboot.
sudo iptables-save
• Issue the following command to stop and start Uncomplicated Firewall (UFW).
For information on how CES IPs are aliased to network adapters, see “CES IP aliasing to network adapters
on protocol nodes” on page 43.
Supported web browser versions and web browser settings for GUI
To access the management GUI, you must ensure that your web browser is supported and has the
appropriate settings enabled.
The management GUI supports the following web browsers:
• Mozilla Firefox 79
• Mozilla Firefox Extended Support Release (ESR) 68
• Microsoft Edge 84
• Google Chrome 84
IBM supports higher versions of the browsers if the vendors do not remove or disable function that the
product relies upon. For browser levels higher than the versions that are certified with the product,
customer support accepts usage-related and defect-related service requests. If the support center
cannot re-create the issue, support might request the client to re-create the problem on a certified
browser version. Defects are not accepted for cosmetic differences between browsers or browser
versions that do not affect the functional behavior of the product. If a problem is identified in the product,
Accessibility features
The following list includes the major accessibility features in IBM Spectrum Scale:
• Keyboard-only operation
• Interfaces that are commonly used by screen readers
• Keys that are discernible by touch but do not activate just by touching them
• Industry-standard devices for ports and connectors
• The attachment of alternative input and output devices
IBM Knowledge Center, and its related publications, are accessibility-enabled. The accessibility features
are described in IBM Knowledge Center (www.ibm.com/support/knowledgecenter).
Keyboard navigation
This product uses standard Microsoft Windows navigation keys.
IBM Director of Licensing IBM Corporation North Castle Drive, MD-NC119 Armonk, NY 10504-1785 US
For license inquiries regarding double-byte character set (DBCS) information, contact the IBM Intellectual
Property Department in your country or send inquiries, in writing, to:
Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan Ltd. 19-21, Nihonbashi-
Hakozakicho, Chuo-ku Tokyo 103-8510, Japan
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS"
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in
certain transactions, therefore, this statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically
made to the information herein; these changes will be incorporated in new editions of the publication.
IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this
publication at any time without notice.
Any references in this information to non-IBM websites are provided for convenience only and do not in
any manner serve as an endorsement of those websites. The materials at those websites are not part of
the materials for this IBM product and use of those websites is at your own risk.
IBM may use or distribute any of the information you provide in any way it believes appropriate without
incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the
exchange of information between independently created programs and other programs (including this
one) and (ii) the mutual use of the information which has been exchanged, should contact:
IBM Director of Licensing IBM Corporation North Castle Drive, MD-NC119 Armonk, NY 10504-1785 US
Such information may be available, subject to appropriate terms and conditions, including in some cases,
payment of a fee.
The licensed program described in this document and all licensed material available for it are provided by
IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement or any
equivalent agreement between us.
The performance data discussed herein is presented as derived under specific operating conditions.
Actual results may vary.
Information concerning non-IBM products was obtained from the suppliers of those products, their
published announcements or other publicly available sources. IBM has not tested those products and
Each copy or any portion of these sample programs or any derivative work must include
a copyright notice as follows:
If you are viewing this information softcopy, the photographs and color illustrations may not appear.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business
Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be
trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at
Copyright and trademark information at www.ibm.com/legal/copytrade.shtml.
Intel is a trademark of Intel Corporation or its subsidiaries in the United States and other countries.
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or
its affiliates.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or
both.
UNIX is a registered trademark of the Open Group in the United States and other countries.
928 Notices
Applicability
These terms and conditions are in addition to any terms of use for the IBM website.
Personal use
You may reproduce these publications for your personal, noncommercial use provided that all proprietary
notices are preserved. You may not distribute, display or make derivative work of these publications, or
any portion thereof, without the express consent of IBM.
Commercial use
You may reproduce, distribute and display these publications solely within your enterprise provided that
all proprietary notices are preserved. You may not make derivative works of these publications, or
reproduce, distribute or display these publications or any portion thereof outside your enterprise, without
the express consent of IBM.
Rights
Except as expressly granted in this permission, no other permissions, licenses or rights are granted, either
express or implied, to the publications or any information, data, software or other intellectual property
contained therein.
IBM reserves the right to withdraw the permissions granted herein whenever, in its discretion, the use of
the publications is detrimental to its interest or, as determined by IBM, the above instructions are not
being properly followed.
You may not download, export or re-export this information except in full compliance with all applicable
laws and regulations, including all United States export laws and regulations.
IBM MAKES NO GUARANTEE ABOUT THE CONTENT OF THESE PUBLICATIONS. THE PUBLICATIONS ARE
PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,
AND FITNESS FOR A PARTICULAR PURPOSE.
Notices 929
930 IBM Spectrum Scale 5.1.0: Administration Guide
Glossary
This glossary provides terms and definitions for IBM Spectrum Scale.
The following cross-references are used in this glossary:
• See refers you from a nonpreferred term to the preferred term or from an abbreviation to the spelled-
out form.
• See also refers you to a related or contrasting term.
For other terms and definitions, see the IBM Terminology website (www.ibm.com/software/globalization/
terminology) (opens in new window).
B
block utilization
The measurement of the percentage of used subblocks per allocated blocks.
C
cluster
A loosely coupled collection of independent systems (nodes) organized into a network for the purpose
of sharing resources and communicating with each other. See also GPFS cluster.
cluster configuration data
The configuration data that is stored on the cluster configuration servers.
Cluster Export Services (CES) nodes
A subset of nodes configured within a cluster to provide a solution for exporting GPFS file systems by
using the Network File System (NFS), Server Message Block (SMB), and Object protocols.
cluster manager
The node that monitors node status using disk leases, detects failures, drives recovery, and selects
file system managers. The cluster manager must be a quorum node. The selection of the cluster
manager node favors the quorum-manager node with the lowest node number among the nodes that
are operating at that particular time.
Note: The cluster manager role is not moved to another node when a node with a lower node number
becomes active.
clustered watch folder
Provides a scalable and fault-tolerant method for file system activity within an IBM Spectrum Scale
file system. A clustered watch folder can watch file system activity on a fileset, inode space, or an
entire file system. Events are streamed to an external Kafka sink cluster in an easy-to-parse JSON
format. For more information, see the mmwatch command in the IBM Spectrum Scale: Command and
Programming Reference.
control data structures
Data structures needed to manage file data and metadata cached in memory. Control data structures
include hash tables and link pointers for finding cached data; lock states and tokens to implement
distributed locking; and various flags and sequence numbers to keep track of updates to the cached
data.
D
Data Management Application Program Interface (DMAPI)
The interface defined by the Open Group's XDSM standard as described in the publication System
Management: Data Storage Management (XDSM) API Common Application Environment (CAE)
Specification C429, The Open Group ISBN 1-85912-190-X.
E
ECKD
See extended count key data (ECKD).
ECKD device
See extended count key data device (ECKD device).
encryption key
A mathematical value that allows components to verify that they are in communication with the
expected server. Encryption keys are based on a public or private key pair that is created during the
installation process. See also file encryption key, master encryption key.
extended count key data (ECKD)
An extension of the count-key-data (CKD) architecture. It includes additional commands that can be
used to improve performance.
extended count key data device (ECKD device)
A disk storage device that has a data transfer rate faster than some processors can utilize and that is
connected to the processor through use of a speed matching buffer. A specialized channel program is
needed to communicate with such a device. See also fixed-block architecture disk device.
F
failback
Cluster recovery from failover following repair. See also failover.
failover
(1) The assumption of file system duties by another node when a node fails. (2) The process of
transferring all control of the ESS to a single cluster in the ESS when the other clusters in the ESS fails.
See also cluster. (3) The routing of all transactions to a second controller when the first controller fails.
See also cluster.
failure group
A collection of disks that share common access paths or adapter connections, and could all become
unavailable through a single hardware failure.
FEK
See file encryption key.
G
global snapshot
A snapshot of an entire GPFS file system.
GPFS cluster
A cluster of nodes defined as being available for use by GPFS file systems.
GPFS portability layer
The interface module that each installation must build for its specific hardware platform and Linux
distribution.
GPFS recovery log
A file that contains a record of metadata activity and exists for each node of a cluster. In the event of a
node failure, the recovery log for the failed node is replayed, restoring the file system to a consistent
state and allowing other nodes to continue working.
Glossary 933
I
ill-placed file
A file assigned to one storage pool but having some or all of its data in a different storage pool.
ill-replicated file
A file with contents that are not correctly replicated according to the desired setting for that file. This
situation occurs in the interval between a change in the file's replication settings or suspending one of
its disks, and the restripe of the file.
independent fileset
A fileset that has its own inode space.
indirect block
A block containing pointers to other blocks.
inode
The internal structure that describes the individual files in the file system. There is one inode for each
file.
inode space
A collection of inode number ranges reserved for an independent fileset, which enables more efficient
per-fileset functions.
ISKLM
IBM Security Key Lifecycle Manager. For GPFS encryption, the ISKLM is used as an RKM server to
store MEKs.
J
journaled file system (JFS)
A technology designed for high-throughput server environments, which are important for running
intranet and other high-performance e-business file servers.
junction
A special directory entry that connects a name in a directory of one fileset to the root directory of
another fileset.
K
kernel
The part of an operating system that contains programs for such tasks as input/output, management
and control of hardware, and the scheduling of user tasks.
M
master encryption key (MEK)
A key used to encrypt other keys. See also encryption key.
MEK
See master encryption key.
metadata
Data structures that contain information that is needed to access file data. Metadata includes inodes,
indirect blocks, and directories. Metadata is not accessible to user applications.
metanode
The one node per open file that is responsible for maintaining file metadata integrity. In most cases,
the node that has had the file open for the longest period of continuous time is the metanode.
mirroring
The process of writing the same data to multiple disks at the same time. The mirroring of data
protects it against data loss within the database or within the recovery log.
N
namespace
Space reserved by a file system to contain the names of its objects.
Network File System (NFS)
A protocol, developed by Sun Microsystems, Incorporated, that allows any host in a network to gain
access to another host or netgroup and their file directories.
Network Shared Disk (NSD)
A component for cluster-wide disk naming and access.
NSD volume ID
A unique 16-digit hex number that is used to identify and access all NSDs.
node
An individual operating-system image within a cluster. Depending on the way in which the computer
system is partitioned, it may contain one or more nodes.
node descriptor
A definition that indicates how GPFS uses a node. Possible functions include: manager node, client
node, quorum node, and nonquorum node.
node number
A number that is generated and maintained by GPFS as the cluster is created, and as nodes are added
to or deleted from the cluster.
node quorum
The minimum number of nodes that must be running in order for the daemon to start.
node quorum with tiebreaker disks
A form of quorum that allows GPFS to run with as little as one quorum node available, as long as there
is access to a majority of the quorum disks.
non-quorum node
A node in a cluster that is not counted for the purposes of quorum determination.
Non-Volatile Memory Express® (NVMe)
An interface specification that allows host software to communicate with non-volatile memory
storage media.
P
policy
A list of file-placement, service-class, and encryption rules that define characteristics and placement
of files. Several policies can be defined within the configuration, but only one policy set is active at one
time.
policy rule
A programming statement within a policy that defines a specific action to be performed.
pool
A group of resources with similar characteristics and attributes.
portability
The ability of a programming language to compile successfully on different operating systems without
requiring changes to the source code.
Glossary 935
primary GPFS cluster configuration server
In a GPFS cluster, the node chosen to maintain the GPFS cluster configuration data.
private IP address
A IP address used to communicate on a private network.
public IP address
A IP address used to communicate on a public network.
Q
quorum node
A node in the cluster that is counted to determine whether a quorum exists.
quota
The amount of disk space and number of inodes assigned as upper limits for a specified user, group of
users, or fileset.
quota management
The allocation of disk blocks to the other nodes writing to the file system, and comparison of the
allocated space to quota limits at regular intervals.
R
Redundant Array of Independent Disks (RAID)
A collection of two or more disk physical drives that present to the host an image of one or more
logical disk drives. In the event of a single physical device failure, the data can be read or regenerated
from the other disk drives in the array due to data redundancy.
recovery
The process of restoring access to file system data when a failure has occurred. Recovery can involve
reconstructing data or providing alternative routing through a different server.
remote key management server (RKM server)
A server that is used to store master encryption keys.
replication
The process of maintaining a defined set of data in more than one location. Replication consists of
copying designated changes for one location (a source) to another (a target) and synchronizing the
data in both locations.
RKM server
See remote key management server.
rule
A list of conditions and actions that are triggered when certain conditions are met. Conditions include
attributes about an object (file name, type or extension, dates, owner, and groups), the requesting
client, and the container name associated with the object.
S
SAN-attached
Disks that are physically attached to all nodes in the cluster using Serial Storage Architecture (SSA)
connections or using Fibre Channel switches.
Scale Out Backup and Restore (SOBAR)
A specialized mechanism for data protection against disaster only for GPFS file systems that are
managed by IBM Spectrum Protect Hierarchical Storage Management (HSM).
secondary GPFS cluster configuration server
In a GPFS cluster, the node chosen to maintain the GPFS cluster configuration data in the event that
the primary GPFS cluster configuration server fails or becomes unavailable.
Secure Hash Algorithm digest (SHA digest)
A character string used to identify a GPFS security key.
T
token management
A system for controlling file access in which each application performing a read or write operation is
granted some form of access to a specific block of file data. Token management provides data
consistency and controls conflicts. Token management has two components: the token management
server, and the token management function.
token management function
A component of token management that requests tokens from the token management server. The
token management function is located on each cluster node.
token management server
A component of token management that controls tokens relating to the operation of the file system.
The token management server is located at the file system manager node.
transparent cloud tiering (TCT)
A separately installable add-on feature of IBM Spectrum Scale that provides a native cloud storage
tier. It allows data center administrators to free up on-premise storage capacity, by moving out cooler
data to the cloud storage, thereby reducing capital and operational expenditures.
twin-tailed
A disk connected to two nodes.
Glossary 937
U
user storage pool
A storage pool containing the blocks of data that make up user files.
V
VFS
See virtual file system.
virtual file system (VFS)
A remote file system that has been mounted so that it is accessible to the local user.
virtual node (vnode)
The structure that contains information about a file system object in a virtual file system (VFS).
W
watch folder API
Provides a programming interface where a custom C program can be written that incorporates the
ability to monitor inode spaces, filesets, or directories for specific user activity-related events within
IBM Spectrum Scale file systems. For more information, a sample program is provided in the following
directory on IBM Spectrum Scale nodes: /usr/lpp/mmfs/samples/util called tswf that can be
modified according to the user's needs.
Index 939
AFM DR authorizing protocol users (continued)
Administering 871 export-level ACLs 429
Changing NFS server at secondary 133 limitations 448
Converting object ACLs
GPFS filesets to AFM DR 872 creating read ACLs 445
Converting AFM relationship to AFM DR 873 creating write ACLs 447
creating work with ACLs 439
AFM-DR relationship 871 auto recovery 704
AFM relationship auto-generated ID mappings
NFS protocol 865 Windows 615
AFM to cloud object storage automating the maintenance activities 87
downloading objects 889 automount 167
uploading objects 887 autorecovery
AFM-based DR QoS support 706
parallel data transfer configuration parameters 132 availability
appendOnly disk 226
directories 542 available write cache, highly- 893
effects 542
files 542
integrated archive manager (IAM) modes 542
B
application programs back ends, RKM 714
access patterns 56 Back-up option
applications for highly-available write cache 893 Cloud services configuration 86
apply data placement policy 663 Backing up
asynchronous mirroring Cloud data sharing database 86
IBM ESS FlashCopy 590 Cloud services configuration 86
attributes backing up a file system
adminMode 160 tuning with mmbackup 197
filesets using the GPFS policy engine 199
changing 540 using the mmbackup command 193
useNSDserver 230 backing up a fileset
audit types 857 using the mmbackup command 195
authentication backing up a temporary snapshot to the IBM Spectrum
authentication for file access Protect server 196
AD with automatic ID mapping 254 backing up file system configuration information
AD with RFC2307 ID mapping 255 using the mmbackupconfig command 200
LDAP-based authentication 262 backup
NIS-based authentication 268 file system
set up ID map range 251 SOBAR 563
authentication for object access storage pools 524
AD-based authentication 275 backup applications
external Keystone server 281 writing 200
LDAP-based authentication 278 Backup option
local authentication 273 Cloud data sharing database 86
local authentication with SSL 274 backup/restore and encryption 808
configure file user authentication 269 best practices
deleting 298 configuring AD with RFC2307 as the authentication
limitations 300 method 260
listing 294 bind user requirements 242
modifying 296 built-in functions
protocol user authentication policy rules 494
set up authentication servers 239 types
set up authentication servers date and time 499
integrating with AD server 240 extended attributes 494
integrating with Keystone Identity Service 246 numerical 499
integrating with LDAP server 241 string 497
User-defined method of authentication 289
verifying 295
authentication considerations C
NFSv4 based access 248
cache
authentication limitations 300
GPFS token system's effect on 56
authorizing protocol users
GPFS usage 54
authorize file protocol users 428
local read-only 897
authorizing object users 442, 447
Index 941
clauses (continued) Clustered NFS (CNFS) environment (continued)
WHERE 488 implementing (continued)
clean cluster shutdown 36 Linux 593
clean up files from cloud storage tier 829 load balancing 594
clones locking 594
file clones 559 monitoring 593
Cloud data sharing database network setup 594
backup option 86 setup 595
cloud data sharing service Clustered NFS environment (CNFS)
managing 852 migration to CES 610
cloud data sharing using clustered NFS subsystem
Transparent Cloud Tiering 848 using 456
cloud object storage account clustered watch 115
configuring 76 clustered watch folder 115, 116
Cloud services clusters
configure maintenance windows 87 accessing file systems 457
configuring and tuning 73 configuring 660
define 81 exporting data 679
maintenance activities 87 exporting output data 679
restore procedure 840 ingesting data 679
Cloud services (SOBAR) 835 CNFS 456
Cloud services configuration CNFS (Cluster NFS environment
back-up option 86 migration to CES 610
restore option 833 CNFS (Clustered NFS) environment
Cloud services configuration for multi-clouds and multi file administration 596
systems 81 configuration 596
Cloud services database integrity 834 failover 593
cloud storage tier implementing
creating 76 Linux 593
recall files 828 load balancing 594
cluster locking 594
changing configuration attributes 8 monitoring 593
disaster recovery 569 network setup 594
minimum release level 23 setup 595
cluster configuration attributes co-resident state migration 826
changing 8 collecting
Cluster Export Service (CES) clusters performance metrics 93
migration from CNFS 610 commands
Cluster Export Services (CES) active 163
HDFS protocol 610 chmod 416
NFS protocol 604 localityCopy 699
OBJ protocol 607 mmaddcallback 479, 513
resume 603 mmadddisk 222, 475
SMB protocol 606 mmaddnode 4, 901
suspend 603 mmapplypolicy 193, 476, 479, 501, 503, 505, 510, 513,
Cluster Export Services (CES)) 517, 521, 523, 553
address distribution 602 mmauth 21, 457, 459, 463–466, 468, 469
failover 602 mmbackup 193, 195, 197, 198, 534
IP addresses 600 mmbackupconfig 193
management 599 mmces 600, 602, 603
network configuration 600 mmchattr 179, 180, 189, 476
protocols mmchcluster 7, 900
disable 603 mmchconfig 8, 20, 21, 31, 54, 453, 454, 457, 463, 466,
enable 603 471, 599, 902
setup 599 mmchdisk 175, 189, 226, 227, 475
Cluster Export Services (CES)implementing 599 mmcheckquota 381, 392, 397, 399
cluster quorum with tiebreaker 31 mmchfileset 540
Clustered Configuration Repository (CCR) mmchfs 179, 230, 381, 396, 399, 454
failback with temporary loss 579 mmchnsd 229, 900
Clustered NFS (CNFS) environment mmchpolicy 479, 511, 512, 514–516, 708
administration 596 mmchqos 187
configuration 596 mmcrcluster 1, 457
failover 593 mmcrfileset 536
implementing mmcrfs 167, 381, 396, 419, 454, 475
Index 943
configuring and tuning (continued) data integrity
transparent cloud tiering 73, 823 IBM Spectrum Scale 570
configuring call home 143 data locality 694
configuring call home automatically 144 data locality restoration 700
configuring call home manually 144 data locality restore 693
configuring certificate-based authentication and locked data placement policy 663
vaults 103 data protection 707
configuring Cloud services 83 data recovery 834
Configuring for WORM solutions 99 data replication
configuring GPFS clusters 660 changing 180
Configuring ID mappings in Active Directory Users and data security limitations
Computers 616 data, security limitations 821
configuring ID mappings in IDMU database recovery
Windows 620 transparent cloud tiering 834
configuring Kerberos based NFS access Database workloads
prerequisites 248 configuration 678
configuring locked vaults and certificate-based tuning 678
authentication 103 DAY 499
configuring protocols DAYOFWEEK 499
IBM Spectrum Scale 460 DAYOFYEAR 499
configuring protocols on a remote cluster 460 DAYS 499
Configuring Transparent cloud tiering on a remotely mounted DAYSINMONTH 499
client 96 DAYSINYEAR 499
configuring WORM solutions 103 deactivating quota limit checking 397
considerations for changing declustered array stanza 162
range size 252 default ACL 416
the ID map range 252 default quotas 383
consistency groups DELETE rule 479, 487
IBM Spectrum Scale 570 deleting
container pairs for Transparent cloud tiering 83 a GPFS cluster 5
control file permission 416 file systems 172
Converting nodes from a GPFS cluster 5
GPFS filesets to AFM DR 872 snapshots 555
Converting AFM relationship to AFM DR 873 deleting a cloud storage account 76
create data placement policy 663 deleting a CSAP
create IBM Spectrum Scale file system and pools 662 configuring Transparent cloud tiering 80
create users 409 deleting cloud objects 830
creating deleting files
AFM relationship 868 manually 830
AFM-based DR relationship 871 deletion of data, secure 707
data and metadata vaults 102 deploy WORM on IBM Spectrum Scale 97
file clones 559 deploying
immutable fileset 97 WORM solutions 104
quota reports 400 deploying WORM solutions 103
snapshots 549 Deploying WORM solutions
Creating IBM Spectrum Scale 99
AFM to cloud object storage relationship 876 set up private key and private certificate 99
creating a container set 83 designating
Creating Cloud services 81 transparent cloud tiering node 74
creating cloud storage access points detect system changes
Transparent cloud tiering 80 use case 149
creating CSAPs Direct I/O caching policy 180
Transparent cloud tiering 80 DIRECTORIES_PLUS 484
creating data and metadata containers 83 directory server 243
creating locked vaults DirInherit 421
configuring WORM 102 disable
CURRENT_DATE 499 file audit logging 113
CURRENT_TIMESTAMP 488, 499 disabling
clustered watch 115, 116
Persistent Reserve 230
D QOS 353
data disaster recovery
multiple versions 570 establishing 570
data deletion, secure 707 GPFS replication
Index 945
external sink 115 file placement
external storage pools policies 479
callbacks File Placement Optimizer
lowDiskSpace 513 configuring 660
NO_SPACE 513 distributing data 659
defining 519 pool file placement and AFM 659
files restrictions 706
purging 523 upgrading 680
managing file placement policy
user-provided program 520 default 479
migration 519, 522 file reconciliations 828
overview 478 file replication
pre-migration 523 querying 179
recall 522 file system
requirements 478 acl 442
thresholds 513 backup
SOBAR 563
ILM policy 546, 547
F mount
FEKs 707 GUI 169
File mounting remote 463
Compression 180 permissions 665
file access 251 pools
file access frequency 527 listing 476
file access temperature 527 remote access 463
file attributes restore
SQL expressions 489 SOBAR 565
File attributes, testing for file encryption 509 restoring
file audit logging snapshot 552
administering 857 set permissions 665
configure 111 unmount
configuring 111 GUI 172
disabling 111 file system acl 442
enabling 111, 112 file system configuration information, backing up
file system 111 mmbackupconfig command 200
GUI 113 using the mmbackupconfig command 200
manage 857 file system maintenance mode 175
managing 857 file system manager
message queue 112 changing nodes 32
mmaudit 111 displaying node currently assigned 32
mmmsgqueue 111 displaying nodes 32
file authentication file system snapshots
configure user authentication 269 subset restore 208
file clones file systems
creating 559 access control lists 415
deleting 561 access from other cluster 457
listing 560 access patterns of applications 56
management 559 AIX export 453
managing disk space 561 attributes
policy files 562 changing 179
separating from parents 561 displaying 178
snapshots 561 backing up 193, 197
File encryption attribute, testing for 509 changing mount point on protocol nodes 170
file encryption keys 707 checking 173
File encryption, testing for file encryption attribute 509 disk fragmentation 191
file heat 527 exporting 452, 902
file list file exporting using NFS 451
format 520 file audit logging 113
record format 521 format changes 217
file management format number 217
policies 479 fragmentation
file permissions querying 192
control 416 granting access 465
GPFS extension 415 Linux export 452
Index 947
GPFS (continued) gpfs_quotactl() 382
administering 616 GPFS-specific
adminMode attribute 160 mount options 168
CES packages gpfs.gskit 463
deploying 48 group id
command principles 161, 162 remapping 459
configuring 53, 54, 56–60 group ID 459
configuring and tuning 76 GROUP POOL 485
configuring CES 74 group quota 403
configuring cluster 1, 48 GUI
establishing disaster recovery 570 change GUI user password 410
File Placement Optimizer 655 configure user authentication 269
installing on Windows nodes 616 create users 409
managing cluster 1 creating fileset 537
node quorum 30 creating nfs export 317
removing CES node 50 creating SMB share 306
removing protocol node 50 creating snapshot 551
shutting down cluster 36 define user permissions 409
start 35 file audit logging 113
stop 35 firewall 913
tuning 53, 54, 56–60 firewall recommendations 913
GPFS administration security 54 limitations 923
GPFS cache 454 managing quotas 403
GPFS cluster mount file system 169
adding nodes 4 port usage 906
changing the GPFS cluster configuration servers 7 resume CES node 600
creating 1 start GPFS daemon 35
deleting 5 sudo wrapper 29
deleting nodes 5 supported web browser settings 920
displaying configuration information 2 supported web browser versions 920
managing 1 supported web browsers 920
GPFS cluster configuration servers unmount file system 172
changing 7 GUI administrators 407
displaying 2 GUI port usage, IBM Spectrum Scale 906
GPFS daemon GUI user
starting 34 authentication 411
stopping 34 GUI users
GPFS file system change password 410
administering 159 GUI web server
adminMode attribute 160 managing certificates 811
GPFS policy engine security 811
using 199
GPFS replication
disaster recovery
H
configuring 573, 576 Hadoop workloads
failback configuration 677
overview 577 tuning 677
failback with permanent loss 580 handling
failback with temporary loss multiple nodes failure 692
with CCR (Clustered Configuration Repository) 579 handling node crashes 692
with configuration changes 578 HAWC 893
with no configuration changes 578 HAWC, applications 893
failover HAWC, tuning and restrictions 894
overview 576 HDFS protocol
gpfs_iclose() 200 Cluster Export Services (CES) 610
gpfs_iopen() 200 health
gpfs_iopen64() 200 transparent cloud tiering service 852
gpfs_iread() 200 Health status
gpfs_ireaddir() 200 Monitoring 149
gpfs_ireaddir64() 200 helper threads
gpfs_next_inode() 200 tuning 59
gpfs_next_inode64() 200 HEX 498
gpfs_open_inodescan() 200 Hierarchical Storage Management 478
gpfs_open_inodescan64() 200 highly available write cache 893
Index 949
IBM Spectrum Scale (continued) IBM Spectrum Scale (continued)
Create SMB shares 309 minimum release level 23
Creating SMB share 305 Modifying SMB exports 310, 312
creating storage policy 356 multi-region object deployment
data ingestion 366 adding region 337
data integrity 570 multiprotocol export considerations 322
deactivating quota limit checking 397 multiprotocol exports 322
delete disk 222 Network File System (NFS) 451
deleting node 5 NFS 452, 454
disaster recovery 582 NFS automount 455
disaster recovery solutions 591 NFS export
disconnect active connections to SMB 314 Unmount a file 455
disk availability 226 NFS export configuration 453, 456
disk status 226 node quorum 30
Disks in a GPFS cluster 221 NSD server
display GPFS disk states 226 Change server usage and failback 230
enable file-access object capability 350 objectizer 348
Enable object access 359 Persistent Reserve (PR) functionality
establish and change quotas 387 disable 230
establishing enable 230
disaster recovery 570 point in time copy 591
establishing disaster recovery 570 Protocol configuration
export file systems 452 update 641
file audit logging 111 protocols disaster recovery 623
file system quota report protocols DR 623
create 400 quotas
file systems NFS 386
AIX export 453 SMB 386
firewall ports 917, 918 reconcile files
firewall recommendations 907–909, 913, 918 using transparent cloud tier 828
GPFS access control lists (ACLs) remote login 28
manage 415 remote mounting 917
GPFS cache usage 454 Remove NFS export 319
GPFS quota management remove SMB shares 307
disable 381 removing CES node 50
enable 381 removing protocol node 50
How to manage OpenStack ACLs 330 replace disk 224
identity management modes for unified file and object Restore 372
access 343 restore quota files 401
in-place analytics 364 security mode 21
installing on Windows nodes 616 set quota 389
limitations set up objectizer service interval 352
transparent cloud tiering 855 setting up
limitations of unified file and object access 364 cache cluster 869
Linux export 452 home cluster 868
list NFS export 319 shutting down cluster 36
list quota information 394 SMB and NFS protocols 322
list SMB shares 307 SMB share configuration 306
local read-only cache 897 storage policies for objects 334
Manage default quotas 383 storage-based replication 587
manage disk 221 strict disk replication 225
manage GPFS quotas 381 sudo wrapper 26
manage GUI administrators 407 sudo wrapper scripts 28
Manage NFS exports 317, 319 synchronous write operations 455
Managing ACLs of SMB exports 311 transparent cloud tiering service
managing cloud storage tiers 823 managing 75, 852
managing cluster 1 tuning 53, 54, 56–60, 669
managing protocol data exports 305 Tuning NFS backend
managing SMB shares 305 AFM 141
managing transparent cloud tiering service 852 AFM Dr 141
Mapping OpenStack commands unified file and object access 339, 346, 349, 364
administrator commands 327 unified file and object access constraints 366
migrating files unified file and object access modes 341
using transparent cloud tiering 826 use of consistency groups 570
Index 951
integrated archive manager (IAM) modes LDAP server 241
immutability 542 LDAP user information 244
integrating LDAP-based authentication for file access
transparent cloud tiering LDAP with Kerberos 264
performance monitoring tool 93 LDAP with TLS 263
integrating transparent cloud tiering LDAP with TLS and Kerberos 266
performance monitoring tool 94 LDAP without TLS and Kerberos 267
internal communication LDAP-based authentication for object access
port numbers 908 LDAP with TLS 280
recommended port numbers 908 LDAP without TLS 279
internal communication among nodes LENGTH 498
firewall 908 level of functionality
firewall recommendations 908 minimum release level 23
firewall recommendations for 908 LIMIT 486
internal storage pools limitations
files CES NFS Linux 612
purging 523 cloud data sharing 855
managing 474 NFS protocol nodes 612
metadata 474 protocol support 462
overview 474 Limitations
system 474 of the mmuserauth service create command 260
system.log 474 link aggregation 57
user 474 linking to
IP addresses snapshots 554
CES (Cluster Export Services) 600 Linux
private 466 CES (Clustered NFS) environment 593
public 466 listing
remote access 466 disks in storage pools 477
IP addresses CNFS (Clustered Network environment) 594 file clones 560
IP addresses, changing 899 snapshots 551
listing exported files
using mmcloudmanifest tool 849
J listing files
job using transparent cloud tiering 831
mmapplypolicy lists
phase 1 501 external 525
phase 2 503 local authentication for object access 273, 274
phase 3 505 local read-only cache 897
Jumbo Frames 59 local read-only cache(LROC)
junction 530 encryption 809
local snapshots
subset restore 208, 209
K subset restore using script 210
localityCopy 699
Kafka 115
locked vault creation 99
Kerberos based NFS access configuration
locked vaults
prerequisites 248
creating 102
key cache purging, encryption 804
log files 688
key clients
lost+found directory 173
configurations 739
low-occupancy-percentage 487
key manager for Cloud services 82
LOWER 498
keys, encryption 707
LTFS
Keystone
firewall considerations 918
expired tokens 288
Keystone tokens
deleting 288 M
m4 macro processor
L policy rules 510
Management GUI
large file systems
supported web browsers 920
mmapplypolicy
managing
performance 517
a GPFS cluster 1
LDAP
filesets 536
bind user requirements 242
GPFS quotas 381
Index 953
mmlsfileset 533, 534, 538, 541 multi-region object deployment (continued)
mmlsfs 178, 225, 396, 397, 454, 471, 476 removing region 338
mmlsmgr 32 multicluster
mmlsmount 173, 471 file system access 457
mmlsnsd 221, 900 Multiple nodes failure without SGPanic 692
mmlspolicy 515 multiple versions of data
mmlsquota 394 IBM Spectrum Scale 570
mmmount 167, 168, 230, 465 Multiprotocol export considerations
mmmsgqueue NFS export 322
file audit logging 111 SMB export 322
mmnetverify
command 165
mmnfs export add command 317
N
mmnfs export change 319 Network configuration
mmnfs export load 319 CES (Cluster Export Services) 600
mmobj command Network File System (NFS)
changing Object configuration values 328 cache usage 454
mmputacl 416, 418, 419, 424, 425 exporting a GPFS file system 451
mmquotaoff 396, 397 interoperability with GPFS 451
mmquotaon 396 synchronous writes 455
mmremotecluster 457, 464, 469, 471 unmounting a file system 455
mmremotefs 230, 457, 464, 471 Network Information Server 268
mmrepquota 400 network interfaces 57
mmrestorefs 534 Network Shared Disks
mmrestripefile 476 create 661
mmrestripefs Network Shared Disks (NSDs)
completion time 164 changing configuration attributes 229
mmrpldisk 475 network switch failure 693
mmsetquota 381 nfs
mmshutdown 34, 599, 899, 900 creating 317
mmsmb NFS
list SMB shares 307 quotas 386
mmsnapdir 534 NFS automount 455
mmstartup 34, 599, 900 NFS export
mmumount 171 create NFS export 317
mmunlinkfileset 530, 538, 540 list NFS export 319
mmuserauth 239, 246, 247, 249, 260 make NFS export change 319
mmwatch NFS exports
command 115 Manage NFS exports
enable 115 GUI navigation 319
steps 115 NFS protocol
watch 115 Cluster Export Services (CES) 604
mmwatch all upgrade 116 creating an AFM relationship 863
mmwatch command 115 NFS protocol disaster recovery
MOD 499 failback steps 651
modifying file system attributes 179 failover steps 651
MONTH 500 NFS protocol DR
mount file system failback steps 651
GUI 169 failover steps 651
mount problem NFS protocol services
remote cluster 471 starting 233
mounting NFS V4 415
file systems 167 NFS V4 ACL
mounting a file system exceptions and limitations 426
an NFS exported file system 451 special names 426
multi-cluster environments NFS V4 protocol
upgrade 462 exceptions and limitations 426
multi-cluster protocol environment NFS/SMB protocol over remote cluster mounts 460
IBM Spectrum Scale 461 NFSv4 based access
multi-region object deployment authentication considerations 248
adding region 337 NIS-based authentication for file access 268
administering 338 NIST compliance 470
exporting configuration data 338 NIST compliance and encryption 808
importing configuration data 338 node classes, user-defined 161
Index 955
Page pool (continued) policy rules (continued)
InfiniBand 859 EXTERNAL POOL 522
Large 859 m4 macro processor 510
pagepool parameter overview 481
usage 54 SQL expressions in 488
parents syntax 482
file clones 561 terms 483
password tips 505
change GUI user password 410 types 482
password policy 410 policy rules, encryption 708
performance pools, external
access patterns 56 requirements 478
aggregate network interfaces 57 port usage, IBM Spectrum Scale 903
disk I/O settings 60 PR 230
mmapplypolicy 517 pre-migrating files
monitoring using mmpmon 53 cloud storage tier 826
setting maximum amount of GPFS I/O 60 pre-migration
Performance Monitoring tool overview 523
firewall 915 prefetchThreads parameter
performance tuning tuning
object services 237 on Linux nodes 59
performing use with Oracle 60
rolling upgrade 683 preparations for SOBAR 836
Persistent Reserve prerequisite
disabling 230 Kerberos-based SMB access 247
enabling 230 prerequisites
physical disk stanza 162 Kerberos based NFS access 248
physically broken disks 690 LDAP server 241
policies prerequisites and preparations for SOBAR (Cloud services)
assigning files 511 primary site 836
changing active 514 recovery site 837
creating 511 primary site preparations for SOBAR 836
default 516 principles
default storage pool 511 common to GPFS commands 161, 162
deleting 516 Procedure for SOBAR (Cloud services) 835
error checking 479 protection of data 707
external storage pools protocol data
managing 511 security 813
file management 479 protocol data security
file placement 479, 533 protocol, data security 815
installing 512 protocol node
listing 515 remove from cluster 50
overview 479 protocol nodes
policy rules 481 firewall 906
SET POOL 511 firewall recommendations 906
validating 515 protocol over remote cluster mounts 460
policies, encryption 708 protocol support on remotely mounted file system
policies, rewrapping 713 limitations 462
policy protocols
creating 546, 547 administration tasks 39, 50
policy example, encryption 712 removal tasks 39
policy files protocols access
file clones 562 CES IP aliasing 43
policy rule, ENCRYPTION IS 708 port usage 909
policy rule, SET ENCRYPTION 708 protocols data exports 305
policy rules protocols disaster recovery
built-in functions authentication configuration 651
date and time 494 authentication configuration failback 653
extended attribute 494 authentication configuration failover 652
miscellaneous 494 authentication configuration restore 653
numerical 494 backup 640
string 494 CES 654
DELETE 523 CES configuration 653
examples 505 configuration backup 640
Index 957
Red Hat Open Stack Platform 154 Restoring (continued)
Redundant Array of Independent Disks (RAID) Cloud services configuration 833
RAID5 performance 60 Restoring deleted files
REGEX 498 from cloud storage tier 832
REGEXREPLACE 498 Restoring files
remapping transparent cloud tiering 832
group id 459 restoring from local snapshots
user id 459 using the sample script 210
remote 114 restoring the locality for files
remote access with WADFG 701
AUTHONLY 468 without WADFG 700
displaying information 471 restrictions and tuning for highly-available write cache 894
encrypted file 741 restriping a file system 189
file system 463 resume CES node 600
IP addresses 466 revoking
managing 465 old certificate 104
mount problem 471 rewrapping policies 713
restrictions 471 RKM back ends 714
security keys 469 RKM server setup 714
security levels 468 rolling upgrades 683
updating 471 root authority 54
remote cluster root fileset 538, 540
displaying information 471 root squash 459
mount problem 471 root squashing 459
restrictions 471 root-level processes
updating 471 sudo wrappers 30
remote key management server setup 714 rotating
remote mounting client key 104
firewall considerations 917 rule (policy), ENCRYPTION IS 708
remotely rule (policy), SET ENCRYPTION 708
mounted 114 RULE clause
Renew certificates 782, 792 ACTION 483
repairing COMPRESS 483
file system 173 DIRECTORIES_PLUS 484
replace broken disks 703 EXCLUDE 485
replace more than one active disks 703 FOR FILESET 485
replacing disks 224, 225 FROM POOL 485
REPLICATE 486 GROUP POOL 485
REPLICATE clause 486 LIMIT 486
replication REPLICATE 486
changing 179, 180 SET POOL 486
querying 179 SHOW 487
storage pools 477 THRESHOLD 487
system storage pool 474 TO POOL 488
replication of data WEIGHT 488
IBM Spectrum Scale 571 WHEN 488
requirements WHERE 488
administering GPFS 159 rules, encryption policy 708
external pools 478
for IBM Spectrum Scale 195
requirements (setup), encryption 714
S
restarting S3 ACLs
IBM Spectrum Scale cluster 685 how to manage 330
restore S3 API
file system enabling 328
SOBAR 565 samba attributes 244
storage pools 524 Scale out back and restore procedure (Cloud services) 835
restore option Scale Out Backup and Restore 201
transparent cloud tiering 832 scale out backup and restore (SOBAR)backup 563
Restore option scale out backup and restore (SOBAR)overview 563
Cloud services configuration 833 scale out backup and restore (SOBAR)restore 565
restore procedure (using SOBAR) 840 scheduling the maintenance activities 87
restore/backup and encryption 808 script
Restoring external pool 522
Index 959
SOBAR backup prerequisites (continued) storage pools (continued)
primary site 836 files
recovery site 837 listing fileset of 476
SOBAR restore procedure listing pool of 476
Cloud services 840 listing 476
SparkWorkloads listing disks in 477
configuration 678 managing 475
tuning 678 names 475
spectrumscale 50 overview 473
SQL rebalancing 477
expressions replication 477
file attributes 489 restore 524
in policy rules 488 subroutines
SQL expressions gpfs_fgetattrs() 524
file attributes 489 gpfs_fputattrs() 524
in policy rules 488 gpfs_fputattrswithpathname() 524
SQL functions system storage pool 474
SNAP_ID 500 system.log storage pool 475
SQL functions, miscellaneous user storage pools 527
functions, miscellaneous SQL 500 storage replication
standards compliance general considerations 570
encryption 807 storage-base replication
stanza files 162, 475 synchronous mirroring 582
stanza, declustered array 162 Strict replication
stanza, NSD 162 Disk offline 225
stanza, physical disk 162 subnet 466
stanza, recovery group 162 subroutines
stanza, virtual disk 162 gpfs_iclose() 200
start CES node 600 gpfs_iopen() 200
start GPFS daemon 35 gpfs_iopen64() 200
starting gpfs_iread() 200
Cloud services 75 gpfs_ireaddir() 200
transparent cloud tiering service 75 gpfs_ireaddir64() 200
starting and stopping ibmobjectizer 351 gpfs_next_inode() 200
starting GPFS gpfs_next_inode64() 200
before starting 34 gpfs_open_inodescan() 200
status gpfs_open_inodescan64() 200
disk 226 gpfs_quotactl() 382
steps for SOBAR in Cloud services 835 SUBSTR 498
stop CES node 600 SUBSTRING 499
stop GPFS daemon 35 sudo wrapper 26
stopping sudo wrapper scripts
transparent cloud tiering service 852 configuring on existing cluster 28
stopping GPFS 34 configuring on new cluster 28
storage sudo wrappers
partitioning 473 root-level processes 30
storage management suspend CES node 600
automating 473 swap space 58
tiered 473 swift workers
storage policies 334–336 tuning 237
storage policies for object synchronous mirroring
administering 334 GPFS replication 571
compression 335 using storage-base replication 582
encryption 336 syntax
mapping to filesets 334 policy rules 482
storage pools system storage pool
backup 524 deleting 476
creating 475 highly reliable disks 474
deleting 476 replication 474
disk assignment system.log pool
changing 475 deleting 476
external system.log storage pool
working with 518 definition 475
file assignment 476
Index 961
user ID 459
user quota 403
user storage pool
deleting 476
user storage pools
access temperature 527
data blocks 527
user-defined node classes 161
user-provided program
external storage pools 520
users
change password 410
using a clustered NFS subsystem 456
using highly-available write cache 894
using protocol over remotely mounted file system 460
using the GPFS policy engine 199
V
validation of descriptors on disk dynamically 175
VARCHAR 499
vfs_fruit support
SMB protocol 234
virtual disk stanza 162
Vormetric DSM
firewall recommendations 915
W
warning
certificate expiration 779
WEEK 500
WEIGHT 488
WHEN 488
WHERE 488
Windows
auto-generated ID mappings 615
Configuring ID mappings in Active Directory Users and
Computers 616
configuring ID mappings in IDMU 620
identity management 615
IDMU installation 619
installing IDMU 619
worker1Threads parameter
tuning
on Linux nodes 59
use with Oracle 60
WORM solution
deploying 97
WORM solutions
deploying 102
deployment 97
set up Transparent cloud tiering 99
write cache, highly available 893
write file permission 415
write once read many
solutions 97
Y
YEAR 500
SC28-3162-02