Open Source: NTFS-3G

Open Source: NTFS-3G

Read-Write NTFS Driver

NTFS-3G is a stable, full-featured, read-write NTFS driver for Linux, Android, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku, and other operating systems. It provides safe handling of the Windows XP, Windows Server 2003, Windows 2000, Windows Vista, Windows Server 2008, Windows 7 and Windows 8 NTFS file systems. A high-performance alternative, called Tuxera NTFS is available for embedded devices and Mac OS X.

The release notes and the software changes can be found on the Release History page. Subscribe here for new release notifications.

Download

The latest stable version is ntfs-3g_ntfsprogs-2015.3.14, released on March 31, 2015.

Availability:

 

Stable Source Release 2015.3.14 Tuxera NTFS for Mac (fastest)
FreeBSD FreshPorts NTFS-3G for Mac OS X
NetBSD Package Collection Mac OS X Fink Package
Haiku Source Repository Mac OS X MacPorts
QNX Portal

 

Installation

Linux: Most distributions include and use NTFS-3G by default. Please use that one unless it’s an old version. If you wish to install NTFS-3G from the source code then make sure you have installed the basic development tools (gcc compiler, libc-dev libraries). Then type:

./configure
make
make install # or 'sudo make install' if you aren't root

Non-Linux: Please see the OS specific installation and source packages above.

Usage

If there was no error during installation then the NTFS volume can be mounted in read-write mode for everybody as follows. Unmount the volume if it had already been mounted, replace /dev/sda1 and /mnt/windows, if needed.

mount -t ntfs-3g /dev/sda1 /mnt/windows

Please see the NTFS-3G Manual for more options and examples.

You can also make NTFS to be mounted during boot by adding the following line to the end of the /etc/fstab file:

/dev/sda1 /mnt/windows ntfs-3g defaults 0 0

Name

ntfs-3g – Third Generation Read/Write NTFS Driver

Contents

Synopsis

ntfs-3g [-o option[,…]] volume mount_point
mount -t ntfs-3g [-o option[,…]] volume mount_point

lowntfs-3g [-o option[,…]] volume mount_point
mount -t lowntfs-3g [-o option[,…]] volume mount_point

Description

ntfs-3g is an NTFS driver, which can create, remove, rename, move files, directories, hard links, and streams; it can read and write files, including streams and sparse files; it can handle special files like symbolic links, devices, and FIFOs; moreover it can also read and create transparently compressed files.

It comes in two variants ntfs-3g and lowntfs-3g with a few differences mentioned below in relevant options descriptions.

The volume to be mounted can be either a block device or an image file.

Windows hibernation and fast restarting

On computers which can be dual-booted into Windows or Linux, Windows has to be fully shut down before booting into Linux, otherwise the NTFS file systems on internal disks may be left in an inconsistent state and changes made by Linux may be ignored by Windows.

So, Windows may not be left in hibernation when starting Linux, in order to avoid inconsistencies. Moreover, the fast restart feature available on recent Windows systems has to be disabled. This can be achieved by issuing as an Administrator the Windows command which disables both hibernation and fast restarting :

  powercfg /h off

Access Handling and Security

By default, files and directories are owned by the effective user and group of the mounting process and everybody has full read, write, execution and directory browsing permissions. You can also assign permissions to a single user by using the uid and/or the gid options together with the umask, or fmask and dmask options.

Doing so, Windows users have full access to the files created by ntfs-3g.

But, by setting the permissions option, you can benefit from the full ownership and permissions features as defined by POSIX. Moreover, by defining a Windows-to-Linux user mapping in the file .NTFS-3G/UserMapping, the ownerships and permissions are even applied to Windows users and conversely.

If ntfs-3g is set setuid-root then non-root users will be also able to mount volumes.

Windows Filename Compatibility

NTFS supports several filename namespaces: DOS, Win32 and POSIX. While the ntfs-3g driver handles all of them, it always creates new files in the POSIX namespace for maximum portability and interoperability reasons. This means that filenames are case sensitive and all characters are allowed except ’/’ and ’\0′. This is perfectly legal on Windows, though some applications may get confused. The option windows_names may be used to apply Windows restrictions to new file names.

Alternate Data Streams (ADS)

NTFS stores all data in streams. Every file has exactly one unnamed data stream and can have many named data streams. The size of a file is the size of its unnamed data stream. By default, ntfs-3g will only read the unnamed data stream. By using the options “streams_interface=windows” (not possible with lowntfs-3g), you will be able to read any named data streams, simply by specifying the stream’s name after a colon. For example:

  cat some.mp3:artist

Named data streams act like normals files, so you can read from them, write to them and even delete them (using rm). You can list all the named data streams a file has by getting the “ntfs.streams.list” extended attribute.

Options

Most of the generic mount options described in mount(8) are supported (ro, rw, suid, nosuid, dev, nodev, exec, noexec). Below is a summary of the options that ntfs-3g additionally accepts.

uid=value and gid=value
Set the owner and the group of files and directories. The values are numerical. The defaults are the uid and gid of the current process.
umask=value
Set the bitmask of the file and directory permissions that are not present. The value is given in octal. The default value is 0 which means full access to everybody.
fmask=value
Set the bitmask of the file permissions that are not present. The value is given in octal. The default value is 0 which means full access to everybody.
dmask=value
Set the bitmask of the directory permissions that are not present. The value is given in octal. The default value is 0 which means full access to everybody.
usermapping=file-name
Use file file-name as the user mapping file instead of the default .NTFS-3G/UserMapping. If file-name defines a full path, the file must be located on a partition previously mounted. If it defines a relative path, it is interpreted relative to the root of NTFS partition being mounted.
When a user mapping file is defined, the options uid=, gid=, umask=, fmask=, dmask= and silent are ignored.
See ownership and permissions for valid combinations of security related options.
permissions
Set standard permissions on created files and use standard access control. This option is set by default when a user mapping file is present.
acl
Enable setting Posix ACLs on created files and use them for access control. This option is only available on specific builds. It is set by default when a user mapping file is present and the permissions mount option is not set.
inherit
When creating a new file, set its initial protections according to inheritance rules defined in parent directory. These rules deviate from Posix specifications, but yield a better Windows compatibility. The permissions option or a valid user mapping file is required for this option to be effective.
ro
Mount filesystem read-only. Useful if Windows is hibernated.
ignore_case
(only with lowntfs-3g) Ignore character case when accessing a file (FOO, Foo, foo, etc. designate the same file). All files are displayed with lower case in directory listings.
remove_hiberfile
Unlike in case of read-only mount, the read-write mount is denied if the NTFS volume is hibernated. One needs either to resume Windows and shutdown it properly, or use this option which will remove the Windows hibernation file. Please note, this means that the saved Windows session will be completely lost. Use this option for your own responsibility.
recover
Recover and try to mount a partition which was not unmounted properly by Windows. The Windows logfile is cleared, which may cause inconsistencies. Currently this is the default option.
norecover
Do not try to mount a partition which was not unmounted properly by Windows.
atime, noatime, relatime
The atime option updates inode access time for each access.The noatime option disables inode access time updates which can speed up file operations and prevent sleeping (notebook) disks spinning up too often thus saving energy and disk lifetime.
The relatime option is very similar to noatime. It updates inode access times relative to modify or change time. The access time is only updated if the previous access time was earlier than the current modify or change time. Unlike noatime this option doesn’t break applications that need to know if a file has been read since the last time it was modified. This is the default behaviour.
show_sys_files
Show the system files in directory listings. Otherwise the default behaviour is to hide the system files. Please note that even when this option is specified, “$MFT” may not be visible due to a glibc bug. Furthermore, irrespectively of show_sys_files, all files are accessible by name, for example you can always do “ls -l ’$UpCase’”.
hide_hid_files
Hide the hidden files and directories in directory listings, the hidden files and directories being the ones whose NTFS attribute have the hidden flag set. The hidden files will not be selected when using wildcards in commands, but all files and directories remain accessible by full name, for example you can always display the Windows trash bin directory by : “ls -ld $RECYCLE.BIN”.
hide_dot_files
Set the hidden flag in the NTFS attribute for created files and directories whose first character of the name is a dot. Such files and directories normally do not appear in directory listings, and when the flag is set they do not appear in Windows directory displays either.
windows_names
This option prevents files, directories and extended attributes to be created with a name not allowed by windows, either because it contains some not allowed character (which are the nine characters ” * / : < > ? \ | and those whose code is less than 0x20) or because the last character is a space or a dot. Existing such files can still be read (and renamed).
max_read=value
With this option the maximum size of read operations can be set. The default is infinite. Note that the size of read requests is limited anyway to 32 pages (which is 128kbyte on i386).
silent
Do nothing, without returning any error on chown and chmod operations and on permission checking errors, when the permissions option is not set and no user mapping file is defined. This option is on by default, and when set off (through option no_def_opts) ownership and permissions parameters have to be set.
no_def_opts
By default ntfs-3g acts as if silent (ignore permission errors when permissions are not enabled), allow_other (allow any user to access files) and nonempty (allow mounting on non-empty directories) were set, the no_def_opts option cancels this behaviour.
streams_interface=value
This option controls how the user can access Alternate Data Streams (ADS) or in other words, named data streams. It can be set to, one of none, windows or xattr. If the option is set to none, the user will have no access to the named data streams. If it’s set to windows (not possible with lowntfs-3g), then the user can access them just like in Windows (eg. cat file:stream). If it’s set to xattr, then the named data streams are mapped to xattrs and user can be manipulated by using {get,set}fattr utilities. The default is xattr on Linux, none on other OSes.
user_xattr
Same as streams_interface=xattr.
efs_raw
This option should only be used in backup or restore situation. It changes the apparent size of files and the behavior of read and write operations so that encrypted files can be saved and restored without being decrypted. The user.ntfs.efsinfo extended attributes associated to files have also to be saved and restored for the files to be decrypted later.
compression
This option enables creating new transparently compressed files in directories marked for compression. A directory is marked for compression by setting the bit 11 (value 0x00000800) in its Windows attribute. In such a directory, new files are created compressed and new subdirectories are themselves marked for compression. The option and the flag have no effect on existing files. Currently this is the default option.
nocompression
This option disables creating new transparently compressed files in directories marked for compression. Existing compressed files can still be read and updated.
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).
force
This mount option is not used anymore. It was superseded by the recover and norecover options.
debug
Makes ntfs-3g to not detach from terminal and print a lot of driver debug output.
no_detach
Same as above but with less debug output.

