Friday, June 26, 2015
Remote Site Backup
Ok here is the scenario, we have a 2.8TB Windows file server at a remote location and we have to back it up over the WAN. We can't put a TSM server locally due to many issues (one is that it's not worth wasting resources on 2-3 servers). Due to throughput the backup was calculated to possibly take 25+ days to complete. So the idea I came up with was to copy the data onto a 4TB USB drive and then ship the drive to our Data Center and attach it to another Windows server as the same drive name/label and the drive has at the remote site, setup a dsm.opt with the node name of the remote server and run the backup. The hope is that then when we run the backup remotely it will see all it's data as already backed up and then pickup with incremental backups. Will it work? Anyone tried it? I'm worried there are too many file variables involved and it will still try and backup the files all over again.
Labels:
Backup,
File Server,
remote site backup,
TSM Client,
WAN,
Windows
Tuesday, June 23, 2015
RHEL 6.6, non IBM devices and UDEV rules
TSM 6.x+ server does not run under "root" account anymore, but when the new device is discovered, its device file is created as RW for root only.
Normaly (when you manually add the new device) you update the device files privileges and create the links using "/opt/tivoli/tsm/devices/bin/autoconf -a", but this does not work automatically.
On the TSM Symposium 2013 in Berlin there was a great presentation "Tape configuration for TSM" by Bruno Friess which (among other things) solves this situation by using persistent names via "udev".
http://www.exstor.de/wp-content/uploads/2013/09/tape_config_for_tsm.pdf
It only has a 2 minor limitations
a) Linux variant mentioned is SLES
b) lacks details for Linux, udev and non-IBM devices
As our Linux servers run on RHEL amd our libraries are Overland brand with HP tape drives, I had to modify the steps a bit:
a) udevadm info .... does not display serial numbers for HP tape drives and Overland libraries - you need sg3_utils package for having "sginfo" command to get the device serial numbers
b) links are created as /dev/library1 and /dev/drive1 (2, 3) pointing to corresponding /dev/sgX device with crw-rw-rw permissions
c) file below was created as /etc/udev/rules.d/71-persistent-tape.rules
# This file shoud create persistent devices for HP tapes and libraries used by TSMMany thanks to Bruno and hope this helps someone.
# Known serial numbers
# <library1> LIBRSN1234
# <drive1> DRV1SN3456
# <drive2> DRV2SN4567
# <drive3> DRV3SN5678
KERNEL=="sg*", SUBSYSTEM=="scsi_generic", SYSFS{type}=="8", PROGRAM="/usr/bin/sginfo -s /dev/%k", RESULT=="*LIBRSN1234*", SYMLINK+="library1",MODE="0666"
KERNEL=="sg*", SUBSYSTEM=="scsi_generic", PROGRAM="/usr/bin/sginfo -s /dev/%k", RESULT=="*DRV1SN3456*", SYMLINK+="drive1",MODE="0666"
KERNEL=="sg*", SUBSYSTEM=="scsi_generic", PROGRAM="/usr/bin/sginfo -s /dev/%k", RESULT=="*DRV2SN4567*", SYMLINK+="drive2",MODE="0666"
KERNEL=="sg*", SUBSYSTEM=="scsi_generic", PROGRAM="/usr/bin/sginfo -s /dev/%k", RESULT=="*DRV3SN5678*", SYMLINK+="drive3",MODE="0666"
Monday, June 08, 2015
Best Desktop Linux Distro
Ok not a TSM subject, but I am running Linux (Kubuntu 15.04) on an old Sony laptop and while I like it, something is missing. I want a launcher bar but didn't like Unity. Anyone out there suggest a distro that they like? I've used Mint with Cinnamon and Mate but thought I'd try KDE again after the new release. I don't particularly like GNOME but....
Wednesday, April 08, 2015
TSM 7.1 Discussion
I was asked by a former colleague to start a discussion on the merits of TSM 7.1. I use TSM 7.1 currently on my newer TSM servers and don't see a huge difference from our 6.4 servers. I know there are some features and updates with 7.1 but none that impact me other than any possible performance enhancements.
So tell me why you upgraded to TSM 7.1 or what features made it a "No Brainer" for you to implement 7.1. I'd like to hear from you.
So tell me why you upgraded to TSM 7.1 or what features made it a "No Brainer" for you to implement 7.1. I'd like to hear from you.
Labels:
Installation,
TSM,
TSM 7,
TSM server,
Upgrade
Q MOUNT Research
So in yesterday's post I spoke of a "better Q MOUNT" using a script I wrote. The problem is the Q MOUNT command does not reference a accessible TSM table. It appears to gathers the information on the mount with the associated process or session from various tables (as seen with Q MOUNT F=D). So I became more intrigued with how TSM gathers the info and decided to bypass TSM all together and research on the DB2 side. Well out of 779 tables in the TSM 7.1 DB2 database I did not see any with MOUNT in the name (you can find a list of all the TSM DB 7.1 tables here). There definietle some tables that appear in the list that are hidden from TSM or unused, but I queried a number of tables looking for any that had fields (columns) that correlated to the Q MOUNT command. The closest I came was the MMS_DRIVE table which has the following fields.
$ db2 "select char(COLNAME,24) as COLNAME,char(TYPENAME,24)as DATATYPE,LENGTH,SCALE from syscat.columns where tabname='MMS_DRIVES' and tabschema='TSMDB1'"
COLNAME DATATYPE LENGTH SCALE
------------------------ ------------------------ ----------- ------
ACSDRVID VARCHAR 126 0
CLEANFREQ INTEGER 4 0
DEVICE VARCHAR 65 0
DEVTYPE INTEGER 4 0
DEV_INQ SMALLINT 2 0
DRIVENAME VARCHAR 31 0
ELEMENT INTEGER 4 0
INQUIRY VARCHAR 1025 0
KBYTES_PROC BIGINT 8 0
KBYTES_PROC_HI INTEGER 4 0
LIBNAME VARCHAR 31 0
ONLINE INTEGER 4 0
OWNER VARCHAR 65 0
OWNERVOL VARCHAR 1025 0
RD_FORMAT BIGINT 8 0
SERIAL VARCHAR 65 0
UPDATE_DATE TIMESTAMP 10 6
UPDATOR VARCHAR 65 0
WR_FORMAT BIGINT 8 0
WWN VARCHAR 17 0
There should be a table that would show the drive, what tape is mounted, what process or session it's assigned and who owns it, just like a Q MOUNT F=D. I haven't found it yet.
NOTE: Of the 779 tables I listed a more refined search shows 154 tables that correspond to what we seem to be able to access from the TSM admin command line.
$ db2 "select char(COLNAME,24) as COLNAME,char(TYPENAME,24)as DATATYPE,LENGTH,SCALE from syscat.columns where tabname='MMS_DRIVES' and tabschema='TSMDB1'"
COLNAME DATATYPE LENGTH SCALE
------------------------ ------------------------ ----------- ------
ACSDRVID VARCHAR 126 0
CLEANFREQ INTEGER 4 0
DEVICE VARCHAR 65 0
DEVTYPE INTEGER 4 0
DEV_INQ SMALLINT 2 0
DRIVENAME VARCHAR 31 0
ELEMENT INTEGER 4 0
INQUIRY VARCHAR 1025 0
KBYTES_PROC BIGINT 8 0
KBYTES_PROC_HI INTEGER 4 0
LIBNAME VARCHAR 31 0
ONLINE INTEGER 4 0
OWNER VARCHAR 65 0
OWNERVOL VARCHAR 1025 0
RD_FORMAT BIGINT 8 0
SERIAL VARCHAR 65 0
UPDATE_DATE TIMESTAMP 10 6
UPDATOR VARCHAR 65 0
WR_FORMAT BIGINT 8 0
WWN VARCHAR 17 0
There should be a table that would show the drive, what tape is mounted, what process or session it's assigned and who owns it, just like a Q MOUNT F=D. I haven't found it yet.
NOTE: Of the 779 tables I listed a more refined search shows 154 tables that correspond to what we seem to be able to access from the TSM admin command line.
Tuesday, March 24, 2015
A Better Q MOUNT?
I was playing around with my QDRV script which I feel gives a better showing than Q DRIVE and realized that I could technically produce a better Q MOUNT display than the built in TSM command provides. FYI - Unlike the Q MOUNT command my QMNT script shows the device definition for the current DRIVE_OWNER, so a storage agent or library client. I have provided both my scripts for you, let me know what you think. Suggestions are welcome.
QDRV Script
select cast((library_name)as char(15)) as LIBRARY_NAME, -
cast((DRIVE_NAME)as char(16)) as DRIVE_NAME, -
cast((drive_state)as char(10)) as DRIVE_STATE, -
cast((volume_name)as char(8)) as VOL_NAME, cast((online)as char(10)) as ONLINE, -
cast((ALLOCATED_TO)as char(20)) as DRV_OWNER from drives order by library_name, drive_name
QDRV Macro
DEFINE SCRIPT QDRV DESC="Show tape drive status"
UPDATE SCRIPT QDRV "select cast((library_name)as char(15)) as LIBRARY_NAME, -"
UPDATE SCRIPT QDRV "cast((DRIVE_NAME)as char(16)) as DRIVE_NAME, -"
UPDATE SCRIPT QDRV "cast((drive_state)as char(10)) as DRIVE_STATE, -"
UPDATE SCRIPT QDRV "cast((volume_name)as char(8)) as VOL_NAME, cast((online)as char(10)) as ONLINE, -"
UPDATE SCRIPT QDRV "cast((ALLOCATED_TO)as char(20)) as DRV_OWNER from drives order by library_name, drive_name"
QMNT Script
select varchar(a.library_name,15) as LIB_NAME, -
cast((a.DRIVE_NAME)as char(16)) as DRIVE_NAME, -
cast((a.drive_state)as char(10)) as DRIVE_STATE, -
cast((a.volume_name)as char(8)) as VOL_NAME, -
varchar(b.device,12) as device, cast((a.online)as char(10)) as ONLINE, -
cast((a.ALLOCATED_TO)as char(20)) as DRV_OWNER from drives a, paths b -
where a.library_name=b.library_name and a.drive_name=b.destination_name -
and b.source_name=a.ALLOCATED_TO order by a.drive_name
QMNT Macro
DEFINE SCRIPT QMNT DESC="Show tape mount status"
UPDATE SCRIPT QMNT "select varchar(a.library_name,15) as LIB_NAME, -"
UPDATE SCRIPT QMNT "cast((a.DRIVE_NAME)as char(16)) as DRIVE_NAME, -"
UPDATE SCRIPT QMNT "cast((a.drive_state)as char(10)) as DRIVE_STATE, -"
UPDATE SCRIPT QMNT "cast((a.volume_name)as char(8)) as VOL_NAME, -"
UPDATE SCRIPT QMNT "varchar(b.device,12) as device, cast((a.online)as char(10)) as ONLINE, -"
UPDATE SCRIPT QMNT "cast((a.ALLOCATED_TO)as char(20)) as DRV_OWNER from drives a, paths b -"
UPDATE SCRIPT QMNT "where a.library_name=b.library_name and a.drive_name=b.destination_name -"
UPDATE SCRIPT QMNT "and b.source_name=a.ALLOCATED_TO order by a.drive_name"
QDRV Script
select cast((library_name)as char(15)) as LIBRARY_NAME, -
cast((DRIVE_NAME)as char(16)) as DRIVE_NAME, -
cast((drive_state)as char(10)) as DRIVE_STATE, -
cast((volume_name)as char(8)) as VOL_NAME, cast((online)as char(10)) as ONLINE, -
cast((ALLOCATED_TO)as char(20)) as DRV_OWNER from drives order by library_name, drive_name
QDRV Macro
DEFINE SCRIPT QDRV DESC="Show tape drive status"
UPDATE SCRIPT QDRV "select cast((library_name)as char(15)) as LIBRARY_NAME, -"
UPDATE SCRIPT QDRV "cast((DRIVE_NAME)as char(16)) as DRIVE_NAME, -"
UPDATE SCRIPT QDRV "cast((drive_state)as char(10)) as DRIVE_STATE, -"
UPDATE SCRIPT QDRV "cast((volume_name)as char(8)) as VOL_NAME, cast((online)as char(10)) as ONLINE, -"
UPDATE SCRIPT QDRV "cast((ALLOCATED_TO)as char(20)) as DRV_OWNER from drives order by library_name, drive_name"
QMNT Script
select varchar(a.library_name,15) as LIB_NAME, -
cast((a.DRIVE_NAME)as char(16)) as DRIVE_NAME, -
cast((a.drive_state)as char(10)) as DRIVE_STATE, -
cast((a.volume_name)as char(8)) as VOL_NAME, -
varchar(b.device,12) as device, cast((a.online)as char(10)) as ONLINE, -
cast((a.ALLOCATED_TO)as char(20)) as DRV_OWNER from drives a, paths b -
where a.library_name=b.library_name and a.drive_name=b.destination_name -
and b.source_name=a.ALLOCATED_TO order by a.drive_name
QMNT Macro
DEFINE SCRIPT QMNT DESC="Show tape mount status"
UPDATE SCRIPT QMNT "select varchar(a.library_name,15) as LIB_NAME, -"
UPDATE SCRIPT QMNT "cast((a.DRIVE_NAME)as char(16)) as DRIVE_NAME, -"
UPDATE SCRIPT QMNT "cast((a.drive_state)as char(10)) as DRIVE_STATE, -"
UPDATE SCRIPT QMNT "cast((a.volume_name)as char(8)) as VOL_NAME, -"
UPDATE SCRIPT QMNT "varchar(b.device,12) as device, cast((a.online)as char(10)) as ONLINE, -"
UPDATE SCRIPT QMNT "cast((a.ALLOCATED_TO)as char(20)) as DRV_OWNER from drives a, paths b -"
UPDATE SCRIPT QMNT "where a.library_name=b.library_name and a.drive_name=b.destination_name -"
UPDATE SCRIPT QMNT "and b.source_name=a.ALLOCATED_TO order by a.drive_name"
Subscribe to:
Posts (Atom)