我想编写一个将数据记录到文件中的库。不幸的是,我的系统遭遇意外重启和断电。 Linux是否对文件执行操作保证我的文件始终包含一致的数据?它是否保证"全部或全部"?
如果是这样,是否对正在写入的数据的大小有限制?
感谢。
答案 0 :(得分:1)
挂载文件系统时,可以指定以下选项之一。似乎第三个符合我的要求。 这就是我发现的 http://lxr.free-electrons.com/source/Documentation/filesystems/ext3.txt
有3种不同的数据模式:
写回模式 在data = writeback模式下,ext3根本不记录数据。此模式提供 与XFS,JFS和ReiserFS的默认日志级别相似的日志级别 模式 - 元数据日记。崩溃+恢复可能导致数据不正确 出现在崩溃前不久写入的文件中。这种模式会 通常提供最好的ext3性能。
有序模式 在data = ordered模式下,ext3只能正式记录元数据,但从逻辑上讲 将元数据和数据块分组到一个称为事务的单元中。什么时候 是时候将新的元数据写入磁盘,即相关的数据块 是先写的。通常,此模式执行速度稍慢 写回但比记录模式快得多。
日记模式 data = journal mode提供完整的数据和元数据日记功能。所有新数据都是 首先写入期刊,然后写到最终位置。 如果发生崩溃,可以重播期刊,同时提供数据和 元数据进入一致状态。除数据外,此模式最慢 需要在磁盘的同时读取和写入磁盘 优于所有其他模式。
答案 1 :(得分:0)
您永远无法预测物理写入操作在断电时停止的位置。即使您使用某些文件系统的journaling
功能。请注意,期刊也需要写成。