Long filename (LFN) support is Microsoft's backward-compatible extension of the 8.3 filename (short filename) naming scheme used in DOS. Long filenames can be more descriptive, including longer filename extensions such as .jpeg, .tiff, .html, and .xhtml that are common on other operating systems, rather than specialized shortened names such as .jpg, .tif, .htm, or .xht. The standard has been common with File Allocation Table (FAT) filesystems since its first implementation in Windows NT 3.5 of 1994.

To maintain compatibility with older operating systems, Microsoft formulated a method of generating an 8.3 filename from the long filename (for example, Microsoft.txt to MICROS~1.TXT) and associating it with the file.

Compatibility issues
Microsoft implemented support for LFNs in the FAT filesystem by using hidden directory entries, of the volume label type, to store the longer names; this scheme is known as VFAT, and was chosen for compatibility, as volume labels are generally ignored by programs and operating system (OS) components. Programs running on older OSs could still access the files' short names, while newer, LFN-aware OSs and programs could use the longer ones.

When LFN support was first introduced into a DOS-based operating system in the form of Windows 95, it caused some problems for older programs. For example, a DOS program performing sector-level directory operations while Windows was in DOS mode could destroy long filename information so, by default, sector-level access to hard disks was disallowed in this mode.

Upon booting into plain DOS, the long filenames are not visible unless a VFAT LFN driver is installed. Microsoft did not add LFN support to many of its older programs, including File Manager, the Windows 3.1x (Windows for Workgroups) file manager that was made obsolete by the new operating system shell, Windows Explorer. Windows NT supported LFNs on NTFS file systems starting with the release of NT 3.1, and all of its utilities, including File Manager, were updated to support LFNs. NT 3.5 added FAT LFN support in preparation for Windows 95. However, the Windows 95 version of File Manager came from Windows for Workgroups 3.11.

OS/2 stores LFNs for FAT filesystems in .LONGNAME extended attributes that are incompatible with Microsoft's implementation and only visible to tools supporting OS/2's standard. Many APIs providing access to files by pathname cannot see the new, longer names without a supporting driver.

Limits
Because the FAT LFN implementation is layered atop an older, more limited naming system, there are inevitable complications, such as if an attempt is made to create too many files with the same first six letters. Also, one is more likely to encounter issues creating files or folders in the root directory, since FAT12 and FAT16 only allocate space for 512 root directory entries on hard disks.  Since long filenames use more than one directory entry, this problem may occur with fewer than 512 files or folders in the root directory. There is space only for 24 long filenames of maximum length (512/(1+20)). This problem does not exist for FAT32 volumes.