User Mapping

NTFS uses specific ids to record the ownership of files instead of the uid and gid used by Linux. As a consequence a mapping between the ids has to be defined for ownerships to be recorded into NTFS and recognized. By default this mapping is fetched from the file .NTFS-3G/UserMapping located in the NTFS partition. The option usermapping= may be used to define another location.

Each line in the user mapping file defines a mapping. It is organized in three fields separated by colons. The first field identifies a uid, the second field identifies a gid and the third one identifies the corresponding NTFS id, known as a SID. The uid and the gid are optional and defining both of them for the same SID is not recommended.

If no interoperation with Windows is needed, you can use the option permissions to define a standard mapping. Alternately, you may define your own mapping by setting a user mapping file with a single line with no uid or gid. In both cases, files created on Linux will appear to Windows as owned by a foreign user, and files created on Windows will appear to Linux as owned by root. Copy the example below and replace the 9 and 10-digit numbers by any number not greater than 4294967295.

::S-1-5-21-3141592653-589793238-462643383-10000

If interoperation with Windows is needed, the mapping has to be defined for each user and group known in both system, and the SIDs used by Windows has to be collected. This will lead to a user mapping file like :

john::S-1-5-21-3141592653-589793238-462643383-1008
mary::S-1-5-21-3141592653-589793238-462643383-1009
:smith:S-1-5-21-3141592653-589793238-462643383-513
::S-1-5-21-3141592653-589793238-462643383-10000

The utilities ntfs-3g.usermap or ntfs-3g.secaudit (with option -u) may be used to create the user mapping file.

Examples

Mount /dev/sda1 to /mnt/windows (make sure /mnt/windows exists):

ntfs-3g /dev/sda1 /mnt/windows
or
mount -t ntfs-3g /dev/sda1 /mnt/windows

Mount the ntfs data partition /dev/sda3 to /mnt/data with standard Linux permissions applied :

ntfs-3g -o permissions /dev/sda3 /mnt/data
or
mount -t ntfs-3g -o permissions /dev/sda3 /mnt/data

Read-only mount /dev/sda5 to /home/user/mnt and make user with uid 1000 to be the owner of all files:

ntfs-3g -o ro,uid=1000 /dev/sda5 /home/user/mnt

/etc/fstab entry for the above (the sixth and last field should be zero to avoid a file system check at boot time) :

/dev/sda5 /home/user/mnt ntfs-3g ro,uid=1000 0 0

Unmount /mnt/windows:

umount /mnt/windows

Exit codes

To facilitate the use of the ntfs-3g driver in scripts, an exit code is returned to give an indication of the mountability status of a volume. Value 0 means success, and all other ones mean an error. The unique error codes are documented in the ntfs-3g.probe(8) manual page.

Known issues

Please see

http://www.tuxera.com/community/ntfs-3g-faq/

for common questions, known issues and support.

Acknowledgement

Several people made heroic efforts, often over five or more years which resulted the ntfs-3g driver. Most importantly they are Anton Altaparmakov, Richard Russon, Szabolcs Szakacsits, Yura Pakhuchiy, Yuval Fledel, Jean-Pierre André, Alon Bar-Lev, Dominique L Bouix, Csaba Henk, Bernhard Kaindl, Erik Larsson, Alejandro Pulver, and the author of the groundbreaking FUSE file system development framework, Miklos Szeredi.

See also

ntfs-3g.probe(8), ntfsprogs(8), attr(5), getfattr(1), setfattr(1)

The major and important driver changes are listed below. Stable releases are GREEN, releases for testing are RED.

STABLE Version 2015.3.14 (March 31, 2015)

Changes to NTFS-3G:

  • Fixed inserting a new ACL after wiping out by chkdsk
  • Fixed Windows-type inheritance
  • Fixed ignoring the umask mount option when permissions are used
  • Fixed checking permissions when Posix ACLs are compiled in but not enabled
  • Disabled option remove_hiberfile on read-only mounts
  • Implemented an extended attribute to get/set EAs
  • Avoid full runlist updating in more situations
  • Update ctime after setting an ACL
  • Use MFT record 15 for the first extent to MFT:DATA
  • Ignore the sloppy mount option (-s)
  • Implemented FITRIM (fstrim) ioctl
  • Reengineered the compression algorithm

Changes to ntfsprogs:

  • Return success from ntfsprogs utilities with options –version and the like
  • Implemented configure option –enable-quarantined for non functional utilities
  • Added manuals for ntfsdecrypt, ntfswipe, ntfstruncate and ntfsfallocate

STABLE Version 2014.2.15 (January 23, 2014)

  • libntfs: added use of hd library to get the legacy BIOS geometry
  • libntfs: switched to /proc/mounts for checking existing mounts
  • libntfs: fixed usa checking by ntfsck on 4K sector disks
  • libntfs: fixed processing compressed data beyond file size (Windows 8 compliance)
  • libntfs: fixed expanding a resident attribute without inserting holes
  • libntfs: allow DACLs to not have any ACE
  • libntfs: ignore unmapped regions when checking whether sparse
  • libntfs: upgraded the Win32 interface for use with ntfsprogs
  • ntfsresize: enabled relocating the MFT when shrinking a volume
  • ntfsresize: fixed trying to update the MFT and Bitmap on a test run
  • ntfsresize: fixed updating all the MFT runs in a relocated MFT
  • ntfsresize: set the backup boot sector when the size is reliable
  • ntfsresize: reserved a single sector for the backup boot sector
  • ntfsundelete: output the modification time when scanning files
  • ntfsundelete: ported to Windows
  • ntfsclone: fixed wiping fragmented metadata when creating a metadata image
  • ntfsclone: allowed cloning a file system despite allocation errors
  • ntfsclone: fixed bad copying of the backup boot sector
  • ntfsclone: ported to Windows
  • ntfsdecrypt: made compatible with libgrypt-1.6

STABLE Version 2013.1.13 (January 14, 2013)

  • ntfs-3g: fixed returned files types in readdir()
  • ntfs-3g: force option ‘ro’ when mounting a read-only device
  • ntfs-3g: keep the name of a deleted file in place for easier undeletion
  • ntfs-3g: accept multiple read-only mounts
  • ntfs-3g: improved Windows-type ACL inheritance, as needed by Windows 8
  • ntfs-3g: avoid unnecessary runlist update when appending data to a file
  • ntfs-3g: added inheritance of the set-group-id flag
  • ntfs-3g: deny mounting when fast restart mode of Windows 8 is detected
  • ntfs-3g: reject getting/setting DOS names on hard linked files
  • ntfsclone: fixed wiping user data when creating metadata images
  • ntfsclone: implemented a new option to set a new serial number
  • ntfsfix: implemented fixing the backup boot sector
  • ntfsfix: fixed clearing the bad cluster list
  • ntfsinfo: added allocation data to the volume parameters summary
  • ntfsinfo: output the numbers of runs and fragments for the selected file
  • ntfslabel: implemented a new option to set a new serial number
  • ntfswipe: added optional wiping of file tails and undelete data
  • mkntfs: insert an $Info stream in $UpCase to comply with Windows 8
  • openindianas: merged OpenIndiana requirements into the driver and fuse-lite

STABLE Version 2012.1.15 (January 22, 2012)

  • ntfs-3g: fixed device path canonicalization for use by devmapper
  • ntfs-3g: fixed setting DOS names when defined with lower-case chars
  • ntfs-3g: fixed attribute flags controlling recursive writes
  • ntfs-3g: fixed compilation on OpenIndiana
  • ntfs-3g: fixed options parsing on OSes with no extended attributes
  • ntfs-3g: fixed relatime as a default mount option
  • ntfs-3g: fixed endless recursion when MFT extents are described by themselves
  • ntfs-3g: fixed the description of inherit option
  • ntfs-3g: fixed overwriting a truncated file
  • ntfs-3g: fixed truncation of DOS file names (12 ntfschars, not 12 utf8 chars)
  • ntfs-3g: fixed the setting of attributes by secaudit (index not synced)
  • ntfs-3g: faster compression
  • ntfs-3g: new option delay_mtime to delay updates of mtime+ctime
  • ntfsfix: new option -d to clear the dirty flag if fix is successful
  • ntfsfix: fixed volume dirty flag test
  • ntfsfix: new option to clear the list of bad sectors
  • ntfsfix: fixed compilation on Sparc
  • ntfsfix: fixed a bug causing a segmentation violation
  • ntfsfix: repair self-located MFT data bug
  • ntfscp: fix free space calculation
  • ntfscp: support compression
  • ntfsresize: implemented expanding runlists
  • ntfsresize: updated the description of the -f option
  • ntfsresize: expand an NTFS volume downwards
  • ntfsclone: backup bootsector not be to accounted for
  • ntfsclone: creating/restoring a metadata image
  • ntfsundelete: try to recover the file name when undeleting
  • ntfsundelete: use inode number to name unnamed files
  • ntfswipe: Big endian and other fixes
  • secaudit: prefixed owner and group SID in ACL display
  • library: fixed big cluster support using 4kB sector disk
  • library: fixed huge data writes
  • library: use transparent compression by default
  • library: fixed several bad returns in error conditions
  • library: enabled getting the sector size on FreeBSD and MacOSX
  • build: fixed “make libs” to only build libraries
TEST Version 2011.10.9-RC (October 9, 2011)
  • ntfs-3g: fixed device path canonicalization for use by devmapper
  • ntfs-3g: fixed setting DOS names when defined with lower-case chars
  • ntfs-3g: fixed attribute flags controlling recursive writes
  • ntfs-3g: fixed compilation on OpenIndiana
  • ntfs-3g: fixed options parsing on OSes with no extended attributes
  • ntfs-3g: fixed relatime as a default mount option
  • ntfs-3g: fixed endless recursion when MFT extents are described by themselves
  • ntfs-3g: fixed the description of inherit option
  • ntfs-3g: fixed overwriting a truncated file
  • ntfs-3g: fixed truncation of DOS file names (12 ntfschars, not 12 utf8 chars)
  • ntfs-3g: fixed the setting of attributes by secaudit (index not synced)
  • ntfs-3g: faster compression
  • ntfs-3g: new option delay_mtime to delay updates of mtime+ctime
  • ntfsfix: new option to clear the list of bad sectors
  • ntfsfix: fixed compilation on Sparc
  • ntfsfix: fixed a bug causing a segmentation violation
  • ntfsfix: repair self-located MFT data bug
  • ntfsresize: implemented expanding runlists
  • ntfsresize: updated the description of the -f option
  • ntfsresize: expand an NTFS volume downwards
  • ntfsclone: backup bootsector not be to accounted for
  • ntfsclone: creating/restoring a metadata image
  • ntfsundelete: try to recover the file name when undeleting
  • ntfsundelete: use inode number to name unnamed files
  • library: fixed several bad returns in error conditions
  • library: enabled getting the sector size on FreeBSD and MacOSX
  • build: fixed “make libs” to only build libraries

