Pool Migration
External documentation
Example for copying pool t3fs05_cms to t3fs07_cms using the 'migration copy' command
Set source pool to read only
The dcache book documentation describes setting the pool to readonly by using the
pool disable -rdonly
command of the pool cell. I noticed that this led to a whole number of stuck transfers, but was not able to analyze the situation adequately. However, one can also set a pool to readonly inside the PoolManager configuration or by using
psu set pool rdonly
in the PoolManager cell. This only affects the routing of the requests.
I prefer to do it in both places!
We have a shelltool for setting the
PoolManager pool configuration (as most shelltools, it can take a list of arguments on stdin, therefore the leading echo):
echo t3fs05_cms | dc_set_pools_readonly.sh -f
Enter the admin shell and switch to the source pool's cell:
[t3se01.psi.ch] (local) admin > cd t3fs05_cms
[t3se01.psi.ch] (t3fs05_cms) pool disable -rdonly
You can check which pools are disabled and which pools are set to readonly, by using
dc_get_pool_list.sh -o d
dc_get_pool_list.sh -o ro
Start the migration
[t3se01.psi.ch] (t3fs05_cms) migration copy t3fs07_cms
You can list the active migrations
[t3se01.psi.ch] (t3fs05_cms) migration ls
This yields 1 for our example
You can check on the progress of the migration
[t3se01.psi.ch] (t3fs05_cms) migration info 1
You can set the number of parallel copy processes to two for our migration job by using
[t3se01.psi.ch] (t3fs05_cms) migration concurrency 1 2
Check whether all files have been migrated
Simple way using the shelltools
Get the contents of both pools
dc_get_rep_ls.sh t3fs05_cms > t3fs05_cms.lst
dc_get_rep_ls.sh t3fs07_cms > t3fs07_cms.lst
Run a simple loop to find the missing entries on the target pool
for n in $(cat t3fs05_cms.lst); do grep -q $n t3fs07_cms.lst; if test $? -ne 0; then echo $n >> missing-on-t3fs07.lst; fi; done
If there are missing entries, use the shelltools to find out more about them, e.g. map to pnfs IDs:
dc_get_pnfsname_from_IDlist.sh missing-on-t3fs07.lst
It may well be that you find that all of these files lack a mapping in pnfs (which can happen if during the migration these entries were deleted by users. Since the source pool is set to read only, the physical file will remain on the disk until the pool is made read/write again).
Remove files on the source pool
dc_rep_rm_list.sh t3fs05_cms.lst t3fs05_cms.lst
Using migration move
Instead of copying the files, checking the correct copying and then removing the source files one can also use the
migration move command instead of the
migration copy. Then dcache itself will remove the copied source files.
--
DerekFeichtinger - 2010-03-17