umount 是否调用sync 来完成任何挂起的写入

umount 是否调用sync 来完成任何挂起的写入

我们有基于 BBB 的定制板,其上运行内核 3.12。

我对卸载和同步有疑问。

假设脚本正在卸载分区,是否需要在完成挂起的写入sync之前运行命令。 umount

答案1

sync不,你之前不需要跑umountumount将在实际卸载文件系统之前完成所有挂起的写入。如果某些进程仍在使用文件系统(例如作为当前工作目录),它也将拒绝卸载。

编辑:卸载主要在 中处理fs/namespace.c。您不会在sync那里找到任何显式调用,但您会看到类似“标记此挂载点以进行卸载,拒绝对其进行任何进一步操作,如果所有操作均已完成,则卸载”的注释。您还可以看到明确的使用中检查。

您可以轻松地测试自己是否umount确实完成了所有挂起的操作:安装一些速度较慢的 USB 记忆棒,将一个大文件复制到其中,然后直接调用umountafter cp。您将需要几秒钟的时间才能看到新的提示,如果您dstat在另一个窗口中运行etc.,您将看到仍在进行的写入操作。这与您键入 时的行为完全相同sync

相关内容