STABLE Version 2011.4.12 (April 10, 2011)

  • ntfs-3g: fixed possible wrong hole size when overwriting compressed data.
  • ntfs-3g: fixed listxattr() to environments with extended attributes.
  • ntfs-3g: fixed ENOSPC when making an index non-resident.
  • ntfs-3g: fixed partial mapping ahead of mapped runlist.
  • ntfs-3g: enabled forensic mounting (currently same as read-only).
  • ntfs-3g: expand an attribute without creating a hole.
  • ntfs-3g: improved appending data to a long hole.
  • ntfs-3g: deny direct modifications to metadata files.
  • ntfs-3g: option ‘acl’ to request the use of Posix ACLs.
  • ntfsclone: fixed reading old big-endian ntfsclone images.
  • ntfsclone: avoided writing beyond allocated variable.
  • ntfsclone: close volume and cleanup when exiting.
  • ntfsclone: new option not to clear the timestamps.
  • ntfsclone: sync created image before remounting.
  • ntfsclone: use a stream to produce aligned writes during image creation.
  • ntfsinfo: display times in UTC.
  • mkntfs: don’t store full bitmap and logfile in memory.
  • mkntfs: set a volume UUID if option -U.
  • mkntfs: fixed $MFT allocated size.
  • mkntfs: fixed allocated size of resident unnamed data.
  • ntfsfix: new option -n for no action.
  • ntfsfix: try alternate boot sector if cannot start up.
  • ntfsfix: check and fix the upcase table.
  • ntfsfix: try to fix file systems with incorrect size.
  • ntfsundelete: fixed a segfault.
  • ntfsresize: new option –info-mb-only.
  • ntfsresize: new option –check.
TEST Version 2011.3.28-RC (March 27, 2011)
  • ntfs-3g: fixed possible wrong hole size when overwriting compressed data.
  • ntfs-3g: fixed listxattr() to environments with extended attributes.
  • ntfs-3g: fixed ENOSPC when making an index non-resident.
  • ntfs-3g: fixed partial mapping ahead of mapped runlist.
  • ntfs-3g: enabled forensic mounting (currently same as read-only).
  • ntfs-3g: expand an attribute without creating a hole.
  • ntfs-3g: improved appending data to a long hole.
  • ntfs-3g: deny direct modifications to metadata files.
  • ntfs-3g: option ‘acl’ to request the use of Posix ACLs.
  • ntfsclone: fixed reading old big-endian ntfsclone images.
  • ntfsclone: avoided writing beyond allocated variable.
  • ntfsclone: close volume and cleanup when exiting.
  • ntfsclone: new option not to clear the timestamps.
  • ntfsclone: sync created image before remounting.
  • ntfsclone: use a stream to produce aligned writes during image creation.
  • ntfsinfo: display times in UTC.
  • mkntfs: don’t store full bitmap and logfile in memory.
  • mkntfs: set a volume UUID if option -U.
  • mkntfs: fixed $MFT allocated size.
  • mkntfs: fixed allocated size of resident unnamed data.
  • ntfsfix: new option -n for no action.
  • ntfsfix: try alternate boot sector if cannot start up.
  • ntfsfix: check and fix the upcase table.
  • ntfsfix: try to fix file systems with incorrect size.
  • ntfsundelete: fixed a segfault.
  • ntfsresize: new option –info-mb-only.
  • ntfsresize: new option –check.

STABLE Version 2011.1.15 (January 23, 2011)

  • New: implemented fsync() and fsyncdir().
  • New: implemented the ‘sync’ mount option.
  • New: sanity check upcase table.
  • New: added a big-endian extended attribute name for attrib and times.
  • New: added an extended attribute name for creation time.
  • New: enable renaming of system extended attributes.
  • Change: improved appending data to fragmented files.
  • Change: improved rebuilding a runlist.
  • Change: improved comparing filenames on big-endian CPUs.
  • Fixed stat(2) for system files with no data.
  • Fixed alignment on cached structures.
  • Fixed Posix ACLs for big-endian CPUs.
  • Fixed deleting files using ignore_case option.
  • Fixed allocated size when an attribute update causes unnamed data to be expelled.

STABLE Version 2010.10.2 (October 3, 2010)

  • Fixed filename encoding when standard functions are not available.
  • Fixed checking mounted device status on some non-Linux platforms.
  • Fixed mounting with SELinux context.
  • Fixed -n and –no-mtab mount option handling, needed by automount.
  • Improved consistency checks of POSIX ACLs.
  • NTFS-3G manual update.

STABLE Version 2010.8.8 (August 8, 2010)

  • New: Full, transparent, read-write compression support.
  • New: Two new mount options: compression and nocompression (default).
  • New: Introduced windows_names mount option to enforce only Windows names.
  • Change: Re-enabled compression in root directory.
  • Change: Reversed default for showing/hiding hidden files.
  • Change: Redefined default user mapping.
  • Change: Marked files whose name has a dot initial as “hidden” if option hide_dot_files is used.
  • Change: Renamed option default_permissions to permissions.
  • Fixed use of utimensat() with external fuse older than 2.8.
  • Fixed a hang when reading a corrupt compressed file.
  • Fixed a possible crash when creating a stream.
  • Fixed all reported and found compressed write related bugs.
  • Fixed partially overwriting sparse clusters on highly fragmented volumes.
  • Fixed checking write errors in setxattr().
  • Fixed processing end of partial runlist for compressed files.
  • Fixed updating file compressed sizes.
  • Fixed checking the device mount state.
  • Fixed processing of options silent and no_def_opts.
  • Fixed excessive cluster allocation within big holes.
  • Fixed creating empty encrypted extended attributes.
  • Fixed too permissive sanity check before compressing.
  • Fixed error returns when writing compressed data.
  • Fixed sanity checked when closing a compressed file.
  • Fixed zeroing the end of an ex-hole cluster of compressed files.
  • Improved sanity checks on security descriptors.
TEST Version 2010.7.23-RC (July 23, 2010)
  • Fixed partially overwriting sparse clusters on highly fragmented volumes.
  • Fixed checking write errors in setxattr().
  • Fixed processing end of partial runlist for compressed files.
  • Fixed updating file compressed sizes.
  • Fixed checking the device mount state.
  • Fixed processing of options silent and no_def_opts.
  • Fixed excessive cluster allocation within big holes.
  • Fixed creating empty encrypted extended attributes.
  • Fixed too permissive sanity check before compressing.
  • Fixed error returns when writing compressed data.
  • Fixed sanity checked when closing a compressed file.
  • Improved sanity checks on security descriptors.
TEST Version 2010.6.31-RC (June 30, 2010)
  • New: Full, transparent, read-write compression support.
  • New: Two new mount options: compression and nocompression (default).
  • New: Introduced windows_names mount option to enforce only Windows names.
  • Change: Re-enabled compression in root directory.
  • Change: Reversed default for showing/hiding hidden files.
  • Change: Redefined default user mapping.
  • Change: Marked files whose name has a dot initial as “hidden” if option hide_dot_files is used.
  • Change: Renamed option default_permissions to permissions.
  • Fixed use of utimensat() with external fuse older than 2.8.
  • Fixed a hang when reading a corrupt compressed file.
  • Fixed a possible crash when creating a stream.
  • Fixed all reported and found compressed write related bugs.

STABLE Version 2010.5.22 (May 31, 2010)

  • Fixed build to create missing usermap and secaudit.

STABLE Version 2010.5.16 (May 16, 2010)

  • Fixed a compilation issue with uClibc.
  • Fixed modifying the read-only flag on a directory.
  • Fixed a bug in ACL inheritance.
  • Fixed a bad condition for security descriptor upgrade.
  • Fixed a possible index block with no key in $SII.
  • Fixed the condition for executing utime() and utimensat().
  • Fixed wrong flags when uid/gid are forced in mount options.
  • Fixed a bad error checking when closing a compressed file.
  • Fixed compiler warnings on OpenSolaris.
  • Fixed conditional code for self-test in secaudit.

STABLE Version 2010.3.6 (March 7, 2010)

  • New: Support Object Identifiers which are used by Windows for shortcuts and caused CHKDSK warnings when the target was deleted.
  • New: Nanosecond resolution file timestamps support.
  • New: Selective file timestamp modification by utimensat(2).
  • New: Make non-resident TXF_DATA attribute of root directory resident so Vista and later won’t complain about RAW partition.
  • New: Caching inodes.
  • New: More efficient UTF8/UTF16 translations.
  • Fixed setting archive bit on file and alternated data stream creation.
  • Fixed setting reparse tags in parent directories.
  • Fixed enabling permissions when no UserMapping file is found.
  • Fixed an error return code in the main mount function.
  • Fixed setting timestamp via extended attributes to be consistent between Windows and Linux view.
  • Fixed option processing when uid, gid, fmask or dmask are present.
TEST Version 2010.2.6-RC (February 7, 2010)
  • New: Support Object Identifiers which are used by Windows for shortcuts and caused CHKDSK warnings when the target was deleted.
  • New: Nanosecond resolution file timestamps support.
  • New: Selective file timestamp modification by utimensat(2).
  • New: Make non-resident TXF_DATA attribute of root directory resident so Vista and later won’t complain about RAW partition.
  • New: Caching inodes.
  • New: More efficient UTF8/UTF16 translations.
  • Fix: Setting timestamp via extended attributes was not consistent between Windows and Linux view.

