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

时间:2011-03-08 11:48:22

标签: filesystems atomic operations atomicity

unlinkfsyncrename是唯一按定义原子的吗?

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

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

2 个答案:

答案 0 :(得分:6)

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

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

mvlinksymlinkmkdir以及打开文件的某些方式都是原子的。

答案 1 :(得分:2)

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

'atomic'是什么意思?

mkdir可能是'原子',要么磁盘上存在目录并且链接到父目录,要么目录数据结构尚未链接到父目录,因此无法访问 - >不存在。

同样适用于mount(2):很难找到mount(2)中途完成,如果失败,整个挂载失败:文件系统已挂载,或者它不是'吨。

umount(2)很有趣,可以懒散地完成,但一旦卸下,它就无法用于open(2)creat(2)来电。

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