파일시스템 관련 기본개념
1. 파일시스템이란
컴퓨터 시스템은 데이터를 장기간 안정적으로 저장하고 효율적으로 검색하는 방법이 필요하다. 컴퓨터 내 수십, 수백만 개의 데이터가 존재하는 파일 및 폴더 등을 저장매체의 비어있는 공간에 효율적으로 읽기, 쓰기하며 관리하는 체계가 파일시스템이다.
파일시스템은 아래 표와 같이 많은 종류가 존재한다.
운영체제 | 파일시스템 |
Windows | FAT(File Allocation Table, FAT12, FAT16, FAT32), NTFS(New Technology File System), exFAT(Extended File Allocation Table, FAT64) |
Mac OS | APFS(Apple File System), HFS+(Mac OS Extended), exFAT |
Linux | EXT(Extended File System), EXT2, EXT3, EXT4 |
Unix | UFS(Unix File System) |
OS/2 | HPFS(High Performance File System) |
IRIX | XFS(X-Methods File System) |
IBM AIX | JFS(Journaled File System), JFS2(Enhanced Journaled File System) |
파일시스템의 여러 기능
- 파일 생성, 수정, 삭제를 가능하게 한다.
- 적절한 방법을 통한 파일의 공동 사용 등 다양한 종류의 접근이 가능하게 한다.
- 데이터의 훼손을 방지하기 위해 백업 및 복구 기능을 제공한다.
- 저장된 데이터가 손실되지 않게 무결성을 유지하는 기능을 제공한다.
- 파일의 효율적인 저장과 관리 방안을 제공한다.
- 데이터를 안전하게 보호하기 위해 암호화 및 복호화 기능을 제공한다.
2. 하드디스크 구조
하드디스크는 비자성체인 알루미늄 같은 비금속 원형디스크 표면에 자성체인 산화 금속막을 양면에 도장한 플래터(Platter)에 자기를 정렬하는 원리로 기록하고 지운다. 디스크 중심에 위치한 스핀들(Spindel) 모터를 통해 실린더를 회전시키며 바늘같이 생긴 헤드가 움직여서 데이터를 읽고 쓰게 된다.
플래터 하나당 2개의 읽기/쓰기 헤더가 있으며, 하드디스크는 여러 개의 플래터를 가지고 있다.
- 섹터(Sector): 하드디스크의 물리적 최소 단위로 571바이트로 구성되어 있다.
- 59바이트: 각 섹터의 고유번호를 지정하는 용도
- 512바이트: 실제 데이터 저장 공간
- 트랙(Track): 섹터의 모임으로 동심원 전체
- 클러스터(Cluster): 데이터를 읽고 쓰는 논리적 기본 단위로서 파일시스템은 클러스터 단위로 입출력 작업을 한다.
클러스터의 크기가 작을 경우 버려지는 용량이 적어 효율적이나 관리하는 FAT 크기가 커지는 단점이 있다. 클러스터의 크기가 클 경우 동영상 같은 대용량 파일저장에 효율적이나 클러스터 크기보다 작은 파일이 많을 경우 버려지는 공간이 많이 생긴다는 단점이 있다.
섹터와 트랙의 크기는 하드디스크 제조 공정에서 정해지며 클러스터의 크기는 사용자의 포맷 작업에서 지정할 수 있다.
3. 슬랙 공간
슬랙 공간은 저장매체에 물리적으로 존재하는 영역이지만 실제로 사용되진 않는 공간을 말한다. 종류로는 램 슬랙, 드라이브 슬랙, 파일 슬랙, 파일시스템 슬랙, 볼륨 슬랙으로 나누고 있다.
- RAM 슬랙: 섹터에 남는 비할당 영역
- 메모리에 있는 데이터가 저장매체에 쓰일 때 물리적으로는 섹터 단위로 기록된다. 이때 데이터가 섹터를 완전히 채우지 못할 경우 나머지는 0으로 쓰이며 이를 램 슬랙이라 한다.
- Drive 슬랙: 클러스터에 남은 비할당 영역
- 데이터가 저장매체에 쓰일 때 논리적으로 클러스터 단위로 기록된다. 하지만 저장되는 데이터의 크기가 항상 클러스터 단위로 딱 맞아떨어지지 않는다. 이때 남는 부분을 드라이브 슬랙이라고 한다. 드라이브 슬랙에 남은 공간은 기존 데이터가 완전히 덮어 쓰이지 않을 가능성이 있다. 즉, 클러스터의 나머지 공간에는 이전에 저장되었던 데이터의 일부가 여전히 남아 있을 수 있다.
- File 슬랙: 클러스터 내 램 슬랙과 드라이브 슬랙을 더한 비사용 공간
- File System 슬랙: 파티션 할당 후 클러스터 크기 때문에 남은 비할당 영역
- 파일시스템은 저장매체를 물리적인 공간 내 클러스터 크기에 따라 파일시스템을 만들고 할당한다. 파일시스템 마지막 부분에 사용할 수 없는 영역이 발생하게 되면 이를 파일시스템 슬랙이라고 한다.
- Volume 슬랙: 디스크 드라이브에 파티션 할당 후 남는 비할당 영역
- 전체 디스크 드라이브 크기와 무관하게 파티션의 개수와 크기를 사용자가 임의로 할당할 수 있기 때문에 할당이 되지 않고 남는 공간을 볼륨 슬랙이라 한다.
4. 데이터 접근 방식
CHS(Cylinder, Head, Sector)
CHS 방식은 실린더, 헤드, 섹터 같은 디스크의 물리적 구조에 따라 접근하는 방법으로 초기 ATA 표준에서 BIOS의 지원 비트 차이로 504MB까지 접근 가능하였으며 그 후 BIOS 비트 확장으로 8.1GB까지 접근 가능하게 되었지만 대용량 디스크 지원 문제로 ATA-6부터 표준에서 제외되어 LBA 방식으로 대체되었다.
LBA(Logical Block Addressing)
LBA 방식은 디스크의 물리적인 구조를 신경 쓰지 않고 데이터를 순차적으로 관리하는 주소 지정 방식이다.
디스크의 0번 실린더, 0번 헤드, 1번 섹터를 첫 번째 블록으로 지정하고, 디스크의 마지막 섹터까지 차례대로 번호를 부여한다. 이 논리적인 주소(LBA)를 통해 데이터를 저장하거나 읽을 위치를 지정하면, 디스크 컨트롤러가 자동으로 이를 물리 주소로 변환한다.
초기에는 28비트를 사용해 최대 127GB까지 관리할 수 있었다. 이후 48비트로 확장되면서 더 큰 용량의 디스크도 지원하게 되었다.
- CHS 방식 용량 = 실린더 개수 x 헤드 개수 x 섹터 개수 x 512바이트
- LBA 방식 용량 = 전체 섹터 개수 x 512바이트