File System :: 파일 시스템
파일 시스템은 Disk의 데이터를 구조화하고 쉽게 찾을 수 있도록 하는 구조를 정의합니다. 데이터는 클러스터(미리 정의된 Byte 수를 저장할 수 있는 단위)에 저장됩니다. 한 파일은 여러 클러스터에 저장 가능하지만 한 클러스터에 여러 파일을 저장할 수는 없습니다. 이는 클라스터 크키가 512KB인대 파일 크기가 128KB라면 남은 384KB는 낭비가 일어납니다. 때문에 파일 시스템마다 각기 다른 방법으로 클러스터를 다루게 됩니다. 파일 시스템의 기능은 여기서 끝나지 않고 보안 기능등의 여러 기능을 가지고 있습니다.
대부분의 파일 시스템은 계층 트리 구조에 데이터를 저장 합니다. 디렉토리(폴더)라 불리는 컨테이너는 파일을 저장할 수 있는데 하위 디렉터리나 하위 폴더도 저장 가능 합니다. 여기에 관리를 편하게 하기 위해 구릅 형태로 구성돼어 있습니다. 계층의 시작점 즉, 계층 구조의 맨 위를 루트(Root) 또는 루트 디렉토리 라고 하는대 Windows System에서는 "C:\"가 되고 UNIX System계열 에서는 " / "가 됩니다. 여기에서는 Windows에서 사용되는 파일 시스템에 대해서 말하고 있습니다.
1. FAT12 : File Allocation Table 12
이 파일 시스템은 MS-DOS 운영 체제 용으로 개발 되었으며 FAT의 첫번째 버전 입니다. 첫 버전 이지만 뒤에 붙은 12에 의미는 클러스터의 크기를 의미 합니다. 즉 12Bit의 클러스터를 사용해 "FAT12"가 됐습니다.
수용 가능한 최대 용량 = 지정 가능한 주소의 갯수(2^12 = 4096 섹터) X 당시 최대 클러스터 용량(4096 Byte)으로
4096 X 4096 = 16,777,216으로 알아보기 쉽도록 1024값으로 나누면
16,777,216 / 1024 = 16,384
16,384 / 1024 = 16
약 16MB까지 수용 가능한 최대 용량이 나옵니다. 때문에 16MB이하에 HDD에서 사용되었으며 더불어 3.5인치 디스켓을 포맷하는대도 사용하게 됩니다. 용량 단위가 적고 플로피 디스크에서 많이 사용되다 보니 따로 MBR영역이 필요하지는 않았습니다. 1
2. FAT16
FAT12에서 16MB이상에 HDD는 지원하지 못하다 보니 이보다 큰 디스크를 지원하기 위해 개발 됐으며 오랫동안 하드디스크를 포맷하기 위한 표준 파일 시스템으로 존재하게 됩니다. 이는 OS/2나 UNIX계열 OS에서도 FAT16을 지원했기 때문입니다. 비단 비 MS계열의 OS 뿐만 아니라 MS-DOS에서 WindowsXP에 이르기 까지 넓은 OS 지원폭을 가지고 있습니다. FAT16의 수용 가능한 최대 용량은 FAT12와는 조금 다릅니다.
2^10 = 65,536개의 섹터를 가지며, 다라서 한 섹터가 512 Byte가 됩니다.
65,536 X 512 = 33,554,432 / 1024 = 32,768 = 32MB로 32MB의 파티션을 만들 수 있습니다.
도 여기에 섹터를 최대인 64개를 하나의 클러스터로 묶어 사용하면
65,536 X 64 X 512 = 2,147,483,648 / 1024 = 2,097,152 / 1024 = 2,048로 약 2GB의 공간을 하나의 파티션으로 사용할 수 있습니다.
때문에 10GB 용량의 HDD를 FAT16으로 포맷 하면 가장 효율적인 방법은 2GB씩 5개로 분할하는 방법 입니다. 이는 하드 자체는 효율적으로 사용할 수 있으나 사용자가 과연 반가워 하지 않습니다. 여기에다가 분할한 파티션에 용량이 크면 클수록 클러스터 낭비도 커집니다. 하지만 FAT16은 무조건 2GB로 나눈건 아닙니다. 2BG이상으로 나눌 수 있지만 비 효율 적입니다. 이는 일반 MS-DOS나 Win9x 계열에서는 인식이 되지 않지만 Windows NT, 2000 OS에서는 FAT16 으로 포맷한 4GB의 파티션을 사용 가능 했습니다.
3. VFAT : Virtual FAT
이 파일 시스템은 사실 파일 시스템이 아니라 파일 시스템의 확장판 또는 패치라고 보면 이해가 빠릅니다. 이 파일 시스템은 Windows for Workgroups 3.11에 처음 나왔으며 Windows 95에서도 지원하는 파일 시스템으로 기존 FAT16에서 파일 및 디렉토리 표현 방법 이었던 8.3표현의 제한을 벗어나기 위함입니다. 즉 MS-DOS나 Windows에 DOS모드(창)에서 파일명이 모두 출력하게 해줍니다.
4. FAT32
FAT32부터는 32Bit 할당 테이블(Allocation Table)을 사용 합니다. Windows 95 OSR2 버전(Windows 95b)부터 쓰이기 시작 했으며 기존 FAT16기능의 다음과 같은 추가 기능이 들어가게 됩니다.
크기가 작은 클러스터 사용으로 대용량 하드 디스크의 공간을 효율적으로 사용
이론상 2TB까지 파티션 지원(하지만 윈도우는 32GB 파티션 까지만 지원)
디스크 장애 발생시 디스크 루트 디렉토리를 다시 배치하여 부트 레코드에서 백업한 FAT 데이블을 사용해 안전성의 향상
하지만 이로 인해 MS-DOS나 Windows 3.1, Windows NT등의 OS에서는 호환이 되지 않았나, 한 PC에 다른 버전의 OS를 설치해 가능해 지는 멀티 부팅이 가능해 집니다. 하지만 다시 FAT32는 NTFS같은 보안 기능이 없어 컴퓨터에 액세스 가능한 모든 사용자가 파일을 읽을 수 있습니다. 또한 오버헤드가 있어 성능이 약간 떨어질 수도 있습니다. 물론 Windows NT같은 OS들은 써드 파티 벤더에서 나온 FAT32드라이버를 사용해 FAT32를 사용할 수 있었습니다.
NTFS : New Technology File System
NTFS는 다른 MS사의 파일 시스템 보다 훨씬 강력한 보안 기능과 강화된 파일 시스템으로 설계 됩니다. NTFS는 이론상 16EB(Exabyte)를 지원하며 2개 이상의 파티션을 포함하는 볼륨(Volume)을 사용 할 수 있습니다. 실제로는 2TB가 한계 입니다. NTFS의 클라스터 크기는 512Byte, 1KB, 2KB, 4KB까지 사용자 지정이 가능 하니다. 그리고 파일에 접근 권한을 설정하여 파일의 사용자 외의 사용자가 파일을 읽고, 변경하고, 기타 다른 작업을 할 수 있는지를 제어 할 수 있습니다. 또한 이러한 제어는 로컬에서 뿐만 아니라 원격지 네트워크에서 접근하는 사용자에게도 적용 되 네트워크 공유 권한과 함께 동작 합니다. NTFS는 핫 픽싱(Hot Fixing)이라는 기능으로 안정성을 강화했습니다. 이 기능은 OS에서 디스크의 배드 섹터를 발견했을 경우 자동으로 그곳에 있던 데이터를 다른 섹터로 옮긴 다음 해당 배드 섹터를 앞으로 사용하지 않겠다고 표시하는 기능 입니다. 이 기능은 사용자나 Application이 모르게 자동적으로 수행 됩니다. 또한 NTFS에서 제공하는 압축 방법을 사용하면 파일 단위로 데이터를 압축함으로써 디스크 공간을 줄일 수 있습니다. 이는 Windows 9x에서 사용되던 하드라이브 단위의 압축방법보다 훨씬 안전한 방법 입니다. 왜냐하면 드라이브 단위 압축방법에서는 압축 파일 하나를 읽어버리면 드라이브의 모든 내용을 잃어버리게 돼있기 때문 입니다. 여기서 끝나지 않고 NTFS는 NTFS 5.0이상 버전부터 EFS(Encrypting File System)라는 암호화 파일 시스템을 지원 합니다. 이는 공개 키 암호화와 전자 서명 기술을 사용 합니다. 또 NTFS 5.0부터는 디스크 쿼터를 지원해 관리자는 디스크 쿼터를 이용해 사용량을 각 사용자, 각 디스크 별로 제한 할 수 있게 됩니다.
각주 ▽
- MBR(Master Boot Record) OS가 어디에, 어떻게 위치해 있는지 식별하여 컴퓨터 주기억 장치에 적재될 수 있도록 하기 위한 정보로 하드디스크 첫 번째 섹터에 저장되어 있습니다. 또는 "파티션 섹터", "마스터 파티션 테이블"이라 불리는데, 이는 하드디스크가 포맷 될 때 나뉘는 각 파티션의 위치에 관한 정보를 가지고 있기 때문입니다. [본문으로]