V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AboPlus
V2EX  ›  程序员

询问下 v 站的大佬们一个关于操作系统获取文件大小和挂载服务器的问题!

  •  
  •   AboPlus · 364 天前 · 641 次点击
    这是一个创建于 364 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在的场景如下:

    ​ 算法 C ++写数据到一个二进制文件中,在写完数据后也进行了 flush()操作,随后写一份 json 文件,后续算法会持续追加数据到这个二进制文件中,每次追加操作都会产生一份 json 文件用来说明本次操作已经完成。

    ​ 后端读取到这个 json 文件后才会去读取这个二进制文件,在第一次拿到 json 文件后,发现此时读取的文件大小为 0 ,仅有一份空的二进制文件,于是猜测是挂载服务器未及时同步

    ​ 挂载服务器 NFS 分别对算法输出的目录和后端识别的目录进行了挂载,推测是算法输出的文件由于一直在被追加所以未能及时同步。

    ​ 但是算法现在在写 json 之前通过操作系统获取了一下文件大小(之前是后端获取),结果发现目前又是可以及时同步的,所以想问问各位大佬,这可能是什么原因造成的?和操作系统获取文件大小有关吗?
    3 条回复    2023-11-17 12:15:44 +08:00
    AboPlus
        1
    AboPlus  
    OP
       364 天前
    因为在算法端通过操作系统获取文件大小之前,都是未及时同步的状态,在加上了通过操作系统获取文件之后,发现能够及时同步了,所以对此表示不太理解,难道真的和通过操作系统获取文件大小有关吗?这又是什么原理呢?
    AboPlus
        2
    AboPlus  
    OP
       364 天前
    大佬们有什么思路没
    Raikiriww
        3
    Raikiriww  
       364 天前
    我记得操作系统会对写入操作进行缓存( disk write caching )我之前在 windows 上遇到过,具体见微软官方的文章: https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/turn-disk-write-caching-on-off
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4813 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:37 · PVG 13:37 · LAX 21:37 · JFK 00:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.