Proneer | Security is a people problem...
NTFS(New Technology File System)는 Windows NT 부터 XP, 2000, 2003, 2008, Vista, 7 에 이르기까지 사용되고 있다. Windows NT는 Windows 95, 98 에서 개인사용자를 겨냥하던 마이크로소프트가 최초로 출시한 서버형 운영체제이다. Windows NT가 개발되면서 FAT의 구조상의 한계점을 개선하기 위한 새로운 파일시스템인 NTFS가 함께 개발되었다.
파일시스템의 특징 상 새로운 파일시스템이 개발되더라도 전혀 기존의 개념과 새로울 수 없다. 설계 방식을 완전 새롭게 할 수 있겠지만 기존의 문제점을 보안하여 새로운 기능을 추가하는 것이 대부분이다. 모방은 곧 창조의 어머니라고 하지 않던가. NTFS도 FAT와 OS/2에서 사용되던 HPFS(High Performance File System)의 내용을 기반으로 개발되었다.
NTFS는 이후 운영체제의 발전에 따라 많은 발전을 거듭해왔다.
NTFS 특징
NTFS는 처음 개발된 이후로 많은 기능들이 추가되었다. NTFS의 많은 기능들 중에 대표적인 기능만 살펴보자.
1) USN 저널 (Update Sequence Number Journal 또는 Change Journal)
USN 저널은 NTFS의 메타데이터를 구성하는 파일로 $UsnJnrl 이라는 이름을 가진다. 이 파일은 파일시스템의 모든 파일 및 디렉터리의 변경 사항을 기록하는 로그이다. 이는 이름처럼 Ext3 파일시스템부터 지원한 저널링(Journaling) 기법과 유사한 것으로 NTFS 3.0 부터 추가된 기능이다.
USN 저널 파일은 최초에 빈 파일로 생성이 된다. 이후에 NTFS 볼륨에 변경이 생길때 마다 미리 정의된 레코드 형식으로 변경을 기록하여 저널 파일에 추가한다. 레코드에 기록되는 내용은 64 비트 USN(Update Sequence Number), 파일 이름, 변경에 관한 간략한 정보가 기록된다.
결과적으로 USN 저널 파일은 단순히 볼륨의 변경을 확인하기 위한 로그의 용도로만 사용된다. 이전 데이터나 상세한 작업 과정이 기록되지 않기 때문에 롤백(Rollback)을 수행하기는 어렵다. 만약, 운영체제가 비 정상적으로 종료된 경우 롤백작업은 볼륨의 트랜잭션 저널 정보를 기록하고 있는 $LogFile에 의해 수행된다.
2) ADS (Alternate Data Stream)
ADS는 이름처럼 추가적으로 생성되는 데이터 스트림을 의미한다. 일반적으로 파일은 하나의 데이터 스트림만 가진다. 하지만 NTFS에서는 ADS라는 기능을 추가해 파일이 하나 이상의 데이터 스트림을 가지도록 지원한다.
추가적인 ADS 데이터 스트림들은 고유한 이름을 가진다. 일반적으로 데이터 스트림은 이름이 없다. 파일 이름을 표현하는 것은 $FILE_NAME 속성에서 표현되기 때문에 따로 $DATA 스트림이 이름을 가질 필요가 없다. 하지만 ADS는 기존 $DATA에 추가되기 때문에 고유한 이름을 통해 접근한다. 파일 이름은 "filename:streamname"과 같이 원본 파일 이름(filename)에 :(콜론)을 붙여 ADS(streamname)를 표현한다.
게다가 ADS 들의 크기는 파일 크기에 포함되지 않는다. 기존 파일이 1KB 였는데 이 파일에 1MB의 추가적인 데이터 스트림을 추가하더라도 파일 크기는 1KB이다. 뿐만아니라 탐색기를 통해 내용을 확인하는 것도 불가능하다. 이러한 이유로 ADS를 사용하는 악성코드가 유행한 적이 있다. 이러한 이유로 최근의 바이러스 엔진은 ADS 또한 검사한다.
ADS는 NTFS의 고유한 특징이기 때문에 네트워크나 USB를 통해 다른 파일시스템으로 전송할 경우 전송되지 않고, 원본 스트림만 전송된다. ADS에 대해서는 추가적인 내용이 많기 때문에 추후에 별도로 살펴보도록 하자.
3) Sparse 특징
Sparse 특징은 파일의 데이터가 대부분 0으로 채워져 있는 경우, 실제 데이터를 기록하지 않고 크기만 유지하는 특징이다. 1MB의 파일에 512KB가 0으로 채워진 데이터라면 이를 위해 클러스터를 할당하는 것은 비효율적이다. 따라서 0으로 채워진 클러스터들은 크기 정보만 유지하고 실제 데이터는 기록하지 않도록 하여 저장장치의 효율을 높여준다.
4) 파일 압축
NTFS에서는 파일시스템 수준의 압축을 지원한다. 파일 및 디렉터리 별로 압축하여 저장할 수 있는데 압축 방식은 LZ77의 변형된 방식을 사용한다. 다음과 같이 각 파일 및 디렉터리의 속성에서 고급항목을 통해 압축 기능을 사용할 수 있다.
파일 및 디렉터리를 압축하게 되면 접근할 때마다 압축을 해제해야 하기 때문에 성능하락을 가져온다. 마이크로소프트에서도 파일 이동이나 공유가 빈번한 시스템에서는 압축을 사용하지 말라고 권고하고 있다. 저장매체의 용량이 부족한 경우가 아니라면 궂이 압축을 사용하여 성능하락을 일으킬 필요가 없을 것이다.
5) VSS (Volume Shadow Copy Service)
VSS는 Windows 2003 부터 지원되어 현재 Windows Vista, 2008, 7에서 사용되고 있는 기능이다. 이 기능은 새롭게 덮여 쓰여진 파일 및 디렉터리에 대해 백업본을 유지하는 기능이다. 이렇게 저장된 백업본은 비정상적인 종료시 부팅과정에서 시스템의 저널정보와 함께 안전한 복구를 할 수 있도록 도와준다.
6) EFS (Encrypting File System)
EFS는 NTFS 상에서 파일 및 디렉터리를 암호화 하는 기능으로 CryptoAPI와 EFS File System Run-Time Library(ESRTL)를 사용한 대칭키 방식으로 암호화 한다. 앞선 그림에서와 같이 각 파일 및 디렉터리의 고급 항목을 통해 암호화를 사용할 수 있다.
7) Quotas
Windows 서버형 제품군은 다중사용자를 위한 시스템이다. 다중 사용자를 지원할 경우 각 사용자의 디스크 사용량을 제한하기 위해 쿼터(Quotas) 기능을 사용한다. 만약, 쿼터 기능이 설정된 시스템에서 자신에게 할당된 공간 이상으로 사용하고자 할 경우 경고메시지를 받게 된다.
8) 유니코드 지원
NTFS는 파일, 디렉터리, 볼륨 등의 이름을 지정할 때 모두 유니코드를 사용해 처리한다.
9) 동적 배드 클러스터 재할당
배드 섹터가 발생한 클러스터는 사용할 수 없다. 따라서 시스템 사용 중에 배드 섹터가 발생한 경우 자동으로 새로운 클러스터를 할당해 정상 데이터를 복사하는 기법이다. 이후 배드 섹터가 발생한 클러스터는 $BadClus 파일에 추가되어 더이상 사용되지 않도록 관리된다.
NTFS 소개
NTFS(New Technology File System)는 Windows NT 부터 XP, 2000, 2003, 2008, Vista, 7 에 이르기까지 사용되고 있다. Windows NT는 Windows 95, 98 에서 개인사용자를 겨냥하던 마이크로소프트가 최초로 출시한 서버형 운영체제이다. Windows NT가 개발되면서 FAT의 구조상의 한계점을 개선하기 위한 새로운 파일시스템인 NTFS가 함께 개발되었다.
파일시스템의 특징 상 새로운 파일시스템이 개발되더라도 전혀 기존의 개념과 새로울 수 없다. 설계 방식을 완전 새롭게 할 수 있겠지만 기존의 문제점을 보안하여 새로운 기능을 추가하는 것이 대부분이다. 모방은 곧 창조의 어머니라고 하지 않던가. NTFS도 FAT와 OS/2에서 사용되던 HPFS(High Performance File System)의 내용을 기반으로 개발되었다.
NTFS는 이후 운영체제의 발전에 따라 많은 발전을 거듭해왔다.
| Version | OS |
| 1.0 | Windows NT 3.1 |
| 1.1 | Windows NT 3.5 |
| 1.2 | Windows NT 3.51 |
| 3.0 | Windows 2000 |
| 3.1 - 5.1 | Windows XP |
| 5.2 | Windows 2003 |
| 6.0 | Windows Vista, 2008 |
NTFS 특징
NTFS는 처음 개발된 이후로 많은 기능들이 추가되었다. NTFS의 많은 기능들 중에 대표적인 기능만 살펴보자.
1) USN 저널 (Update Sequence Number Journal 또는 Change Journal)
USN 저널은 NTFS의 메타데이터를 구성하는 파일로 $UsnJnrl 이라는 이름을 가진다. 이 파일은 파일시스템의 모든 파일 및 디렉터리의 변경 사항을 기록하는 로그이다. 이는 이름처럼 Ext3 파일시스템부터 지원한 저널링(Journaling) 기법과 유사한 것으로 NTFS 3.0 부터 추가된 기능이다.
USN 저널 파일은 최초에 빈 파일로 생성이 된다. 이후에 NTFS 볼륨에 변경이 생길때 마다 미리 정의된 레코드 형식으로 변경을 기록하여 저널 파일에 추가한다. 레코드에 기록되는 내용은 64 비트 USN(Update Sequence Number), 파일 이름, 변경에 관한 간략한 정보가 기록된다.
결과적으로 USN 저널 파일은 단순히 볼륨의 변경을 확인하기 위한 로그의 용도로만 사용된다. 이전 데이터나 상세한 작업 과정이 기록되지 않기 때문에 롤백(Rollback)을 수행하기는 어렵다. 만약, 운영체제가 비 정상적으로 종료된 경우 롤백작업은 볼륨의 트랜잭션 저널 정보를 기록하고 있는 $LogFile에 의해 수행된다.
2) ADS (Alternate Data Stream)
ADS는 이름처럼 추가적으로 생성되는 데이터 스트림을 의미한다. 일반적으로 파일은 하나의 데이터 스트림만 가진다. 하지만 NTFS에서는 ADS라는 기능을 추가해 파일이 하나 이상의 데이터 스트림을 가지도록 지원한다.
추가적인 ADS 데이터 스트림들은 고유한 이름을 가진다. 일반적으로 데이터 스트림은 이름이 없다. 파일 이름을 표현하는 것은 $FILE_NAME 속성에서 표현되기 때문에 따로 $DATA 스트림이 이름을 가질 필요가 없다. 하지만 ADS는 기존 $DATA에 추가되기 때문에 고유한 이름을 통해 접근한다. 파일 이름은 "filename:streamname"과 같이 원본 파일 이름(filename)에 :(콜론)을 붙여 ADS(streamname)를 표현한다.
게다가 ADS 들의 크기는 파일 크기에 포함되지 않는다. 기존 파일이 1KB 였는데 이 파일에 1MB의 추가적인 데이터 스트림을 추가하더라도 파일 크기는 1KB이다. 뿐만아니라 탐색기를 통해 내용을 확인하는 것도 불가능하다. 이러한 이유로 ADS를 사용하는 악성코드가 유행한 적이 있다. 이러한 이유로 최근의 바이러스 엔진은 ADS 또한 검사한다.
ADS는 NTFS의 고유한 특징이기 때문에 네트워크나 USB를 통해 다른 파일시스템으로 전송할 경우 전송되지 않고, 원본 스트림만 전송된다. ADS에 대해서는 추가적인 내용이 많기 때문에 추후에 별도로 살펴보도록 하자.
3) Sparse 특징
Sparse 특징은 파일의 데이터가 대부분 0으로 채워져 있는 경우, 실제 데이터를 기록하지 않고 크기만 유지하는 특징이다. 1MB의 파일에 512KB가 0으로 채워진 데이터라면 이를 위해 클러스터를 할당하는 것은 비효율적이다. 따라서 0으로 채워진 클러스터들은 크기 정보만 유지하고 실제 데이터는 기록하지 않도록 하여 저장장치의 효율을 높여준다.
4) 파일 압축
NTFS에서는 파일시스템 수준의 압축을 지원한다. 파일 및 디렉터리 별로 압축하여 저장할 수 있는데 압축 방식은 LZ77의 변형된 방식을 사용한다. 다음과 같이 각 파일 및 디렉터리의 속성에서 고급항목을 통해 압축 기능을 사용할 수 있다.
파일 및 디렉터리를 압축하게 되면 접근할 때마다 압축을 해제해야 하기 때문에 성능하락을 가져온다. 마이크로소프트에서도 파일 이동이나 공유가 빈번한 시스템에서는 압축을 사용하지 말라고 권고하고 있다. 저장매체의 용량이 부족한 경우가 아니라면 궂이 압축을 사용하여 성능하락을 일으킬 필요가 없을 것이다.
5) VSS (Volume Shadow Copy Service)
VSS는 Windows 2003 부터 지원되어 현재 Windows Vista, 2008, 7에서 사용되고 있는 기능이다. 이 기능은 새롭게 덮여 쓰여진 파일 및 디렉터리에 대해 백업본을 유지하는 기능이다. 이렇게 저장된 백업본은 비정상적인 종료시 부팅과정에서 시스템의 저널정보와 함께 안전한 복구를 할 수 있도록 도와준다.
6) EFS (Encrypting File System)
EFS는 NTFS 상에서 파일 및 디렉터리를 암호화 하는 기능으로 CryptoAPI와 EFS File System Run-Time Library(ESRTL)를 사용한 대칭키 방식으로 암호화 한다. 앞선 그림에서와 같이 각 파일 및 디렉터리의 고급 항목을 통해 암호화를 사용할 수 있다.
7) Quotas
Windows 서버형 제품군은 다중사용자를 위한 시스템이다. 다중 사용자를 지원할 경우 각 사용자의 디스크 사용량을 제한하기 위해 쿼터(Quotas) 기능을 사용한다. 만약, 쿼터 기능이 설정된 시스템에서 자신에게 할당된 공간 이상으로 사용하고자 할 경우 경고메시지를 받게 된다.
8) 유니코드 지원
NTFS는 파일, 디렉터리, 볼륨 등의 이름을 지정할 때 모두 유니코드를 사용해 처리한다.
9) 동적 배드 클러스터 재할당
배드 섹터가 발생한 클러스터는 사용할 수 없다. 따라서 시스템 사용 중에 배드 섹터가 발생한 경우 자동으로 새로운 클러스터를 할당해 정상 데이터를 복사하는 기법이다. 이후 배드 섹터가 발생한 클러스터는 $BadClus 파일에 추가되어 더이상 사용되지 않도록 관리된다.
'File Systems' 카테고리의 다른 글
| NTFS - VBR (Volume Boot Record) (0) | 2010/03/21 |
|---|---|
| NTFS - 구조 (Structures) (0) | 2010/03/21 |
| NTFS - 소개 (Introduction) (0) | 2010/03/20 |
| FAT 파일시스템 - 내용 확인 (Confirm Understanding) (2) | 2010/03/20 |
| FAT 파일시스템 - 낭비되는 영역 분석 (Wasted Area Analysis) (0) | 2010/02/26 |
| FAT 파일시스템 - 파일 삭제시 변화 (File Deletion) (0) | 2010/02/24 |
TAG ntfs
댓글을 달아 주세요