I. ACSLS Display This utility utilizes the ACSLS display command which serves as a pass through for many acsls query commands such a q drive, q vol, q cap, etc. The great advantage is that wild cards are supported and the output can be filtered and sorted in a variety of different ways. Refer to the ACSLS Installation, Configuration, and Administration Guide, for 7.0 and higher, Display Command Reference. EDT uses an executable wrapper through which to pass the display commands: Syntax: acsls_display -d "display command" [-n] [-o] [-z] [-v] [-e] options: -v print debug info to standard output. -n strip all header info. -o show header every intermediate command. -z show raw xml return instead of formated return. -e show additional override syntax. Example: acsls_display -d "display volume 000*" vol_id acs lsm panel row column pool status media type 000658 0 0 2 1 2 299 home LTO-100G data 000659 0 0 0 1 0 299 home LTO-100G data 000660 0 0 1 33 1 200 home STK1R data 000662 0 0 2 1 1 299 home STK2P data 000663 0 0 0 0 4 299 home STK2P scratch 000665 0 0 0 1 1 299 home STK2P scratch 000666 0 0 2 2 1 299 home STK2P scratch 000780 0 0 1 34 2 175 home LTO-100G data 000782 0 0 0 0 1 175 home LTO-100G data 000783 0 0 0 1 4 175 home LTO-100G data 000799 0 0 1 32 2 200 home STK1R data II. Drive and Device Matching Use elm_match_device, to obtain a match between the ACSLS driveIDs and the corresponding device handles configured on your system. *NOTE: Make sure the communication path to ACSLS has been established as the utility queries ACSLS. *NOTE: Try to run the utility when there is little or no traffic on the drives. The utility does seek to access tape devices using the no rewind, no repos on close device extension, but caution always needs to be taken on a drive that is occupied and being held in a specific tape position, ready for next access. Syntax: elm_match_device -d driver [-f device#] [-g end device#] \ [-o num_opens] [-i timeout] [-n] [-Z] [-v] driver: all,tsm,atape,ibmtape,system device#: device file devno combine -f and -g to start at device# and end at 2nd device# -o num_opens: opens to perform on a device(default 1). -i timeout: in secs, device ready timeout (default 120 secs). -n: suppress headers. -Z: show all. Drive vendor and productID -v: verbose. Diag and Msgs printed to stderr. By default elm_match_device seeks to match all tape device handles configured on the host. EDT restricts itself to accessing the no rewind on close and no reposition on close device extension for each of the available major device nos. For example under OS AIX: elm_match_device -d all -Z device vendor product serial number drive match /dev/rmt0 IBM ULTRIUM-TD1 6811061457 0,0,0,0 /dev/mt0 error 19 /dev/mt1 STK 9840 331000022842 0,0,0,1 /dev/mt2 STK T9940A 456000003296 0,0,0,6 /dev/mt3 STK 9840 331000051873 0,0,0,4 /dev/mt4 STK T9940A 456000003723 0,0,0,5 Notice how the error is reported if contact with the drive can not be made. Through options, you can adjust drive parameters for open timeout and number of open attempts. You can restrict the search based on the type of driver under which a devices are configured, you can restrict to a range of device numbers or a specific device number, and you can combine the driver restriction with the range or specific device number search. III. Volume Labeling Utility Syntax: elm_label -d driveID -f device -n vol,vol,vol,... [-i timeout] [-X] [-w] [-v] driveID: media manager drive identifier example - 0,0,2,0 device: in form AIX /dev/rmt# or /dev/mt# Solaris /dev/rmt/#cb, /dev/rmt/#mt, /dev/rmt/#st HP-UX /dev/rmt/#m or /dev/rmt/tsmmt# Windows \\.\Tape# or \\.\mtx.y.z.n Tape# or mtx.y.z.n Linux /dev/tsmscsi/mt# or /dev/IBMtape# volname: 6 to 7 char barcode label Optional: -i timeout: in secs, device ready timeout (default 120). -v: verbose. Diag and Msgs printed to stderr. -X: extended label, VOL1,HDR1,HDR2,FM vs default VOL1,FM -w: force label overwrite, i.e. the internal label does not match the barcode. -E: print additional environmental override information. -P: print purpose of program. Purpose: The purpose of this program is to provide a tape label program outside of the elm program, which contains its own scratch volume label verification program. Like elm, this program will not label a volume that already contains a valid label. -NOTES- - If an error on the mount, dismount, or label verification occurs, elm_label will be able to judge whether or not to continue the labeling process. - Best way to view the action is to use the -v option, redirect stderr to a file, 2>>dbg.txt, and place a tail on the file. Examples: elm_label -d 0,0,0,1 -f /dev/mt1 -n ISV009 -i 60 -v 2>>diag.log [1]: ISV009 Mount...Success Label...Success Unload...Success Dismount...Success Place a tail on the diag log and see the details of the drive opening and confirming the label. IV. Drive Report Utility Syntax: elm_drvrpt -l libname [-P] libname: matching lib description entry in elm.conf Options: -P print purpose of program Purpose: The purpose of this program is to provide a utility to show drive status that is pertinent for EDT operation. EDT wants to know basic status and state, drive lockID and userID, and volume lock and userID if the drive is occupied. Normally, you would need to perform three operations, query drive status, query drive lock, query volume lock. The drive report produces output in as compact fashion as possible. The libname input matches the libname of a library description in the edt configuration file, elm.conf, and drive status information for these drives are obtained. By default status and state are shown. If a drive is locked, a secondary description line appears. If a drive is occupied, a third line appears showing volume in drive. Any drives that are occupied are listed ahead of unoccupied drives. Examples: elm_drvrpt -l LIB1 0,0,0,5 Status: available State: online 0,0,0,6 Status: available State: online elm_drvrpt -l LIB1 0,0,0,6 Status: in_use State: online Lock: 11891 UserID: abyss.LIB1.6478 Volume: 000662 0,0,0,5 Status: available State: online V. Drive Clear Utility Syntax: elm_drive_clear -l libname [-d drive] [-f] [-P] libname: matching lib description entry in elm.conf By default, do a safe drive clear. options: -d drive: force clear single drive. -f: works with d option. Even if status empty, issue dismount. If drive can't be unloaded through the device, force dismount. Purpose: The purpose of this program is to provide a utility to clear a drive or drives, and to insure their proper ownership for use with EDT-ACSLS. By default, a safe drive clear is performed. This means that the utility will only look to clear drives listed in the libname library description, and that no longer have an active elm process in control of the drive. Furthermore, only the drives originally locked by this machine will be cleared. Optionally, you can name a drive to be cleared. No matter if the drive is actively in use by EDT or any other application on this or any other machine, the utility will attempt to unload, dismount, and remove any drive lock. With -f option, if drive can not be unloaded, force the dismount. By default, if drive status shows available, skip dismount. With "-f" option, issue dismount even if drive seen as empty. The only caveat is that the drive must be one of those listed in the library description in order for the utility to find the matching device handle. Note the device associated with the driveid can be faked. Unload would fail, but with -f option, drive clear will force the dismount. Final Note: Diagnostic output is controlled by the DIAG entry in the library description. Diagnostic classes and redirection are controlled by this entry. Examples: To run drive clear in the default safe mode: Example: elm_drive_clear -l LIB1 Run drive clear, targeting an occupied drive: Example: elm_drive_clear -l LIB1 -d 00126310 Future work: - Ability to see drive in keep drive locked state and not clear. - Ability to see if vol needs to be returned to scratch or is definitively marked as to not place in any scratch pool. Possibly contact TSM to see if vol is privately held volume. - Consult TSM as to what it believes is mounted and cross reference with EDT knowledge. VI. Eject Vol Utility The extended eject volume utility provides the following functionality. - Variety of methods for introducing vol names into utility. - Adjustable eject count to match the number of volume slots in the cap door. - Detect if the cap is in a useable state for the eject process. - Redundent cap choices. If first choice cap is not available, try alternate cap(s). - Minimize movement of volumes through lsms, by ejecting volumes to caps in the same lsm. - Produce lists of volumes sorted by their lsm location. Syntax: elm_eject -f /path/file | -n volID/volID-volID/vol*/... -c capID | -C libname [-d eject count] [-l lockID] [-z] [-S] [-R] -f /path/file: open file and extract vol names from file Volumes must be listed one per line, no ranges or wildcard accepted. OR -n volID/volID/volID-volID/vol*/... volID is 6 character identifier. Volume ranges are seperated by - Wild card is also supported. Example: ISV* which would issue set scratch on vols ISV000-ISV999. Individual vols, volume ranges, and vol* seperated by / -c capID in form: #,#,# (ACS,LSM,CAP) capID can be expanded to form capID/capID/... In this case, if first cap seen as not online and not available, second in order is examined, and so on, until first useable is found. For every batch of vols to be ejected (restricted by cap count or ACSLS max of 42) the caps are reexamined to determine useability. OR -C libname. Extract capid(s) from elm.conf. For named libname, locate CAP capid(s) from that library description. Can be one capid or expanded form. options: -d eject count. Override default size 42 volumes sent per request. Choose number equal to the slot count of the cap. -l lockID - use if vol(s) are locked. -z Show status of vols ineligible for set scratch. Handy when setting scratch by range and/or wildcard. -S Sort and eject volumes to local cap in order to minimize movement between LSMs. Volumes are sorted by lsm location and ejected starting with lsm 0 and then incrementing lsms. In sort mode, you must use the expanded form of the capID. Expanded mode is capid/capid/capid... At least one cap should be listed per lsm. Example: 0,0,0/0,1,0/0,2,0/0,3,0 If no cap available, force vols into cap in another lsm Example: 0,0,0/0,1,0/0,2-3,0 meaning vols in lsm 2 to cap 0,2,0, vols in lsm 3 to 0,2,0 Multiple caps for lsm okay. Use first online and available Example: 0,0,0/0,0,1/0,1,0/0,2,0/0,3,0 Combine all Example: 0,0,0/0,0,1/0,1,0/0,2-3,0/0,2-3,1 -R Works with -S option. Sort vols according to LSM, but do not eject. Vol names are pushed into files according to lsm location, and file names reflect the lsm. The files have form eject_vol_lsm_#.txt, where # is the lsm number. Default sort is to eject vols in each lsm one after the other. With seperated vol lists, you can start multiple acsls_ejects simultaneously, each ejecting from a list to a local cap. Or if you know you have no access to a local cap, you start an acsls_eject and for that list eject volumes to a cap in another lsm. -v print debug info to standard output. -e show additional override syntax. Basic Eject Example: elm_eject -n 000000/666000-666100/7770* -c 0,0,0 You will see a series of statements saying: Eject the following volumes into cap 0,0,0 1. 000000 2. 666000 3. 666001 4. 666002 5. 666003 6. 666004 7. 666005 8. 666006 9. 666007 ... For each, you will see no more than 42 volumes issued in an eject. You will see an eject issued for the individually listed vol, for each volume in the range, and for each vol in the wildcarded range 777000-777099. If a volume is not in an ejectable state, it will not be included in the list of volumes to be ejected; use -z option to see the status of unejectable volumes. - Change Cap Count Example: elm_eject -n 000000/666000-666100/7770* -c 0,0,0 -d 20 "d" option overrides the default acsls restriction of 42 so you can match the number of volumes per eject to the number of slots in the cap door. - Expand Capids Example: elm_eject -n 000000/666000-666100/7770* -c 0,0,1/0,0,0 Expanding the capid list, the first listed cap found online and available is selected for the eject. - Minimizing Movement through LSMs Example: elm_eject -n 000000/666000-666100/7770* \ -c 0,0,0/0,1,0/0,2,0/0,3,0 -S Volumes location is gatherered and volumes are processed one lsm at a time, starting with lsm 0, ejecting all volumes found in that lsm to the corresponding local cap, then repeating this process through successive lsms until all vols have been processed. Basic Example: If an lsm has no local cap, you can force vols in one lsm into a cap in another lsm using the capid in the form #,#-#,#. For example: elm_eject -n 000000/666000-666100/7770* \ -c 0,0,0/0,1,0/0,2-3,0 -S This reads as eject vols in lsm 0 to cap 0,0,0, vols in lsm 1 to cap 0,1,0, vols in lsm 2 to cap 0,2,0, and vols in lsm 3 to cap 0,2,0. Redundent Cap Example: If a cap is not in a state in which to eject volumes, eject for that lsm is skipped; you can include redundent caps in the same lsm to increase liklyhood of finding available cap, example: -c 0,0,0/0,0,1/0,1,0/0,2,0. Combination Example: elm_eject -n 000000/666000-666100/7770* \ -c 0,0,0/0,0,1/0,1,0/0,2-3,0/0,2-3,1 -S This reads as ejects vols in lsm 0 to cap 0,0,0 or 0,0,1, vols in lsm 1 to cap 0,1,0, vols in lsm 2 to cap 0,2,0 or 0,2,1, and vols in lsm 3 to caps 0,2,0 or 0,2,1. Libname Example: In elm.conf within a library description place the "CAP" entry. LIBRARY ... CAP Example: LIBRARY LIB1 ... CAP 0,0,0/0,0,1/0,1,0/0,2-3,0/0,2-3,1 elm_eject -n 000000/666000-666100/7770* -C LIB1 -S - Create Files Containing List of Vols Sorted by LSM. elm_eject -n 000000/666000-666100/7770* -c 0,0,0/0,1,0/0,2,0 -S -R Look in directory and see files of form elm_eject_vol_lsm_#.txt, where # represents the lsm in which vols contained within the file reside. VI. Scratch Utility The elm_scratch utility places or removes volumes from scratch pools. - Vols are introduced by name (individually, by range, or wildcard) via the command line, froma a file listing vols names, of from an enter operation. - The enter operation features an adjustable time window. When expired a cancel is issued for the enter, and any volumes entered into the library during the enter are then set into the scratch pool(s). - Scratch volumes can be set into scratch pools according to their lsm location in support of the concept of minimizing movement of scratch vols between lsms. - Volumes can be set to the correct pool according to their media type. - Audit pool functionality that insures scratch volumes are assigned to the correct pools based on lsm sorting or media type. - Adjustable levels of output giving varying levels of detail throughout the operation. Syntax: elm_scratch -p poolid or -P libname,libname,... -f /path/file | -n volID/volID-volID/vol*/... | -i capid [-j timer (secs)] [-g ineterval (secs)] | -a [-c] [-l lockID] [-S] [-R] [-v] -p poolID (0 to 65534) -P libname,libname,... For the libname(s), extract the poolids from the EDT config file. Used for advanced set scratch concepts such as lsm sorting and media type restriction. -f /path/file: open file and extract vol names from file Volumes must be listed one per line, no ranges or wildcard accepted. OR -n volID/volID-volID/vol*/... volID is 6 character identifier. Volume ranges are seperated by - Wild card is also supported. Example: ISV* which would issue set scratch on vols ISV000-ISV999. Individual vols, volume ranges, and vol* seperated by / OR -i capid. Insert vols into named cap and set to pool. By default, insert vols in continous mode. Either cancel through external util acsls_cancel or ACSLS cmd_proc. Could also allow to natively timeout after 10 mins. -j timer. Optionally creates external timer allowing insert up to this time limit. Automatically sends cancel. -g interval. By default, confirm active ENTER every timer/6. Adjust confirmation trigger to this level. OR -a Audit. Assures vols are assigned to correct pools. If using extended pools to represent lsms, assures vols are in correct pool based on location. If using seperate pools for mixed media, assures vols are in correct pool based on media type. options: -c Default is to set vol(s) as scratch, this option removes vol(s) from scratch pool. -l lockID - use if vol(s) are locked. -S Show status of vols ineligible for set scratch. Handy when setting scratch by range and/or wildcard. -R Report intended pool assignment. Additional detail showing pool rules, volume locale and media type, and intended pool assignment. -v print debug info to standard output. -e show additional override syntax. - Basic Set Scratch Example: elm_scratch -n 000660/000658/001321-001328/VM0700 -p 1000 The following volume(s) set to scratch state ON in pool 1000: 000660 STATUS_SUCCESS 000658 STATUS_SUCCESS 001321 STATUS_SUCCESS 001322 STATUS_SUCCESS 001323 STATUS_SUCCESS 001324 STATUS_SUCCESS 001325 STATUS_SUCCESS 001326 STATUS_SUCCESS 001327 STATUS_SUCCESS 001328 STATUS_SUCCESS - List Status of Volumes Ineligible for Set Scratch Example: elm_scratch -n 000660/000658/001321-001328/VM0700 -p 1000 -R Vol VM0700 Status not_in_library Set Scratch Response: The following volume(s) set to scratch state ON in pool 1000: 000660 STATUS_SUCCESS 000658 ... - Delete Volumes from a Scratch Pool Example: elm_scratch -n 000660/000658/001321-001328/7770* -p 1000 -c Set Scratch Response: The following volume(s) set to scratch state OFF in pool 1000: 000660 STATUS_SUCCESS 000658 STATUS_SUCCESS 001321 STATUS_SUCCESS 001322 STATUS_SUCCESS 001323 STATUS_SUCCESS ... - Set Scratch on Vols Listed in a File Example: elm_scratch -f ./vol_list.txt -p 1000 Set Scratch Response: The following volume(s) set to scratch state ON in pool 1000: 000660 STATUS_SUCCESS 000658 STATUS_SUCCESS 001321 STATUS_SUCCESS 001322 STATUS_SUCCESS 001323 STATUS_SUCCESS File contains this list of vols, one name per line, no ranges or wildcards. - Basic Enter Scratch Example: elm_scratch -i 0,0,0 -p 1000 If you wish to stop the insert process, cancel request 119 through the media manager administrative console. Enter volumes into CAP 0,0,0 After inserting several vols, the robot scans cap, and puts away vols. You see: If you wish to stop the insert process, cancel request 119 through the media manager administrative console. Identifier Status ---------- ------ 001324 STATUS_SUCCESS 001323 STATUS_SUCCESS Enter volumes into CAP 0,0,0 The enter will continue in this manner allowing you to enter volumes into the library. Once done, you can cancel the enter using the util acsls_cancel, or in the ACSLS command line console. Example: acsls_cancel -r 119 With a cancel, the waiting elm_scratch receives a cancel and the entered vols are processsed. Enter: STATUS_CANCELLED Set Scratch Response: The following volume(s) set to scratch state ON in pool 1000: 001324 STATUS_SUCCESS 001323 STATUS_SUCCESS You could also just stop entering vols into the library and let the default 10 min timeout kick in. Enter: STATUS_TIMED_OUT Request 3309 still seen as active ENTER, issue cancel Cancel SUCCESS Set Scratch Response: The following volume(s) set to scratch state ON in pool 1000: 001324 STATUS_SUCCESS 001323 STATUS_SUCCESS The advantage in this case is that EDT automatically cancels the enter after timeout. - Adjustable Time Limit: You see that either we wait for timeout or an external cancel in order to proceed onto setting any volumes to scratch. We can increase the flexibility to allow the admin to set the timeout to better suit their needs. Example: Relatively short timeout 2 mins. elm_scratch -i 0,0,0 -j 120 -p 1000 Example: Relatively long timeout, 30 mins. elm_scratch -i 0,0,0 -j 1800 -p 1000 The basic enter scratch runs continously allowing you to enter vols, until either you cancel or discontinue entering vols. This method allows you to only enter during the alloted time span, after which the enter is cancelled and any vols entered during that time are cancelled. During the time window you of course send an external cancel, and elm_scratch will then process the vols it has at hand and then exit. - Setting Scratch Volumes to Pools representing LSM. You may have to consult the functionaility guide to get a better concept of minimizing movement of volumes between lsms resulting from a mount scratch request. To summerize the standard pool entry in a library description exists as POOL poolid You can extend this to POOL poolid/poolid/poolid/... Where each pool represents an lsm starting at zero and incrementing lsm representation which successive poolids. For example: POOL 1000/1001/1002 is read as pool 1000 represents lsm 0, 1001 represents lsm 1, 1002 represents lsm 2. When EDT requests mount of a scratch volume, it draws from the pool representing the lsm in which the drive resides. As long as the pool contains vols that physically reside in the same lsm as the drive, then no lsm to lsm movement occurs. To set vols to the correct pool, elm_scratch can read the POOL entry from a lib description in the EDT config file and set scratch to the correct pool. Example: LIBRARY LIB1 ... POOL 1000/1001/1002/1003 ... END elm_scratch -n 000660/000658/001321-001328/7770* -P LIB1 Set Scratch Response: The following volume(s) set to scratch state ON in pool 1000: 000660 STATUS_SUCCESS 000658 STATUS_SUCCESS 001321 STATUS_SUCCESS 001322 STATUS_SUCCESS 001323 STATUS_SUCCESS 001324 STATUS_SUCCESS 001325 STATUS_SUCCESS 001326 STATUS_SUCCESS 001327 STATUS_SUCCESS 001328 STATUS_SUCCESS 777002 STATUS_SUCCESS 777012 STATUS_SUCCESS 777014 STATUS_SUCCESS 777018 STATUS_SUCCESS 777023 STATUS_SUCCESS Set Scratch Response: The following volume(s) set to scratch state ON in pool 1001: 777001 STATUS_SUCCESS 777006 STATUS_SUCCESS 777007 STATUS_SUCCESS ... Set Scratch Response: The following volume(s) set to scratch state ON in pool 1002: 777003 STATUS_SUCCESS 777005 STATUS_SUCCESS 777009 STATUS_SUCCESS ... Set Scratch Response: The following volume(s) set to scratch state ON in pool 1003: 777000 STATUS_SUCCESS 777004 STATUS_SUCCESS 777008 STATUS_SUCCESS ... - Greater Output Can be gained by including the option -R. It appears ahead of the scratch set operation and shows what pools have been gleaned from the lib description, the vol location and media type, and what the pool assignment will be. Pool 1000 Vol Assignment: lsm 0 media types Vol 000660 Lsm 0 Media STK1R Vol 000658 Lsm 0 Media STK1R Vol 001321 Lsm 0 Media STK1R Vol 001322 Lsm 0 Media STK1R Vol 001323 Lsm 0 Media STK1R Vol 001324 Lsm 0 Media STK1R Vol 001325 Lsm 0 Media STK1R Vol 001326 Lsm 0 Media STK1R Vol 001327 Lsm 0 Media STK1R Vol 001328 Lsm 0 Media STK1R Vol 777004 Lsm 0 Media STK1R ... Pool 1001 Vol Assignment: lsm 1 media types Vol 777000 Lsm 1 Media STK1R Vol 777003 Lsm 1 Media STK1R ... Pool 1002 Vol Assignment: lsm 2 media types Vol 777001 Lsm 2 Media STK1R Vol 777002 Lsm 2 Media STK1R ... Pool 1003 Vol Assignment: lsm 3 media types Vol 777005 Lsm 3 Media STK1R Vol 777007 Lsm 3 Media STK1R ... No Pool Assignment: none - Setting Scratch based on Media Type You can restrict the volumes set to a scratch pool by the media type. In EDT you are required to have seperate lib descriptions to service distinct drive types and its was asked to have seperate scratch pools, each containing vols compatible with the drive types. You can use elm_scratch to automatically sort volumes according to media type, and place them in the correct pool. The standard POOL entry in the lib descriptor becomes POOL poolid MEDIA_type,type,... For example, two lib descriptions exist one with drives of type 9840 and type 9940 supported by there compatible media types. Look to Appendix I and II to see recognozed drive types, media types, and compatibility. LIBRARY LIB1 ... POOL 1000 MEDIA_STK1R,STK1U ... END LIBRARY LIB2 ... POOL 2000 MEDIA_STK2P,STK2W ... END You can run elm_scratch against both lib descriptions: elm_scratch -n 000660/000658/001321-001328/7770* -P LIB1,LIB2 -R Pool 1000 Vol Assignment: lsm -1 media types STK1R,STK1U Vol 000660 Lsm 0 Media STK1R Pool 2000 Vol Assignment: lsm -1 media types MEDIA_STK2P,STK2W Vol 001321 Lsm 0 Media STK2P Vol 001322 Lsm 0 Media STK2P ... No Pool Assignment: Vol 000658 Lsm 0 Media LTO-100G - Combine LSM sorting and MEDIA_TYPE sorting. Extend the standard POOL entry to include both: POOL poolid/poolid/poolid ... MEDIA_TYPE_type,type,... For example: LIBRARY LIB1 ... POOL 1000/1001/1002/1004 MEDIA_STK1R,STK1U ... END LIBRARY LIB2 ... POOL 2000/2001/2002/2004 MEDIA_STK2P,STK2W ... END You could run elm_scratch against the lib descriptions: elm_scratch -n 000660/000658/001321-001328/7770* -P LIB1,LIB2 -R Pool 1000 Vol Assignment: lsm 0 media types STK1R Vol 000660 Lsm 0 Media STK1R Vol 777001 Lsm 0 Media STK1R ... Pool 1001 Vol Assignment: lsm 1 media types STK1R Vol 777005 Lsm 1 Media STK1R Vol 777009 Lsm 1 Media STK1R ... Pool 2000 Vol Assignment: lsm 0 media types STK2P Vol 001321 Lsm 0 Media STK2P Vol 001322 Lsm 0 Media STK2P ... Pool 2001 Vol Assignment: lsm 1 media types STK2P Vol 777000 Lsm 1 Media STK2P Vol 777004 Lsm 1 Media STK2P In another example, run against successive caps allowing for a 15 min window in which to insert volumes. elm_scratch -i 0,0,0 -t 900 -g 60 -P LIB1,LIB2 elm_scratch -i 0,1,0 -t 900 -g 60 -P LIB1,LIB2 - Audit the Pools At any time you can audit the scratch pools and insure that the volumes in the pools are assigned correctly. You can change the pool options in the library descriptions, run audit and resort the vols according to the new rules. Example: elm_scratch -a -P LIB1,LIB2 -R Audit can be restricted to any single lib or multiple lib definitions. IX. Rule Making Utility Elm_rule_maker assists in creating the following entries to place into a library description: Used by utility elm_scratch POOL poolID/poolID/... MEDIA_type,type Used by utility elm_eject CAP capid/capid/... Used in associated with lsm mapping for drive selection by elmdt MAP_LSM_DRIVE_SELECTION TOTAL_# LSM_#,#,...N LSM_#,#,# The utility asks a series of questions, provides example, and prints the entry to place into a library description in elm.conf. Simply call up the utility and you are asked what rule you wish to make, and proceeds to interact with the user. The most powerful of these utilities is the ability to create an lsm map. Included here is a singular example. The document LSM_Maps contains many exmaples covering first the most realistic examples and the theoretical architectures to show the power of the utility. Pool Rule example: (> denotes input by user) elm_rule_maker Please enter rule to create (lsm map, pool, cap) or display types (drive-media-compatibility): pool Equate scratch poolIDs to LSMIDs. For each line enter a poolID and an LSM id. Do this for each LSM starting with 0 up through the last LSM. If an LSM is not to be serviced by a scratch pool, use "x" Example Three lsms attached via pass thru, only using pools to represent lsms 0 and 1: 0 100 1 101 2 x >0 1000 >1 1001 >2 1002 >3 1003 > Do you wish to add media type restrictions on the pool? Here are your options: To list drive types, media types, compatibility, state "show". List media types one per line. Hit enter with nothing written when done. > STK1R > STK1U > POOL 1000/1001/1002/1003 MEDIA_STK1R,STK1U Cap Rule example: elm_rule_maker Please enter rule to create (lsm map, pool, cap) or display types (drive-media-compatibility): cap List the capIDs, one per lineto eject volumes. The order in which you list the caps, determines how vols are ejected. If first cap seen as not online and not available, second in order is examined, and so on, until first useable cap is found. For every batch of vols to be ejected (restricted by cap count or ACSLS max of 42) the caps are reexamined to determine useability. Example: 0,0,0 0,0,1 0,1,0 0,2,0 >0,0,0 >0,1,0 >0,2,0 > Are there any lsms that can not be serviced by a cap? You can eject these volumes into a cap in another lsm. You only need to do this is using elm_eject in sorting mode, where vols are ejected to caps in the same lsm in which they reside. On each line, name the lsm without a cap, and name an lsm with a cap. Example: 3 2 4 2 >3 2 > CAP 0,0,0/0,1,0/0,2-3,0 LSM Map example: > elm_rule_maker Please enter rule to create (lsm map, pool, cap) or display types (drive-media-compatibility): lsm map Enter lsms in Pairs or Straight Lines. Example: Two SL8500s attached via pass thru Graphic: 3 7 | | 2 - 6 | | 1 5 | | 0 4 Straight Lines: 0 1 2 3 4 5 6 7 2 6 Pairs: 0 1 1 2 2 3 2 6 4 5 5 6 6 7 > 0 1 2 3 > 4 5 6 7 > 2 6 > Are there any lsms to be clustered together? Meaning if a vol resides in one of these lsms, you prefer the vol be loaded into a drive in one of the clustered lsms ahead of other lsms. Example: Two SL8500s 0 1 2 3 4 5 6 7 > 0 1 2 3 > 4 5 6 7 > Are there any lsms to be considered low priority? For instance, in an SL8500, you may wish to make the lsms where vols travel on elevator, low priority. Example: 3 7 > 3 7 > Are there any lsms to be considered high priority? > MAP_LSM_DRIVE_SELECTION TOTAL_8 LSM_0,1,2,3,6,5,4,7 LSM_1,0,2,3,6,5,4,7 LSM_2,1,0,3,6,5,4,7 LSM_3,2,1,0,6,5,4,7 LSM_4,5,6,7,2,1,0,3 LSM_5,4,6,7,2,1,0,3 LSM_6,5,4,7,2,1,0,3 LSM_7,6,5,4,2,1,0,3 X. Elm Filter Vols This utility provides a method of filtering TSM storage pools and volume history for volumes it is using. You can use the created list of volumes for information and to use with the elm_scratch, elm_eject, acsls_setscratch, or acsls_eject utilities. - Syntax: elm_filter_vols -I id -P passwd [-S server] [-G servergroup] operation modes: -q [-d] [-p pool] [-a access] [-s status] \ [-f /path/file] [-g /path/file] or -o type [-f /path/file] [-g /path/file] -I id: tsm administrative id -P passwd: administrative password -S server: use for LAN free client to contact server -G servergroup: query named server group -q : query all storage pools for all volumes -d : detailed format -p pool: restrict query to a specfic storage pool -a access: restrict query to vols readwrite, readonly unavailable, offsite -s status: restrict query to vols full, filling, empty, offline, online, pending -o type: query vol history, type dbbackup, export, dbdump, dbsnapshot, all -f /path/filename: Filter output. Strip out all but vol names. For filtering to work, output from TSM must first got to a file. Name the file here. -g /path/filename: To append filtered volnames to a file, name the path and file here. *NOTES* - This program opens a shell to the system and executes the tsm administrative command dsmadmc. If you observe the output of the program, you will see the form of the dsmadmc command. - The exception is under Windows, where the command wzrdhlpr.exe is executed, usually found in Program Files\tivoli\tsm\console. This program is finicky about how it is called and needs the support of several other files from the console directory. You are best served to copy the the files wzrdhlpr.exe, dscameng.txt, and DSM.OPT in the console directory into the EDT-ACSLS bin directory where the elm_filter_vols resides. Example: Report ownership, correct ownership, ensure no vols in scratch pool: #! /bin/ksh # EDTB=/usr/lpp/GESedt-acsls/bin EDTU=/usr/lpp/GESedt-acsls/util # Create list of all volumes assigned to storage pools, $EDTB/elm_filter_vols -I admin -P admin -q \ -f tsm_out.txt -g vollist.txt sleep 1 $EDTB/elm_filter_vols -I admin -P admin -o dbbackup \ -f tsm_out.txt -g vollist.txt sleep 1 # Do the same for any dbdump and export volumes $EDTB/elm_filter_vols -I admin -P admin -o dbdump \ -f tsm_out.txt -g vollist.txt sleep 1 $EDTB/elm_filter_vols -I admin -P admin -o export \ -f tsm_out.txt -g vollist.txt sleep 1 $EDTB/elm_filter_vols -I admin -P admin -o dbsnapshot \ -f tsm_out.txt -g vollist.txt sleep 2 # Proceed with scratch pool cleanse $EDTU/acsls_setscratch -f vollist.txt -p 100 -c DATA 2>&1 1>/dev/null $EDTU/acsls_setscratch -f vollist.txt -p 200 -c DATA 2>&1 1>/dev/null rm -f tsm_out.txt return 0 # end of script If you wish to only check newly created volumes: if [ -a vollist_save.txt ] ; then diff vollist.txt vollist_save.txt > vollist_diff.txt else cp vollist.txt vollist_diff.txt fi # Proceed with scratch pool cleanse $EDTU/acsls_setscratch -f vollist_diff.txt -p 100 -c DATA 2>&1 1>/dev/null $EDTU/acsls_setscratch -f vollist_diff.txt -p 200 -c DATA 2>&1 1>/dev/null mv vollist.txt vollist_save.txt rm -f vollist.txt rm -f vollist_diff.txt return 0 # end of script Appendix I. Recognized drive types 4480 18 track 4490 Silverton 36 track 4890 Twin Peaks - 36 track 9490 Timberline 36 track High Perf 9491 Timberline EE SD3 Redwood helical DLT2000 Quantum DLT2000 DLT2000XT Quantum DLT2000XT DLT4000 Quantum DLT4000 DLT7000 Quantum DLT7000 DLT8000 Quantum DLT8000 9840 9840 native mode 9840-3590 9840 with 3590 emulation T9840B High Perf 9840 native or 3490E emulation T9840B-3590 9840B with 3590 emulation T9840C 9840C native or 3490E emulation T9840C-3590 9840C with 3590 emulation T9940A 9940A native or 3490E emulation T9940A-3590 9940A with 3590 emulation T9940B 9940B native or 3490E emualtion T9940B-3590 9940B with 3590 image SDLT Super DLT SDLT-600 Super DLT 600 SDLT320 Super DLT 320 HP-LTO HP LTO IBM-LTO IBM LTO CER-LTO Certance LTO HP-LTO2 HP LTO Generation 2 IBM-LTO2 IBM LTO Generation 2 CER-LTO2 Certance LTO Generation 2 HP-LTO-3 HP LTO Generation 3 IBM-LTO-3 IBM LTO Generation 3 CER-LTO-3 Certance Generation 3 T1A Titanium T1A with 3490 emulation T1A35 Titanium T1A with 3590 emulation VIRT-DRV VSM virtual drive Appendix II. Recognized Media Types and drive compatibility 3480 4480, 4490, 4890, 9490, 9491 3490E 4490, 4890, 9490, 9491 EECART 9491 DD3A SD3 DD3B SD3 DD3C SD3 DD3D SD3 JLABEL 4490,9940,SD3,9941 KLABEL 4490,9940,SD3,9941 DLTIII DLT2000, DLT2000XT, DLT4000, DLT7000 DLTIV DLT4000, DLT7000, DLT8000, SDLT, SDLT320 DLTIIIXT DLT2000XT, DLT4000, DLT7000, DLT8000 STK1R 9840, 9840-3590, T9840B, T9840B-3590, T9840C,T9840C-3590 STK1U 9840, 9840-3590, T9840B, T9840B-3590, T9840C, T9840C-3590 STK2P T9940A, T9940A-3590, T9940B, T9940B-3590 STK2W T9940A, T9940A-3590, T9940B, T9940B-3590 LTO-400W HP-LTO-3, IBM-LTO-3 LTO-400G HP-LTO-3, IBM-LTO-3, CER-LTO-3 LTO-200G HP-LTO2, IBM-LTO2, CER-LT02, HP-LTO-3, IBM-LTO-3, CER-LTO-3 LTO-100G HP-LTO, IBM-LTO, CER-LTO, HP-LTO2, IBM-LTO2, CER-LTO2, HP-LTO-3, IBM-LTO-3, CER-LTO-3 LTO-50GB HP-LTO, IBM-LTO, CER-LTO, HP-LTO2, IBM-LTO2, CER-LTO2, HP-LTO-3, IBM-LTO-3, CER-LTO-3 LTO-35GB HP-LTO, IBM-LTO, CER-LTO, HP-LTO2, IBM-LTO2, CER-LTO2, HP-LTO-3, IBM-LTO-3, CER-LTO-3 LTO-10GB HP-LTO, IBM-LTO, CER-LTO, HP-LTO2, IBM-LTO2, CER-LTO2, HP-LTO-3, IBM-LTO-3, CER-LTO-3 LTO-CLN2 IBM-LTO, IBM-LTO2, IBM-LTO-3 LTO-CLN3 CER-LTO, CER-LTO2, CER-LTO-3 LTO-CLN1 HP-LTO, HP-LTO2, HP-LTO-3 LTO-CLNU HP-LTO, IBM-LTO, CER-LTO, HP-LTO2, IBM-LTO2, CER-LTO2, HP-LTO-3, IBM-LTO-3, CER-LTO-3 SDLT SDLT, SDLT320, SDLT-600 SDLT-2 SDLT-600 T10000T1 T1A, T1A35 T10000TS T1A, T1A35 T10000CT T1A, T1A35 VIRTUAL VIRT-DRV