ntfs.txt
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:12k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. NTFS Overview
  2. =============
  3. Legato Systems, Inc. (http://www.legato.com) have sponsored Anton Altaparmakov
  4. to develop NTFS on Linux since June 2001.
  5. To mount an NTFS volume, use the filesystem type 'ntfs'. The driver
  6. currently works only in read-only mode, with no fault-tolerance supported.
  7. If you enable the dangerous(!) write support, make sure you can recover
  8. from a complete loss of data. Also, download the Linux-NTFS project
  9. distribution from Sourceforge at http://sourceforge.net/projects/linux-ntfs/
  10. and always run the included ntfsfix utility after performing a write to an
  11. NTFS partition from Linux to fix some of the damage done by the Linux NTFS
  12. driver and to schedule an automatic chkdsk when Windows reboots. You should
  13. run ntfsfix _after_ unmounting the partition in Linux but _before_ rebooting
  14. into Windows. During the next reboot into Windows, chkdsk will be run
  15. automatically fixing the remaining damage. If no errors are found it is a
  16. good indication that the driver + ntfsfix together worked to full
  17. satisfaction. (-;
  18. Please note that the experimental write support is limited to Windows NT4 and
  19. earlier versions at the moment.
  20. If you think you have discovered a bug please have look at the "Known bugs"
  21. section below to see whether it isn't known already.
  22. For ftdisk support, limited success was reported with volume sets on top of
  23. the md driver, although mirror and stripe sets should work as well - if the
  24. md driver can be talked into using the same layout as Windows NT. However,
  25. using the md driver will fail if any of your NTFS partitions have an odd
  26. number of sectors.
  27. Supported mount options
  28. =======================
  29. iocharset=name Character set to use when returning file names.
  30. Unlike VFAT, NTFS suppresses names that contain
  31. unconvertible characters. Note that most character
  32. sets contain insufficient characters to represent all
  33. possible Unicode characters that can exist on NTFS. To
  34. be sure you are not missing any files, you are advised
  35. to use the iocharset=utf8 which should be capable of
  36. representing all Unicode characters.
  37. utf8=<bool> Use UTF-8 for converting file names. - It is preferable
  38. to use iocharset=utf8 instead, but if the utf8 NLS is
  39. not available, you can use this utf8 option, which
  40. enables the driver's builtin utf8 conversion functions.
  41. uid=
  42. gid=
  43. umask= These options work as documented in mount(8).
  44. By default, the files are owned by root and
  45. not readable by anyone else.
  46. posix=<bool> If enabled, the file system distinguishes between
  47. upper and lower case. The 8.3 alias names are presented
  48. as hard links instead of being suppressed.
  49. show_sys_files=<bool> If enabled, show all system files as normal files. Note
  50. that $MFT does not appear unless specifically
  51. requested. For example in bash, use: "ls -l $MFT".
  52. Be careful not to write anything to them or you could
  53. crash the kernel and/or corrupt your file system!
  54. mft_zone_multiplier= Set the MFT zone multiplier for the volume (this
  55. setting is not persistent across mounts and can be
  56. changed from mount to mount but cannot be changed on
  57. remount). Values of 1 to 4 are allowed, 1 being the
  58. default. The MFT zone multiplier determines how much
  59. space is reserved for the MFT on the volume. If all
  60. other space is used up, then the MFT zone will be
  61. shrunk dynamically, so this has no impact on the
  62. amount of free space. However, it can have an impact
  63. on performance by affecting fragmentation of the MFT.
  64. In general use the default. If you have a lot of small
  65. files then use a higher value. The values have the
  66. following meaning:
  67.       Value      MFT zone size (% of volume size)
  68. 1 12.5%
  69. 2 25%
  70. 3 37.5%
  71. 4 50%
  72. Known bugs and (mis-)features
  73. =============================
  74. - Do not use the driver for writing as it corrupts the file system. If you do
  75.   use it, get the Linux-NTFS tools and use the ntfsfix utility after
  76.   dismounting a partition you wrote to.
  77. - Writing of extension records is not supported properly.
  78. Please send bug reports/comments/feed back/abuse to the Linux-NTFS development
  79. list at sourceforge: linux-ntfs-dev@lists.sourceforge.net
  80. ChangeLog
  81. =========
  82. NTFS 1.1.21:
  83. - Fixed bug with reading $MFT where we try to read higher mft records
  84.   before having read the $DATA attribute of $MFT. (Note this is only a
  85.   partial solution which will only work in the case that the attribute
  86.   list is resident or non-resident but $DATA is in the first 1024
  87.   bytes. But this should be enough in the majority of cases. I am not
  88.   going to bother fixing the general case until someone finds this to
  89.   be a problem for them, which I doubt very much will ever happen...)
  90. - Fixed bogus BUG() call in readdir().
  91. NTFS 1.1.20:
  92. - Fixed two bugs in ntfs_readwrite_attr(). Thanks to Jan Kara for
  93.   spotting the out of bounds one.
  94. - Check return value of set_blocksize() in ntfs_read_super() and make
  95.   use of get_hardsect_size() to determine the minimum block size.
  96. - Fix return values of ntfs_vcn_to_lcn(). This should stop
  97.   peoples start of partition being overwritten at random.
  98. NTFS 1.1.19:
  99. - Fixed ntfs_getdir_unsorted(), ntfs_readdir() and ntfs_printcb() to
  100.   cope with arbitrary cluster sizes. Very important for Win2k+. Also,
  101.   make them detect directories which are too large and truncate the
  102.   enumeration pretending end of directory was reached. Detect more
  103.   error conditions and overflows. All this fixes the problem where the
  104.   driver could end up in an infinite loop under certain circumstances.
  105. - Fixed potential memory leaks in Unicode conversion functions and
  106.   setup correct NULL return values.
  107. NTFS 1.1.18:
  108. - Enhanced & bug fixed cluster deallocation (race fixes, etc.)
  109. - Complete rewrite of cluster allocation, now race free.
  110. - Fixed several bugs in the attribute modification codepaths.
  111. - Hopefully fixed bug where the first sectors of some people's
  112.   partitions would be overwritten by the mft. And in general fixed up
  113.   mft extension code a bit (still incomplete though).
  114. - Introduce splice_runlist() to allow generic splicing of two run
  115.   lists into one.
  116. - MFT zone is now implemented. [Stage 2 of 3; only lack dynamic
  117.   growing of mft zone but that is AFAIK not even done by Windows, and
  118.   the overhead would be so large that it is probably not worth doing
  119.   at all, so Stage 3 might never happen...]
  120. - Complete rewrite of $MFT extension and ntfs inode allocation code.
  121. - Made the NTFS driver initialization string show the compile options
  122.   used (i.e. whether read-only or read-write, whether a module, and
  123.   whether with debug support).
  124. - Modify ntfs_fill_mft_header() to set all fields and to accept more
  125.   arguments.
  126. - Get rid of superfluous add_mft_header().
  127. - Get rid of some unused code.
  128. - Fixed several bugs in and generally cleaned up ntfs_readdir,
  129.   ntfs_getdir_unsorted(), and ntfs_printcb. Now they spew out huge
  130.   amounts of debug output if debugging is enabled. This will be
  131.   removed once I know that this works for everyone.
  132. - ntfs_readdir now shows hidden files. The only files that are now
  133.   hidden are the first 16 inodes (i.e. the hard coded system files),
  134.   which is consistent with Windows NT4. Using the show_sys_files mount
  135.   option, these files are then shown, too.
  136. - Fixed the displaying of the "." and ".." directories. We still cannot
  137.   cope with more than 65536 files in a directory index block which is
  138.   not a problem and we now cannot cope with more than 32766 directory
  139.   index blocks which should not be a problem unless you have a
  140.   directory with an insanely large number of files in it. The exact
  141.   number depends on the length of the file names of the directory
  142.   entries and on the size of the dircetory index blocks.
  143. - Fixed all problems with the last file in a directory (e.g. the last
  144.   file should no longer disappear and tab completion should work). If
  145.   there are still disappearing files or any other problems with the
  146.   last file in a directory, please report them! Thanks.
  147. - Rewrote ntfs_extend_attr() to use the new cluster allocator and the
  148.   freshly introduced splice_runlists() function. This simplified
  149.   ntfs_extend_attr() a lot which in turn seems to have removed one or
  150.   more bugs from it.
  151. - Probably other things I have forgotten... (-;
  152. - Removed dollar signs from the names in the system file enumeration.
  153.   Apparently gcc doesn't support dollar signs on PPC architecture.
  154.   (Andrzej Krzysztofowicz)
  155. NTFS 1.1.17:
  156. - Fixed system file handling. No longer need to use show_sys_files
  157.   option for driver to work fine. System files are now always treated
  158.   the same, but without the option, they are made invisible to
  159.   directory listings. As a result system files can once again be opened
  160.   even without the show_sys_files option. This is important for the
  161.   statfs system call to work properly, for example.
  162. - Implemented MFT zone including mount parameter to tune it (just like
  163.   in Windows via the registry, only we make it per mount rather than
  164.   global for the whole driver, so we are better but we have no way of
  165.   storing the value as we don't have a registry so either specify on
  166.   each mount or put it in /etc/fstab). [Stage 1 of 3, mount parameter
  167.   handling.]
  168. - Fixed fixup functions to handle corruption cases and to return error
  169.   codes to the caller.
  170. - Made fixup functions apply hotfixes where sensible. [Stage 1 of 2+,
  171.   in memory only.]
  172. - Fixed ommission of "NTFS: " string in ntfs_error() output.
  173. - Fixed stupid if statement bug in unistr.c. Thanks to Yann E. Morin
  174.   for spotting it. 
  175. - Get rid of all uses of max and min macros. This actually allowed for
  176.   optimizing the code in several places so it was a Good Thing(TM).
  177. - Make ntfs use generic_file_open to enforce the O_LARGEFILE flag.
  178. - Detect encrypted files and refuse to access them (return EACCES
  179.   error code to user space).
  180. - Fix handling of encrypted & compressed files so that an encrypted
  181.   file no longer is considered to be compressed (this was causing
  182.   kernel segmentation faults).
  183. NTFS 1.1.16:
  184. - Removed non-functional uni_xlate mount options.
  185. - Clarified the semantics of the utf8 and iocharset mount options.
  186. - Threw out the non-functional mount options for using hard coded
  187.   character set conversion. Only kept utf8 one.
  188. - Fixed handling of mount options and proper handling of faulty mount
  189.   options on remount.
  190. - Cleaned up character conversion which basically became simplified a
  191.   lot due to the removal of the above mentioned mount options.
  192. - Made character conversion to be always consistent. Previously we
  193.   could output to the VFS file names which we would then not accept
  194.   back from the VFS so in effect we were generating ghost entries in
  195.   the directory listings which could not be accessed by any means.
  196. - Simplified time conversion functions drastically without sacrificing
  197.   accuracy. (-8
  198. - Fixed a use of a pointer before the check for the pointer being
  199.   NULL, reported by the Stanford checker.
  200. - Fixed several missing error checks, reported by the Stanford
  201.   checker and fixed by Rasmus Andersen.
  202. NTFS 1.1.15 (changes since kernel 2.4.4's NTFS driver):
  203. - New mount option show_sys_files=<bool> to show all system files as
  204.   normal files.
  205. - Support for files and in general any attributes up to the full 2TiB
  206.   size supported by the NTFS filesystem. Note we only support up to
  207.   32-bits worth of inodes/clusters at this point.
  208. - Support for more than 128kiB sized runlists (using vmalloc_32()
  209.   instead of kmalloc()).
  210. - Fixed races in allocation of clusters and mft records.
  211. - Fixed major bugs in attribute handling / searching / collation.
  212. - Fixed major bugs in compressing a run list into a mapping pairs array.
  213. - Fixed major bugs in inode allocation. Especially file create and
  214.   mkdir.
  215. - Fixed memory leaks.
  216. - Fixed major bug in inode layout assignment of sequence numbers.
  217. - Lots of other bug fixes I can't think of right now...
  218. - Fixed NULL bug found by the Stanford checker in ntfs_dupuni2map().
  219. - Convert large stack variable to dynamically allocated one in
  220.   ntfs_get_free_cluster_count() (found by Stanford checker).
  221. Kernel 2.4.4:
  222. - Started ChangeLog.