在什么情况下文件会在 umount 过程中写入块设备?

Mar*_*tin 3 mount

我有一个紧凑型闪存卡被检测为块设备/dev/sdb。它有一个 FAT16 分区。现在,如果我挂载 FAT16 文件系统,向文件系统和umount文件系统写入一些内容,然后在以下期间实际写入文件umount

# mount | grep sdb
/dev/sdb1 on /media type vfat (rw)
# time cp image.bin /media/

real    0m0.179s
user    0m0.000s
sys 0m0.104s
# time umount /media 

real    0m18.185s
user    0m0.004s
sys 0m0.032s
# 
Run Code Online (Sandbox Code Playgroud)

我已经看到 USB 闪存的类似行为。什么决定文件是立即写入文件系统还是在文件系统分离期间?

jll*_*gre 5

如果文件是同步打开的,或者文件系统安装了同步选项,则会立即完成写入。

这通常对整体系统性能不利,因此只有在写入调用返回时必须将关键数据提交到存储设备时才会这样做。复制文件并不重要,因此内核在内部缓冲写入,并且仅定期将数据刷新到媒体。

您可以要求操作系统使用以下sync命令刷新所有这些缓存