STABLE Version 2010.1.16 (January 16, 2010)

  • Fix: Vista, Windows Server 2008 and Windows 7 couldn’t access a volume, file or directory if it had a non-resident TXF_DATA attribute despite being allowed by the NTFS $AttrDef attribute specification file. Solution is also available from Microsoft, please see KB974729. Upgrade is recommended!
  • Fix: NTFS-3G may crashed if a junction point referred to a non-ASCII filename.
  • Fix: Compilation errors on Mac OS X, OpenSolaris and openSUSE.

STABLE Version 2009.11.14 (November 15, 2009)

  • New: Full file ownership and permissions support. The ownership and permissions of files are interoperable with Windows and conforms to the POSIX rules.
  • New: POSIX ACL support. The ACLs are an extension to ownership and permissions as defined in POSIX.
  • New: Optional Windows-type inheritance of ACLs.
  • New: Full extended attributes support for all namespaces: user, system, security and trusted.
  • New: Junction points support. The junction points and symbolic links created by Windows are seen as symbolic links.
  • New: Access is possible to NTFS internal data like Windows style archive bit and file attributes. They are mapped to extended attributes for easier access.
  • New: Compression write support: sequential writing to compressed files is supported.
  • New: Support copying and restoring encrypted files without decrypting them.
  • New: Support getting and setting high-resolution file timestamps.
  • New: Support to get, set and remove DOS filenames.
  • New: Tools for managing ownership, permissions and ACLs: ntfs-3g.secaudit checks the integrity of ownership, permissions and ACL, ntfs-3g.usermap gives help to configure ownership.
  • New: Implemented setchgtime() on Mac OS X.
  • Fix: Improved Windows junction and symlink handling.
  • Fix: Improved ACL handling.
  • Fix: Unicode normalization on Mac OS X.
  • Fix: Implemented true fsync() on Mac OS X
  • Change: Performance optimizations. Frequently used data are cached to improve speed. Space allocation for fragmented and sparse files has been improved.
TEST Version 2009.10.5-RC (October 10, 2009)
  • New: Full file ownership and permissions support. The ownership and permissions of files are interoperable with Windows and conforms to the POSIX rules.
  • New: POSIX ACL support. The ACLs are an extension to ownership and permissions as defined in POSIX.
  • New: Optional Windows-type inheritance of ACLs.
  • New: Full extended attributes support for all namespaces: user, system, security and trusted.
  • New: Junction points support. The junction points and symbolic links created by Windows are seen as symbolic links.
  • New: Access is possible to NTFS internal data like Windows style archive bit and file attributes. They are mapped to extended attributes for easier access.
  • New: Compression write support: sequential writing to compressed files is supported.
  • New: Support copying and restoring encrypted files without decrypting them.
  • New: Support getting and setting high-resolution file timestamps.
  • New: Support to get, set and remove DOS filenames.
  • New: Tools for managing ownership, permissions and ACLs: secaudit checks the integrity of ownership, permissions and ACL, usermap gives help to configure ownership.
  • Change: Performance optimizations. Frequently used data are cached to improve speed. Space allocation for fragmented and sparse files has been improved.

STABLE Version 2009.4.4 (April 2, 2009)

  • Fix: Mount and system boot could hang if Linux kernel audit was enabled.
  • Fix: Volume could be potentially corrupted or the driver may crashed after a partial write or hardware error.
  • Fix: The driver could crash handling highly fragmented files.

STABLE Version 2009.3.8 (March 26, 2009)

  • Fix: Some defragmenters reported NTFS-3G created directories unmovable.
  • Fix: The Windows NTFS file system checker, CHKDSK, may reported “free space marked as allocated in the master file table (MFT) bitmap”.
  • Fix: The driver may returned “No space left on device” error when there was still free space on the NTFS volume.
  • Fix: A file may got corrupted when the STANDARD INFORMATION attribute was moved to an extent MFT record. Only the already fixed Advanced NTFS-3G Driver had this problem, not the Stable NTFS-3G Driver.
  • Change: 10-50% faster file and directory creation, removal, copy, unpackaging performance.
  • Change: 500-1000% faster mount time. This is mostly noticable on multi-TB volumes and embedded devices. Please note, a generally 10-20 times faster performing NTFS-3G driver is available for embedded devices separately.
  • Change: Improved multi-cluster allocation, non-aligned file write performance.
  • Change: Improved volume consistency and recovery if the storage device was unsafely detached or powered down.
  • Change: Less disk space usage.
  • New: The version/-V command line option has been added.

STABLE Version 2009.2.1 (February 12, 2009) — Release Notes

  • New: The ‘recover’ and ‘norecover’ mount options were introduced. The former option will cause the driver to recover and repair a corrupted or inconsistent NTFS volume if it’s possible. The default behaviour is ‘recover’.
  • Fix: The driver may crashed when it tried to read a highly fragmented file or directory which was either corrupted or it was unreadable due to a hardware error. Upgrade is recommended.
  • Fix: The driver incorrectly returned ‘Permission denied’ error message if a requested extended attribute namespace wasn’t supported.
  • Fix: The lack of file backup timestamp support confused some applications on OS X.
  • Change: The user extended attribute namespace is supported by default on Linux.
  • Change: A volume having unclean journal file is recovered and mounted by default. The ‘norecover’ mount option can be used to disable this behavior.

STABLE Version 2009.1.1 (January 22, 2009) — Release Notes

  • New: Built-in, transparent UTF-8 conversion support. This solves all the problems, described here, and even more with hidden and inaccessible filenames having national characters.
  • New: Support getting/setting the file creation timestamp on OS X.
  • Fix: An extended attribute got corrupted if the new attribute size was smaller than the original size.
  • Fix: Memory leaked if an extended attribute or alternate data stream couldn’t be opened.
  • Fix: Report an error if a filename can not be listed during reading a directory.
  • Change: The ‘locale=’ mount option is not used anymore for filename characterset conversion. Instead filenames are always converted to UTF-8.
TEST Version 1.5222-RC (December 22, 2008) — Release Notes
  • New: Built-in, transparent UTF-8 conversion support.
  • Fix: Report an error if a filename can not be listed during reading a directory.
  • Change: The ‘locale=’ mount option is not used anymore for filename characterset conversion. Instead filenames are always converted to UTF-8.

STABLE Version 1.5130 (November 30, 2008) — Release Notes

  • Fix: Reading a data storage with permanent or temporary physical damage, or a partial read(2) system call could result ignoring the low level hardware error and returning invalid data. Upgrade is recommended.

STABLE Version 1.5012 (October 12, 2008) — Release Notes

  • Version 1.2926-RC is released unchanged as stable. The NTFS-3G driver is able for unlimited file and directory creation and removal as the result of 13 years continuous development with the help of hundreds of contributors over these years. Congratulations And Thank You To Everybody Who Made It Happen!
TEST Version 1.2926-RC (September 19, 2008) — Release Notes
  • New: Support unlimited file and directory creation. Successfully tested the creation of 54 million (54,000,000) files in a single directory, besides the other test cases.

STABLE Version 1.2918 (September 18, 2008) — Release Notes

  • Fix: A corrupted directory index entry could hang the driver instead of returning “I/O error”.

STABLE Version 1.2812 (August 15, 2008) — Release Notes

  • Fix: The allocation size of an attribute may got corrupted if the attribute size change failed.
  • Fix: An MFT record could leak on big-endian CPUs if adding a new attribute failed.
  • Fix: The system log was flooded if a transparently compressed or encrypted file was tried to be updated repeatedly.
  • New: Solaris support.
  • New: Libtool-2 support.
  • Change: No external dependency on librt anymore when internal FUSE is used (default on Linux).
  • Change: The default compiler is gcc.
  • Change: Internal FUSE further shrank by 10%.

STABLE Version 1.2712 (July 12, 2008) — Release Notes

  • Fix: A corrupted size directory or a directory over tens of million files may hang the driver. If NTFS-3G is compiled with an external FUSE library (non-default on Linux) then FUSE CVS is needed until FUSE 2.8.0 is released.
  • Fix: Removing alternate data streams and extended attributes leaked memory.
  • Fix: Mount could fail with some mount(8) utilities (e.g. busybox one) if the /etc/mtab file didn’t exist or was on a read-only file system. This fix should solve most of the “/bin/mount: invalid option -i” mount problems. If NTFS-3G is compiled with an external FUSE library (non-default on Linux) then FUSE CVS is needed until FUSE 2.8.0 is released.
  • Fix: The driver always returned “I/O errors” if the standard file descriptors were closed during mount, e.g. via some usage of udev, hotplug, etc.
  • Fix: Building the driver failed if the –prefix=/ configure option was used.
  • Fix: Driver compilation may failed with ‘PATH_MAX undeclared’ error message in some (cross)-compilation environments.

STABLE Version 1.2531 (May 29, 2008) — Release Notes

  • Fix: Mount failed with “Invalid argument” error message if the mountpoint was a symlink. If NTFS-3G is compiled with an external FUSE library (non-default on Linux) then FUSE CVS is needed until FUSE 2.8.0 is released.
  • Fix: A corrupted directory could hang the driver.
  • Fix: Mount could hang if the block allocation map was corrupted.
  • Fix: The driver could hang or misbehave when compressed, sparse or encrypted file attribute flags were corrupted.
  • Fix: The driver could crash when both an MFT attribute offset and the allocated bytes were corrupted.
  • Fix: Building the driver failed if the –exec-prefix configure option was used without –sbindir=/sbin.
  • Fix: Parallel ‘make install’ may failed.
  • New: Support building the driver in a separate directory.
  • New: Added –enable-mount-helper configure option which installs /sbin/mount.ntfs-3g, so mount via mount(8) and /etc/fstab can work on Linux. The default is enabled on Linux and disabled on all other operating systems.

STABLE Version 1.2506 (May 6, 2008) — Release Notes

  • Fix: In certain, rare circumstances, any area of the NTFS volume, except the NTFS boot sector, could get corrupted. The chance for this to happen is higher for close to full disk utilisation and using one of the more uncommon, less than 4096 byte cluster sizes. The cluster size is logged under the /var/logs directory usually in the ‘messages’ or ‘daemon.log’ log file, as the blksize mount parameter. All stable releases have this issue since version 1.328. Upgrade is strongly recommended from all NTFS-3G releases.

