windows-server-2008-r2 – 为什么在使用DFSR复制后文件最终会被完全填充空字节?

前端之家收集整理的这篇文章主要介绍了windows-server-2008-r2 – 为什么在使用DFSR复制后文件最终会被完全填充空字节?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在使用Microsoft的 Distributed File System进行复制.
在我们的场景中,我们有一个编写器,可以创建/覆盖/删除文件和几个分布式阅读器.
该作者正在运行Windows Server 2008 R2 Enterprise x64 SP 1,
读者正在运行Windows Server 2003 R2标准版x86 SP 2.
一些读者使用版本5.2.3790.4656运行DFSR,而其他一些读者使用修补版本5.2.3790.4799运行.

使用System.IO.File.WriteAllText编写文件,并且可以在同一个文件快速连续写入.

大多数情况下复制工作正常,但有时文件最终会在复制后完全填充空字节.
我们在所有涉及的机器上检查了DFSR日志,并在读者身上找到了以下类型的usn日志条目报告:

20150302 11:05:00.498 2512 USNC  2202 UsnConsumer::UpdateIdRecord ID record updated from USN_RECORD:
+    USN_RECORD:
+    RecordLength:        80
+    MajorVersion:        2
+    MinorVersion:        0
+    FileRefNumber:       0x800000000f7c8
+    ParentFileRefNumber: 0x31000000152806
+    USN:                 0x872e876720
+    TimeStamp:           20150302 11:05:00.498 CET
+    Reason:              Basic Info Change Close Rename New Name
+    SourceInfo:          0x4
+    SecurityId:          0xebe
+    FileAttributes:      0x2220
+    FileNameLength:      18
+    FileNameOffset:      60
+    FileName:            xyz.txt

让我们感到疑惑的是,根本没有日记帐分录报告
(读者应该阅读但不要修改任何东西)
以及设置稀疏属性的事实.

找出是否有某些进程执行意外写入或执行可疑操作
我们使用Process Monitor监视文件系统活动.
阅读器上的下一个空字节文件的出现给我们带来了以下内容

