对文件调用 fsync() 时,文件会损坏吗?
例如,假设我的文件分布到磁盘块:
A B
|---------| |--------|
| Hello, | -> | World! |
|---------| |--------|
| 1234567 | | 89abcd |
|---------| |--------|
假设我想将整个文件内容更改为小写(以非常低效的方式)。所以我寻求文件的位置 1 将“H”更改为“h”,然后位置 8 将“W”更改为“w”。然后我调用fsync()
文件。该文件分布在两个磁盘块上。
- 写入的顺序是否得到维护?
- fsync() 操作在磁盘上是原子的吗?