【问题标题】:Consistency guarantee of file system regarding sequential write文件系统顺序写入的一致性保证
【发布时间】:2015-05-08 19:20:33
【问题描述】:
我的程序(只有 1 个进程和 1 个线程)使用普通的旧写入系统调用将 n 个连续的数据块顺序写入 HDD(常规类型的 HDD)上的文件。这就像某种只附加的日志文件。
在系统崩溃(电源故障,而不是 HDD 故障)后,我回读并验证 chunks[i] (0
在 chunks[i] 完全写下之前假设所有其他块是否安全?还是存在一个(或许多)块[j](0
【问题讨论】:
标签:
io
language-agnostic
consistency
os-agnostic
【解决方案1】:
是的,可以在写入磁盘之前重新排序(对您而言)显示为顺序的写入,主要是因为您的代码(甚至操作系统)看到的顺序可能与磁盘上的位置不直接对应。
虽然 IDE 磁盘确实(曾经)使用基于指定磁道、磁头和扇区来保存数据的寻址,但它们早已转换为只有一定数量扇区的系统,并且由磁盘以合理的顺序排列它们。它通常做得很好,但在某些情况下(特别是如果一个扇区已损坏并被备用扇区替换),乱序写入扇区可能是最有意义的。