{{위키데이터 속성 추적}}
{{파일 시스템 정보
| name = NTFS
| full_name= New Technology File System<ref name="ntfs_abbr">{{웹 인용
 |url          = http://www.microsoft.com/windowsxp/using/setup/tips/advanced/ntfs.mspx
 |제목       = Windows XP: Format backup drives using NTFS
 |last         = 
 |first        = 
 |date         = 2006년 9월 7일
 |publisher    = Microsoft
 |확인날짜 = 2011-10-04
 |보존url    = https://www.webcitation.org/61BaInnAO?url=http://www.microsoft.com/windowsxp/using/setup/tips/advanced/ntfs.mspx#
 |보존날짜 = 2011-08-24
 |url-status = dead
}}</ref>
| developer = [[마이크로소프트]]
| introduction_os = [[윈도우 NT 3.1]]
| introduction_date = 1993년 7월
| partition_id = 0x07 ([[마스터 부트 레코드|MBR]]) <br /> <code>[[기본 데이터 파티션|EBD0A0A2-B9E5-4433-87C0-68B6B72699C7]]</code> ([[GUID 파티션 테이블|GPT]])
| directory_struct = [[B+ 트리]]<ref name=insidewin2kntfs>{{웹 인용
   | url = http://msdn2.microsoft.com/en-us/library/ms995846.aspx
   | 제목 = Inside Win2K NTFS, Part 1
   | author = 마크 러시노비치
   | publisher = [[MSDN]]
   | accessdate = 2008-04-18
   | authorlink = 마크 러시노비치
}}</ref>
| file_struct = 비트맵
| bad_blocks_struct = $badclus
| max_filename_size = 255 [[UTF-16]] 코드 단위<ref name="ntfsdoc">{{웹 인용
   | url = http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf
   | 제목 = NTFS Documentation
   | author = Richard Russon and Yuval Fledel
   | accessdate = 2011-06-26
}}</ref>
| max_files_no = 4,294,967,295 (2<sup>32</sup>-1)<ref name="How NTFS Works">{{웹 인용
   | url = http://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
   | 제목 = How NTFS Works
   | date = 2003-03-28
   | work = Windows Server 2003 Technical Reference
   | author = [[마이크로소프트 테크넷]]
   | accessdate = 2011-09-12
}}</ref>
| max_file_size =
16&nbsp;[[엑사바이트|EB]] − 1&nbsp;[[킬로바이트|KB]] (포맷);<br />
16&nbsp;[[테라바이트|TB]] − 64&nbsp;KB (추가된 기능)<ref name="How NTFS Works"/>
| max_volume_size =
2<sup>64</sup> 클러스터 − 1 클러스터 (포맷);<br />
256&nbsp;TB ({{nowrap|256 × 1024<sup>4</sup> 바이트}}) − 64&nbsp;KB ({{nowrap|64 × 1024 바이트}}) (추가된 기능)<ref name="How NTFS Works"/>
| filename_character_set = [[POSIX]] 이름공간에서는 모든 [[UTF-16]] 코드 단위 (대소문자 구분) 지원 ({{nowrap|U+0000 ([[널 문자|NUL]])}}, {{nowrap|/ ([[슬래시]])}} 제외). Win32 이름공간에서는 모든 [[UTF-16]] 코드 단위 (대소문자 구분) 지원 ({{nowrap|U+0000 ([[널 문자|NUL]])}} {{nowrap|/ ([[슬래시]])}} {{nowrap|\ ([[백슬래시]])}} {{nowrap|: ([[콜론]])}} {{nowrap|* ([[별표]])}} {{nowrap|? ([[물음표]])}} {{nowrap|" ([[인용부호]])}} {{nowrap|< ([[괄호|보다 작음]])}} {{nowrap|> ([[괄호|보다 큼]])}},  {{nowrap|&#124; ([[수직바|파이프]])}} 제외)<ref name="ntfsdoc"/>
| dates_recorded = 작성, 수정, POSIX 변경, 접근
| date_range = 1601년 1월 1일&nbsp;– 60056년 5월 28일
| date_resolution = 100ns
| forks_streams = 예
| attributes = 읽기 전용, 숨김, 시스템, 압축, 콘텐츠 색인화 안 함, 오프라인, 임시, 압축
| file_system_permissions = [[접근 제어 목록|ACL]]
| compression = 파일 당 압축 지원, [[LZ77]] ([[윈도우 NT|윈도우 NT 3.51]] 이상)
| single_instance_storage = 예
| encryption = 파일 당 암호화 지원,<br />[[DESX]] ([[윈도우 2000]] 이상),<br />[[트리플 DES]] ([[윈도우 XP]] 이상),<br />[[고급 암호화 표준|AES]] (윈도우 XP 서비스 팩 1, [[윈도우 서버 2003]] 이상)
| OS = [[윈도우 NT]] 계열 ([[윈도우 NT 3.1]]부터 [[윈도우 NT 4.0]], [[윈도우 2000]], [[윈도우 XP]], [[윈도우 서버 2003]], [[윈도우 비스타]], [[윈도우 서버 2008]], [[윈도우 7]], [[윈도우 서버 2008 R2]], [[윈도우 8]], [[윈도우 서버 2012]], [[윈도우 8.1]], [[윈도우 서버 2012 R2]]), [[맥 OS X]], [[GNU/리눅스]]
}}
'''NTFS'''(뉴 테크놀로지 파일 시스템/New Technology File System<ref name="ntfs_abbr"/>)는 [[윈도우 NT]] 계열 운영체제의 [[파일 시스템]]으로 [[윈도우 2000]], [[윈도우 XP]], [[윈도우 서버 2003]], [[윈도우 서버 2008]], [[윈도우 비스타]], [[윈도우 7]], [[윈도우 서버 2008 R2]], [[윈도우 8]], [[윈도우 서버 2012]], [[윈도우 8.1]], [[윈도우 서버 2012 R2]] 등에도 포함되어 있다. NTFS의 NT는 윈도우 NT와 비슷하게 새로운 기술이라는 뜻의 New Technology의 준말이다. [[MS-DOS]]와 이전 버전의 윈도우에서 쓰였던 [[마이크로소프트]]의 이전 [[파일 할당 테이블|FAT]] 파일 시스템을 대체하였다. NTFS는 FAT와 HPFS([[고성능 파일 시스템]])을 거쳐 몇 가지 개선이 있다. 이를테면, [[메타데이터]]의 지원, 고급 데이터 구조의 사용으로 인한 성능 개선, 신뢰성, 추가 확장 기능을 더한 디스크 공간 활용을 들 수 있다.

== 역사 ==
1980년대 중순, 마이크로소프트와 [[IBM]]은 차세대 그래픽 [[운영 체제]]를 만들기 위해 조인트 프로젝트를 개설하였다. 프로젝트의 결과물은 [[OS/2]]였으나 마이크로소프트와 IBM은 수많은 중요 문제에 대해 합의에 이르지 못했고 마침내 분리되었다: OS/2는 IBM의 프로젝트로 남았고 마이크로소프트는 윈도우 NT를 작업하게 되었다.

OS/2 파일 시스템 [[HPFS]]는 여러 중요한 신기능을 포함하였다. 마이크로소프트가 새로운 운영 체제를 만들었을 때 이러한 개념들 중 다수를 NTFS로 가져왔다.<ref>{{웹 인용 |url=http://www.pcguide.com/ref/hdd/file/ntfs/over-c.html |title=Overview and History of NTFS |last=Kozierok |first=Charles M. |date=April 17, 2001 |publisher=PCGuide}}</ref> 혈통이 동일했던 덕분인지 HPFS와 NTFS는 동일한 [[디스크 파티션]] 식별 유형 코드 (07)을 사용한다.

사용할 수 있는 수많은 코드가 있고, 기타 주요 파일 시스템들이 자체 코드를 갖고 있기 때문에 동일한 파티션 ID 레코드 번호를 사용하는 것은 흔치 않다. FAT는 9개 이상을 갖고 있다. ([[FAT12]], [[FAT16]], [[FAT32]] 등 각각) 파티션 유형 07의 파일 시스템을 식별하는 알고리즘들은 추가적인 검사를 수행해야 한다. NTFS 개발자들은 다음을 포함한다: [[톰 밀러]], [[게리 키무라]], 브라이언 앤드루, 데이빗 고벨.<ref>{{서적 인용 |last= Custer |first= Helen |title= Inside the Windows NT File System |url= https://archive.org/details/insidewindowsntf00cust |year= 1994 |publisher= [[Microsoft Press]] |isbn= 978-1-55615-660-1 |page=vii}}</ref>

== 버전 ==
NTFS는 다음의 5 가지 버전을 가지고 있다:
* '''v1.0''': 1993년 [[윈도우 NT 3.1]]과 함께 출시되었다. v1.0은 1.1 이상과 호환되지 않는다: 윈도우 NT 3.5x가 만든 볼륨은 업데이트 설치 없이 윈도우 NT 3.1에서 읽을 수 없다. (NT 3.5x 설치 미디어에서 이용 가능)<ref>{{웹 인용 |url=http://support.microsoft.com/kb/q129102/ |title=Recovering Windows NT After a Boot Failure on an NTFS Drive |publisher=Microsoft |date=November 1, 2006}}</ref>
* '''v1.1''': 1995년 [[윈도우 NT 3.51]]과 함께 출시되었다. 압축 파일, 명명 스트림, [[접근 제어 목록]]을 지원한다.<ref name="insidewin2kntfs"/>
* '''v1.2''': 1996년 [[윈도우 NT 4.0]]과 함께 출시되었다. [[보안 서술자]]를 지원한다. OS 출시 이후 NTFS 4.0으로 흔히 부른다.
* '''v3.0''': [[윈도우 2000]]과 함께 출시되었다.<ref name="Inside Win2K NTFS, Part 1">{{웹 인용 |url=http://msdn.microsoft.com/en-us/library/ms995846.aspx |title=Inside Win2K NTFS, Part 1 |publisher=Microsoft |date=January 26, 2011}}</ref> 디스크 쿼터, [[암호화 파일 시스템]], [[희소 파일]], [[NTFS 리파스 포인트|리파스 포인트]], [[USN 저널|업데이트 시퀀스 번호 (USN) 저널링]], $Extend 폴더 및 파일을 지원한다. [[보안 서술자]]를 재정비하여 같은 보안 설정을 사용하는 여러 파일들이 같은 서술자를 공유할 수 있다.<ref name="insidewin2kntfs"/> OS 출시 이후 NTFS 5.0으로 흔히 부른다.
* '''v3.1''': 2001년 가을 [[윈도우 XP]]와 함께 출시되었다. (윈도우 비스타, 윈도우 7에도 연이어 사용됨) 추가 MFT 레코드 번호(손상된 MFT 파일 복구에 유용)와 더불어 마스터 파일 테이블 (MFT) 엔트리를 확장하였다. OS 출시 이후로 NTFS 5.1로 흔히 부른다.

== 특징 ==
* '''복구성''' : 시스템 고장과 디스크 손상을 복구하는 능력이 있다. 손상이 발생하면 NTFS는 디스크 볼륨을 재구성하여 일관성 있는 상태로 복구한다. 파일 시스템을 변경하기 위해 [[트랜잭션]] 처리 모델이 적용되어, 각 진행 단계들은 [[원자적 행위]](atomic action)로 처리된다. 손상된 시점에서 처리중이었던 각 트랜잭션은 차후에 실행이 완료되거나 파기된다. 다른 한편으로는 중요한 파일 시스템 데이터를 보존하기 위해 중복 저장장치를 사용한다. 그렇게 함으로써 디스크 섹터의 일부가 파손되더라도 파일 시스템의 구조에 관한 데이터 상실을 방지한다.

* '''보안성''' : 보안을 위해 [[윈도우 NT]] 객체 모델이 적용되었다. 어떤 파일을 열면, 해당 파일은 파일의 보안 속성을 관장하는 보안 서술자를 가진 파일 객체로 구현된다.

== 내부 구조 ==
=== 파티션 부트 섹터 ===
{| class="wikitable sortable"
|+ NTFS 부트 섹터 내용
! 바이트 오프셋 !! 필드 길이 !! 일반 수치 !! 필드 이름
|-
| 0x00
| 3 바이트
| 0xEB5290
| JMP 명령
|-
| 0x03
| 8 바이트
| "<code>NTFS&ensp;&ensp;&ensp;&ensp;</code>"<br/><small>워드 "NTFS" 뒤에 4개의 공백(0x20)이 존재</small>
| OEM ID
|-
| 0x0B
| 2 바이트
| 0x0200
| 섹터 당 바이트
|-
| 0x0D
| 1 바이트
| 0x08
| 클러스터 당 섹터
|-
| 0x0E
| 2 바이트
| 0x0000
| 예약된 섹터
|-
| 0x10
| 3 바이트
| 0x000000
| 미사용
|-
| 0x13
| 2 바이트
| 0x0000
| NTFS가 사용하지 않음
|-
| 0x15
| 1 바이트
| 0xF8
| 미디어 서술자
|-
| 0x16
| 2 바이트
| 0x0000
| 미사용
|-
| 0x18
| 2 바이트
| 0x003F
| 트랙 당 섹터
|-
| 0x1A
| 2 바이트
| 0x00FF
| 헤드 수
|-
| 0x1C
| 4 바이트
| 0x0000003F
| 숨겨진 섹터
|-
| 0x20
| 4 바이트
| 0x00000000
| 미사용
|-
| 0x24
| 4 바이트
| 0x80008000
| 미사용
|-
| 0x28
| 8 바이트
| 0x00000000007FF54A
| 총 섹터
|-
| 0x30
| 8 바이트
| 0x0000000000000004
| $MFT 클러스터 번호
|-
| 0x38
| 8 바이트
| 0x000000000007FF54
| $MFTMirr 클러스터 번호
|-
| 0x40
| 1 바이트
| 0xF6
| 파일 레코드 세그먼트 당 바이트
|-
| 0x41
| 3 바이트
| 0x000000
| 미사용
|-
| 0x44
| 1 바이트
| 0x01
| 인덱스 버퍼 당 클러스터
|-
| 0x45
| 3 바이트
| 0x000000
| 미사용
|-
| 0x48
| 8 바이트
| 0x1C741BC9741BA514
| 볼륨 일련 번호
|-
| 0x50
| 4 바이트
| 0x00000000
| 체크섬
|-
| 0x54
| 426 바이트
|
| 부트스트랩 코드
|-
| 0x01FE
| 2 바이트
| 0xAA55
| 섹터 끝 마커
|}
<ref>[http://www.ntfs.com/ntfs-partition-boot-sector.htm NTFS Partition Boot Sector] Information on structure of the boot sector.</ref>
=== 메타 파일 ===
{| class="wikitable sortable"
|+ NTFS 메타파일의 목록
! 세그먼트 번호 !! 파일 이름
|-
| 0
| <code>$MFT</code>
|-
| 1
| <code>$MFTMirr</code>
|-
| 2
| <code>$LogFile</code>
|-
| 3
| <code>$Volume</code>
|-
| 4
| <code>$AttrDef</code>
|-
| 5
| <code>.</code>
|-
| 6
| <code>$Bitmap</code>
|-
| 7
| <code>$Boot</code>
|-
| 8
| <code>$BadClus</code>
|-
| 9
| <code>$Secure</code>
|-
| 10
| <code>$UpCase</code>
|-
| 11
| <code>$Extend</code>
|-
| 12–23
|$MFT 확장 엔트리를 위해 예약되어 있다. 확장 엔트리들은 프라이머리 레코드에 맞지 않는 추가 특성을 포함하는 추가적인 MFT 레코드들이다. 파일이 충분히 단편화되어 있고, 스트림이 많으며, 긴 파일 이름, 복잡한 보안 및 기타 드문 환경에 처할 때 발생한다.
|-
| 24
| <code>$Extend\$Quota</code>
|-
| 25
| <code>$Extend\$ObjId</code>
|-
| 26
| <code>$Extend\$Reparse</code>
|-
| 27—
|정규 파일 엔트리의 시작.
|}

== 제한 ==
NTFS에는 다음과 같은 몇 가지 제한이 있다.

; 파일 이름: 파일 이름은 255 [[UTF-16]] 코드 워드로 그 수가 제한된다. 특정한 이름은 볼륨 루트 디렉터리에 남아 있으므로 파일에 사용하지 못한다. 이를테면 $MFT, $MFTMirr, $LogFile, $Volume, $AttrDef, . (점), $Bitmap, $Boot, $BadClus, $Secure, $Upcase, $Extend가 있다.<ref name="How NTFS Works" /> 점 (.)과 $Extend는 둘 다 디렉터리이며 그 밖의 것들은 파일들이다. NT 커널은 완전한 경로를 32,767 utf-16 코드 워드로 그 수를 제한한다.

; 최대 볼륨 크기: 이론적으로 최대 NTFS 볼륨 크기는 2<sup>64</sup>−1 클러스터이다. 그러나 윈도우 XP 프로페셔널에 제공되는 최대 NTFS 볼륨 크기는 2<sup>32</sup>−1 클러스터이다. 이를테면 최대 윈도우 XP NTFS 볼륨 크기인 64&nbsp;KB ({{nowrap|64 × 1024 bytes}}) 클러스터는 256&nbsp;TB ({{nowrap|256 × 1024<sup>4</sup> 바이트}}) - 64&nbsp;KB이다. 기본 클러스터 크기 (4 KB)를 사용하면 최대 NTFS 볼륨 크기는 16 16&nbsp;TB - 4&nbsp;KB로 된다. 둘 다 윈도우 XP 서비스팩 1에서 제한되었던 128&nbsp;GB ({{nowrap|128 × 1024<sup>3</sup> 바이트}})보다는 높은 수치이다. 마스터 부트 레코드 (MBR) 디스크 상의 파티션 테이블이 최대 2 TB의 파티션 크기를 지원하기 때문에 다이내믹 또는 [[GUID 파티션 테이블|GPT]] 볼륨은 2 TB 이상의 NTFS 볼륨을 만드는 데 사용하여야 한다. GPT 볼륨에서 윈도우 환경으로 시동하는 경우 [[확장 펌웨어 인터페이스|EFI]]를 채용한 시스템과 64비트 지원을 요구한다.<ref>http://www.rodsbooks.com/gdisk/booting.html</ref>

; 최대 파일 크기: 앞서 언급한 대로 이론적인 최대 NTFS 볼륨 크기는 2<sup>64</sup>-1 즉16&nbsp;EB ({{nowrap|16 × 1024<sup>6</sup> 바이트}}) - 1&nbsp;KB ({{nowrap|1024 바이트}}), 곧 18,446,744,073,709,550,592 바이트이다. 하지만 실제 최대 NTFS 파일 크기는 16&nbsp;TB ({{nowrap|16 × 1024<sup>4</sup> 바이트}}) - 64&nbsp;KB ({{nowrap|64 × 1024 바이트}}), 곧 17,592,185,978,880 바이트이다.

; 대체 데이터 스트림: 윈도우 시스템 호출은 대체 데이터 스트림을 관리할 수 있다.<ref name="How NTFS Works"/> 운영 체제에 따라 유틸리티 및 원격 파일 시스템, 파일 전송은 데이터 스트림을 조용히 스트리핑(strip)할 수 있다.<ref name="How NTFS Works"/> 파일을 안전하게 복사하고 이동하는 방법은 BackupRead, BackupWrite 호출을 사용하는 것이며 이로써 프로그램이 스트림을 열거하고 각 스트림이 목적 볼륨에 제대로 기록하는지 유효성을 확인하며 위반 스트림을 무시하는 것을 알게 된다.<ref name="How NTFS Works"/>

; 운영 체제 호환성: [[윈도우 NT]] 기반 운영 체제는 이 파일 시스템을 이용한다. 사용자는 다른 운영 체제의 컴퓨터와의 전송을 위하여 [[플래시 드라이브]]나 외장 [[하드 드라이브]]를 [[FAT32]]로 포맷할 것을 권고 받는다.

== 같이 보기 ==
* [[파일 할당 테이블|FAT]]
* [[HPFS]]
* [[유닉스 파일 시스템|UFS]]
* [[파일 시스템]]

== 각주 ==
<references />

{{윈도우 구성 요소}}
{{파일 시스템}}

[[분류:윈도우 구성 요소]]
[[분류:파일 시스템]]
[[분류:1993년 소프트웨어]]