1

我的程序(只有 1 个进程和 1 个线程)使用普通的旧写入系统调用将 n 个连续的数据块顺序写入 HDD(常规类型的 HDD)上的文件。这就像某种仅附加的日志文件。

在系统崩溃(电源故障,而不是 HDD 故障)后,我回读并验证 chunks[i] (0 < i < n) 已完全写入磁盘(通过检查长度)。可能是块的内容校验和不正确,但整个块[i]仍然稳定地位于磁盘表面。

在 chunks[i] 完全写下之前假设所有其他块对我来说是否安全?还是存在一个(或许多)块[j](0 < j < i)部分(或根本不)写入磁盘?我知道随机写入可以重新排序以提高磁盘吞吐量,但顺序写入也可以重新排序吗?

4

1 回答 1

1

是的,在写入磁盘之前可以重新排序(对您而言)显示为顺序的写入,主要是因为您的代码(甚至操作系统)看到的顺序可能不直接对应于磁盘上的位置。

尽管 IDE 磁盘确实(曾经)使用基于指定将保存数据的磁道、磁头和扇区的寻址,但它们早已转换为只有一定数量扇区的系统,并且取决于磁盘以合理的顺序排列它们。它通常做得很好,但在某些情况下(特别是如果一个扇区坏了并被备用扇区取代),乱序写入扇区可能是最有意义的。

于 2015-03-07T16:06:07.010 回答