我目前正在为监控系统开发我们当前的媒体存储(用于存储视频/音频/元数据)的升级,并且我正在重新设计记录结构以提供更强大的解决方案。
我需要为存储在数据文件中的数据创建一些索引数据,所以我正在创建一个索引文件结构,但我担心硬盘故障(想象一下如果在写入索引文件期间断电,它将变得腐败,因为数据很可能会被写入一半)。我已经设计了索引的存储方式,但我担心的是电源故障或磁盘故障时的数据损坏
那么,有人知道在写入时避免数据损坏的技术吗?
我已经搜索了一下,没有找到好的解决方案,一个解决方案是创建一个写入文件的所有内容的日志,但是我每秒会有更多的 I/O(我关心 I/O 的数量) Os 每秒也是如此,系统应该尽可能少地执行)。
我想出的是在索引文件中复制敏感数据以及时间戳和校验和字段。例如:
Field1 Field2 Field3 时间戳校验和
Field1 Field2 Field3 时间戳校验和
所以,我将数据写入了两次,如果当我读取文件时,第一组字段已损坏(校验和不匹配),我有第二组字段应该没问题。我相信如果在中间停止写入时会发生损坏,因此,例如,当软件正在写入第一组字段并且电源故障时,第二组仍然完好无损......如果电源故障而第二set 正在编写中,第一个已经完好无损。
大家觉得这个解决方案怎么样?它是否避免数据损坏?
顺便说一句,由于部署具有事务性 NTFS 的系统的限制,我不能将任何类型的数据库用于这种存储或事务性 NTFS
欢迎任何想法,谢谢!