VSAM Striping

VSAM striping can be used to improve the performance of datasets that cannot cope with the IO rate from a single volume. Striping means that each control interval in the file is written to another disk, so the dataset is spread evenly over several volumes. True striping is considered to improve sequential performance. RAID disks stripe datasets over physical volumes at hardware level, but this still appears as one logical volume to z/OS, and z/Os used to schedule one IO at a time to it. PAV aliases fixed that problem as they permit multiple concurrent IOs to one logical volume, so maybe striping is not as useful as it was. Be aware that if you use PAV, VSAM striping may not improve performance, and when a striped dataset runs out of space, it is much more difficult to fix. However, if you want striping, this is how you do it.

   EADM Advert

Accelerate DB2 Write with zHyperWrite and "EADM™ by Improving DB2 Logs Volumes Response Time:

Striping will only work for VSAM files that are allocated in Extended Format. To do this, the dataset must be SMS managed and be allocated with a dataclass that has a 'Data Set Name Type' of 'EXT'. Striping is not supported for Alternate Indexes or VSAM files using RLS.
You specify that you want striping on a Storage Class. There are two different ways to do this, using Sustained Data Rate (SDR) or Guaranteed Space with an SDR greater than 0.

SDR: within the storage class definition set the 'Sustained Data Rate' parameter to a value that should be a multiple of four. The system assumes that each stripe runs at 4MB/s so it divides that number by four to determine the number of stripes to use. For example, if you set SDR to 16, the system allocates 4 stripes (assuming you use 3390 format disks).

Guaranteed Space: If you set SDR > 0 and set the Guaranteed Space parameter to 'Y' then the system will use as many stripes as the number of volumes or units that you specify in your dataset allocation. VOLUMES(* * * *) or UNIT=(3390,4) should both allocate four stripes.
Note that SMS may allocate fewer stripes if it does not have enough volumes with the right characteristics to support your request.


If you define a storageclass called 'STRIPED', then to allocated a striped file, you either code STORCLAS(STRIPED) in your IDCAMS allocation, or pick a dataset pattern and put a clause in your STORCLAS ACS routine so datasets matching that pattern get the STRIPED storage class. To convert a file to striped, rename the old file and all its components, re-allocate the original file with a STRIPED storage class, then IDCAMS REPRO the data from the old file to the new one.

SPACE Calculations

With the SDR allocation method the system will adjust your primary allocation so the primary space on each volume adds up to the total space that you specified. For example, if your primary allocation was 200 Cyls. and you have five stripes, the primary on each disk will be 200/5 = 40 Cylinders and the total will be 200 cylinders.

With the Gspace method, the system will allocate your primary space on each volume, so if you specify a primary of 200 cyls. and a strip count of five, then the system will allocate 200 cylinders on each of five volumes, giving a total initial allocation of one thousand cylinders.

When a striped file needs to extend past its initial allocation, the system will always add secondary capacity to every striped volume, but uses your secondary allocation divided by the stripe count to determine how much space to add to each volume.

Maximum striped dataset size

Every stripe in a striped file can go to 255 extents with 123 extents on a single volume. The maximum number of stripes is 16, so the maximum number of extents is 4080.

A stripe can go multi-volume, but the process is a bit complicated.
The stripes on a file that is allocated with the Gspace method cannot go multi-volume as you cannot specify candidate volumes. If you code VOLUMES(* * * * * *) in your allocation you get 6 stripes
With an SDR allocated file, if you set SDR to 12, then you get 3 stripes. If you then code VOLUMES(* * * * * *) in your allocation, you get 3 stripes and three candidate volumes, so when a volume fills up, or the stripe goes to 123 extents, it will extend onto another volume.

The CA size calculation changes for striped files too as the CA size must be a multiple of the strip count. For example, the maximum CA size is 16 tracks as the CA can span onto each stripe.

How can you tell if a file is allocated as striped? Run a LISTCAT against it and look for a STRIPE COUNT parameter. If this is greater than 1 then the file is striped.

back to top