Linux软件RAID能确保块级别的一致性吗?
解决方法:
症状:软件RAID一致性检查可能指示数据错误
当一个内存缓冲因为等待I/O而被排列起来的时候,它可能会改变。这种事情可能在这些情况下发生:使用memory-mapped文件,或者应用使用直接I/O,而在写操作完成之前应用已经改变了数据,或者在常规文件I/O时,如果一个文件被删除了,而所有脏缓冲还没有被写入磁盘。
如果一个软件RAID实现在开始写磁盘之前没有拷贝缓冲,那么可能会导致RAID集合出现不一致。比如,在一个RAID 1 集合上的一个磁盘上的数据,可能不会匹配另外一个成员。这不是一个问题,因为正如上面描述的,应用程序会再次写入相关数据。问题是某些检查RAID集合的块级别一致性的工具会报告错误。这些错误,尽管精确,但是与操作系统或者应用级别的数据一致性无关。
如果系统部署了一个老的(leagecy)软件RAID解决方案,比如LSI megaraid,然后BIOS或者系统上的检查块级别一致性的工具会报告错误,而应用程序不会检查出问题,那么联系硬件提供商来检查是否发生了上面描述的情况。