干净关闭,卸载后运行同步

干净关闭,卸载后运行同步

在干净关闭期间sync运行是否有意义?umount我假设umount会将所有缓存的数据写入磁盘。

我能想到的唯一奇怪的情况是当你的真实磁盘顶部有一些循环设备(如 LUKS 容器)时。

Umount 可能会首先尝试卸载分区。并且在卸载循环设备之前,它可能无法卸载分区。但在这种情况下它会同步数据吗?

答案1

sync仅影响文件系统,不影响块设备。

不过,我无法回答一个有趣的问题(与卸载无关):按什么顺序处理sync文件系统?如果它首先刷新根文件系统的缓存,然后刷新循环设备文件系统的缓存,那么第二次刷新将为根文件系统创建新的缓存数据,因此可能永远不会出现一切都完全干净的时刻。但内核可能会等到所有文件系统缓存报告都干净后再返回sync()系统调用。

但是,sync如果您不相信内核能够正确执行此操作,您可以使用文件参数进行调用,并按正确的顺序多次调用它......

答案2

sync不,追求(成功)没有任何意义umount

umount 已将所有挂起的写入同步到文件系统。同步命令同步已安装文件系统的缓存文件系统数据。

现在,由 LUKS 配置的 dm-crypt 设备可以正确地传递刷新命令(参见cryptsetup 常见问题解答项目 2.13 如果我使用 dm-crypt/LUKS 映射日志文件系统,它是否仍提供通常的事务保证?)。

相关内容