msync 是否会像 ext3 上的 fsync 一样将文件系统上的所有文件同步到磁盘?

发布于 2024-12-08 20:47:56 字数 154 浏览 0 评论 0原文

据我所知,在大多数日志模式为“data=ordered”的ext3系统上,fsync不仅会同步fd指定的文件,还会同步文件系统上的所有文件,而这个问题在内核2.6之前还没有得到修复.30

我有一个问题,那就是 msync 和 fsync 做同样的事情吗?

谢谢。

as far as I know, on most ext3 system with log mode "data=ordered", fsync will not only sync the file specified with the fd, but will sync all files on the filesystem, and this problem has not been fixed before kernel 2.6.30

And I got a question, that is, is msync do the same thing as fsync does?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

王权女流氓 2024-12-15 20:47:56

这不是一个错误,而是一个功能。 Ext3 是一个日志文件系统。 data=ordered 表示您要求将更改写入文件系统按照其进行的顺序

因此,当您要求将更改同步到特定文件时,您必须提交所有先前的更改,无论是对该文件还是其他文件,否则您将破坏保持数据顺序的指令。出于这个原因,我怀疑 msync 也会以同样的方式运行,尽管我还没有检查过。

事实上,有人可能会说,如果不是的话,那就是文件系统错误......

It's not a bug, it's a feature. Ext3 is a journaled file system. data=ordered means you are asking for the changes to the file system to be written in the order they are made.

So, when you are asking to sync the changes to a particular file you have to commit all the previous changes, whether to that files or others, or you are breaking the directive to keep the data in order. For this reason I suspect that msync will behave in the same way, although I haven't checked.

In fact, one can argue that if it doesn't it's a file system bug...

童话 2024-12-15 20:47:56

读了各种文章,我认为这根本不是真的。如果您执行一次 fsync,它不会将所有脏数据刷新到光盘。它仅刷新属于同一文件的元数据。

此外,使用 data=ordered 描述的问题似乎是它等待对同一设备的其他挂起的 IO 请求,即使它在逻辑上应该具有更高的优先级。并非所有脏数据都被刷新(如sync())。

我想做一个实验来找出答案。

Reading the various articles, I don't think that's true at all. It does not flush all dirty data to disc if you do one fsync. It only flushes the metadata belonging to the same file.

Moreover, the problem described with data=ordered, seems to be that it waits for other pending IO requests to the same device, even though it should logically be higher priority. Not for all dirty data to be flushed (like sync()).

I would like to do an experiment to find out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文