STABLE Version 1.2412 (April 12, 2008) — Release Notes

  • Fix: The total file system depth was limited to 4095 characters by FUSE and trying to access files and directories deeper gave “No such file or directory” error. If NTFS-3G is compiled with an external FUSE library (non-default on Linux), then FUSE CVS is needed until FUSE 2.8.0 is released.
  • Fix: The symlink(2) system call failed or the size was truncated at modulo 256 if the old path was over 255 bytes.
  • Fix: Unprivileged mount may have been denied because supplementary groups were dropped too early as a security measure.
  • Fix: Unprivileged mount may have been denied if the /etc/fuse.conf file wasn’t properly configured. This was redundant and the /etc/fuse.conf file is not required anymore.
  • Fix: Updating hard link attributes was delayed by one second which resulted softwares seeing their file sizes and timestamps incorrectly during this time interval.
  • Fix: The ‘noatime’ mount option additionally and unconditionally was passed to FUSE.

STABLE Version 1.2310 (March 10, 2008) — Release Notes

  • Fix: The driver crashed when one tried to open a non-existent file which had at least twice as long file name as the one allowed by the NTFS specification.
  • Fix: Windows CHKDSK may reported minor inconsistencies because the data and allocation size of some special purpose resident unnamed $DATA attribute in the index and inode FILE_NAME attributes could be incorrect.
  • Fix: Unprivileged mount failed if user had rights for everything except the FUSE device file.
  • Fix: The ‘dev’ and ‘suid’ mount options didn’t work.
  • Change: The rmdir(2) system call returns ENOTEMPTY instead of EEXIST because the GNOME glib library and the Nautilus file browser couldn’t handle the also standard EEXIST value which resulted an error message when for instance one tried to remove a directory containing files.
  • Change: The ‘dev’ and ‘suid’ mount options are the default from now on for root mounts, similarly as other file systems behave. These options are always denied for setuid-root and unprivileged mounts.

STABLE Version 1.2216 (February 16, 2008) — Release Notes

  • Fix: File and directory removal, rename and move may have been denied with an “Operation not supported” error message.
  • Fix: Setuid-root ntfs-3g had a local root exploit and other security problems. From now on unprivileged mounts of block devices are possible only with using the integrated FUSE library (default on Linux) which has no known security problem.
  • Fix: Unprivileged unmount didn’t always work.
  • Fix: Create mount.ntfs-3g symlink always in /sbin where mount(8) needs it.
  • New: Added ‘remove_hiberfile’ mount option to be able to read/write mount hibernated volumes for recovery and troubleshooting purposes.
  • Change: Keep shrinking driver size.

STABLE Version 1.2129 (January 29, 2008) — Release Notes

  • Version 1.2125-RC is released unchanged as stable.
TEST Version 1.2125-RC (January 24, 2008) — Release Notes
  • Fix: the 1.2121-RC test release didn’t compile on 64-bit architectures.
TEST Version 1.2121-RC (January 21, 2008) — Release Notes
  • New: Added ntfs-3g.probe utility which probes a volume for read-only or read-write mountability.
  • New: To facilitate the use of the NTFS-3G driver in scripts, an exit code is returned to give an indication of the mountability status of the volume. Zero value means success, and all other ones mean an error. The unique error codes are documented in the ntfs-3g.probe manual page.
  • New: Built-in FUSE support by using a stripped down, integrated FUSE library. Linux uses this by default which means NTFS-3G doesn’t require the installation of the FUSE package, only FUSE kernel support.
  • New: The –with-fuse=external configure option makes NTFS-3G to be compiled with an external FUSE library. For non-Linux operating systems this is the default and the only compilation option.
  • New: README file is installed as documentation.
  • New: The –enable-ldscript configure option uses ldscript instead of .so symlink.
  • New: Added libntfs-3g.pc.in pkg-config and libntfs-3g.script.so.in ldconfig files.
  • Change: Rewritten, backwards compatible build system.
  • Change: Use ‘make install-strip’ instead of ‘make strip’.
  • Fix: The SIGTERM signal may caused deadlock which could block for instance the shutdown process. If NTFS-3G is used with an external FUSE library, which is not the default, then FUSE 2.7.2 package is required.

STABLE Version 1.1120 (November 20, 2007) — Release Notes

  • Fix: Successful hard link removal may reported “Input/Output error”.
  • Fix: Listing the content of a single directory having over 600,000 files and subdirectories may returned “Input/Output error” or truncated directory listing.
  • Fix: The atime mount option didn’t work.
  • Fix: POSIX file time updates (file access and modification times, inode change time). Please note, though NTFS-3G updates the times correctly now, FUSE may keep caching old, invalid time attributes for a short time after rename(2), creat(2), and some file operations which involve hard links. FUSE has fixed already the first two cases and they may be included in the Linux kernel 2.6.24 release.
  • Change: 10-20% write performance improvement.
  • New: relatime support was added and made the default file access time update method.

STABLE Version 1.1104 (November 4, 2007) — Release Notes

  • Fix: Reads over the end of a file could return “invalid argument” error using recent kernels. This problem may have caused Thunderbird to hang.
  • Fix: Some versions of the gcc compiler have crashed during compilation.
  • Fix: The utimes(2) system call may incorrectly updated the last status change filestamp.
  • Change: The ntfs.streams.list extended attribute enumerates Alternate Data Streams (ADS) ‘\0’ separated.

STABLE Version 1.1030 (October 29, 2007) — Release Notes

  • Fix: big-endian problems exposed by the NTFS-3G Test Suite.
  • Fix: free space calculation may was wrong for >1 TB volumes.
  • Fix: some faulty Thunderbird versions caused system log flooding.
  • Fix: uClibc and uClinux improvements.
  • Fix: logging improvements.
  • Fix: many other minor fixes.

STABLE Version 1.1004 (October 4, 2007) — Release Notes

  • Fix: unwritten sparse file regions could get corrupted if the end of a write wasn’t aligned to cluster boundary. Sparse files are very rarely used, most typically by bittorent clients.
  • Fix: creation of read-only files failed.
  • Change: free inode calculation was CPU intensive during write activity. This could reduce write performance when millions of files are used if a file manager or desktop applet regularly polled for disk space usage. Now the statfs() system call is constant time.
  • Change: file creation performance is improved by 40-80%.
  • Change: smart directory traversal is 20-200% faster for disk based and 300-600% faster for memory cache based traversals.

STABLE Version 1.913 (September 13, 2007) — Release Notes

  • Fix: hibernation check was too rigid and mount was refused in read/write mode unnecessarily in some cases.
  • Change: free disk space calculation was highly CPU intensive during write activity. This could reduce write performance severely, especially for huge volumes if a file manager or desktop applet regularly polled for disk space usage. Now the calculation is constant time, around only 10 microseconds on a typical desktop, and it’s completely independent of the volume size.
  • All performance improvements are included unchanged from the 1.910-RC test release. Please see those details below.
TEST Version 1.910-RC (September 10, 2007) — Release Notes
  • Change: significantly improved the performance of writing many files, typically by 50-1000% (copying files, unpacking, untarring packages, compilation, directory synchronization, …).
  • Change: improved the performance of writing multi-GB size files, particularly after the creation of many thousands of other files. Previous disk space defragmentation is highly advised for the best possible speed. File level defragmentation is not enough.
  • Change: improved concurrent write performance.

STABLE Version 1.826 (August 26, 2007) — Release Notes

  • Fix: utime() also updated the timestamp of the parent directory but it shouldn’t have (rsync, backup tool problems).
  • Fix: ignore the “volume dirty” bit because its real meaning is “check the volume”. The fact of the real dirtiness is stored in the NTFS logfile which is already checked for.
  • Fix: compilation failed with glibc 2.7.
  • New: the –disable-library ‘configure’ option can be used not to install but link libntfs-3g into the ntfs-3g binary. This decreases the binary size by about 10-15% and increases performance by about 2-5%.

STABLE Version 1.810 (August 10, 2007) — Release Notes

  • Fix: file rename may updated the modification time of some files and directories which caused some backup tools, like rsync, not to preserve always this timestamp.
  • Fix: unmount (fusermount -u) was denied for an unprivileged user who was allowed to mount a block device. FUSE 2.7.0+ user space package is required for the full fix.
  • Fix: the driver could hang if there wasn’t enough memory during reading a large directory
  • Fix: reading a directory may reported success when there was an error.
  • Fix: metadata update error was ignored in some very rare cases during writing a file.
  • Fix: permissions checking was turned on if umask, fmask and dmask was set to the default 000 value.
  • Change: manual update, added Windows filename compatibility section.
  • Change: lots of logging improvements.

STABLE Version 1.710 (July 10, 2007) — Release Notes

  • Fix: move, rename and hard link could return “input/output error”.
  • Fix: very rare, recoverable directory corruption.
  • Fix: portability improvements.
  • Change: more troubleshooting hints if a volume can’t be mounted.
  • Change: logging improvements.

STABLE Version 1.616 (June 17, 2007) — Release Notes

  • Version 1.612-RC is released as stable.
TEST Version 1.612-RC (June 12, 2007) Release Notes
  • New: install executables to the root file system otherwise mount could fail during boot.
  • Fix: any kind of file size change failure returned “Operation not permitted”.
  • Fix: file close failure was not always reported.
  • Fix: unmount failure was not always reported.
  • Fix: file creation always gave “input/output error” if the $MFT Bitmap wasn’t up-to-date.
  • Fix: converting very long file names to Unicode may failed.
  • Fix: syslog messages didn’t show the low level error detail.
  • Fix: compilation improvements on Mac OS X and NetBSD.

STABLE Version 1.516 (May 16, 2007) — Release Notes

  • Fix: Linux security exploit if ntfs-3g was setuid and the FUSE kernel driver wasn’t loaded yet during mount.

STABLE Version 1.417 (April 16, 2007) — Release Notes

  • Fix: mount failed if the -v (verbose) command line option was passed by mount(8).

STABLE Version 1.416 (April 16, 2007) — Release Notes

  • Fix: parsing of the first mount option could fail in the 1.411-RC test release.
TEST Version 1.411-RC (April 11, 2007) — Release Notes
  • New: read-write mount is supported using the “force” mount option if the logfile is unclean.
  • New: libntfs-3g is versioned.
  • Fix: default ownership of files weren’t always set to the mounting user.
  • Fix: mount was denied if the NTFS Master File Table copy had non-standard size.
  • Fix: catch and deny all junction/reparse point write operations.
  • Fix: multiply -o options weren’t allowed (FreeBSD’s mount(8) requires this).
  • Fix: don’t try to run Linux specific code on non-Linux OSes.

