===== TSM Library Manager ===== What is a Library Manager: \\ It's a TSM server that manage concurrent access on a library. It manage dynamically drives and scratch tape for all TSM servers. Instead of having a static partitioning into a library, each TSM has his own K7 private and scratch, and his own drives, Library Manager allow to share all the drives for all TSM server. __Reference:__ redp0024 - TSM SAN Tape Library Sharing.pdf (http://www.redbooks.ibm.com) There are wrong information into this redbook, don't create drives on the client library manager, but define the paths to drives into the library manager for the client. Note: In this section when we talk about TSM client, this means TSM server who act as Library Manager Client. == TSM Library Manager == Tasks * Serialize the requests to access the drives * Control the ownership of the volumes * Tracking the volumes and slot information Operations * Library initialization * Volume mount/dismount * Checkin/checkout * Library audit == TSM server which act as client from library manager == Operations * Send the request to mount/dismount volume * Request and release the ownership of volumes * Library initialization with the library manager * Library audit (synchronization with library manager audit) ==== Initial Setup ==== === Configuring server to server connection === If you have multiples TSM Library client, do it on each server, and register them on the TSM Library Manager\\ **Use the TCPADMINPORT or SSLADMINPORT (then add ssl=yes) if configured** On the TSM server Library Client, Set servername tsm1 Set crossdefine on Set serverhladdress 10.10.10.9 Set serverlladdress 1600 Set serverpassword ?**? On the Libray Manager, Set servername tsmlib Set crossdefine on Set serverhladdress 10.10.10.10 Set serverlladdress 1850 Set serverpassword ?**? define server TSM1 serverpassword=?***? Hladdress=10.10.10.9 lladdress=1600 crossdefine=yes If SSL define server TSM1 serverpassword=?***? Hladdress=10.10.10.9 lladdress=1600 crossdefine=yes ssl=yes === Libray definition === **Use the same library name on the Manager and all his clients (it's required).** On the Library Manager is the only server who has a physical access to the Library control, the Library Manager client will have only an access to the drives. define library lib3500 libt=scsi shared=yes define path tsmlib lib3500 srct=server destt=libr device=/dev/smc0 On the Library Manager Client: Define library lib3500 libtype=shared prim=tsmlib Define devclass lto_class devt=lto libr=lib3500 worm=no mountret=1 mountlimit=drives format=drive mountwait=30 On the Library Manager: Define drive lib3500 drv_lto1 Define drive lib3500 drv_lto2 Define path tsmlib drv_lto1 srct=server destt=drive libr=lib3500 device=/dev/rmt0 Define path tsmlib drv_lto2 srct=server destt=drive libr=lib3500 device=/dev/rmt1 Define path tsm1 drv_lto1 srct=server destt=drive libr=lib3500 device=/dev/rmt0 Define path tsm1 drv_lto2 srct=server destt=drive libr=lib3500 device=/dev/rmt1 === Device Class definition === **In order to use the library on the manager, you have to create the same device class on all servers (same devc_name, and same lib_name), it's required.** On the Library Manager Server: Define devclass lto_class devt=lto libr=lib3500 worm=no mountret=1 mountlimit=drives format=drive mountwait=30 On the Library Manager Client: Define devclass lto_class devt=lto libr=lib3500 worm=no mountret=1 mountlimit=drives format=drive mountwait=30 ==== Migrating from a partitioned library to a dynamic library managed by TSM Library Manager ==== On the TSM servers that will become client for the Library Manager * List all K7 on you TSM servers that need to migrate to Libray Manager: select volume_name from libvolumes where status !=’Scratch’ and library_name=’LIB3500’ > /tmp/vollist_tsm1.txt select volume_name from libvolumes where status =’Scratch’ and library_name=’LIB3500’ > /tmp/scratchlist_tsm1.txt * Remove K7 from libvol inventory on the TSM client (don't remove it physically, else you will need 3 days to do this)\\ Checkout libvolume lib3500 volrange=LTOO001,LTOO999 remove=no checkl=no * Do it on all TSM servers * Delete the library and his paths on the TSM client, and also drives Delete path tsm1 lib3500 scrt=server destt=libr Delete path tsm1 drv_lto1 srct=server destt=drive libr=lib3500 Delete path tsm1 drv_lto2 srct=server destt=drive libr=lib3500 Delete drive lib3500 drv_lto1 Delete drive lib3500 drv_lto2 Delete library lib3500 * Now break the Library configuration to have only 1 full library (no more partitions) * Recreate the library to connect to the library Manager and the the drives and their paths: Define library lib3500 libtype=shared prim=tsmlib Define drive lib3500 drv_lto1 Define drive lib3500 drv_lto2 Define path tsm1 drv_lto1 srct=server destt=drive libr=lib3500 device=/dev/rmt0 Define path tsm1 drv_lto2 srct=server destt=drive libr=lib3500 device=/dev/rmt1 On the TSM Library Manager: * Checkin all data tapes, and assign the to a TSM client Library Manager (parameter **owner**): checkin libvol lib3500 vollist=file:/tmp/vollist.txt checkl=barcode stat=priv owner=TSM1 search=yes * Do the same for all data tapes from all TSM clients * Now into the library all unassign tapes are scratch, checkin as scratch: Checkin libvol lib3500 search=yes status=scratch tsm: TSMLIBM>select * from libvolumes LIBRARY_NAME VOLUME_NAME STATUS OWNER LAST_USE HOME_ELEMENT CLEANINGS_LEFT DEVTYPE MEDIATYPE ------------------ ------------------ ---------------- ------------------ ---------- ------------ -------------- ------- ---------------- LIB3584 IL0011L2 Private TSM3 Data 1116 0 LTO LTO-2 LIB3584 IL0031L2 Private TSM3 Data 1084 0 LTO LTO-2 LIB3584 IL0032L2 Private TSM2 Data 1097 0 LTO LTO-2 LIB3584 IL0036L2 Private TSM2 Data 1085 0 LTO LTO-2 LIB3584 IL0037L2 Scratch 1044 0 LTO LTO-2 LIB3584 IL0038L2 Private TSM2 Data 1041 0 LTO LTO-2 LIB3584 IL0040L2 Private TSM1 Data 1110 0 LTO LTO-2 LIB3584 IL0041L2 Private TSM3 Data 1063 0 LTO LTO-2 LIB3584 IL0042L2 Scratch 1054 0 LTO LTO-2 On the TSM client library: * Execute an audit library to discover all volumes: tsm: TSM1> audit library lib3500 checkl=barcode Now you don't see any more tapes with "q libv" command on the client, use "q vol". ==== Known problem when renaming a TSM library client ==== Volume owner not changed after rename of TSM servername on library client Technote (FAQ) Question After renaming a Tivoli Storage Manager server (with set servername) acting as a library client, its volumes in the volumehistory of the library manager are still showing up as owned by the "old" servername. Cause After renaming a Tivoli Storage Manager server acting as a library client (with set servername), its volumes in the volumehistory of the library manager are still showing up as owned by the "old" servername. The following error occurred during delete volume (after pending time): ANR9999D smlshare.c(4714): ThreadId<14> Invalid owner() attempting to delete volume . An update "update libvol owner=" on the library manager returned with error: ANR8969E The owner of volume can not be updated to owner . Answer Use the following steps to set the correct owner of the volumes: 1. On library client: set servername 2. If any library manager, delete paths to drives for the old library client 3. On library manager: delete old server definition of library client 4. On library manager: define new server of library client 5. On library manager: define paths to drives for new server of library client 6. On library manager: identify the volumes from volume history of library manager associated with the library client. e.g. select volume_name,location from volhistory where location='' 7. On library manager: delete volhist against all volumes returned in previous step. delete volhist todate=today type=remote volume= force=yes\\ Note:\\ Here, this is dangerous to remove a "remote" type of entry from the volume history. If a "remote" entry is not present for the volume in the volume history, then the Tivoli Storage manager server can no longer validate if the volume actually belongs to a library client on a CHECKIN LIBV command. This can present a problem if the customer subsequently does a checkout of the volume and then checks the volume back in without specifying the OWNER= parameter. See DCF 1170083\\ http://www-1.ibm.com/support/docview.wss?uid=swg21170083 8. On library manager: update libvolume with owner of the library manager: update libv status=private owner= 9. On library client: audit library to resync the inventories of library manager and library client. audit library 10. If the volume should go back to scratch status, run on library manager update libv status=scratch