Print

Print


Thanks Wei,

I will look at implementing a service or the copy script can build a script that I can push to the destination server to a mass update.


I did find an awkward way to determine the space name associated with a file:

# xrdfs localhost query xattr /xrd/atlasproddisk/rucio/mc15_13TeV/cc/b9/EVNT.06212746._084813.pool.root.1
oss.cgroup=ATLASPRODDISK&oss.type=f&oss.used=3045780&oss.mt=1519975567&oss.ct=1519976072&oss.at=1519975567&oss.u=*&oss.g=*&oss.fs=w&ofs.ap=a

I'll have to investigate if using xrdfs is worth the effort.

Thanks again,

Patrick




On 03/02/2018 01:31 AM, Yang, Wei wrote:
> Hi Patrick,
> 
> I donĀ¹t know the answer of the 1st question. For the 2nd question, there is no way in xrootd to do this. So I use a separate help service on the data servers:
> 
> So if your copy script do something like "echo filename mtime atime | nc dataserver 5151", then this script will help you set the mtime.
> 
> #!/bin/sh
> 
> # xinetd service
> #service setmtime
> #{
> #    type        = UNLISTED
> #    socket_type = stream
> #    protocol    = tcp
> #    wait        = no
> #    user        = atldq2
> #    server      = /u/at/atldq2/bin/setmtime.sh
> #    port        = 5151
> #    log_on_failure  = HOST ATTEMPT
> #    log_on_success  =
> #    disable     = no
> #}
> 
> exec > /dev/null 2>&1
> read line
> set $line
> [ $# -ne 2 -a $# -ne 3 ] && exit
> [ ! -f $1 ] && exit
> if echo $2 | egrep -q '^[0-9]+$'; then  # set mtime
>      touch -m -c -d @$2 $1
> fi
> [ $# -eq 2 ] && exit
> if echo $3 | egrep -q '^[0-9]+$'; then  # set atime
>      touch -a -c -d @$3 $1
> fi
> 
> 
> 
> 
> --
> Wei Yang  |  [log in to unmask]  |  650-926-3338(O)
> 
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: <[log in to unmask]> on behalf of Patrick McGuigan <[log in to unmask]>
> Date: Friday, March 2, 2018 at 2:00 AM
> To: xrootd-l <[log in to unmask]>
> Subject: Mass data movement between dataservers
> 
>> Hi,
>>
>> I need to move large numbers of files between dataservers.  In one case this is
>> because I want to retire an existing host and, in another case, I need to free
>> up space on data servers so that overall usage among the dataservers is more
>> balanced.
>>
>> I can do this with existing scripts that I have used in the past, but there are
>> places I would like to improve things.
>>
>> The general operation is to:
>> 1) create a list of files to be moved and a list of dataservers that will accept
>> the copies.
>>
>> 2) Determine the space name associated with each file, so that the destination
>> maintains the space name.
>>
>> 3) In multiple threads copy the file with space information, verify the local
>> and remote checksums, delete the local file.  I normally kick off one process
>> per destination host.
>>
>>
>> I utilize a mapping function that looks at the path of a local file to determine
>> what space name it should belong to.  I am wondering if I can ask the dataserver
>> holding the file, what the space name is.  Is this possible, or if I can make an
>> xrdcp replicate the opaque information.
>>
>>
>> Another place I would like to improve things is to maintain the timestamps
>> associated with the original file, so that the modtime of the copied file
>> matches the modtime of the original file.  Is there there a way of doing the
>> equivalent to:
>>
>> touch -mt <STAMP> path
>>
>> on a file stored in xrootd?
>>
>>
>>
>> Should I be using FRM to manage all of this?
>>
>>
>> Regards,
>>
>> Patrick
>>
>> ########################################################################
>> Use REPLY-ALL to reply to list
>>
>> To unsubscribe from the XROOTD-L list, click the following link:
>> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-L list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1