具有更好文件系统的 Windows

具有更好文件系统的 Windows

作为一名在 Windows 工作站上工作的 Java 开发人员,根据我的观察,与 Linux 文件系统相比,NTFS 速度较慢。问题是,NTFS 驱动程序中是否有可以手动调整的内容,例如为其提供更多缓存内存?启用一些实验性算法?如果没有,是否有其他可以在 Windows 上使用的文件系统,甚至是商业文件系统,其速度比 NTFS 更快?

需要说明的是,我并不是想提高 Maven 项目的编译速度,而是想让操作系统得到整体改进。我感觉 NTFS 早已过时,而且与 Linux 文件系统相比速度很慢。地球上最流行的操作系统只有一个文件系统,而且仍然需要手动碎片整理,这让我感到很奇怪。也许有替代?

更新:根据我的观察,以下是速度慢的原因。我正在构建/打包一个项目,这意味着在磁盘上进行大量读/写操作。构建系统是跨平台的(Java、Maven),因此我可以在启动到 Ubuntu 时执行完全相同的操作。

在 Linux 上,我的构建速度至少快了 1/3。因此,我问的是文件系统。如果问错了,我很抱歉。

答案1

虽然我很希望 Windows 主机能有类似 ZFS 的东西,但 NTFS 并不是一个糟糕的文件系统。它支持大多数“现代”文件系统功能(扩展属性、日志、ACL,等等),但它受到 Explorer 和大多数其他应用程序不支持这些功能的阻碍。

绝对会降低其性能的一件事是目录中的条目“太多”。一旦一个目录中的条目超过几千个,一切都会变得非常缓慢。当这种情况发生时,整个机器都会停止运行,等待 NTFS 创建或删除条目。

我曾经使用过一款为 .NET 程序集生成基于 HTML 的文档的应用程序;它会为每个属性、方法、类、命名空间等创建一个文件。对于较大的程序集,我们会看到 20+k 个文件,所有这些文件都很好地转储到单个目录中。机器在构建期间会花费几个小时在 NTFS 上被阻止。

理论上,Windows 支持文件系统插件,这使得原生 ZFS、ext3 或任何(甚至 FUSE)成为可能。实际上,API 尚未记录,因此您完全需要自己处理。

现在,既然您正在进行 Java 开发,您可以在您的机器上安装不同的操作系统,或者在 Windows 上使用 VM 吗?

此外,您可能还想尝试一些独立于平台的文件系统基准测试(iozone、bonnie……可能还有一些我暂时想不起来的现代基准测试,甚至可能还有一些用 Java 编写的基准测试),以查看是否真的是文件系统阻碍了您,或者是其他原因。过早优化等等……

答案2

  • 关闭上次访问时间
  • 关闭短文件名
  • 关闭删除通知
  • 关闭索引
  • 禁用日志记录
  • 禁用卷影复制和以前的版本以及配额和共享。
  • 启用绕过遍历检查

我猜真正的解决方案是重写您的构建系统,以便它使用本机 Windows 文件系统 API,而不是可移植性框架下的 unix API(fopen 等)。但这不会发生,所以基本上您只能使用他们认为可以接受的性能水平。

通常,当使用不是为 Windows 编写的系统时,您会发现目录遍历处理得很差,因此请确保您有一个非常平坦的目录树。

答案3

有一种文件系统受新 Windows 操作系统支持,并且比 NTFS 更快。它是 exFAT。有可能将其用作系统驱动器。但不知道它可能有什么复杂之处。

不过,您当然可以将其用于其他分区。随机读/写操作速度更快。例如,非常适合 SSD。

答案4

历史注释:操作系统,它在 NTFS 之上添加了一个更结构化的层,以使 Windows 能够更有效地处理文件内容。

NTFS 的“真正”继任者是重新文件系统。其重点是弹性。它仅适用于 Windows 10 Enterprise 和 Windows Pro for Workstations。值得一读的是NTFS 与 ReFS – 如何决定使用哪一个

相关内容