STABLE Version 1.328 (March 28, 2007) — Release Notes

  • Change: document and release version update to stable status.
TEST Version 1.320-RC (March 20, 2007) — Release Notes
  • Fix: fakeraid/softraid detection was incorrect.
  • Change: major performance improvement for writing large files (new block allocator).
  • Change: manual update, added access handling, security section.
  • New: use the ‘nonempty’ FUSE mount option by default, so the driver behaves as the in-kernel file systems.
  • New: –disable-ldconfig configure option.

STABLE Version 1.0 (February 21, 2007) — Release Notes

  • Change: document and release version update to stable status.
TEST Version 0.20070207-RC1: — Release Notes
  • New: the driver is in release candidate status.
  • New: warn if the deficient FUSE 2.6.2 kernel module is used.
  • Fix: a bug in chkdsk could result the removal of highly fragmented, valid files.
  • Fix: Mac OS X portability improvements.
  • Change: full file permission checking if any of the uid, gid, umask, fmask, or dmask mount option is used.
Version 0.20070118-BETA: — Release Notes
  • New: top request: setuid root support, the driver can run unprivileged.
  • Fix: the ‘user’ and ‘users’ fstab mount options didn’t work (requires setuid root ntfs-3g).
  • Fix: time of last file modification and status change weren’t updated.
Version 0.20070116-BETA: — Release Notes
  • New: top request: support old FUSE kernel modules.
  • Fix: ActiveSync didn’t work via Samba 3.0.
Version 0.20070102-BETA: — Release Notes
  • Fix: writing large files could be very slow.
  • Fix: writing several files at the same time could be very slow.
  • Fix: writing at several places into a file at the same time could be very slow.
  • Fix: invalid argument error when writing randomly into sparse files.
Version 0.20061218-BETA: — Release Notes
  • Fix: heavy memory usage with sparse files (p2p, bittorrent client problems).
  • Fix: inode number wasn’t filled in the dirent structures (CVS, getcwd, gnulib problems).
  • Fix: 2-8% speed increase due to using pread/pwrite instead of lseek+read/write.
  • Fix: fuse 2.6.x kernel module detection wasn’t reliable.
Version 0.20061212-BETA: — Release Notes
  • Fix: directories were inaccessible on Windows if the cluster size was bigger than 4kB.
  • Fix: static linking failed with FUSE 2.6.0.
  • Fix: ‘make install’ failed if ldconfig wasn’t in the $PATH.
  • Change: more verbose error reporting, explanations, hints for solutions.
Version 0.20061115-BETA: — Release Notes
  • Fix: unmount was unsafe for removable devices.
  • Fix: the code wasn’t endian safe.
  • Fix: mount arguments were omitted on the 2nd fuse mount attempt.
  • New: FUSE 2.6.0 is required to ensure maximum reliability.
  • New: bmap() implemented: safe swap file support, LILO bootability.
  • Change: the file system type is ‘fuseblk’ instead of ‘fuse’ for block devices.
Version 0.20061031-BETA: — Release Notes
  • Fix: unmount was asynchronous; full fix requires FUSE 2.6.0 as well.
  • Fix: mount was denied if $MFTMirr was too small.
  • Fix: option parsing was incorrect if there was no space between name & argument.
  • Change: new software versioning.
2006.09.20 — Release Notes
  • Fix: file creation at disk-full may lead to i/o errors.
  • Fix: statistic of inodes and free inodes was incorrect (df -i).
  • Fix: the ‘umask’ option wasn’t always parsed as an octal number.
  • Fix: “too long filename” handling wasn’t POSIX compliant.
  • Fix: mount was denied if $MFTMirr had unused garbage at the file end.
2006.09.10 — Release Notes
  • Fix: rename was always denied if the target file or directory existed.
  • Fix: renaming like ‘foo’ -> ‘FOO’ was denied in the WIN32 namespace.
  • Fix: fuse kernel module is automatically loaded, no need for config.
  • Fix: verbose mount error messages with hints for solutions.
  • Fix: compilation failed with gcc 2.96.
  • Change: top request: full read-write access to everybody by default.
  • Change: file lookups are always case-sensitive.
2006.08.22 — Release Notes
  • Fix: case-insensitive directory rename to itself may failed.
  • Fix: some regular files weren’t accessible on Linux.
  • Fix: files created on Linux may not had enough permissions on Windows.
2006.08.11 — Release Notes
  • Fix: directory couldn’t be renamed if it had both WIN32 and DOS name.
  • Fix: collision with ntfsprogs header files.
2006.08.03 — Release Notes
  • Fix: improved large file write performance.
  • Fix: better consistency if NTFS wasn’t cleanly unmounted.
  • Fix: write(2) may created holes.
  • Fix: show mounted device names instead of /dev/fuse.
2006.07.14 — Release Notes
  • First NTFS-3G BETA release.

This section documents and answers the most common questions about the NTFS-3G driver. Please see the driver release history and make sure you have the latest one.

Most Popular

Usage

Functionality

Applications

Performance

Windows CHKDSK

Miscellaneous

How can I hotplug and automount NTFS devices?
The NTFS hotplug and automount support is highly distribution specific regarding the used technologies and the preferred mount configuration. This is what should happen on a higher level:

  1. Detect storage hardware.
  2. Detect NTFS on the hardware.
  3. Start the NTFS-3G driver with the user and distribution preferred mount options.
  4. Mount the NTFS volume.

The NTFS-3G file system developers are working only on item 4. This is a huge and very complex task itself. The distribution and other developers are working on item 1, 2, and 3, which solutions are vastly different depending on all kind of preferences.

Solution: If you would like to have this feature in your distribution then please ask your distribution vendor or developers to support this feature.

Workarounds: Either of the following could help.

  • Creating a symbolic link, as shown below, is reported to solve automount on many distributions. ln -s /sbin/mount.ntfs-3g /sbin/mount.ntfs
  • If you use KDE and get the “TODO: have to rethink extra options” error message then open `media:/’ in Konqueror, choose `Storage Media’, right click the removable device, select‘Properties’, select the ‘Mounting’ tab then unselect the ‘Mount as user’ option.
  • There is a great utility, called ntfs-config, which is reported to work fine on at least Ubuntu.

Status: Not NTFS-3G problem.

Missing, disappeared files or directories?

If the top directory is completely empty then it’s very probably that the NTFS volume is not mounted. If only some files are missing then please upgrade to at least NTFS-3G 2009.1.1 which has full, built-in Unicode UTF-8 conversion support.

If you use Mac OS X or FreeBSD and have at least one very long filename with national characters and the filename length translates into more than 255 UTF-8 bytes (higher chance with Korean and Greek languages) then Mac OS X and FreeBSD will not show any files in the directory.

If you are double-booting with Windows 8, you may have enabled its fast restarting feature. This may cause Windows 8 to ignore changes done by another OS on any internal partition. A safe way to avoid loss of data is to disable the fast restarting by issuing as a Windows Administrator the command :

powercfg /h off
If your computer has a SSD plugged in, it might be used by Windows as a cache controlled either by the hardware (“Intel Fast Response Technology”) or by software (“Expresscache”, “ReadyCache”, etc.). This feature is generally not compatible with both Windows and Linux and you may have to disable it.

What does the “I/O error” mean?

The Input/Output errors mean unexpected, low-level errors. They are caused by hardware errors (disk, RAM, cable, power supply, motherboard, etc), device driver faults, corrupted file system, software fault or incorrect hardware use. The most typical reasons:

  • Hardware or device driver faults. This is not always obvious immediately and the confirmation may require very good skills or special hardware testing utilities (memtest86+, badblocks, smartctl, etc). Windows often tries to handle and correct some hardware faults silently without reporting them to the user but not all operating systems took the same approach, instead they log the unexpected errors in the /var/log directory, typically in the messages.log, daemon.log, or system.log files. Most common Linux error messages referring to hardware problems:
    sd 1:0:0:0: SCSI error: return code = 0x10070000
    end_request: I/O error, dev sda, sector …
    Buffer I/O error on device sda1, logical block …
    rejecting I/O to dead device
    lost page write due to I/O error on …
    usb X-Y: device not accepting address Z, error -110
    reset high speed USB device using ehci_hcd and address 17
    sd 1:0:0:0: Device offlined – not ready after error recovery
    sd 1:0:0:0: [sdc] Result: hostbyte=DID_ABORT driverbyte=DRIVER_OK,SUGGEST_OK
    sd 1:0:0:0: [sdc] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK,SUGGEST_OK
    ata1: device not ready (errno=-16), forcing hardreset
    ata1: soft resetting link
    hda: status timeout: status=0xd0 { Busy }
    hda: command error: status=0x51 { DriveReady SeekComplete Error }
    hda: irq timeout: status=0xd0 { Busy }
  • Seagate FreeAgent Desktop drives are causing data loss to users because they like to power down and the Linux kernel forgets to wake them up. Typical error message in the logs are like
    sd 2:0:0:0: [sdb] Device not ready: <6>: Sense Key : Not Ready [current]
    Add. Sense: Logical unit not ready, initializing command required Please see this link for more information and solution. It’s said that the Linux kernel 2.6.24 had fixed this problem.
  • It’s keep being reported that some external LaCie drives have power supply problems, physical media damages (bad sectors) and sometimes the above Seagate FreeAgent problem.
  • Lots of fatal hardware problems are being reported using Western Digital MyBook drives. You can read some of the stories here: [1], [2], [3].
  • The Zonet USB 2 PCMCIA Adapter is another source of data corruption problems.
  • Corrupt file system. Most often they are caused by unexpected power outage, improperly detaching external storage devices, uncleanly shutting down the operating system, file system drivers, partitioners, security software, viruses, root kits and other malwares. If the problem is definitely not hardware related then run CHKDSK /f DRIVE: on Windows and if the I/O errors don’t go away and you’re using the latest NTFS-3G driver then please submit a bug report and provide us all the relevant system logs.

Why are some filenames garbled?
or

What does “Invalid or incomplete multibyte or wide character” mean?

