A colleague of mine sent me this interesting issue he ran into during a migration to EMC Celerra. Thought I would share.
The Problem:
If a file exists on both the source and destination, by default Robocopy copies the file if the two files have different time stamps or different sizes. However, Robocopy fails to copy only modified data from an NTFS volume on a BXL server to the Celerra.
What was happening is that when he was doing a Robocopy with the /mirror or /E /purge options the Robocopy always found the source file newer then the destination file on the Cellera and copied it, even if a Robocopy was run a minute earlier.
The reason this was happening was due to a variation in the EMC implementation of CIFS. The NTFS date and time stamp is a 64-bit variable, which DART doesn’t deal with. So Celerra uses the FAT timestamp format instead.
The Resolution:
To get around this issue it is recommended to use the /FFT switch in RoboCopy. /FFT switch stands for Fat Format Timestamps. For more information on Robocopy switches go to http://ss64.com/nt/robocopy.html.
In addition, I parameter can be set to make Celerra round up the time to the nearest second. This makes robocopy believe the files on Celerra have newer time and therefore does not copy the files.
[nasadmin@Harrison ~]$ server_param server_2 -f cifs -i nanoroundoff –v
server_2 :
name = nanoroundoff
facility_name = cifs
default_value = 0
current_value = 0
configured_value = 0
user_action = restart Service
change_effective = restart Service
range = (0,1)
description = Roundup the time information to the next second detailed_description Cifs protocol is able to set time using 64 bits value (time set in 100th of nano second since January 1, 1601 in Gegorian calendar. In Dart we do not have this granularity. This means time value read after set could be different (older). This parameter when set, is roundup the time value to the next second in order to not confused some application if the file is olderthan the time application has stored localy as the last update. Typical
application is profile storage on the DM. Setting this param improve performance at log off time, as the application will not try to flush again profile information seeing the last modification date is not older than the time info it has stored localy as the last modification date.
[nasadmin@Harrison ~]$ server_param server_2 -f cifs -m nanoroundoff -v 1
server_2 : done
Special Thanks to Keith for sharing this interesting tidbit.