The long filename system allows a maximum length of 255 UCS-2 characters including spaces and non-alphanumeric characters (excluding the following characters, which have special meaning within the COMMAND.COM command interpreter or the operating system kernel: \ / : * ? " < > |). This is achieved by chaining up to 20 directory entries of 13 2-byte Unicode characters each. The maximum length of a pathname is 256 characters, which includes all parent directories and the filename. 255-character mixed-case long filename is possible only for files, or folders with no sub-folders, at the root folder of any drive.

While long filename support allows for longer file and directory names, under DOS-based systems, the absolute file path constructed from the associated short file and directory name equivalents is still represented in an internal data structure called the Current Directory Structure (CDS), which imposes a limit of 66 characters on the (short) path name and thereby indirectly limits also the path depth to a maximum of 33 levels (counting in the root directory and assuming only single-letter names). (This design limitation was not present in older versions of DR DOS (prior to DR DOS 6.0 November 1991 updates) which still utilized a relative path representation internally, however, due to their internal differences these versions are not compatible with existing LFN add-on drivers.) Non-DOS-based operating systems without a CDS are not restricted to this path depth limitation.

VFAT LFN drivers
The following is a list of drivers that can be used to provide support for VFAT long file names as used in Windows 95. Although drivers such as DOSLFN can be loaded in almost any versions of DOS, it works best on DOS versions that have support for LFN themselves, such as MS-DOS 7.10 or DR-DOS 7.02, so that DOS commands such as DIR would show long file names as well.

Other implementations
Before LFN support was implemented into the FAT family of file systems, various file managers provided their own methods to attach and maintain longer file descriptions.  Among the first to do so are the alternative command line processors 4DOS and NDOS with their internal DESCRIBE command and corresponding DESCRIPT.ION files. The latter are optional hidden files located in each directory storing a line-based list of file names located in the directory together with their textual description and optional metadata entries—for example, extended attributes and configuration data for other programs. The descriptions can be up to 511 characters long and are displayed along the file names in much the same way as long file names are listed alongside their short filename aliases in DIR listings. If an entry exists for a file, it will be copied and moved with the file for as long as these command line processors are used to perform the operation. This scheme is still maintained by successors such as 4OS2, 4NT / Take Command. It was adopted also by various other programs like Volkov Commander (VC), DOS Navigator (DN), Open DOS Navigator (ODN), Necromancer's DOS Navigator (NDN), Windows Commander, Total Commander, Double Commander, 7-Zip, XnView, ACDSee, Newsbin Pro, V, FreeCOM and some CUI_LIB-based applications.

Human68K, the operating system of the Sharp X68000 computers since 1986, is based on an extended FAT file system.  It allows up to 18.3 characters in a filename (instead of the 8.3 in FAT) and allows also upper and lower case characters (as well as Kanji in Shift JIS code) that are all treated as distinctive. If restricted to the use of 8.3-format filenames with upper case characters only, the Human68K floppies are fully compatible with the Japanese 1232 KiB standard FAT floppy format (77 cylinders, 2 heads, 8 sectors, 1024 bytes/sector). This format is used by the NEC PC-9800, Fujitsu FMR and FM Towns series computers.

Novell NetWare versions 3.x and 4.x volumes can also support Microsoft-compatible long filenames, by loading an additional NetWare Loadable Module (NLM).

In order to support Java applications without implementing a VFAT-compatible scheme, the FlexOS-based IBM 4690 OS version 2 introduced its own virtual file system (VFS) architecture to store long filenames in the FAT file system in a backwards compatible fashion. If enabled, the virtual filenames (VFN) are available under separate logical drive letters, whereas the real filenames (RFN) remain available under the original drive letters.

See also
 TRANS.TBL
 Rock Ridge
 Joliet (file system)
 Romeo (file system)
 8.3 filename
 6.3 filename
 Filename
 VFAT patent issues
 Design of the FAT file system
 File system
 Large file support (LFS)

References

External links
 The filesystems howto
 Current version of DOSLFN
 Original Author of DOSLFN 
 VFAT OS2 Provides LFN support under OS2

Windows architecture
Filenames
긴 파일 이름(Long filename, LFN) 지원은 마이크로소프트 도스에 쓰이는 8.3 파일 이름 규칙에 대한 마이크로소프트의 하위 호환성 확장이다. 긴 파일 이름은 .jpg, .tif, .htm, .xht와 같은 짧은 이름 보다는 .jpeg, .tiff, .html, .xhtml과 같은 다른 운영 체제에서 일반적인, 더 긴 확장자를 포함하여 더 자세히 기술할 수 있다. 이 표준은 1994년 윈도우 NT 3.5에서 첫 구현된 뒤로 지금까지 FAT 파일 시스템에서 일반적으로 쓰이고 있다.

다른 운영 체제와의 호환성을 유지하기 위해 마이크로소프트는 긴 파일 이름으로부터 8.3 파일 이름을 생성하여(이를테면 Microsoft.txt를 MICROSO~1.TXT로) 파일과 연결하는 방식을 취하고 있다.

호환성 문제 
마이크로소프트는 FAT 파일 시스템에서 볼륨 레이블 형태의 보이지 않는 디렉터리 엔트리를 사용하여 더 긴 이름을 저장함으로써 LFN 지원을 구현한다. 이른바 VFAT 규칙이 호환성을 위해 채택되었는데, 이로써 볼륨 레이블은 일반적으로 프로그램과 운영 체제 구성 요소에 의해 무시된다. 오래된 운영 체제를 실행하는 프로그램들은 여전히 파일들의 짧은 이름으로 접근이 가능하지만 새로운 LFN을 인지하는 운영 체제들과 프로그램들은 긴 이름을 사용할 수 있다.

LFN이 MS-DOS 기반 운영 체제에 윈도우 95 형식으로 처음 도입되었을 때 오래된 프로그램들에 일부 문제가 발생하였다. 이를테면 윈도가 도스 모드에 있는 동안 섹터 수준의 디렉터리 조작을 수행하는 도스 프로그램은 긴 파일 이름의 정보를 파괴할 수 있어서 기본적으로 하드 디스크에 섹터 수준으로 접근하는 일은 이 모드에서 허용되지 않는다.

순수 도스로 부팅할 때 긴 파일 이름은 VFAT LFN 드라이버가 설치되어 있지 않는 한 보이지 않는다. 마이크로소프트는 파일 관리자, 윈도 포 워크그룹 파일 관리자 (새로운 운영 체제 셸인 탐색기로 대체됨)를 포함한 오래된 프로그램들 다수에 LFN 지원을 추가하지 않았다. 윈도우 NT의 경우 NT 3.1의 출시를 기점으로 NTFS 파일 시스템에서 LFN을 지원하기 시작하였으며 파일 관리자를 포함한 유틸리티들 전반이 LFN을 지원하도록 업데이트되었다. NT 3.5는 윈도 95 준비를 통해 FAT LFN 지원을 추가하였다. 그러나 윈도 95 버전의 파일 관리자는 윈도 포 워크그룹 3.11과 함께 출시되었다.

OS/2는 마이크로소프트의 구현과 호환되지 않는 .LONGNAME 확장 특성을 사용하여 LFN을 저장하며, OS/2 표준을 지원하는 도구를 사용해서만 사용자에게 나타난다. 경로 이름을 통해 파일로 접근을 제공하는 수많은 API들은 드라이버 지원 없이는 더 길고 새로운 이름을 볼 수 없다.

제한 
FAT LFN 구현이 더 오래되고 더 제한된 이름 체계의 상위에 위치해 있기 때문에 처음 여섯 자리와 동일한 수많은 파일들을 너무 많이 만들어내려고 하는 등의 경우 어쩔 수 없는 복잡함이 존재한다. 게다가 루트 디렉터리에 파일이나 디렉터리를 생성하는 문제를 마주칠 수 있는데, 그 까닭은 FAT12와 FAT16은 오직 512개의 루트 디렉터리 항목만을 하드 디스크에 할당할 수 있기 때문이다. 긴 파일 이름은 하나 이상의 디렉터리 엔트리를 사용하므로 이 문제는 루트 디렉터리에 512개보다 적은 수의 파일이나 디렉터리가 있을 때 발생할 수도 있다.  여기에는 최대 길이 (512/20)의 25개의 긴 파일 이름만을 위한 공간이 있다. 이 문제는 FAT32 볼륨에서는 존재하지 않는다.

긴 파일 이름은 최대 255자리의 UCS-2 문자를 허용하며 여기에는 알파벳이 아닌 문자(\ / : * ? " < > | 등의 운영 체제 커널이나 명령 인터프리터 내에서 특별한 의미를 갖는 문자 제외)나 공백을 포함한다. 최대 20개의 디렉터리 엔트리의 13개의 2바이트 유니코드 문자를 각각 연결함으로써 수행된다. 경로 이름의 최대 길이는 256자이며, 여기에는 모든 부모 디렉터리와 파일 이름을 포함한다.

VFAT LFN 드라이버 
아래는 윈도 95에서 사용되는 것처럼 VFAT 긴 파일 이름을 사용할 수 있게 지원해 주는 드라이버의 목록이다. DOSLFN이 거의 모든 버전의 도스에서 적재가 가능하지만, MS-DOS 7.10과 같이 DIR 등의 도스 명령어들이 긴 파일 이름도 잘 보여주는 것처럼 LFN 자체를 지원하는 도스 버전에서 가장 잘 동작한다.

같이 보기 
 8.3 파일 이름
 파일 시스템

각주

외부 링크 
  The filesystems howto
  Current version of DOSLFN
  Original Author of DOSLFN 
  VFAT OS2 Provides LFN support under OS2 

컴퓨터 파일
파일 이름