Please make sure your terminal, terminal emulator or file manager is Unicode capable and set it to UTF-8 handling.

Why do NTFS file system checks fail at boot time ?

No open source NTFS checker is known to have been developed, so there is no point in requesting such a check.

Until such a checker is available, do not enable the check at boot time and set the last (sixth) field of NTFS entries in /etc/fstab to zero. Use a proprietary checker, such as chkdsk on Windows, when a check or fix is wanted, typically after an unsafe unmount (power disruption, etc.).

Can NTFS-3G corrupt the Master Boot Record (MBR) or the partition table?

Both the MBR and the partition table are outside of the NTFS disk area. This means that those disk areas are not visible and not accessible to the driver. Moreover NTFS-3G doesn’t need either information to function. It doesn’t read, write or modify any of them. In fact, the operating system doesn’t even let NTFS-3G to access those disk areas.The MBR and the partition table are typically modified (corrupted) by boot managers, partitioners, security software, recovery software, viruses and other malwares, or some hardware fault.

Why do I get “WARNING: Deficient Linux kernel detected”?

The message means that you have an old and unsafe Linux kernel which is prone to data loss.

Solution: Please ask your distribution developers to fix the Linux kernel problem. The Linux kernel must be upgraded either to at least version 2.6.20, or the FUSE kernel driver must be upgraded to a safe version which is also included in the FUSE package for Linux kernel version 2.6.9 and later.

Status: Not NTFS-3G problem.

Why have chmod and chown no effect?

By default files on NTFS are owned by root with full access to everyone. To get standard per-file protection you should mount with the “permissions” option. Moreover, if you want the permissions to be interoperable with a specific Windows configuration, you have to map the users.

Why can’t unprivileged users mount block devices?
or
Why do I get “fusermount: option blkdev is privileged” error?

Unprivileged block device mounts work only if all the below requirements are met:

  1. ntfs-3g is compiled with integrated FUSE support
  2. the ntfs-3g binary is at least version 1.2506
  3. the ntfs-3g binary is set to setuid-root
  4. the user has access right to the volume
  5. the user has access right to the mount point

The root user can make an ntfs-3g binary setuid-root as shown below
chown root $(which ntfs-3g)
chmod 4755 $(which ntfs-3g)
In such case the driver will also be able

  • to fix common FUSE kernel module loading problems
  • to create the required but sometimes incorrectly removed or missing FUSE device file

Please note that using setuid-root can result unforeseen privilege escalation and its usage is discouraged. Only the absolutely trusted users must be granted such access. Below is an example how this can be done for users in the ntfsuser group to be able to mount any NTFS volume if they have also the needed volume access rights. chown root.ntfsuser $(which ntfs-3g)
chmod 4750 $(which ntfs-3g)
The setuid-root ntfs-3g driver applies the principle of least privilege during its lifetime as a safety measure.

Why don’t the ‘user’ and ‘users’ options work in /etc/fstab?

The ‘mount’ command doesn’t invoke the ntfs-3g binary with the needed privilege after it has checked and approved the user is entitled to mount a given device on a specified mount point, hereby the user can’t open the device he got the approval in /etc/fstab. This is a problem in the ‘mount’ utility.

Solution: Use at least NTFS-3G 1.2506 with setuid-root set and make sure the user has access rights to the volume and mount point.

Why does the driver allow case sensitive filenames?
or

Why does the driver allow special characters in the filenames?

NTFS supports several filename namespaces at the same time: DOS, Win32 and POSIX. While the NTFS-3G driver handles all of them, it always creates new files in the POSIX namespace for maximum portability and interoperability reasons. This means that filenames are case sensitive and all characters are allowed except ‘/’ and ‘\0’.

As Windows uses more restrictive naming rules, you can prevent ntfs-3g from creating new files which do not meet Windows file naming rules by using the option windows_names.

When mounting with the lowntfs-3g variant, you can get case insensitive access to files by using the option ignore_case. Doing so, all files will be shown with lower case letters in directory listings. In some situations, a directory busy error may occur, you can fix it on recent kernels by applying a patch to the fuse kernel module.

Alternately, to get case insensitivity handling and/or restriction on special characters, you may export the NTFS volume via Samba which supports this functionality the same way as it does for other POSIX file systems. Another solution for case insensitivity support is using ciopfs which mounts a normal directory on a regular file system in case insensitive fashion.

Status: Not NTFS-3G problem.

Why do I get a “File exists” message when deleting an empty directory?

If the locale environment is not setup correctly before mount then glibc can’t convert some filenames, so they are not visible and the directory is indeed not empty.

Solution: Please see here.

Status: Not NTFS-3G problem.

Why do I get an “Operation not supported” message when creating a file?

The latest driver has solved this issue, please upgrade

Why do I get an “Operation not supported” message when deleting a file?

The latest driver has solved this issue, please upgrade

Why can’t I read or modify some files?

NTFS supports built-in, transparent compression and encryption of files and directories on the file system level. Reading and writing transparently compressed files are fully supported, but reading or writing encrypted files are not supported at the moment. Please note that compressed files, like .zip, .gz, .rar, etc, can be freely modified because they are compressed on the file, not on the file system level.

Workaround: Decrypt the needed files on Windows.

Why doesn’t file deletion free disk space?

In most cases it does, except for the following scenarios:

  • In some desktop configurations files are not deleted for real but moved into a ‘Trash’ or ‘.Trash-username’ directory in the root of the partition. When these directories are emptied then the disk space is reclaimed.
  • By design, Linux and Unixes free the disk space of the deleted files permanently only if no software keeps them open anymore.
  • NTFS is able to store small files and directories in fixed size (1 kB) MFT records (inodes). When such files are deleted then the MFT records are marked free for reuse or for undelete, and no space can be freed.

Status: Not NTFS-3G problem.

Why can’t I move files to trash?

Moving a file to trash is only possible if the trash directory is owned by the current user. This implies that ownership of files has been enabled, either by forcing ownership to the current user or by using a generic ownership and permissions mode.

Why is the modification time set to current time when I copy a file ?

This generally happens when permission options are partially set and the uid of the current owner is not defined in the mount command. On Linux, only the owner is allowed to set the modification time of a file.

Workaround : either set the uid option, or remove permission related options, or else use the permissions option.

Can I use NTFS as the root file system?

Yes, this is possible and some distributions do it. For instance WUBI, the Ubuntu Installer for Windows.

Can I use swap file safely, deadlock free on NTFS?

Yes, this is possible if it’s properly setup. Below is the example how to create, initialize and turn on a 2 GB swap file safely, deadlock free:
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile

You must turn off the swap file with ‘swapoff’ before you would be able to unmount NTFS. Please also note that other solutions, for example using swap on a loop device, are not safe and can cause deadlock!

Can I boot Linux from NTFS?

Yes. For example by using LILO, the same way as with any other filesystem: copy the Linux boot files to NTFS, configure /etc/lilo.conf then run lilo.

Can I export NTFS via NFS?

Yes. There are two solutions depending on the Linux kernel version:

  1. Obsolete: Use the FUSE kernel module from the FUSE 2.7.4 software package and please read the FUSE README.NFS file.
  2. Preferred: Use the FUSE kernel module included in the Linux 2.6.27 and later kernels.

Can I use NTFS-3G on Linux 2.4 kernels?

Yes. You need to use NTFS-3G 1.2506 or later and the FUSE kernel module from the FUSE 2.5.3 package. Please see more details in the FUSE README file.

Why does Wine crash?

User mounted partitions, e.g. when using the ‘user’ or ‘users’ mount options in the /etc/fstab file, are done with the ‘noexec’ mount option by default for security reasons. This means that memory mapping (mmap) files for execution will be denied.Another reason can be the lack of kernel support for shared writable mmap which was added to Linux kernel 2.6.26.

Solution: Add the ‘exec’ mount option to the end of the mount options. It’s important that the option to be the last one, otherwise other mount option can over judge its effect. However please also note that Wine was not designed to run arbitrary applications directly from a Windows partition. To do so, one must install the Windows application via Wine onto the Windows partition first.

Why are Firefox saved files empty?
or

Why does Firefox duplicate file extensions?

This is a known bug in Firefox which affects FAT32 and NTFS partitions;

Status: Not NTFS-3G problem. The latest Firefox releases should fix this problem.

Why does VMware crash during startup?

VMware tries to use shared writable mmap for paging files but it can’t detect that it’s not always supported.

Workaround: Set “mainMem.useNamedFile=FALSE” in the .vmx file. It will disable paging files and VMware will work fine, often with much better performance.

Status: The VMware bug has been fixed in all hosted products (Workstation, Fusion, Player, …) released after Jan 30th 2008. Alternatively use Linux kernel 2.6.26 or later.

Why is VMware slow?

VMware uses shared writable mmap for paging files but it doesn’t detect that this method is very inefficient.

Workaround: Set “mainMem.useNamedFile=FALSE” in the .vmx file and VMware will perform much better. Please also see this VMware Knowledge Base article which addresses troubleshooting the most common hosted disk I/O performance problems.

Can I install both ntfsprogs and NTFS-3G?

Since 2011, ntfsprogs is bundled with NTFS-3G and you have to use the same version for both.

Be careful with older ntfsprogs-2.0.0 because it had some reliability issues.

Why is writing slow using ‘dd’, ‘amarok’ or ‘encfs’?

By default they use the possible smallest, 512 or 1024 bytes, write block size which results eight or four times more work to do for FUSE, kernel and NTFS-3G. Since they are not optimized yet, the performance will suffer almost one fold in the worst case. Use at least 4 kB block size and the write speed will improve dramatically. Encfs is hit by a Linux kernel deficiency. Since it uses a non-page size internal header thus writes are not page aligned and the kernel will split them which halves encfs write performance.

Amarok performance may depend on the codec. Updating FLAC files are known to be slow because the software uses very small buffer size.

Why is the driver slow?

Normally the I/O performance of NTFS-3G and the other file systems are very comparable. However there can be several reasons for real or believed inadequate performance in certain scenarios. All software and hardware components must work flawlessly together to get the best possible performance and if just one of them fails in some way then the overall system performance can suffer noticeably. If the NTFS-3G driver uses close to 100% CPU time then it’s usually a driver issue, though not always. Please see the details and explanation here.