10:59:55,2311121    Dfsr.exe    1584    760 IRP_MJ_CREATE                   path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Desired Access: Generic Read/Write/Execute,Write DAC,Write Owner,Access System Security,Disposition: Create,Options: Sequential Access,Synchronous IO Non-Alert,Complete If Oplocked,Open For Backup,Open No Recall,Attributes: N,ShareMode: Read,Write,Delete,AllocationSize: 0,OpenResult: Created
10:59:55,2312485    Dfsr.exe    1584    760 IRP_MJ_CLEANUP                  path\to\xyz.txt-{GUID}-vVERSION    SUCCESS
10:59:55,2313007    Dfsr.exe    1584    760 IRP_MJ_CLOSE                    path\to\xyz.txt-{GUID}-vVERSION    SUCCESS
10:59:55,2314394    Dfsr.exe    1584    760 IRP_MJ_CREATE                   path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Desired Access: Read Attributes,Write Attributes,Synchronize,Disposition: Open,Open Reparse Point,AllocationSize: n/a,OpenResult: Opened
10:59:55,2314626    Dfsr.exe    1584    760 IRP_MJ_FILE_SYSTEM_CONTROL      path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Control: FSCTL_MARK_HANDLE
10:59:55,2314780    Dfsr.exe    1584    760 IRP_MJ_QUERY_INFORMATION        path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: QueryNameInformationFile,Name: path\to\xyz.txt-{GUID}-vVERSION
10:59:55,2314996    Dfsr.exe    1584    760 FASTIO_QUERY_INFORMATION        path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: QueryBasicInformationFile,CreationTime: 10.03.2015 10:59:55,LastAccessTime: 10.03.2015 10:59:55,LastWriteTime: 10.03.2015 10:59:55,ChangeTime: 10.03.2015 10:59:55,FileAttributes: ANCI
10:59:55,2315081    Dfsr.exe    1584    760 IRP_MJ_QUERY_INFORMATION        path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: QueryAttributeTagFile,Attributes: ANCI,ReparseTag: 0x0
10:59:55,2315194    Dfsr.exe    1584    760 IRP_MJ_QUERY_INFORMATION        path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: QueryCompressionInformationFile
10:59:55,2315391    Dfsr.exe    1584    760 IRP_MJ_QUERY_VOLUME_INFORMATION path\to\xyz.txt-{GUID}-vVERSION    BUFFER OVERFLOW Type: QueryInformationVolume,VolumeCreationTime: 14.07.2014 14:59:54,VolumeSerialNumber: 88F0-15DC,SupportsObjects: True,VolumeLabel: uvw
10:59:55,2315481    Dfsr.exe    1584    760 IRP_MJ_QUERY_INFORMATION        path\to\xyz.txt-{GUID}-vVERSION    BUFFER OVERFLOW Type: QueryAllInformationFile,FileAttributes: ANCI,EndOfFile: 0,NumberOfLinks: 1,DeletePending: False,Directory: False,IndexNumber: 0xe00000001589e,EaSize: 0,Access: Read Attributes,Position: 0,Mode: Sequential Access,AlignmentRequirement: Long
10:59:55,2316459    Dfsr.exe    1584    760 IRP_MJ_CREATE                   path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Desired Access: Generic Read/Write/Execute,2316691    Dfsr.exe    1584    760 IRP_MJ_FILE_SYSTEM_CONTROL      path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Control: FSCTL_MARK_HANDLE
10:59:55,2316796    Dfsr.exe    1584    760 IRP_MJ_CLEANUP                  path\to\xyz.txt-{GUID}-vVERSION    SUCCESS
10:59:55,2316876    Dfsr.exe    1584    760 IRP_MJ_CLOSE                    path\to\xyz.txt-{GUID}-vVERSION    SUCCESS
10:59:55,2317891    Dfsr.exe    1584    760 IRP_MJ_SET_SECURITY             path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Information: Owner,Group,DACL
10:59:55,2318748    Dfsr.exe    1584    760 IRP_MJ_FILE_SYSTEM_CONTROL      path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Control: FSCTL_SET_SPARSE
10:59:55,2319307    Dfsr.exe    1584    760 IRP_MJ_WRITE                    path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Offset: 0,Length: 0
10:59:55,2319442    Dfsr.exe    1584    760 IRP_MJ_SET_INFORMATION          path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: SetEndOfFileInformationFile,EndOfFile: 240
10:59:55,2320066    Dfsr.exe    1584    760 IRP_MJ_SET_INFORMATION          path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: SetAllocationInformationFile,AllocationSize: 240
10:59:55,2320382    Dfsr.exe    1584    760 IRP_MJ_WRITE                    path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Offset: 240,2320505    Dfsr.exe    1584    760 IRP_MJ_SET_INFORMATION          path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Type: SetBasicInformationFile,CreationTime: 16.12.2013 10:57:23,LastAccessTime: 19.02.2015 11:00:25,2320688    Dfsr.exe    1584    760 IRP_MJ_FILE_SYSTEM_CONTROL      path\to\xyz.txt-{GUID}-vVERSION    SUCCESS Control: FSCTL_WRITE_USN_CLOSE_RECORD
10:59:55,2321256    Dfsr.exe    1584    760 IRP_MJ_CLEANUP                  path\to\xyz.txt-{GUID}-vVERSION    SUCCESS
10:59:55,2321506    Dfsr.exe    1584    760 IRP_MJ_CLOSE                    path\to\xyz.txt-{GUID}-vVERSION    SUCCESS

通过这种观察,看起来DFSR就是产生它们的人.
它为什么这样做?
另外,为什么它将文件标记为稀疏?
除了使用上面概述的技术编写文件之外,作者不会弄乱文件.
请注意,移动EOF标记的偏移量与编写器创建的文件大小相匹配.

到目前为止,我们无法可靠地重现该问题.
有没有人知道造成这种情况的原因,更重要的是,如何解决这个问题?

您的DFS-R暂存区域与DFS-R文件夹位于同一卷上吗?出于性能原因,它应该是.如果没有,则DFS-R必须将文件从分段卷复制到目标卷而不是直接移动.

这就是猜测的结果.可能是在这个复制操作期间,DFS-R正在创建一个稀疏文件,然后填充块,并在完成时“解除”它.如果有什么东西中断了这个过程(比如防病毒软件,Undelete或扫描DfsrPrivate文件夹的其他文件过滤器驱动程序),那么你最终可能会得到一个没有填充其内容的临时稀疏文件.

您可以通过在正确复制的文件上使用Process Monitor来检测此行为,并查看它们是否在过程中的任何位置标记为/未标记为稀疏.

在谈到DFS-R时,我不喜欢混合2008年和2003年.我很高兴能从我们的DFS树上获得2003年的最后一台机器.

猜你在找的Windows相关文章