IT보안 학습

FAT, NTFS, EXT 총정리

김구티2 2023. 12. 27. 11:04

1. FAT(File Allocation Table)의 개념

FAT, 파일 할당 테이블은 작은 디스크와 간단한 폴더 구조를 지원하기 위해 Microsoft에서 개발한 파일 시스템이다. 그렇기에 대부분의 Microsoft 운영체제에서 호환되는 단순한 구조인 것이다. 파일 시스템은 테이블을 사용하여 스토리지 볼륨의 클러스터를 추적하고, 해당 클러스터가 관련 파일 디렉터리를 통해 서로 연결되는 방식을 추적하기 때문에 File Allocation Table이라는 이름이 붙여진 것이다. 테이블의 중요한 역할 때문에 이 FAT는 파일 시스템이 아닌 테이블 자체를 참조하는 데 사용되기도 하고, 단일 리소스에서 2가지 방식으로 모두 사용되는 경우도 많다.

 

FAT는 MS-DOS의 도입으로 시작되었으며, 과거부터 꾸준히 사용되고 있다. 다만 날로 증가하는 데이터 볼륨을 수용하기 위해 수 년에 걸쳐 발전하고 있으며, FAT의 뒤에 붙는 숫자가 버전을 의미한다고 보면 된다. FAT8, FAT12, FAT16의 초기에서 FAT32, FAT64에 이르기까지 여러 버전이 개발되어 파일 시스템을 더욱 확장했다.

 

각 FAT 버전과 관련된 숫자가 1, 2, 3으로 가지 않고 8, 12, 16 같은 식으로 늘어나는 이유는 이 숫자가 의미하는 바가 있기 때문이다. 그 숫자는 할당 테이블의 각 항목에 사용되는 비트 수를 나타낸다. 예를 들어, FAT 16 볼륨에 대한 할당 테이블 항목의 길이는 16비트이다. 그러나 FAT 버전을 구별하는 것은 단지 이 비트의 수만 있는 것이 아니다. 각 버전은 이전 버전보다 더 큰 볼륨과 파일 크기를 지원한다. 하지만 그럼에도 불구하고, FAT는 최신 파일 시스템에 비해 여전히 소규모 저장소로 제한된다. FAT 32의 경우, 지원할 수 있는 최대 파일 크기는 4GB이다.


한때 FAT 파일 시스템은 Windows 컴퓨터에서 광범위하게 사용되었다. 그러나 현대에 이르러 대부분의 Windows 시스템은 NTFS 또는 ReFS를 사용한다. 특히 ReFS의 경우, Microsoft가 2012년에 도입하여 더 높은 가용성, 탄력성 및 확장성 지원의 목적을 갖고 있다.

 

그리하여 대부분의 Windows 컴퓨터에서 FAT 시스템은 대체되었으나, 여전히 FAT를 지원하기는 한다. 또한, 플로피 디스크, USB 플래시 드라이브, 디지털 카메라 같은 소형 휴대용 장치의 저장 매체에서는 여전히 FAT가 쓰인다. 이제 FAT는 소형 전용으로 이해해도 된다는 말이다.

 

1.1 NTFS(New Technology File System)의 개념

NTFS는 Windows NT 운영체제가 HDD와 SDD에 파일을 저장하고 검색하는 데 사용하는 파일 시스템이다. NTFS는 성능, 확장성, 보안 측면에서 FAT에 비해 몇 가지 향상된 기능을 제공한다.

 

Windows와 일부 이동식 저장 장치는 NTFS를 사용하여 파일을 구성하고, 이름을 지정하며, 저장한다. 장치의 저장 용량, 사용하는 OS나 드라이브 종류에 따라 FAT 32 또는, exFAT(FAT 64)와 같은 다른 파일 시스템이 선호될 수 있기도 하다. 이것은 각 파일 시스템의 장단점을 따져야 하는 경우이다. NTFS는 FAT 버전에 비해 보안 및 권한 측면에서 더욱 수준이 높기는 하지만, FAT는 Windows가 아닌 OS에서 더욱 잘 작동되는 면이 있기도 하기 때문이다.

 

한편, Windows XP의 모든 OS에서는 NTFS 3.1을 기본 파일 시스템으로 사용한다. NTFS는 드라이브에 필요한 용량을 갖추고 있어 대용량 파일과 파티션 크기를 지원하기 때문에 외장 드라이브에서도 사용된다. NTFS가 지원할 수 있는 개별 파일 크기의 이론적 한계는 16EiB - 1KB이다.

 

1.2 EXT(Extended File System)의 개념

EXT는 리눅스 커널 용으로 특별히 만들어진 파일 시스템이다. MINIX 파일 시스템의 특정 제한을 극복하기 위해 설계되었고, VFS를 사용한 최초의 구현이라 할 수 있다. 시스템 파티션에서 EXT 포맷은 필수라고 할 수 있지만, 이 역시 EXT의 각 장단점을 명확히 알고 각 시스템에 적합한 파일 시스템을 선택하는 것이 올바를 것이다.

 

EXT 파일 시스템은 부트 블록, 블록 그룹 0(수퍼 블록, 그룹 디스크립터, 데이터 블록 비트맵, i-node 비트맵, i-node 테이블 및 데이터 블록 포함) 및 블록 그룹 n을 포함하여 하나의 블록과 두 개의 그룹으로 나눌 수 있다.

 

2. FAT vs NTFS vs EXT 스펙 대조

ㄱ. FAT 16