If the NTFS-3G driver doesn’t use close to 100% CPU time then the problem is typically not directly related to and not caused by the NTFS-3G driver. The most likely explanations are

  • USB is running in Low-Speed (0.1875 MB/sec) or Full-Speed (maximum 1.5 MB/sec) mode instead of High-Speed mode (maximum 60 MB/sec). The USB performance is reported to be exceptionally bad on Mac OS X. Many users claimed that Firewire is much faster. Please note that NTFS-3G is independent of the bus type (USB, Firewire, SATA, PATA, etc), and the overall performance can depend on the bus type and its driver quality significantly.
  • There is a slow USB device attached to one of the ports of the USB hub to which the disk is attached.
  • Using the sync mount option which forces extra writes to device (do not use sync unless you have a good reason.)
  • Unaligned partition on a 4096 byte sector size hard driver like Western Digital Caviar Green.
  • Solid State Disks (SSD), USB and other flash drives can have many reasons for low performance:
    • The write performance of some Intel and other SSDs can dramatically fall with use. Low level formatting may help temporarily.
    • The write performance of some Intel and other SSDs can significantly drop when the disk endurance management feature automatic turns on to enable the device to have, at a minimum, five year useful life. The typical limit is 20 GB writes per day.
    • The random write and parallel performance of many flash, USB and SSD hardware can be as low as 0.02 MB/s.
    • Defragmentation causes even worse performance and shorten the life of these drives.
    • Partitions not aligned to flash block boundaries.
    • Heavy temporary file and small file activity.
    • Heavy page (swap) file activity.
  • DMA is turned off. Check the BIOS and use hdpram, sdparm, blktool on Linux.
  • Using an embedded device or a very fast I/O subsystem (100+ MB/s, RAID).
  • Hardware or bad sector errors. Check the log files under /var/log.
  • Some external USB drivers may power down during write activity which can cause big delays for I/O operations.
  • Not using the performance improved driver on Mac OS X.
  • A software ignores errors or doesn’t have correct error handling. In such cases the problem often becomes visible in NTFS-3G, not in the faulty software.
  • Some Nautilus releases have a performance bug with files larger than around 20 MB. The problem goes away if command line tools or alternative file managers, like Thunar or Konqueror, are used.
  • Not using at least NTFS-3G Version 2009.3.8.

Status: An optimized, high-performance version, primarily for consumer electronics devices, is available commercially.

Why does the driver have high CPU utilization?

The most common explanations are

  • Not using at least NTFS-3G Version 2009.3.8.
  • Writing multi-GB files on a highly internally fragmented volume.
  • Some software are using the most inefficient block sizes by default.
  • A highly sparse file is being regularly written or updated.
  • You are using transparent compression (you may disable compression alltogether by using the option nocompression or disable compression per directory)
  • Some software indeed do intensive file operations sometimes (Beagle, Amarok collectionscanner, updatedb, Spotlight, etc).
  • The CPU usage is not directly visible in case of kernel file system drivers but this is not true for user space drivers. That is, they are in the process list unlike the kernel drivers. Higher CPU usage is normal and expected in some scenarios. This is true for most file systems, not only NTFS-3G.
  • The NTFS block size (cluster size) is smaller than 4096 bytes. This often happens, for instance, if FAT32 was converted to NTFS. The driver always logs this information for block devices. You can search for the value of the ‘blksize’ in the system log files under the /var/logs directory. Typically this information can be found in the ‘messages’ or ‘daemon.log’ log file, depending on your operating system.
  • Using an embedded device or a very fast I/O subsystem (100+ MB/s, RAID).
  • VMware is not using “mainMem.useNamedFile=FALSE” in the .vmx file.

Workaround: using the mount option “big_writes” generally reduces the CPU usage, provided the software requesting the writes supports big blocks.

Status: An optimized, high-performance version, primarily for consumer electronics devices, is available commercially.

Why is writing huge files slowing down?

Either you don’t use at least NTFS-3G Version 2009.3.8 or your disk space is highly fragmented in a close to full cluster allocation zone, or a highly sparse file is being updated (e.g. a bittorent file, VMware image file).

Workaround: Use a software which can compact the disk space (e.g. the free, open source ntfsresize: shrink then enlarge after making a backup). Please note, file level defragmentation, what the built-in Windows defragmenter is only capable, does not help usually.

Solution: Please the status information here.

Why does CHKDSK report “free space marked as allocated in the MFT bitmap”?

Chkdsk sometimes optimizes the NTFS layout and later finds its own bugs (for instance when an index root attribute is moved from extent MFT record to the base one). This is not a problem with NTFS-3G.

Workaround: No need, this is a CHKDSK bug.

Status: The latest NTFS-3G optimized NTFS index metadata layout.

Why does CHKDSK report “Cleaning up XXX unused …”?

The typical detailed error messages are the following (XXX are numbers):
Cleaning up XXX unused index entries from index $SII of file 0x9.
Cleaning up XXX unused index entries from index $SDH of file 0x9.
Cleaning up XXX unused security descriptors. These messages are part of an optimization process which is completely independent of NTFS-3G. Nothing to worry about them.

Workaround: No need.

Status: Not NTFS-3G problem.

Why does CHKDSK report “Deleting an index entry from index $O of file 25”?

These messages are part of the CHKDSK maintenance process and are independent of NTFS-3G. Nothing to worry about them.

Workaround: No need.

Status: Not NTFS-3G problem.

Why does CHKDSK report “Correcting errors in the uppercase file”?

Newer versions of Windows use the latest character table as defined by the Unicode consortium, and CHKDSK checks against the table defined on the system on which it is running. As a consequence a mismatch on the uppercase table is found when the table does not have the same version as the current system. This may have some visible consequence when listing files which have some very rare characters in their names.

Currently, mkntfs creates the same uppercase file as was defined by Windows Vista.

Workaround: No need.

When will be the driver ported to the kernel?

It has been.

Problem Submissions

The project welcomes all bugs reports and criticisms submitted via the Support Forum. Please follow the below suggestions:

  • Make sure you use the latest STABLE release of the driver.
  • Make sure your question is not answered yet on the NTFS-3G Support Page and in the NTFS-3G for OS X User Guide.
  • Search the Support Forum for answer.
  • Check the /var/log/messages, /var/log/messages.log, /var/log/syslog, and the /var/log/daemon.log files for NTFS-3G error messages.
  • Include the exact NTFS-3G and FUSE or MacFUSE version.
  • Include the operating system or distribution name and its version.
  • Include the full and exact NTFS-3G and the FUSE related error messages.
  • Please write down step by step how the problem can be reproduced.
  • Submit the problem report to the appropriate Support Forum (Linux, OS X, FreeBSD, NetBSD, Solaris, etc).

Mailing Lists

The NTFS-3G project has several mailing lists. Follow the links below to subscribe. It is also possible to post to the ntfs-3g-devel list without a valid subscription.

List Name Description
ntfs-3g-news Read-only mailing list for announcements Subscribe Archive
ntfs-3g-devel Developer discussion Subscribe Archive
ntfs-3g-cvs CVS commits Subscribe Archive

While the NTFS-3G project globally aims at providing a stable NTFS driver for several operating systems such as Linux, FreeBSD, Mac OS X, Solaris etc., the advanced branch specifically aims at developing, maturing, and releasing features to get user feedback before they are integrated into the main branch.

The advanced releases are designed as add-ons to the latest stable release, so they benefit from all the improvements and fixes integrated in the main branch. This facilitates the subsequent integration of newer features both for the developer and the user.

The documentation on the features which were developed as part of former advanced versions is available here, and updated to reflect the latest versions :

Downloads

The available packages are extensions to recent stable versions. They pass standard tests, they have been tested on top of i386 and x86_64 (small-endian) and M68K (big-endian) CPUs, and their interoperability has been tested against Windows (XP and later versions.) Nevertheless problems may have crept in, so you should backup your valuable data regularly.

OpenIndiana users : please see the OpenIndiana page


Double-booting Linux and Windows 8
When Windows 8 is restarted using its fast restarting feature, part of the metadata of all mounted partitions on internal disks are restored to the state they were at the previous closing down. As a consequence, changes made on Linux may be lost. This can happen on any NTFS partition of an internal disk when leaving Windows 8 by selecting “Shut down” or “Hibernate”. Leaving Windows 8 by selecting “Restart” is apparently safe. To avoid any loss of data, be sure the fast restarting of Windows 8 is disabled. This can be achieved by issuing as an administrator the command :
powercfg /h off
You can check the current settings on : Control Panel > Hardware and Sound > Power Options > System Setting > Choose what the power buttons do The box “Turn on fast startup” should either be disabled or missing.

 

2014.2.15AR.2
releasesource tarballntfs-3g_ntfsprogs-2014.2.15AR.2.tgz
Fedora 20 RPM for i386 ntfs-3g-2014.2.15AR.2-1.fc20.i386.rpm
ntfsprogs-2014.2.15AR.2-1.fc20.i386.rpm
Fedora 20 RPM for x86_64 ntfs-3g-2014.2.15AR.2-1.fc20.x86_64.rpm
ntfsprogs-2014.2.15AR.2-1.fc20.x86_64.rpm
Executable for Knoppix 5.1.1 linked-ntfs-3g-2014.2.15AR.2.zip
2014.2.15AR.1
release
source tarball ntfs-3g_ntfsprogs-2014.2.15AR.1.tgz
Fedora 19 RPM for i386 ntfs-3g-2014.2.15AR.1-1.fc19.i386.rpmntfsprogs-2014.2.15AR.1-1.fc19.i386.rpm
Fedora 19 RPM for x86_64 ntfs-3g-2014.2.15AR.1-1.fc19.x86_64.rpmntfsprogs-2014.2.15AR.1-1.fc19.x86_64.rpm
Executable for Knoppix 5.1.1 linked-ntfs-3g-2014.2.15AR.1.zip
Global Changelog changelog
Miscellaneous tools for NTFS tools.zip
md5 for integrity checks advanced-ntfs-3g.md5

To install these versions, just follow the directions for a base version. To benefit from some features, you may have to define options at mount time and insert configuration files in the directory .NTFS-3G of the NTFS partition. See the relevant pages for details.

The version for Knoppix is a prelinked one which only uses legacy interfaces, so that it can be run on most Linux systems without being installed.


To report any problem, please post to the support forum
This page is maintained by Jean-Pierre André