关于RAID5控制器上复制故障的更多信息

当使用Adaptec 2400A控制器(四磁盘RAID5阵列)时,按照"大文件复制模式"复制文件会产生可复制的字节错误。由于到目前为止没有收到其它相关报告,我们不确定其它控制器是否也受到影响。

因为按照此模式复制的文件均有损坏字节,这一不兼容问题很快就被发现。此复制模式默认关闭,需要手动开启。"普通"的IDE控制器和SCSI控制器不会造成任何问题。对缓存创建做一个小改动就可以使复制正常。

这一不兼容问题已在Total Commander 6.03中修复。如果希望使用大文件复制模式,强烈建议您更新到新版本

对于关心技术原因的用户:

据我们了解,此问题的原因不在于Total Commander,而在于Adaptec控制器的驱动程序。按照Windows复制功能的相关文档,复制缓存应该排齐在磁盘扇区边界上。但是这个规定并非在所有情况下都被强制执行。

参见:FILE_FLAG_NO_BUFFERING中的The documentation for CreateFile:

“读写操作的缓存应按扇区对齐(排列在内存地址上并且是卷中扇区大小的整数倍)。取决于磁盘,这个规定可能不被强制执行。”

这个规定并不会导致复制时的写入错误——Total Commander的复制操作准确地按规定处理所有数据,在其它控制器上也工作正常。

我们猜想Delphi创建的大缓存总是排列在内存页面上,因为它在所有控制器上都可以工作。遗憾的是,由于Delphi似乎将缓存大小存储在最开始的4字节,其创建的缓存总是4字节的替换。