NTFS-3G is an open-source cross-platform implementation of the Microsoft Windows NTFS file system with read/write support. NTFS-3G often uses the FUSE file system interface, so it can run unmodified on many different operating systems. It is runnable on Linux, FreeBSD, NetBSD, OpenSolaris, illumos, BeOS, QNX, WinCE, Nucleus, VxWorks, Haiku,[2] MorphOS, Minix, macOS[4] and OpenBSD.[5][6] It is licensed under the GNU General Public License. It is a partial fork of ntfsprogs and is under active maintenance and development.

NTFS-3G
Developer(s)Tuxera Inc.
Initial releaseFebruary 21, 2007; 17 years ago (2007-02-21)[1]
Stable release
2022.10.3 / October 31, 2022; 2 years ago (2022-10-31)[2]
Repository
Written inC
Operating systemUnix-like, Haiku
TypeFile system driver
LicenseDual-licensed GNU GPL[3]
Websitegithub.com/tuxera/ntfs-3g

NTFS-3G was introduced by one of the senior Linux NTFS developers, Szabolcs Szakacsits, in July 2006. The first stable version was released on February 21, 2007, as version 1.0. The developers of NTFS-3G later formed a company, Tuxera Inc., to further develop the code. NTFS-3G is now the free "community edition",[2] while Tuxera NTFS is the proprietary version.

In 2021, Linus Torvalds merged a different NTFS (experimental as of 6.0)[7] implementation called NTFS3 into the Linux kernel 5.15.[8]

Features

edit

NTFS-3G supports all operations for writing files: files of any size can be created, modified, renamed, moved, or deleted on NTFS partitions. Transparent compression is supported, as well as system-level encryption.[9] Support to modify access control lists and permissions is available.[10] NTFS partitions are mounted using the Filesystem in Userspace (FUSE) interface. NTFS-3G supports hard links, symbolic links, and junctions. With the help of NTFS reparse point plugins, it can be made to read chunk-deduplicated files, system-compressed files, and OneDrive files.[11] NTFS-3G provides complete support and translation of NTFS access control list (ACL) to POSIX ACL permissions. A "usermap" utility is included to record the mapping from UIDs to Windows NT SIDs.

According to its own information, the company Tuxera Ltd was founded in 2008 by Szabolcs Szakacsits, because more and more requests from well-known companies regarding the integration into their products made this step necessary.[12] On its website, the company offers customized versions as Tuxera NTFS for Embedded Systems.

NTFS-3G supports partial NTFS journaling, so if an unexpected computer failure leaves the file system in an inconsistent state, the volume can be repaired. As of 2009, a volume having an unclean journal file is recovered and mounted by default. The ‘norecover’ mount option can be used to disable this behavior.[13]

At the end of August 2009, it became known that Tuxera had entered into a cooperation with Microsoft, which also included an intellectual property agreement.[14] Since Microsoft thus also provided insight into the specification of exFAT, Tuxera was able to develop the driver Tuxera exFAT for Embedded Systems in addition to NTFS, which is offered to commercial customers.

Performance

edit

Benchmarks show that the driver's performance via FUSE is comparable to that of other filesystems' drivers in-kernel,[15] provided that the CPU is powerful enough. On embedded or old systems, the high processor usage can severely limit performance. Tuxera sells optimized versions of the driver that claims to have improved CPU utilization for embedded systems and macOS.[16]

The slowness of NTFS-3G (and FUSE in general) on embedded systems is attributed to the frequent context switching associated with FUSE calls. Some open-source methods provided to reduce this overhead include:[17]

  • The underlying FUSE layer has an option called big_writes to use larger blocks when writing. Using a larger block means fewer context switches. This is in fact a solution recommended by Tuxera.[18] A patch is available to use an even larger block.[19]
  • There is also a Linux kernel option called lazytime to reduce the writes on file access.
  • Synology Inc. uses a modified NTFS-3G on their NAS systems. It replaces the ntfs-3g inode caching CACHE_NIDATA_SIZE with a different mechanism with unclear benefits. (It also includes an alternative Security Identifier translation for the NAS.)

History

