![Linux 上的 NTFS 支持,处理大型稀疏文件,影响性能](https://linux22.com/image/1540916/Linux%20%E4%B8%8A%E7%9A%84%20NTFS%20%E6%94%AF%E6%8C%81%EF%BC%8C%E5%A4%84%E7%90%86%E5%A4%A7%E5%9E%8B%E7%A8%80%E7%96%8F%E6%96%87%E4%BB%B6%EF%BC%8C%E5%BD%B1%E5%93%8D%E6%80%A7%E8%83%BD.png)
背景 :
我尝试在最近的 Knoppix 环境中使用 ddrescue 从故障硬盘中恢复数据。起初,我将输出存储到 NTFS 分区,但在某些时候,复制速度变得非常慢(~600KB/s),我在该工具的一些法语指南上看到,不建议恢复到 NTFS,尤其是对于大容量,因为据报道这会导致速度大幅下降。然后我切换到 ext4,性能似乎有了显著改善。(见这个问题。
我注意到,ddrescue 生成的输出图像文件的“磁盘大小”远低于其实际大小,这意味着 ddrescue 以某种方式仅分配已成功从输入中读取的数据,导致输出“部分稀疏”,即使未使用 -S 开关(“稀疏写入”)。在这种情况下,使用 -S 开关会导致实际从输入中读取的空扇区在输出中也未分配,从而使其“完全”稀疏。(见另一个问题。
问题 :
如何解释 NTFS 和 ext4 之间的这种性能差距?它确实与稀疏性有关吗?Linux NTFS 驱动程序是否已知在处理大型稀疏文件时会遇到麻烦?
答案1
首先,您可能使用的是 NTFS-3G,它是在用户空间而不是内核中实现的。仅这一点就意味着,使用 NTFS 时,上下文切换次数至少是使用 ext4 时的两倍。
除此之外,我无法对问题可能是什么发表太多评论,只能提到根据我自己的测试,NTFS 似乎不能在 LInux 上非常有效地处理稀疏文件,无论是使用 NTFS-3G,还是使用内核的本机驱动程序(几乎没有人使用,因为 NTFS-3G 具有更好的整体支持)。