1. 파일시스템이란?
파일 시스템이란, 파일의 이름을 정하고 저장, 검색을 위해서 논리적으로 어디에 위치시켜야 하는지에 대한 방법을 구성한 시스템이다. 저장 매체의 공간이 증가 할수록 파일의 수 또한 점점 증가하게 되어 별도의 관리 시스템이 필요하게 되었다. 그래서 개발된 것이 파일 시스템이다.
— 파일 시스템의 특징
- 계층적 디렉터리 구조를 가진다.
- 디스크 파티션 별로 하나씩 둘 수 있다.
— 파일 시스템의 역할
- 파일 관리
- 보조 저장소 관리 : 저장 공간 할당
- 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미
- 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공
— 파일 시스템 개발 목적
- HDD와 메인 메모리의 속도 차를 줄여준다.
- 파일 관리가 용이하다.
- HDD의 용량을 효율적으로 이용 가능하다.
— 파일 시스템의 구조
- 메타 영역 : 데이터 영역에 기록된 파일의 이름, 위치, 크기 등의 파일정보가 들어 있다.
- 데이터 영역 : 파일의 데이터가 들어 있다.
— 운영체제 별 파일시스템
- Windows : FAT(12/16/32, exFAT), NTFS
- Linux : ext(2/3/4)
- Mac OS : HFS+, APFS
- Google : GFS
2. Windows FileSystem
FAT
FAT 파일 시스템은 DR-DOS, 프리도스, MS-DOS, windows 등을 포함한 다양한 운영체제를 위한 파일시스템이다. MS 독립형 디스크 베이직의 디스크 관리를 위해서 만들어 졌으며, FAT의 주요버전은 FAT12, FAT16, VFAT, FAT32, exFAT 등이 있다. FAR32의 경우 파티션의 최대 32GB까지 가능하다.
FAT32의 구조
FAT32 파일시스템은 크게 Reserved Area, FAT Area, Data Area로 나뉘어져 있다.
—Reserved Area
Reserved Area에는 총 6개의 서브 영역이 존재한다.
- BR(Boor Record)
- 파티션의 첫번째 섹터이자 Reserved Area의 첫번째 섹터
- BR은 섹터 1개를 갖고있다.(512 byte)
- 윈도우를 부팅시키기 위한 기계어 코드와 FAT 파일 시스템의 여러 설정 값이 저장
- FSINFO(File System Infomation)
- 파일 시스템의 정보를 저장
- Boot Record Backup
- BR의 정보를 백업하는 섹터
4. FSINFO Backup
- FSINFO의 정보를 백업하는 섹터
5. Boot Strap
- 부팅에 사용되는 파티션일 경우 수행하는 부분이다.
- 부팅시 동작해야할 명령 코드가 들어 있는 부분이다.
6. Reserved Sector
- 예약된 섹터 공간
—FAT Area
- FAT 1
- 파일이나 디렉터리의 할당 유무가 기록되는 부분이다.
- 클러스터 단위로 기록되며 1개의 클러스터에 대한 사용 유무를 기록하기 위해 4byte의 공간이 필요하다.
2. FAT2
- FAT1 영역의 백업 영역
- FAT1의 구조와 동일하다.
—DATA Area
- 데이터 영역은 실제 파티션안에 만들어지는 데이터인 파일이나 디렉터리가 저장되어 있는 영역이다.
- 계층 구조로 할당 받으며 Directory Entry 형식으로 기록된다.
NTFS
NTFS는 New Technology File System의 약자로 FAT의 한계점을 개선한 파일시스템이다.
— 특징
- USN 저널 : 파일의 모든 변경 내용을 기록하는 로그
- ADS : 파일당 하나 이상의 데이터 스트림을 저장할 수 있도록 지원
- Sparse 파일 : 파일 데이터가 대부분 0일 경우 실제 데이터는 기록하지 않고 정보만 기록
- 파일 압축 : LZ77의 변형된 알고리즘을 사용하여 파일 데이터 압축
- EFS : 파일을 암호화 하는 기능으로 FEK를 통한 대칭 키 방식의 암호화 수행
- VSS : 디렉터리에 대해 백업본을 유지하여 USN저널과 함께 더 안전한 복구를 수행
- Quotaas : 사용자 별 디스크 제한
- 유니코드 지원 : 다국어 지원
- 대용량 지원 : 16TB
— 구조
NTFS는 파일, 디렉터리 및 메타 정보를 파일 형태로 관리를 한다.
- VBR 영역 : 부트 섹터, 추가적인 부트 코드가 저장되는 부분이다.
- MFT 영역 : 파일과 디렉토리를 관리하기 위한 MFT Entry의 집합체이다.
- 각 파일은 위치, 시간 정보, 크기, 파일 이름 등을 MFT Entry라는 특별한 구조로 저장한다.
- 크기가 가변적, 해당 MFT가 모두 사용되면 동적으로 클러스터를 추가로 할당해 MFT 영역의 크기를 증가 시키므로 파일 시스템의 여러 부분에 조각나 분포될 수 있다.
- MFT는 NTFS 상의 모든 MFT Entry들의 배열이다.
- DATA 영역 : 파일의 실제 내용이 저장되는 공간으로 내용만 저장된다.
3. macOS FileSystem
HFS+
Hierarchical File System Plus의 약자로 HFS의 개량버전이다. Apple 메킨토시 컴퓨터 및 기타 macOS를 사용하는 시스템의 파일시스템이다. 파일이나 폴더 이름에 UTF-16으로 인코딩을 하고 n-forked 파일 시스템을 사용한다.
⚫ n-forked : 하나의 파일 시스템 오브젝트에 여러 개의 임의의 길이의 데이터를 연관시킬 수 있다.
—HFS+ 구조
- Volume Header
- 파일 시스템 페이로드를 액세스하는데 필요한 파일 시스템 구조를 저장한다.
- 파일의 정보를 찾기 위해서 CatalogFile을 분석한다.
- Startup File등의 정보를 찾아가는데 필요한 정보를 기록한다.
- Allocation File
- 각 볼륨에 대한 할당 상태를 추적하는 비트맵 파일이다.
- Extends Overflow File
- Catalog File
- 파일의 계층 구조를 저장한다.
- Attributes File
- 파일의 확장 된 속성을 저장하는데 사용한다.
- Startup File
- 시스템에서 부팅할 때 사용되는 정보를 저장하는데 사용된다.
Uploaded by Notion2Tistory v1.1.0