edit
  • NTFS-3G forked from the Linux-NTFS project on October 31, 2006.
  • On February 21, 2007, Szabolcs Szakacsits announced "the release of the first open-source, freely available, stable read/write NTFS driver, NTFS-3G 1.0."[1]
  • On October 5, 2009, NTFS-3G for Mac was brought under the auspices of Tuxera Ltd. and a proprietary version called Tuxera NTFS for Mac was made available.[20]
  • On April 12, 2011, it was announced that Ntfsprogs project was merged with NTFS-3G.[21]
  • NTFS-3g added TRIM support in version 2015.3.14.
  • NTFS-3G fixed CVE-2017-0358 in version 2016.2.22.
  • NTFS-3G fixed CVE-2019-9755 in version 2017.3.23AR.4.
  • NTFS-3G fixed several CVE issues in version 2021.8.22
  • NTFS-3G fixed more CVE issues in version 2022.5.17

Advanced version

edit

The software's main maintainer Jean-Pierre André has kept the development active on SourceForge, providing bug fixes and new features. He ran a parallel release system on his website as the NTFS-3G Advanced Version (NTFS-3G AR). Each version was run through a test suite and was considered stable.[22][23]

Linux distributions that have switched to NTFS-3G AR include Debian and its derivatives (Ubuntu, PureOS, Pardus, Parrot OS, Trisquel), Gentoo Linux, and LiGurOS.[24]

As of August 30, 2021, the previously two collaborating projects merged and moved to GitHub.[25]

See also

edit

References

edit
  1. ^ a b "NTFS-3G 1.0 Released". www.phoronix.com. Retrieved April 11, 2024.
  2. ^ a b c "STABLE Version 2022.10.3 (Oct 31, 2022)". GitHub. Tuxera. October 31, 2022. Retrieved July 21, 2024.
  3. ^ "Tuxera/NTFS-3g". GitHub. November 3, 2021.
  4. ^ NTFS-3G for Mac OS X ("Catacombae")
  5. ^ "OpenBSD adds fuse(4) support for adding file systems in userland". OpenBSD Journal. November 8, 2013. Retrieved November 8, 2013.
  6. ^ "ntfs_3g-2014.2.15 – FUSE NTFS driver with read/write support". OpenBSD ports. January 5, 2014. Retrieved February 14, 2015.
  7. ^ "Re: [GIT PULL] ntfs3: bugfixes for 6.0 - Linus Torvalds". lore.kernel.org. Retrieved March 17, 2024.
  8. ^ "Re: [GIT PULL] ntfs3: New NTFS driver for 5.15 - Linus Torvalds".
  9. ^ NTFS-3G FAQ
  10. ^ NTFS-3G: NTFS Driver with Ownership and permissions
  11. ^ André, Jean-Pierre (March 1, 2019). "NTFS-3G: Junction Points, Symbolic Links and Reparse Points". jp-andre.pagesperso-orange.fr. Archived from the original on August 28, 2022.
  12. ^ "About us - Tuxera". Retrieved January 26, 2023.
  13. ^ "NTFS-3G 2009.2.1 changelog". Archived from the original on March 23, 2009. Retrieved September 10, 2012.
  14. ^ "NTFS-3G-Firma schließt IP-Abkommen mit Microsoft". Retrieved January 26, 2023.
  15. ^ Comparing NTFS-3G to ZFS-FUSE for FUSE Performance
  16. ^ "Performance at Tuxera". Archived from the original on May 22, 2011. Retrieved September 29, 2017.
  17. ^ Gothe, Markus. "On Linux NTFS Performance". Retrieved October 3, 2019.
  18. ^ "NTFS-3G Questions". Tuxera. Workaround: using the mount option "big_writes" generally reduces the CPU usage, provided the software requesting the writes supports big blocks.
  19. ^ Wang, M. "linux - Disadvantages of ntfs-3g 'big_writes' mount option". Unix & Linux Stack Exchange. Retrieved October 3, 2019.
  20. ^ NTFS-3G for Mac OS X is now Tuxera NTFS for Mac
  21. ^ "Release: NTFS-3G + NTFSPROGS 2011.4.12". Archived from the original on September 9, 2014. Retrieved April 26, 2018.
  22. ^ "Advanced NTFS-3G Features". jp-andre.pagesperso-orange.fr.
  23. ^ "NTFS-3G: Changelog for the Advanced Versions". jp-andre.pagesperso-orange.fr.
  24. ^ "ntfs-3g package versions". Repology.
  25. ^ "ntfs-3g versions merge". GitHub.
edit