Linux软件RAID-5:发生故障的驱动器不会降级arrays

我有一个CentOS 6.0安装在Hyper-V虚拟机中。 我尝试了一些Linux的软件RAIDfunction,并且有一个由虚拟SCSI磁盘组成的RAID-5arrays。 它大部分工作正常:如果我closures虚拟机,并删除其中一个磁盘,arrays显示为降级时,我重新启动,但数据仍然完好无损。 然后,我可以重新添加一个驱动器到arrays并重build它没有任何问题。

如果我试图在VM仍然打开的情况下移除驱动器,则会出现问题。 也就是说,当虚拟机打开时,我进入该虚拟机的设置并删除其中一个SCSI磁盘。 在这种情况下,Linux似乎没有意识到驱动器已经消失,arrays不会进入降级模式。 相反,我在STORVSC的/ var / log / messages中收到了很多关于scsi状态码的警告。 而不是优雅地失败或进入降级模式,数组刚刚开始返回损坏的数据

我从字面上不会想到一个更糟的结果 – 在RAIDarrays中的驱动器故障的情况下,它决定只是开始返回损坏的数据? 当然不是?

我在这里做了一些可怕的错误,或者这是如何工作的?

主机系统是Windows Server 2008 R2 Standard x64。 CentOS6运行内核2.6.32-71.29.1.el6.x86_64。 RAIDarrays是使用mdadm创build的。 我没有与任何操作系统的内部搞砸 – 这基本上是一个全新的安装。

这可能是HyperV的一个问题。 我不能说任何明确的,但我知道,在服务器环境中,你应该使用磁盘TLER(时间限制的错误恢复),所以驱动器不会一直停留在重试模式,而是让OS很快就知道它已经死了。

对于使用普通RAID磁盘的Linux软件RAID,我的经验是在磁盘故障时磁盘arrays会降级,但是系统不能继续正常工作。

我会build议用真正的硬件来尝试这个,因为像恢复时间,总线问题等等,并不是真正的模拟。 还要实现顺便说一句,当你要testing拔下磁盘,结果将取决于如果你有hotplugging支持,并且如果你在SATA电源插头上连接3.3V(molex-to-sata转换器不.. 。)