在Linux上,是否mount -o remount,ro
刷新文件系统缓冲区/缓存,或者我也应该运行sync
来实现这一点?
答案1
它应该刷新缓存,是的。
可以说,这段代码路径存在一些脆弱性。它不是在一处实施的;它在每个单独的文件系统中实现。例如ext2_remount() 必须调用sync_filesystem()。
此外,在我所知道的所有用例中,它都与系统sync()
调用一起使用。因此,如果您依赖于此,并且内核出错,您可能拥有第一个发现问题的“特权”。
如果您想格外小心,可以使用sync -f /my/mounted/filesystem/
.这是更可取的,sync
因为它可以避免与任何其他文件系统的干扰。它使用Linux系统调用syncfs()
。
答案2
从维基百科
当文件系统以只读方式卸载或重新安装时(例如在系统关闭之前),缓冲区也会被刷新。