5. Ext2(Second Extended File System)

Ext2 파일시스템은 현재 리눅스의 기본 파일시스템인 Ext3에서 저널링 기능을 뺀 파일시스템으로

UFS를 근간으로 하고 있다.

UFS에서 유명무실한 구조들은 제거하고, 전체적인 구조를 보다 간략히 한 Ext2는

비교적 명료하고 간단하면서도 UFS의 속도와 안정성을 고루 갖춘 파일시스템이다.

그 증거로 Ext2는 현재까지도 리눅스 기본 파일시스템으로 자리 잡고 있는 Ext3에서 그대로 사용되고 있다.

(Ext2에 저널링 기능만 추가한 것이 Ext3)

4. UFS(Unix File System)

UFS는 유닉스의 대표적인 파일시스템으로서

현재까지 대부분의 유닉스에서 사용되는 파일시스템의 근간이 되었다.

BSD 계열 (FreeBSD , NetBSD , OpenBSD) 은 물론이고

HP-UX , Apple OS X , Sun Solaris 에 이르기까지 많은 유닉스 계열의 OS들이

UFS를 각각의 OS에 맞게 변형해서 사용하고 있다.

UFS는 빠른 속도와 높은 안정성을 목표로 만들어졌다.

또한 저장장치를 그룹화하여 관련된 데이터끼리는

최대한 가까운 위치에 자리할 수 있는 구조로 되어 있어 디스크 헤드의 이동이 비교적 작고,

중요한 데이터는 여러 그룹에 걸쳐 많은 백업을 저장하므로

만일의 사태에 대하여 보다 신뢰성을 높였다.

UFS는 미국 Berkeley 대학의 FFS(Fast File System)에서 근간을 이루었으며,

Bell 연구소에서 Unix Version 7을 개발할 때부터 본격적으로 UFS라는 명칭을 사용하였다.

UFS는 리눅스의 파일시스템인 Ext2에도 큰 영향을 미치게 된다.

3. NTFS(New Technology File System)

마이크로소프트사의 서버급 운영체제인 Windows NT에서 사용되는 파일시스템이며,

윈도우 NT 및 2000이상의 OS에서 대표적인 파일시스템으로 자리잡아

서버시스템은 물론 일반 PC에서도 널리 사용되고 있다.

NTFS는 대용량 저장장치를 겨냥해서 제작되었으며, 높은 안정성과 부가 기능을 지원하고,

FAT와 HPFS에 있던 여러 제약 사항들을 크게 개선한 파일시스템이다.


그러나 제작사인 마이크로소프트사에서 전체 스펙을 공개하지 않아

현재까지도 완벽한 분석이 이루어지지 않았으며,

이로 인해 리눅스등의 다른 OS에서 NTFS를 지원한다고 해도 미흡한 부분이 있을 수 밖에 없다.

2. HPFS(High Performance File System)

IBM의 OS/2 1.2부터 사용된 파일시스템이며 NTFS가 나오기까지 많은 영향르 준 파일시스템이다.

HPFS는 제작당시부터 대용량 디스크에 적합한 구조를 지니고 있었으며,

효율적인 캐싱과 FAT 파일시스템에 비해 파일 손실과 단편화가 적고,

서버시스템에 사용할 수 있도록 여러가지 보안기능 등에 대한 요구를 충족시켜 줄 수 있는 파일시스템이다.

대용량 저장장치를 타겟으로 잡았기 때문에

200MB 미만의 저장장치에서는 성능 저하를 가져오는 단점이 있으며,

섹터 크기가 512Byte로 고정되었기 때문에 기본 데이터 I/O 단위를 변경할 수 없다.


무엇보다 OS/2가 윈도우 NT와의 경쟁에서 밀려 흥행에 실패하였고,

윈도우 NT 4.0부터는 HPFS를 지원하지 않아 호환조차 불가능했기 때문에

우수한 성능 및 발전 가능성에도 불구하고 비운의 파일시스템이 되었다.

1. FAT(File Allocation Table)

마이크로소프트사의 빌게이츠가 만들었고, 전 세계적으로 가장 많이 사용되는 파일시스템 중의 하나이며,

초기에 만들어진 파일시스템이다.

처음 만들어진 이후 여러 번의 발전을 거듭해 왔지만, 최초 제작 당시에는 고려하던 저장장치의 크기가 매우

작았으며 성능상의 문제는 큰 이슈로 작용하지 않았다.

따라서 매우 단순한 구조를 지니고 있으며 최근에는 대용량 저장장치를 지원하기 위해

FAT16 , FAT32 등이 만들어진 이후 윈도우 OS의 흥행과 더불어 지금도 널리 사용되고 있다.

파일시스템에서 사용되는 부가 기능은 적고, 제약 사항들은 많은 단점이 있었으나 그만큼 가볍고 심플하다.


허나 연결 리스트를 사용한 자료구조는 검색 시간이 오래 걸리게 하는 결과를 초래하였으며,

파일 데이터 블럭들이 여기 저기 흩어지는 단편화 현상이 심해져서

한 파일의 데이터를 읽어 들이는 데에도 디스크 헤드가 여러번 이동하게 만들었다.

이를 위한 해결책으로 디스크 조각 모음 같은 부가적인 프로그램이 등장하긴 하나

근본적인 해결책은 되지 않았으며,

서버 시스템에서 사용되기에는 여러 가지 부족함이 많은 파일시스템이다.


FAT16

클러스터를 표현하는 비트수가 12개에서 16개로 늘어나 (FAT12는 클러스터의 비트수가 12)

이론적으로 최대 2^16 개인 65,536 개의 클러스터를 표현할 수 있게 되었다.

클러스터의 크기를 32KB 로 할 경우 최대 2GB까지 표현할 수 있다.


FAT32

클러스터를 표현하는 비트수가 32개 이나 상위 4비트는 예약된(Reserved) 영역으로 사용하지 않으므로

총 28bit를 이용해서 클러스터를 표현한다.

이는 클러스터의 크기를 16KB 로 할 경우 최대 4TB까지 표현 가능한 용량이다.

허나 Windows 에서는 FAT32의 최대 용량을 32GB로 제한하고 있다.

32GB 이상의 저장장치를 FAT32에서 사용하고 싶다면 파티션 분할은 필수다.