【问题标题】:corrupt xml file when viewed through linux on windows mount在 windows mount 上通过 linux 查看时损坏的 xml 文件
【发布时间】:2014-03-03 13:24:50
【问题描述】:

我有一个安装到 Windows 共享 /mnt/somedire/ 的 linux 机器,它指向一个 Windows 服务器。我有另一个将 xml 文件写入 Windows 共享的 Windows 应用程序。然后,Linux 机器上的 ESB 应用程序使用挂载上的 xml 文件。

当 xml 文件生成并通过窗口(记事本或记事本++)查看时,它们很好。当通过 linux 通过 cat、vi 等命令查看时,xml 的最后 5 或 6 行缺失,但它们是同一个文件。

有没有人见过这个,你能告诉我如何解决它吗?

【问题讨论】:

    标签: linux windows mount corruption


    【解决方案1】:

    当您写入文件时,操作系统不会立即写入磁盘 - 它会写入多级缓存:文件系统缓存、块缓存、设备缓存等。

    缓存会定期“刷新” - 写入底层设备。例如,umount 就是这样做的。

    因此,当您的 Windows 应用程序将一些 XML 写入文件时 - 它会写入 NTFS 缓存。在 Windows 上读取此文件将通过相同的缓存完成,这就是它在 Windows 上保持一致的原因。但是你的 Linux 机器对缓存一无所知——它有自己的缓存。

    为避免此问题,您应该在 Windows 上使用直接 I/O 编写代码。

    【讨论】:

    • 我在挂载中添加了直接 I/O 标志但没有解决它,所以我添加了 cache='none' 选项并解决了它。感谢您为我指明正确的方向。
    【解决方案2】:

    您的 samba 安装似乎有问题。您的数据在 Linux 上没有刷新。

    尝试卸载并重新安装您的 samba 共享。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2010-12-26
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多