Update: Use a newer version of Ubuntu. Newer versions of Ubuntu, e.g. 22.04+ should perform better and use bigger writes by default. Thanks to @dmitry-grigoryev who clarifies in an answer below that
big_writes was deprecated
If your version of fuse/libfuse < 3, then the original old solution provided here applies. To get the version.
fusermount -V
Solution for older Ubuntu systems (e.g. 20.04, supported until April 2025). Simply add the big_writes option, e.g.
sudo mount -o big_writes /dev/<device> /media/<mount_dir>
My Linux NAS with a low spec CPU now manages NTFS large file writes about three times faster. It improved from ~17MB/s to 50MB/s+. Even seen it peek at about 90MB/s in iotop which is probably near the external drives capability (a 2.5" USB3 HDD).
From the NTFS-3G man page:
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).
A previous post was on the right track with the reference provided:
perhaps check here for ideas on what could be causing it. http://www.tuxera.com/community/ntfs-3g-faq/#slow
The original question mentions noticing the issue with large file transfers. In my experience with copying media files or doing backups, the key option in the above FAQ was:
Workaround: using the mount option “big_writes” generally reduces the CPU usage, provided the software requesting the writes supports big blocks.
Closing notes:
- Paragon also offers an alternative @hi-angel's answer below provides more info if you have a newer Ubuntu version with kernel 5.15 and
ntfs3
as an option.
- Tuxera reserved the pro NTFS driver for embedded system partners and the open-sourced alternative wasn't as performant.
149MB/s
.