wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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运
我们正在使用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-server-2008-r2 – 为什么在使用DFSR复制后文件最终会被完全填充空字节?全部内容,希望文章能够帮你解决windows-server-2008-r2 – 为什么在使用DFSR复制后文件最终会被完全填充空字节?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。