TSM migration processes

Hi ,

I want to understand TSM migration process, there are some migration scripts which are scheduled in crontab on tsm server, which runs the migration process. Following is the commands in the migration script, just want to know what exactly it means :-

# Reset number of migration processes for all other disk pools:
dsmadmc -id=admin -password=admin upd stg db_arch_disk_pool migpr=1
dsmadmc -id=admin -password=admin upd stg db_disk_pool migpr=1
dsmadmc -id=admin -password=admin upd stg db_arch_disk_pool migpr=1
dsmadmc -id=admin -password=admin upd stg windows_san migpr=1
# Turn off migration for all other disk pools:
dsmadmc -id=admin -password=admin upd stg db_arch_disk_pool hi=100 lo=90
dsmadmc -id=admin -password=admin upd stg db_disk_pool hi=100 lo=90
dsmadmc -id=admin -password=admin upd stg db_arch_disk_pool hi=100 lo=90
dsmadmc -id=admin -password=admin upd stg windows_san hi=100 lo=90
# Set number of migration processes higher for mis_unix_xxx disk pools:
dsmadmc -id=admin -password=admin upd stg mis_unix_prod migpr=2
dsmadmc -id=admin -password=admin upd stg mis_unix_temp migpr=1
# Turn on migration for mis_unix_xxx disk pools:
dsmadmc -id=admin -password=admin upd stg mis_unix_prod hi=1 lo=0
dsmadmc -id=admin -password=admin upd stg mis_unix_temp hi=1 lo=0

so, just want to know what these commands are exactly doing.

Who is Participating?
reneverConnect With a Mentor Commented:

dsmadmc -id=admin -password=admin
- logon to tsm server

upd stg <storage pool name> migpr=1
-  sets the number of sessions for migration (is number of tapedrives)
- you have 4 storage pools

upd stg <storage pool name> hi=100 lo=90
- sets the high and low watermark for migration. (normally 90-70)
- meaning if the amount of data is more than 100% (high) then it will move data to the next storage pool (see q stgp) until it reaches 90% (low again)
- this is used to keep free space available in the storagepool
- in your case it stops the migration of the storage pools. (it will not use tapedrives so it can be used for other migrations

upd stg mis_unix_prod migpr=2
- probably big server as it needs 2 tapedrives

admin upd stg storageppolname hi=1 lo=0
- set the value for the storage pool to 1, 0 (could be 0,0) which will migrate the other storage pools to the next destionation

In my opninion the script is used to handle the migration process with to less tapedrives.

You can add these commands also in TSM scheduling, you don't need to enter your password in here.
There are probably multiple cron jobs. You can also use one maintenance script where you can use the migrate command


>>-MIGrate STGpool--pool_name--+-------------------+------------>
   '-DUration--=--minutes-'  '-REClaim--=--+-No--+-'  

Commands can be entered
migrate stgpool <name> dur=<minutes> wait=yes

You can set the number of minutes that a migration may last
and it will wait till the job has been finished (or exceeded the duration time)
You can add multiple lines in the script.

Or use two scripts
If you have two tapedrives you can create two scripts and balance it yourself (sizes)



help upd stgp
on tsm server may help

Hello agin

You can also use parallel and serial to control the process


Regards again
gheistConnect With a Mentor Commented:
It is bad idea to fill disk pools completely 75/50 woul make sure no client gets rejected for full storage...
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

virgo0880Author Commented:
Hi renver,

Thanks for that info.  So in the above commands, migpr=1 means it will use only one tape drive...is that right ? then how come migration ends immediately as we have given it one tapedrive. Also is there any way to find out how much time is taken by each migration process to be complete through query in actlog which would be helpful to me to get the statistics.

Whether "upd stg <storage pool name> hi=100 lo=90" this command will set the migration process off immediately ...?

It is one-minute timer. It will not migrate at the same moment, but really soon.
hi=1 lo=0 will migrate immediatly all data out and prepare pool for deletion.

You can see the progress qith
q pr

you will see migration processes (if any)

You can also check with

q stgp

you can verify if the storage pool has been migrated completely
(It is possible that the data has been migrated to the next storage pool but that the data is still held in the diskpool for quicker restores

q stgp f=d

and check for utilized and migratied percentage
h q stgp
woolmilkporcConnect With a Mentor Commented:
select max(ACTIVITY) Activity, avg(END_TIME-START_TIME) "Avg. Duration",  -
ENTITY "Pool                                "  from summary -
where ACTIVITY='MIGRATION' group by entity order by 2
virgo0880Author Commented:
Based on this query, I am getting following output :

ACTIVITY                      Avg. Duration         Pool                                
------------------ ------------------------          ------------------------------------
MIGRATION                 0 00:03:20.032967 DB_ARCH_DISK_POOL                  
MIGRATION                 0 00:08:03.625000 MIS_UNIX_TEMP                      
MIGRATION                 0 00:17:32.433333 MIS_UNIX_PROD                      
MIGRATION                 0 05:48:25.916666 WINDOWS_SAN                        
MIGRATION                 0 15:36:18.633333 DB_DISK_POOL    

I'm not understanding the "avg.duration" part what exactly it means, its the number of minutes taken to complete. Also, if i want it for a particular day..how can i get it.

Yes, it's days hours:minutes:seconds.decimal.places. . .

Basically it means the average duration of the migration processes for a particular storage pool, calculated over all processes recorded in the summary table.

You could add "count(*)" to the query to get the number of processes per pool over which the average value has been calculated.

Issue Q STATUS and look for "Activity Summary Retention Period" to find out over which time period these processes have been recorded.

Attached is an example of a detail report for yesterday, Dec 01, 2010

ENTITY "Pool                                "  from summary -
where -
START_TIME>='12/01/2010 00:00:00' -
and -
START_TIME<='12/01/2010 23:59:59' -
and -
order by ENTITY

Open in new window

hi=100 is a bad idea as it might make clients handle storage shortage
hi=80 lo=20 will protect from such situations.
virgo0880Author Commented:
Thanks for you experts suggestions...guys.


I am trying to integrate count(*) with the query but getting following error

"ANR2938E The column 'ACTIVITY' is not allowed in this context; it must either be named in the GROUP BY clause or be nested within an aggregate function.

I am trying to execute this query :

select ACTIVITY, START_TIME, END_TIME, END_TIME-START_TIME "Duration", ENTITY "Pool", count(*) as "Sessions" from summary where START_TIME>='11/30/2010 00:00:00' and START_TIME<='11/30/2010 23:59:59' and ACTIVITY='MIGRATION' order by ENTITY
What is wrong in this query.


You need to reduce difference for SAN and DB pools to make sure migration is not so long
Asking for second time for
 q stgp f=d

count(*) was meant for the first quey I gave you, which is an aggregated query (containing "group by").
The second one is a detail query, and aggregate functions like count(*) are not allowed in such queries.

virgo0880Author Commented:
ok sir, got it working now. Thanks for that

virgo0880Author Commented:
Splitting the points.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.