: 컴퓨터 디스크에 저장된 파일을 효율적으로 관리하고 접근할 수 있도록 돕는 구조
❗ 디스크 내의 파일을 체계적으로 관리하여 사용자 경험을 향상시키고, 데이터 접근 속도를 높이며, 시스템 자원을 효율적으로 사용하도록 돕는다!
- 적절한 공간에 파일 저장
- 사용자가 파일 생성, 수정, 삭제할 수 있도록
- 파일 생성 시각, 수정 시각, 변경 시각
- 백업, 복수 지원
- 사용자에 따라 접근 권한 부여
종류
Windows
|
NTFS
|
Windows NT 3.1 이후부터 현재까지 사용하고 있는 파일시스템
- 뛰어난 복구 기능으로 디지털 포렌식 분석에 유용 - 대용량 디스크에서도 뛰어난 성능 |
|
ReFS
|
NTFS를 대체하기 위한 차세대 파일시스템
|
Linux
|
EXT4
|
Linux에서 2006년부터 사용하고 있는 파일시스템
- Ext2 (저널링이 없어 데이터 손실 위험 ) ,Ext3, Ext4 |
Unix
|
UFS
|
Unix 계열 운영체제에서 사용하는 파일시스템
|
macOS
|
HFS+
|
Apple 구형 파일시스템
|
|
APFS
|
Apple 신형 파일시스템
- SSD 최적화로 더욱 빠르고 효율적인 데이터 처리 가능 - 파일 및 디렉토리 복사 더 빠르게 수행, 데이터 저장공간의 효율적 관리 |
공통
|
FAT / FAT32
|
초기 Windows에 사용되었으나 현재는 USB 등에 주로 사용됨
- NTFS에 비해 보안 기능 부족, 대용량 디스크에서는 비효율적 - 단순함, 호환성 - 메모리 드라이브, 메모리 카드, 임베디드 시스템 등 - 디스크 복구 작업에 유리 |
|
exFAT
|
FAT32의 크기 단점을 개선하는 파일시스템
|
파일시스템을 알아야 디스크 이미지의 분석 가능 !
1. 파일시스템 정보 없이는 데이터 저장 위치를 알아내기 어렵다.
파일 카빙(file carving) 기법 : 파일 시그니처와 같은 파일의 구조적인 특징을 이용해 파일시스템 메타데이터 없이 원본 파일을 복원할 수 있는 기법
2. 데이터의 위치를 알아내도, 메타데이터를 알아내기 위해서는 파일시스템 구조에 대한 이해가 반드시 ! 필요
메타데이터 : 데이터에 대한 정보
- 메타데이터들은 파일의 데이터와 별도의 위치에 저장됨 ... 파일시스템에서 파일의 데이터 + 메타데이터 하나로 모아서 보여주는 것
3. 파일시스템을 이해하면 파일의 변경 이력을 가져오거나 삭제된 파일을 복구하는 일이 가능하다
저널링(Journaling) 기능 : 시스템이 예기치 않게 종료되었을 때 데이터 무결성을 보장하고, 데이터 손실을 방지하는 기능
→ 데이터를 디스크에 기록하기 전 **로그파일(저널)**에 기록을 남김 → 시스템 재부팅될 때 복구 작업을 통해 일관성 유지를 도움
구성요소
1. 메타데이터
: 파일의 이름, 크기, 생성 및 수정시간, 권한 등의 정보를 포함
NTFS에서는 이러한 정보가 MFT(master file table)를 통해 관리됨
- 파일 시스템의 무결성 유지
- 파일에 신속한 접근 가능하도록
2. 데이터 영역
: 실제 파일의 데이터가 저장되는 공간
- 메타데이터와 연결되어 파일의 위치를 정확히 파악할 수 있도록 함
MBR
MBR (Master Boot Record) : 디스크의 가장 첫 섹터(디스크 최소 기억단위)에 저장되는 데이터
- MRB, GPT는 오늘날 가장 널리 사용되는 두 가지 파티션 스키마
- IBM PC 호환 기종에서 사용하는 전통적인 파티션 스키마,, 주로 WINDOWS 운영체제를 사용하는 PC에서 많이 사용됨
- 부트 로더(시스템 부팅 시 실행되는 코드, 운영 체제를 메모리에 로드한다) 와 파티션 테이블(최대 4개 기본 파티션 OR 기본 3개+1개 확장 파티션 ) 포함
- 최대 2TB크기의 디스크만 징원하므로, 대용량 저장 장치에서의 한계
- 보통 512 바이트 크기
- 디스크 가장 처음 512 바이트 영역에 저장되는 데이터
1) 부트스트랩 코드(Bootstrap code)
: 컴퓨터가 부팅될 때 처음 실행되는 소프트웨어
- 하드웨어 초기화 및 운영체제 로드를 담당
- 컴퓨터의 ROM 이나 디스크의 부트 섹터에 저장
- MBR의 경우, 446 바이트 , 디스크의 첫 번째 섹터 저장
2) 디스크 서명 (Dist Signatur)
: 각 하드 디스크에 고유하게 할당되는 4바이트 크기의 식별 번호
- MBR의 440바이트 위치에 저장됨
- 부팅 시 디스크 인식, 드라이브 문자 할당 등의 시스템 작업 수행
- 디스크 간의 연결성 파악, 시스템 구성 변화 추적
3) 파티션 테이블 (Partition Table)
: 디스크의 파티션 정보를 저장하고 관리하는 데이터 구조
- MBR 방식에서는 디스크 첫 번째 섹터에 위치, 446바이트 위치부터 64바이트
- 각 파티션 엔트리는 16바이트 ( 최대 4개 주 파티션 OR 3개의 주 파티션과 1개의 확장 파티션)
- 디스크 구조 분석, 데이터 복구, 파일 시스템 무결성 확인
4) 부트 시그니처(Boot Signature)
: 부트 프로세스에서 중요 역할을 하는 2바이트 크기의 식별자
- MBR 의 끝부분인 510-511 바이트 위치
- 디스크가 부팅 가능한 상태임을 표시 (값이 0x55AA 로 설정되어 있을 때 MBR 이 유효함을 나타냄)
- 디스크의 무결성 확인, 부팅 관련 문제 진단
위치 (offset) | 크기 | 설명 |
0x0000 | 446 바이트 | 부트스트랩 코드 |
0x01B8 | 4 바이트 | 디스크 서명 |
0x01BE | 64 바이트 | 파티션 테이블 |
0x01FE | 2바이트 | 부트 시그니처 |
확장파티션과 논리 드라이브
확장 파티션(Extended Partition)
: MBR 기반 디스크에서 기본 파티션 수 확장하기 위해 사용되는 특별한 유형의 파티션
- 추가적인 논리 파티션을 포함할 수 있는 컨테이너 역할 / 논리 파티션은 확장 파티션 내부에 위치
논리파티션(Logical Partition)
- 확장 파티션 내 위치 , 각 논리 파티션은 별도의 파티션 테이블 엔트리를 가진다
- 추가적인 파티션을 구성할 수 있음
- 확장 파티션 내에서는 무제한으로 논리파티션 생성 가능 (여러 개의 독립적인 논리 파티션 생성 가능)
VBR
VBR (Volume Boot Record) : 볼륨의 가장 첫 섹터에 저장되는 데이터
- 각 파티션의 첫 번째 섹터
- 하나 이상의 섹터로 구성
- 크기는 파일시스템과 클러스터 크기에 따라 달라질 수 있다. (가변성)
- OS가 해당 파티션에서 데이터를 읽고 부팅할 수 있도록 함
- 부트 코드
- 파일 시스템 인식 / 부팅 과정을 지원 / 파일 및 디렉토리의 구조를 파악
VBR의 위치
1. 파티션이 지정된 경우
MBR이 부팅 절차를 시작한 후, 제어를 해당 파티션의 VBR 넘긴다 → 운영체제가 각 파티션의 파일 시스템을 인식하고 접근할 수 있다.
2. 파티션이 지정되지 않은 경우
ex) USB 드라이브와 같은 단일 볼륨 장치에서는 VBR이 디스크의 첫 번째 섹터에 존재하며, 부팅과 관련된 모든 정보를 해당 섹터에 저장한다.
VBR의 구성요소
1) 파일 시스템 시그니처
: 파일 시스템 종류를 나타내는 고유 식별자
NTFS
FAT32...
2) 섹터
: 디스크의 최소 데이터 저장단위 / 각 섹터의 크기를 나타내며, 일반적으로는 512바이트(기본) or 4096 바이트로 설정됨
- 디스크 성능, 효율에 영향
3) 클러스터 크기
: 파일 시스템이 파일을 저장할 때 사용하는 기본 단위
- 각 클러스터를 구성하는 섹터의 수
- 1클러스터 = N개의 섹터
4) 볼륨 전체 크기
: 해당 파티션(볼륨)의 총 크기
섹터 크기 * 총 섹터 개수
5) 볼륨 시리얼 번호
6) 파일 저장 위치 및 메타파일 위치