复制大型文件或使用 测试写入速度时dd
,在使用 NTFS 文件系统的驱动器上,我可以获得的最大写入速度约为 12-15MB/s。我测试了多个驱动器(均使用 SATA 连接),在 Windows 上或使用 ext4 格式化时,它们的写入速度均为 100MB/s+,因此这不是对齐或驱动器问题。
top
显示该进程的 CPU 使用率很高mount.ntfs
。
AMD 双核处理器(2.2 GHz)
内核版本:3.5.0-23-generic
Ubuntu 12.04
ntfs-3g
版本:两者2012.1.15AR.1
(Ubuntu 默认版本)和2013.1.13AR.2
我该如何修复写入速度?
答案1
更新:使用较新版本的 Ubuntu。较新版本的 Ubuntu(例如 22.04+)应该性能更好,并且默认使用更大的写入。感谢@dmitry-grigoryev谁澄清了回答如下那
big_writes已弃用
如果您的 fuse/libfuse 版本 < 3,则此处提供的原始旧解决方案适用。获取版本。
fusermount -V
针对较旧的 Ubuntu 系统(例如 20.04,支持到 2025 年 4 月)的解决方案。只需添加 big_writes 选项,例如
sudo mount -o big_writes /dev/<device> /media/<mount_dir>
我的 Linux NAS 配有低规格 CPU,现在管理 NTFS 大文件写入的速度提高了大约三倍。速度从约 17MB/s 提高到 50MB/s 以上。甚至在 iotop 中看到它的最高速度达到约 90MB/s,这可能接近外部驱动器的能力(2.5 英寸 USB3 HDD)。
来自 NTFS-3G 手册页:
big_writes
This option prevents fuse from splitting write buffers into 4K
chunks, enabling big write buffers to be transferred from the
application in a single step (up to some system limit, generally
128K bytes).
之前有一篇文章讲得非常正确,参考如下:
也许可以在这里查看一下可能造成这种情况的原因。http://www.tuxera.com/community/ntfs-3g-faq/#slow
原始问题提到注意大文件传输的问题。根据我复制媒体文件或进行备份的经验,上述常见问题解答中的关键选项是:
解决方法:使用挂载选项“big_writes”通常可以降低 CPU 使用率,前提是请求写入的软件支持大块。
结束语:
答案2
答案3
也许可以在这里查看一下可能造成这种情况的原因。 https://github.com/tuxera/ntfs-3g/wiki/NTFS-3G-FAQ
这听起来有点像“过去”的情况,当时文件 io 默认不使用 DMA。现在不太可能,但 BIOS 是否对 SATA 驱动器使用 IDE 模拟?因为如果它模拟 IDE,那么它也可能模拟非 DMA 模式。
另一个潜在的减速因素是 ntfs 文件压缩。您正在写入的文件夹是否启用了压缩?如果启用了,则该文件夹中的所有新文件也会被压缩。
答案4
这是一个老话题,但对于正在寻找相同问题解决方案的人来说:您是否启用了 cpuspeed?ntfs-3g 占用大量 CPU,在我的例子中,cpuspeed 错误地检测到有大量 IO 等待的进程负载较低,最终限制了核心并导致驱动程序不可用。
尝试禁用 cpuspeed(如果它作为服务运行)并再次测试。