Linux Clusters Institute:�Storage Scale
J.D. Maloney | Lead HPC Storage Engineer
Storage Enabling Technologies Group (SET)
National Center for Supercomputing Applications (NCSA)
malone12@illinois.edu
Mississippi State, October 21st – 25th 2023
Storage Scale (GPFS) Overview
highly reliable disks presented by redundant controllers
2
August 21 – 25, 2023
Quick History of Storage Scale
3
August 21 – 25, 2023
4
August 21 – 25, 2023
Image Credit: spectrumscale.org
Stand Out Storage Scale Features
5
August 21 – 25, 2023
Stand Out Storage Scale Features
6
August 21 – 25, 2023
Stand Out Storage Scale Features
7
August 21 – 25, 2023
Storage Scale Weaknesses
8
August 21 – 25, 2023
Storage Scale Appliances
9
August 21 – 25, 2023
IBM/Lenovo
Dell
HPE
Storage Scale Hardware
10
August 21 – 25, 2023
Storage Scale Concepts
11
August 21 – 25, 2023
Key Definitions
12
August 21 – 25, 2023
Scaling Out
13
August 21 – 25, 2023
Cluster vs Scatter
14
August 21 – 25, 2023
Storage Scale NSD Server
15
August 21 – 25, 2023
Storage Scale Architecture
16
August 21 – 25, 2023
Image Credit: ibm.com
File Sets
17
August 21 – 25, 2023
Storage Scale Tuning
18
August 21 – 25, 2023
Tuning Parameters
19
August 21 – 25, 2023
Tuning Parameters
20
August 21 – 25, 2023
File System Block Size
21
August 21 – 25, 2023
Tuning Parameters
Tuning Parameters
Page Pool
22
August 21 – 25, 2023
Tuning Parameters
maxMBpS
23
August 21 – 25, 2023
Tuning Parameters
maxFilesToCache
24
August 21 – 25, 2023
Tuning Parameters
maxStatCache
25
August 21 – 25, 2023
Tuning Parameters
nsdMaxWorkerThreads
26
August 21 – 25, 2023
Storage Scale Node Classes
27
August 21 – 25, 2023
GPFS Node Classes
28
August 21 – 25, 2023
29
Creating a Node Class
# mmcrnodeclass
mmcrnodeclass: Missing arguments.
Usage:
mmcrnodeclass ClassName -N {Node[,Node...] | NodeFile | NodeClass}
# mmcrnodeclass coreio -N ss-demo1.local,ss-demo2.local
mmcrnodeclass: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
30
August 21 – 25, 2023
List of Node Classes
# mmlsnodeclass
Node Class Name Members
--------------------- -----------------------------------------------------------
coreio ss-demo1.local,ss-demo2.local
#
31
August 21 – 25, 2023
Storage Scale Snapshots
32
August 21 – 25, 2023
What Is A Snapshot
33
August 21 – 25, 2023
What Is A Snapshot
34
August 21 – 25, 2023
Snapshot Types
File System Snapshot
Fileset Snapshot
35
August 21 – 25, 2023
Snapshot Storage
Place a link in all directories:
# mmsnapdir fs0 –a
Undo the link above:
# mmsnapdir fs0 -r
36
August 21 – 25, 2023
Snapshot Creation
# mmcrsnapshot fs0 fs0_20190411_0001
Flushing dirty data for snapshot :fs0_20190411_0001...
Quiescing all file system operations.
Snapshot :fs0_20190411_0001 created with id 1.
37
August 21 – 25, 2023
# mmcrsnapshot fs0 home:fs0_home_20190411_0612 -j home
Flushing dirty data for snapshot home:fs0_home_20190411_0612...
Quiescing all file system operations.
Snapshot home:fs0_home_20190411_0612 created with id 2.
Listing Snapshots
Listing the snapshots for fs0 now shows a snapshot of the home fileset.
# mmlssnapshot fs0
Snapshots in file system fs0:
Directory SnapId Status Created Fileset
fs0_20170718_0001 1 Valid Mon Jul 24 11:08:13 2017
fs0_home_20170724_0612 2 Valid Mon Jul 24 11:12:20 2017 home
38
August 21 – 25, 2023
Snapshot Deletion
# mmdelsnapshot fs0 fs0_20170718_0001
Invalidating snapshot files in :fs0_20170718_0001...
Deleting files in snapshot :fs0_20170718_0001...
100.00 % complete on Mon Jul 24 11:17:52 2017 ( 502784 inodes with total 1 MB data processed)
Invalidating snapshot files in :fs0_20170718_0001/F/...
Delete snapshot :fs0_20170718_0001 successful.
39
August 21 – 25, 2023
# mmdelsnapshot fs0 home:fs0_home_20170724_0612 -j home
Invalidating snapshot files in home:fs0_home_20170724_0612...
Deleting files in snapshot home:fs0_home_20170724_0612...
100.00 % complete on Mon Jul 24 11:25:56 2017 ( 100096 inodes with total 0 MB data processed)
Invalidating snapshot files in home:fs0_home_20170724_0612/F/...
Delete snapshot home:fs0_home_20170724_0612 successful.
File Level Restore from Snapshot
40
August 21 – 25, 2023
Snapshot Restore Utility
# mmsnaprest -h
GPFS Restore From Snapshot
Please note: This utility uses rsync style processing for directories. If
you are unsure of how that matching works, you may want to play
with it in a test area. There are examples in the EXAMPLES
section of this help screen.
Usage: mmsnaprest [-D|--debug] [-u|--usage] [-v|--verbose] [-h|--help]
[--dry-run] [-ls SOURGE] [-s SOURCE -t TARGET]
41
August 21 – 25, 2023
Snapshot Automation
42
August 21 – 25, 2023
Snapshot Configuration File: .snapcfg
The configuration file always must reside in the root top level directory of the file system.
# cat .snapcfg
[DEFAULT]
Active=False
SnapType=Fileset
Versions=30
Frequency=daily
[home]
Active=True
[projects]
Active=True
Versions=7
[software]
Active=True
Frequency=weekly
Versions=14
#
43
August 21 – 25, 2023
From this example, the default is for fileset snapshots, running daily, keeping 30 versions. The default action is to NOT take snapshots. So, if you want a snapshot, you must turn it on for each fileset individually.
The .snapcfg section name must be the same as the fileset name. Each section will inherit the DEFAULT section and then override it with the local values. Here is the breakdown for this file:
Storage Scale Cluster Export Services
44
August 21 – 25, 2023
CES – Cluster Export Services
High availability
45
August 21 – 25, 2023
CES – Cluster Export Services
Monitoring
Protocol support
46
August 21 – 25, 2023
Common CES Commands
47
August 21 – 25, 2023
Storage Scale Policy Engine
48
August 21 – 25, 2023
Policy Engine
49
August 21 – 25, 2023
Example Policy Run #1
# cat rules.txt
RULE 'listall' list 'all-files'
SHOW( varchar(kb_allocated) || ' ' || varchar(file_size) || ' ' || varchar(user_id) || ' ' || fileset_name )
WHERE PATH_NAME LIKE '/fs0/projects/%'
50
August 21 – 25, 2023
Example Policy Run #1
Sample output from a policy run:
# mmapplypolicy fs0 -f /fs0/tmp/ -P rules.txt -I defer
[I] GPFS Current Data Pool Utilization in KB and %
Pool_Name KB_Occupied KB_Total Percent_Occupied
archive 131072 41934848 0.312561047%
data 192512 41934848 0.459074038%
system 0 0 0.000000000% (no user data)
[I] 4422 of 502784 inodes used: 0.879503%.
[W] Attention: In RULE 'listall' LIST name 'all-files' appears but there is no corresponding "EXTERNAL LIST 'all-files' EXEC ... OPTS ..." rule to specify a program to process the matching files.
[I] Loaded policy rules from rules.txt.
Evaluating policy rules with CURRENT_TIMESTAMP = 2017-07-25@15:34:38 UTC
Parsed 1 policy rules.
RULE 'listall' list 'all-files'
SHOW( varchar(kb_allocated) || ' ' || varchar(file_size) || ' ' || varchar(user_id) || ' ' || fileset_name )
WHERE PATH_NAME LIKE '/fs0/projects/%'
[I] 2017-07-25@15:34:39.041 Directory entries scanned: 385.
[I] Directories scan: 362 files, 23 directories, 0 other objects, 0 'skipped' files and/or errors.
[I] 2017-07-25@15:34:39.043 Sorting 385 file list records.
[I] Inodes scan: 362 files, 23 directories, 0 other objects, 0 'skipped' files and/or errors.
51
August 21 – 25, 2023
Example Policy Run #1
Sample output from a policy run (continued):
[I] 2017-07-25@15:34:40.954 Policy evaluation. 385 files scanned.
[I] 2017-07-25@15:34:40.956 Sorting 360 candidate file list records.
[I] 2017-07-25@15:34:41.024 Choosing candidate files. 360 records scanned.
[I] Summary of Rule Applicability and File Choices:
Rule# Hit_Cnt KB_Hit Chosen KB_Chosen KB_Ill Rule
0 360 61184 360 61184 0 RULE 'listall' LIST 'all-files' SHOW(.) WHERE(.)
[I] Filesystem objects with no applicable rules: 25.
[I] GPFS Policy Decisions and File Choice Totals:
Chose to list 61184KB: 360 of 360 candidates;
Predicted Data Pool Utilization in KB and %:
Pool_Name KB_Occupied KB_Total Percent_Occupied
archive 131072 41934848 0.312561047%
data 192512 41934848 0.459074038%
system 0 0 0.000000000% (no user data)
[I] 2017-07-25@15:34:41.027 Policy execution. 0 files dispatched.
[I] A total of 0 files have been migrated, deleted or processed by an EXTERNAL EXEC/script;
0 'skipped' files and/or errors.
#
52
August 21 – 25, 2023
Example Policy Run #1
Sample output from a policy run:
]# wc -l /fs0/tmp/list.all-files
360 /fs0/tmp/list.all-files
# head -n 10 /fs0/tmp/list.all-files
402432 374745509 0 3584 1741146 0 projects -- /fs0/projects/dar-2.4.1.tar.gz
402434 229033036 0 0 1217 1000 projects -- /fs0/projects/dar-2.4.1/README
402435 825781038 0 256 43668 1000 projects -- /fs0/projects/dar-2.4.1/config.guess
402436 1733958940 0 256 18343 1000 projects -- /fs0/projects/dar-2.4.1/config.rpath
402437 37654404 0 0 371 1000 projects -- /fs0/projects/dar-2.4.1/INSTALL
402438 1471382967 0 0 435 1000 projects -- /fs0/projects/dar-2.4.1/TODO
402440 398210967 0 0 376 1000 projects -- /fs0/projects/dar-2.4.1/misc/batch_cygwin
402441 292549403 0 0 738 1000 projects -- /fs0/projects/dar-2.4.1/misc/README
402442 1788675584 0 256 3996 1000 projects -- /fs0/projects/dar-2.4.1/misc/dar_ea.rpm.proto
402443 637382920 0 256 4025 1000 projects -- /fs0/projects/dar-2.4.1/misc/dar64_ea.rpm.proto
#
53
August 21 – 25, 2023
Example Policy Run #2
RULE 'purge_30days' DELETE
FOR FILESET ('scratch')
WHERE CURRENT_TIMESTAMP - MODIFICATION_TIME > INTERVAL '30' DAYS and
CURRENT_TIMESTAMP - CREATION_TIME > INTERVAL '30' DAYS and
CURRENT_TIMESTAMP - ACCESS_TIME > INTERVAL '30' DAYS and
PATH_NAME LIKE '/gpfs/iccp/scratch/%'
54
August 21 – 25, 2023
Example Policy Run #2
Sample output from a policy run:
[I] GPFS Current Data Pool Utilization in KB and %
Pool_Name KB_Occupied KB_Total Percent_Occupied
data 1006608482304 2621272227840 38.401523948%
system 0 0 0.000000000% (no user data)
[I] 378536926 of 689864704 inodes used: 54.871183%.
[I] Loaded policy rules from scratch.purge.policy.
Evaluating policy rules with CURRENT_TIMESTAMP = 2019-04-12@16:00:02 UTC
Parsed 1 policy rules.
RULE 'purge_30days' DELETE
FOR FILESET ('scratch')
WHERE CURRENT_TIMESTAMP - MODIFICATION_TIME > INTERVAL '30' DAYS and
CURRENT_TIMESTAMP - CREATION_TIME > INTERVAL '30' DAYS and
CURRENT_TIMESTAMP - ACCESS_TIME > INTERVAL '30' DAYS and
PATH_NAME LIKE '/gpfs/iccp/scratch/%'
[I] 2019-04-12@16:00:04.045 Directory entries scanned: 0.
[I] 2019-04-12@16:00:19.026 Directory entries scanned: 1376623.
[I] 2019-04-12@16:00:34.027 Directory entries scanned: 1376623.
[I] 2019-04-12@16:00:37.104 Directory entries scanned: 8576323.
[I] Directories scan: 4132091 files, 3713818 directories, 730414 other objects, 0 'skipped' files and/or errors.
55
August 21 – 25, 2023
Example Policy Run #2
Sample output from a policy run (continued):
[I] 2019-04-12@16:00:37.145 Parallel-piped sort and policy evaluation. 0 files scanned.
[I] 2019-04-12@16:00:42.975 Parallel-piped sort and policy evaluation. 8576323 files scanned.
[I] 2019-04-12@16:00:43.523 Piped sorting and candidate file choosing. 0 records scanned.
[I] 2019-04-12@16:00:43.647 Piped sorting and candidate file choosing. 90047 records scanned.
[I] Summary of Rule Applicability and File Choices:
Rule# Hit_Cnt KB_Hit Chosen KB_Chosen KB_Ill Rule
0 90047 1078304928 90047 1078304928 0 RULE 'purge_30days' DELETE FOR FILESET(.) WHERE(.)
[I] Filesystem objects with no applicable rules: 8486148.
[I] GPFS Policy Decisions and File Choice Totals:
Chose to delete 1078304928KB: 90047 of 90047 candidates;
Predicted Data Pool Utilization in KB and %:
Pool_Name KB_Occupied KB_Total Percent_Occupied
data 1005533405024 2621272227840 38.360510379%
system 0 0 0.000000000% (no user data)
[I] 2019-04-12@16:00:43.732 Policy execution. 0 files dispatched.
[I] 2019-04-12@16:00:49.027 Policy execution. 65886 files dispatched.
[I] 2019-04-12@16:00:51.069 Policy execution. 90047 files dispatched.
[I] A total of 90047 files have been migrated, deleted or processed by an EXTERNAL EXEC/script;
0 'skipped' files and/or errors.
56
August 21 – 25, 2023
Storage Scale Storage Pools & File Placement
57
August 21 – 25, 2023
Storage Pools
58
August 21 – 25, 2023
Example Storage Pool Configuration
Flash Tier
Capacity Tier
59
August 21 – 25, 2023
Information Lifecycle Management
60
August 21 – 25, 2023
61
August 21 – 25, 2023
Information Lifecycle Management
Storage Tiering
62
August 21 – 25, 2023
Using Tiered Storage
63
August 21 – 25, 2023
Tiered Storage: Example Config
64
August 21 – 25, 2023
%nsd:
nsd=nvme01
usage=metadataOnly
pool=system
%nsd:
nsd=nvme02
usage=metadataOnly
pool=system
Flash Metadata Pool
%nsd:
nsd=sata01
usage=dataOnly
pool=data
%nsd:
nsd=sata02
usage=dataOnly
pool=data
Bulk Data Pool
%nsd:
nsd=sas01
usage=dataOnly
pool=hippa
%nsd:
nsd=sas02
usage=dataOnly
pool=hippa
Encrypted Data Pool
File Placement Policies
# cat policy
rule 'default' set pool 'data'
65
August 21 – 25, 2023
Installing File Placement Policies
# Usage: mmchpolicy Device PolicyFilename
[-t DescriptiveName] [-I {yes|test}]
66
August 21 – 25, 2023
Test the policy before installing it is good practice!
# mmchpolicy fs0 policy -I test
Validated policy 'policy': Parsed 1 policy rules.
No errors on the policy, so lets install it:
# mmchpolicy fs0 policy
Validated policy 'policy': Parsed 1 policy rules.
Policy `policy' installed and broadcast to all nodes.
Viewing Installed Policies
# Usage: mmlspolicy Device
List the file placement policies:
# mmlspolicy fs0
Policy for file system '/dev/fs0':
Installed by root@ss-demo1.os.ncsa.edu on Fri Apr 12 09:26:10 2019.
First line of policy 'policy' is:
rule 'default' set pool 'data'
67
August 21 – 25, 2023
Verify prior policy installed successfully:
Storage Scale Monitoring
68
August 21 – 25, 2023
Monitoring with mmpmon
69
August 21 – 25, 2023
Monitoring with mmpmon
70
August 21 – 25, 2023
Sample output from mmpmon (human readable)
Monitoring with mmpmon
71
August 21 – 25, 2023
Other Storage Scale Monitoring
72
August 21 – 25, 2023
Resources
73
October 24 – 28, 2022
Acknowledgements
74
August 21 – 25, 2023
Questions
75
August 21 – 25, 2023