대부분의 Microsoft 운영체제에서 호환되며 단순한 구조이다. 최대 2GB까지만 지원하며, 암호화 및 압축이 불가능(접근 제어 불가)하다. 파일명 최대 길이는 영문 8자이며, 클러스터당 1,632 KB를 할당하여 내부 단편화가 발생한다.

 

ㄴ. FAT 32

FAT 16의 보강된 버전으로, 최대 2TB까지 지원한다. 여전히 암호화 및 압축은 불가능하며, 파일명의 최대 길이는 영문 256자이다. 클러스터당 4KB를 사용하여 내부 단편화를 줄였다.

 

ㄷ. exFAT (FAT 64)

최대 파일/파티션 크기는 이론상 128PB이다. 그러나 이 경우에 클러스터 용량이 무려 32MB나 되기 때문에 현실성이 없다. 그래서 실질적으로 권장 최대 용량은 512TB이며, 이때의 클러스터 용량은 128KB로 내부 단편화 가능성이 존재한다. 따라서 용량을 많이 차지하는 동영상 파일 위주로 저장하는 것이 나을 것이다. 이런 특성으로 인해 대용량 파일을 다룰 수 있는 파일 시스템이라 대용량 하드디스크에 주로 쓰일 것이라고 생각하기 쉽지만, 실제로는 그렇지 않다. 이종 운영 체제간 4GB 이상 파일을 교환할 때 주로 사용된다. 이유는 클러스터 용량이 너무 커서 비효율적이기 때문이다. exFAT를 FAT 64라고도 부르기는 하지만, FAT 32의 명확히 보강된 버전이라 보기에는 무리가 있다.

 

ㄹ. NTFS

Windows NT 이상에서 지원하는 것으로, 암호화 및 압축이 가능해졌다. 거기에 대용량 파일 시스템 지원도 가능하다. 클러스터 크기는 가변이며, 기본 값은 4KB이다. 트랜잭션 로깅을 통한 복구/오류 수정이 가능하다. 이 수정이 가능해졌다는 점이 큰 변화라 할 수 있다.

 

ㅁ. EXT

MINIX File System을 보완하여, 최대 2GB까지 파일 시스템 크기를 지원한다. 255바이트까지 파일명을 지원하며, 접근 제어, i-node 수정, 타임 스탬프 수정 등의 기능이 불가하다. 또한, 사용할수록 단편화가 심해지는 단점이 있다.

 

ㅂ. EXT2

파일 시스템은 2GB까지 지원되며, 서브 디렉터리 개수 제한이 대폭 증가하였다. FSCK를 사용한 파일 시스템 오류 수정이 가능해진 것이 큰 변화이다. 그런데 FSCK를 이용한 파일 복구 시간에 많은 시간이 소요된다. 그도 그럴 게, 전체 섹터를 검사해야 하기 때문이다. 추가로, 캐시의 데이터를 디스크에 저장 중 오류 발생 시 파일 시스템에 손상이 올 수 있다.

 

ㅅ. EXT3EXT2에 저널링 기능이 추가되었고, 온라인 파일 시스템이 증대됐다. 파일 시스템 변경 시 저널에 먼저 수정 내용을 기록하며, 덕분에 갑작스러운 다운 시 빠르게 오류를 복구할 수 있다. 온라인 조각 모음이 불필요하며(단, 장시간 사용 시에는 조각화 발생한다.) 디스크 조각화를 최소화한다.

 

ㅇ. EXT416TB까지 파일 시스템을 지원하며, 볼륨은 1엑사바이트까지 지원한다. 블록 매핑 방식 및 Extneds 방식을 지원하며, 저널  체크썸 기능이 추가되어 안정성이 강화되었다. EXT2, eEXT3와 호환이 가능하며, Delayed allocation이 추가됐다. 이는 디스크에 쓰이기 전까지 블록 할당을 미루는 기술로, 조각화 방지에 효과적이라 할 수 있다. 그밖에 온라인 조각 모음으로 조각화 방지를 위한 커널 레벨의 기술이 더해졌고, Persistent pre-allocation으로 파일 전체만큼의 공간을 사전에 할당할 수 있다.

 

https://support.microsoft.com/en-us/topic/default-cluster-size-for-ntfs-fat-and-exfat-9772e6f1-e31a-00d7-e18f-73169155af95 에서 추가적으로 파티션 크기의 직접적 비교가 가능하다.

 

※ FAT 32 vs exFAT vs NTFS vs EXT그렇다면 대체 우리는 위의 수많은 파일 시스템 중 무엇을 사용해야 할까?리눅스의 경우 EXT4가 최고의 파일 시스템으로 간주되겠지만, Windows의 경우 아래를 따른다.

 

NTFS: 대용량 파일 저장 또는 전송용(4GB 이상)으로 설정하거나 게임 디스크에서 사용한다.FAT 32: 안드로이드 메모리 카드, 소용량 USB 또는 SD 카드 용도로(32GB 이하) 사용한다.exFAT: 대형 외장 하드 드라이브(64GB 이상)에서 초대형 파일 저장 공간으로 사용한다.

 

 

728x90

'IT보안 학습' 카테고리의 다른 글

리눅스 총정리  (0) 2023.12.28
RAID 총정리  (1) 2023.12.27
유닉스 파일 시스템 구조 총정리  (1) 2023.12.26
디스크 스케줄링 총정리  (1) 2023.12.26
교착상태 총정리  (0) 2023.12.25