Mainframe Path Start learning free
Applied10 min readLesson 1 of 3

DFSMS components and SMS constructs

DFSMS is the family of z/OS components that decides where datasets live, how long they are kept and how they are backed up. The Storage Management Subsystem (SMS) applies site policy automatically through classes, storage groups and ACS routines, so users do not have to pick disk volumes themselves.

Why storage management exists

A large z/OS system may have thousands of disk volumes, tens of thousands of tape cartridges and millions of datasets. In the early days, every job had to name the volume its new dataset should go on, and every team kept its own rules for backup and clean-up. That did not scale. DFSMS (Data Facility Storage Management Subsystem) moves those decisions out of individual jobs and into central policy owned by the storage administrators.

The idea is simple: a user asks for a dataset; the system decides what shape it gets, how well it should perform, how it is looked after and which pool of volumes it lands in. If the policy changes, every new dataset follows the new rules without anyone editing JCL.

The DFSMS components

ComponentWhat it doesYou meet it when
DFSMSdfpThe base: allocation, catalogs, VTOCs, access methods, and the SMS policy engine itselfAny dataset is created, opened or catalogued
DFSMSdssCopies, dumps, restores, moves and defragments data at dataset or volume level (program ADRDSSU)Volume migrations, full-volume dumps, bulk copies
DFSMShsmHierarchical storage management: migrates unused data to cheaper storage, recalls it on demand, takes backupsA dataset shows as migrated, or you need yesterday's copy
DFSMSrmmRemovable media manager: tracks tape volumes, their contents, retention and scratch statusTape retention, vaulting and scratch pools
DFSMStvsTransactional VSAM: lets batch share VSAM RLS data with commit and backoutBatch updates VSAM files that CICS also uses

dfp is part of the base operating system. dss, hsm, rmm and tvs are optional, separately priced features, so a given site may use another vendor's product in some roles, for example Broadcom CA 1 instead of DFSMSrmm for tape management.

The four SMS constructs

SMS describes policy with three classes and one group. Each is a named definition created by the storage team, usually through ISMF (the Interactive Storage Management Facility, an ISPF dialog).

What each SMS construct answers
Data class
What does the dataset look like?RECFM, LRECL, space, VSAM attributesDataset type such as extended format or PDSE
Storage class
How should it perform and how available?Assigning one makes the dataset SMS-managedNo storage class means not SMS-managed
Management class
How is it looked after over time?Expiry, migration age, backup frequency and versionsRelease of unused space
Storage group
Where does it physically go?A pool of volumes treated as oneHas space thresholds and volume status

Storage groups come in types. The ones you will hear about most are pool groups (ordinary disk volumes), tape groups (tape libraries), VIO (temporary datasets held in memory-backed paging space) and dummy groups (used for special cases such as handling old JCL that names specific volumes). Each pool group has a high threshold and low threshold: the high value steers new allocations away from volumes that are filling up, and DFSMShsm uses both when deciding how much data to migrate.

ACS routines: policy as code

ACS routines (Automatic Class Selection) are short programs, written in a simple filtering language, that run when a new dataset is allocated. They look at facts such as the dataset name, its high-level qualifier, the job name, the requested size and the environment, then assign the constructs in a fixed order.

ACS routines run in order during allocation
Data classalways runs
Storage classnull = not SMS
Management classonly if SMS-managed
Storage grouppicks the pool
Reading a storage class ACS routine (illustrative)What it means
PROC STORCLAS
Start of the storage class routine
FILTLIST PRODDB INCLUDE(PROD.DB2.**)
A named list of dataset name patterns
WHEN (&DSN = &PRODDB)
Tests the read-only variable holding the dataset name against the list
SET &STORCLAS = 'SCFAST'
Assigns a storage class, which makes the dataset SMS-managed
OTHERWISE SET &STORCLAS = 'SCSTD'
Default for everything else

The routines and the construct definitions are kept in a Source Control Data Set (SCDS). After the storage team edits them, they translate and validate the routines, then activate the SCDS, which copies it into the Active Control Data Set (ACDS) that every system in the sysplex uses. A COMMDS (communications dataset) keeps the systems in step. Activation can be done from ISMF or with the SETSMS SCDS(dsname) operator command, and is always a change-controlled action.

Rules worth remembering

Common mistakes

Hard-coding volume serials in JCL

For SMS-managed data the storage group chooses the volume. Unless the storage class allows guaranteed space, coding VOL=SER either gets ignored or fails. Let SMS place the data and refer to it by its catalogued name.

Assuming your DATACLAS or STORCLAS was used

ACS routines can override what the JCL asks for. Check the dataset's actual constructs in ISPF 3.4 or with LISTCAT before assuming.

Treating an ACS change as a small edit

One wrong WHEN clause can send production data to the wrong pool or make it non-SMS-managed. ACS changes need testing (ISMF has a test facility) and change control.

What you will see at work

Key terms

Check your understanding.
Take this lesson's quiz and save your progress. Free.

Take the lesson quiz
DFSMShsm, tape and virtual tape →