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.
Tasks
Operations
Operations
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
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
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
On the TSM servers that will become client for the Library 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
Checkout libvolume lib3500 volrange=LTOO001,LTOO999 remove=no checkl=no
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
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 libvol lib3500 vollist=file:/tmp/vollist.txt checkl=barcode stat=priv owner=TSM1 search=yes
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:
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”.
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(<old servername>) attempting to delete volume <volume name>.
An update “update libvol <library name> <volume name> owner=<renamed servername>” on the library manager returned with error: ANR8969E The owner of volume <volume name> can not be updated to owner <renamed servername>.
Answer
Use the following steps to set the correct owner of the volumes:
1. On library client: set servername <new 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='<old servername>'
7. On library manager: delete volhist against all volumes returned in previous step.
delete volhist todate=today type=remote volume=<volume name> 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=<library client> 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 <library name> <volume name> status=private owner=<library client name>
9. On library client: audit library to resync the inventories of library manager and library client. audit library <library name>
10. If the volume should go back to scratch status, run on library manager update libv <library name> <volume name> status=scratch