Moving Least-Recently Accessed Cartridges from Active LSMs

When ACSLS dismounts a cartridge from a tape drive, it attempts to avoid pass-thru by “floating" cartridges that came from other LSMs to a new home cell in the same LSM as the tape drive.

For example, if a cartridge is mounted from SL8500 library 3, rail 2 (LSM 9) to a drive in library 1, rail 4 (LSM 3), this requires two horizontal pass-thrus and an elevator pass-thru. When ACSLS dismounts the cartridge, it tries to find a new home cell in LSM 4 and avoid any pass-thru on the dismount.

Problem:

It is impossible to float cartridges to an LSM if there are no free (unassigned) storage cells in the LSM. If there are no free cells in the tape drives' LSM, ACSLS still tries to dismount the cartridge to the closest LSM to the drive, but this requires at least one pass-thru.

Solution:

Identify cartridges that have not been accessed in a long time, and move them out of full LSMs to provide free cells to which cartridges can float to on a dismount.

In the information that ACSLS records about cartridges, the access_date is updated whenever a cartridge is mounted or dismounted, entered, or moved. The access_date can be used to identify those cartridges that are not active

This whole process is safe, as you are only moving volumes within the same ACS and are not doing anything which would prevent future mounts of these cartridges, such as ejecting cartridges or changing their status.

To identify and move least-recently used cartridges, follow the procedure below:

  • Identify the LSMs with too few free cells and the LSMs with empty cells.

  • Select the cartridges in an LSM by earliest access date.

  • Move the cartridges from full LSMs to LSMs with empty cells.

Identify the LSMs with too Few Free Cells and LSMs with Empty Cells

Using cmd_proc:

query lsm all

The Free Cell Count column lets you identify both LSMs with few or no free cells, and LSMs that have empty cells where you can move inactive cartridges.

Example:

ACSSA> query lsm all 
2011-08-29 18:15:45        LSM Status 
Identifier  State  Free Cell  Audit  Mount  Dismount   Enter   Eject 
                   Count      C/P    C/P     C/P       C/P     C/P 
1,0        online   1         0/0    3/0     3/0       0/0     0/0 
1,1        online   1         0/0    4/0     5/0       0/0     0/0 
1,2        online   1         0/0    3/0     3/0       0/0     0/0 
1,3        online   0         0/0    4/0     5/0       0/0     0/0 
1,4        online   388       0/0   11/0     1/0       0/0     0/0 
1,5        online   162       0/0    4/0     5/0       0/0     0/0 
1,6        online   552       0,0    7/0     2/0       0/0     0/0 
1,7        online   601       0/0    5/0     3/0       0/0     0/0 

Review Cartridges in an LSM by Access Date

You now need to identify inactive cartridges that you can move to other LSMs in the ACS.

Ensure Access Date is Reported for Easy Sorting

Ensure that the access date is reported in a manner conducive to sorting. The format that dates are reported is controlled by the TIME_FORMAT dynamic variable.

  • Use the default format: TIME_FORMAT=%Y-%m-%d %H:%M:%S. so cartridges can easily be sorted by access date. At the UNIX command prompt, enter:

    dv_config -p TIME_FORMAT 

    Enter ? at the variable prompt to display help.

  • If you have made changes, update the dynamic variable in the shared memory:

    dv_config -p TIME_FORMAT -u 

Look at the Distribution of Last Access Dates for Cartridges in an LSM

For each LSM without sufficient free cells, list the cartridges sorted by the last access date. You need a custom volrpt that only selects the VOLID and access_date.

For complete details, see the comment header in:

$ACS_HOME/data/external/volrpt/owner_id.volrpt  

The fields on a line are field_name, field_length, and delimiter_length (spaces after the field).

In the following example, there are two active lines. You probably have 6-character VOLUME_IDs. For the ACCESS_DATE, you want only the date portion, not the time.

VOLUME_ID        6     2 
ACCESS_DATE     10     2 

To create the report:

  1. Type: $cd ACS_HOME/data/external/volrpt.
  2. Copy owner_id.volrpt and save it to a file, such as access_date.volrpt

    See Creating a Logging Volume Statistics Report.

  3. Use a text editor to edit for ACCESS_DATE.
  4. Create a sorted list of cartridges for an LSM.
    volrpt -l <lsm_id> -d -f access_date.volrpt | sort -k 2,2 -0 vols_sorted_lsm_##

    Where access_date.volrpt is the name of the custom report and ## is the LSM number.

    Look at the vols_sorted_lsm_## file to see the distribution of last access dates in each LSM.

Move the cartridges from Full LSMs to LSMs with Empty Cells

You now need to create lists of cartridges to move, and move them to LSMs with free space.

Create Lists of Cartridges to Move

  1. Take the file with the list of cartridges sorted by access date and remove the access date so you just have a list of cartridges.

    cat vols_sorted_LSM_## | cut –d" “ –f1 > vols_LSM_##_tmp

  2. Take each vols_LSM_## file and select the first 100 (or your number) of cartridges to move.

    head -100 vols_LSM_##_tmp > vols_LSM_##

    You can combine both of the above operations:

    cat vols_sorted_LSM_## | cut –d" “ –f1 | head -100 > vols_LSM_##

Move the Cartridges to an LSM with Free Space

For each LSM from which you are moving cartridges, pick a destination LSM that has free space for the cartridges.

  1. Use the moving.sh utility to move the cartridges to a new LSM, specified by –t <lsm_id> (example: –t 0,8).
    moving.sh -f vols_LSM_## -t <lsm_id>
  2. Run a separate moving.sh for each LSM.

    If your library is busy, you may want to only run one or two moving.sh utilities at a time.