什么文件系统操作需要是原子的?

Dan*_* D. 7 filesystems operations atomic atomicity

unlink,fsyncrename唯一的定义原子?

编辑:原子意味着操作成功并具有效果或失败并且无效; 操作必须不会失败并产生影响.

很明显,如果内核发生混乱,程序无法处理操作失败的错误,但在这种情况下必须考虑它确实失败了

Kor*_*nel 6

这是一篇列出一些原子文件操作的文章:

http://rcrowley.org/2010/01/06/things-unix-can-do-atomically.html

mv,link,symlink,mkdir和打开文件的一些方法是原子的.


sar*_*old 3

我不确定fsync(2)是否是原子的;如果一个文件在缓冲区缓存中有 100 兆字节的脏数据,则需要几秒钟的时间才能将该数据写出,并且在传输到磁盘的过程中内核可能会崩溃。也许板上的 DMA 引擎只能处理 4 MB 的写入。也许没有 DMA 支持,CPU 必须通过 512 字节块来调度每次写入。

“原子”是什么意思?

mkdir可能是“原子”,目录存在于磁盘上并链接到父目录,或者目录数据结构尚未链接到父目录,因此无法访问 --> 不存在。

同样的情况也可能发生mount(2):很难找到一个mount(2)半途完成的文件系统,如果失败,整个安装都会失败:文件系统要么已安装,要么没有安装。

umount(2)有趣的是,它可以懒惰地完成,但是一旦卸载,就不能用于open(2)creat(2)调用。

所以,我想这可以归结为“原子”是什么意思?:)

  • 据我所知,原子操作可能会失败,但下次驱动程序检查文件系统时,它将恢复这些操作。据我所知,有些系统保存了一种包含“开始”和“完成”操作的日志,如果操作未“完成”但文件系统正在启动,那么它肯定必须恢复! (2认同)