NTFS has three versions: v1.2 found in NT 3.51 and NT 4, v3.0 found in Windows 2000 and v3.1 found in Windows XP. These versions are sometimes referred to as v4.0, v5.0 and v5.1, after the version of Windows they ship with. Newer versions added extra features: Windows 2000 introduced quotas. Windows version 95, 98, 98SE and ME, cannot natively read NTFS filesystems, although utilities do exist for this purpose.
In NTFS everything that has anything to do with a file (file name, creation date, access permissions and even contents) is written down as metadata. This elegant, albeit abstract approach allowed easy addition of filesystem features during the course of Windows NT's development - an interesting example is the addition of fields for indexing used by the Active Directory software.
Internally, NTFS uses binary trees in order to store the file system data; although complex to implement, this allows fast access times and decreases fragmentation. A file system journal is used in order to guarantee the integrity of the file system itself (but not of each individual file). Systems using NTFS are known to have improved reliability, a particularly important requirement considering the unstable nature of the older versions of Windows NT.
Currently, the Linux kernel includes a module which makes it possible to read NTFS partitions; however the general complexity of the filesystem, Microsoft's insufficient developer documentation and attempts to drive off third-party developers (claiming copyright infringement) have prevented developers adding reliable write support. As a workaround, a project called Captive NTFS allows access to the NTFS by providing the operating sustem with an interface to the ntfs.dll driver which already exists on most NTFS partitions (and on all Windows NT installations); this provides reliable (if slow) read/write support.
- Linux-NTFS Open source internal documentation and tools for NTFS