关于连续写入文件系统的一致性保证(Consistency guarantee of file sys

2019-10-22 04:42发布

我的程序(仅1个进程和线程1)顺序写在硬盘使用普通的旧写系统调用(常规种HDD)的数据到一个文件n个连续的块。 这就像某种只追加日志文件。

在系统崩溃(电源故障,而不是HDD故障)之后,我读回和验证块[I](0 <I <N)已被完全记到磁盘(通过检查长度)。 可以是该块的内容不校验正确的,但仍然在整个块[I]稳定地坐在磁盘的表面上。

它是安全的,我承担所有其他块的块[I]被完全写下来过过吗? 或存在一个(或多个)组块[j]的写下来到磁盘(0 <Ĵ<i)该部分是(或不是在所有)? 我知道,随机写入,可以重新排列,以提高磁盘的吞吐量,但可以连续写太重新排序?

Answer 1:

是的,写道,出现连续(给你)可以被写入磁盘之前进行重新排序,这主要是因为你的代码(甚至操作系统)看到的顺序可能不会直接对应于磁盘上的位置。

虽然IDE磁盘做(一次)的基础上确定的轨道,磁头和扇区,将举行一个数据使用寻址,他们已经早就转换为一个系统,你只需要部门的一些号码,它是由盘面安排那些有意义的订单。 它通常做了不错的工作,但在某些情况下(特别是如果一个部门已经坏了,并用备用扇区被替换),它可能使编写部门乱序最有意义。



文章来源: Consistency guarantee of file system regarding sequential write