
nb) 일반적으로 하나의 볼륨은 하나의 파티션 내에 성성되기 때문에, 파티션과 볼륨은 혼용되어 사용되기도 함


⑴ 저장장치 내 빈 공간 파악, 적절한 공간에 파일 저장
⑵ 사용자가 파일을 생성,수정,삭제 할 수 있도록 함
⑶ 파일 생성 시각, 수정 시각, 변경 시각 등을 관리
⑷ 파일 생성, 수정, 삭제에 대한 로그 기록하고 백업, 복구 등을 지원
⑸ 사용자에 따라 접근 권한 부여
| 운영체제 | 파일시스템 | 특징 |
| Windows | NTFS | Windows NT 3.1 이후부터 현재까지 사용하고 있는 파일시스템 |
| ReFS | NTFS를 대체하기 위한 차세대 파일시스템 | |
| Linux | EXT4 | Linux에서 2006년부터 사용하고 있는 파일시스템 |
| Unix | UFS | Unix 계열 운영체제에서 사용하는 파일시스템 |
| macOS | HFS+ | Apple 구형 파일시스템 |
| APFS | Apple 신형 파일시스템 | |
| 공통 | FAT / FAT32 | 초기 Windows에 사용되었으나 현재는 USB 등에 주로 사용됨 |
| exFAT | FAT32의 크기 단점을 개선하는 파일시스템 |
1993년 Windows NT 3.1에 버전 v1.0로 처음 출시된 파일 시스템이며, 현재 사용되고 있는 v3.1으로 2001년에 발표되었습니다. 오늘날 주로 사용되는 Windows 7, Windows 10, Windows 11 등 버전에서 기본으로 사용하고 있습니다.
파일 및 폴더 암호화 기능, 저널링 기능, 손상된 파일 복구 기능 등 다양한 기능을 지원합니다.
Microsoft에서 NTFS를 대체하기 위해 개발한 파일시스템입니다. 현재 기본으로 생성되는 파일시스템은 아니지만, Windows 8.1 이후부터 ReFS 파티션을 생성할 수 있습니다.
파일 무결성 검사, 데이터 복구 기능을 제공하며, NTFS에 비해 높은 성능을 보입니다.
EXT4는 EXT 파일시스템 중 가장 최신 버전의 파일시스템입니다. EXT4는 Linux 커널 2.6.19 부터 등장했으며, 2008년부터 안정화된 Linux 버전에 포함되었습니다.
기존 EXT2, EXT3에서 사용하던 블록 매핑 방식을 Extent 방식으로 바꾸면서, 더 많은 파일을 더 빠르게 접근할 수 있게 되었습니다. 또한 최대 볼륨 크기와 최대 파일 크기를 확장했으며, 하위 버전에 대한 하위 호환성을 지원합니다.
UFS는 Unix 및 Unix 계열 운영체제에서 쓰이는 파일시스템입니다. Unix 기반 운영체제에서 사용하는 파일시스템들의 근간을 이루는 파일시스템입니다.
기존 Macintosh에서 사용하던 파일시스템인 HFS의 한계를 극복하고 더 많은 파일 개수, 파일 용량, 파티션 용량을 제공하도록 만들어진 파일시스템입니다. 1998년 macOS 8.1과 함께 발표되어 맥북, 아이팟 등에 사용되었습니다.
APFS는 HFS+를 대체하기 위해 2016년 발표된 파일시스템입니다. macOS Sierra(10.12.4) 및 iOS 10.3 부터 현재까지 사용하고 있는 파일시스템입니다.
HFS+의 데이터 체크섬, 나노초 타임스탬프, 스냅샷 등 한계를 극복하고 암호화, 데이터 무결성 등 보다 나은 기능을 제공합니다.
FAT은 Microsoft에서 개발해 MS-DOS부터 이용되던 파일시스템으로, FAT을 기반으로 한 FAT32는 Windows 95부터 이용 가능합니다. FAT32는 최대 파티션 크기, 최대 파일 크기가 이전 파일시스템에 비해 향상되었습니다.
FAT32는 최대 파일 크기가 약 4GB로 작은 편이고, 최대 파티션의 크기가 8TB로 대용량의 파티션에서는 사용하기 힘듭니다. 또한 자료 구조가 단순하고, 데이터 복구와 같은 기능들을 지원해주지 않는다는 단점이 있습니다.
그러나 FAT32 파일시스템은 다양한 운영체제에서 널리 지원되어 호환성이 뛰어나며, 단순한 파일시스템 구조로 인해 다른 파일시스템에 비해 비교적 저장 공간을 많이 확보할 수 있다는 장점이 있습니다. 이러한 이유로 FAT32 파일시스템은 USB, SDCard 등 이동식 저장장치에서 여전히 많이 사용되고 있습니다.
exFAT은 이전 FAT32의 한계를 극복하기 위해 Microsoft에서 개발한 파일시스템으로, FAT32에 비해 최대 파일 크기와 최대 파티션 크기가 확장되었습니다. 뿐만 아니라 디렉토리에 저장할 수 있는 파일의 최대 개수가 증가했으며, 더 정밀한 시간 데이터의 저장이 가능합니다.

저널링 기능이란 ?
저널링 기능이란 시스템 충돌이나 정전을 대비해 데이터 쓰기 전후 상태를 기록하는 파일 시스템의 기능임. 저널링 과정에서 운영체제는 많은 로그를 생성하는데, 이는 디지털 포렌식의 주요 분석 대상이 됨.

MBR과 VBR은 컴퓨터의 부팅 과정에서 사용되는 데이터임. 컴퓨터 메인보드의 BIOS가 POST(Power On Self-Test) 과정과 기본적인 하드웨어 점검을 마치고 나면, MBR 내에 있는 부트 코드(Boot Code)를 호출함.
MBR은 저장 장치의 파티션 정보, 각 파티션에 설치된 볼륨의 정보를 가지고 있음. MBR 부트 코드는 이러한 정보를 바탕으로 부팅 가능한 볼륨을 식별하고, 해당 볼륨의 부트 코드로 실행 흐름을 넘기는 역할을 함. VBR 부트 코드는 MBR에서 실행 흐름을 이어 받아 해당 볼륨에서 컴퓨터가 부팅할 수 있도록 부트로더 및 커널을 로드하는 역할을 함.

위 사진에서 슬랙(Slack)은 파일시스템이나 데이터의 구조에서 빈 공간을 나타내는 표현. MBR 슬랙이란, MBR 이후 다음 자료 구조가 오기 전까지의 빈 공간을 의미함. MBR 슬랙 이외에도 파일 슬랙, RAM 슬랙 등 다양한 슬랙이 있음.

| 이름 | 오프셋 | 설명 |
| 부트 코드 | 0x0 - 0x1BD | 부팅 과정에서 이용되는 코드 |
| 파티션 테이블 엔트리 #1 | 0x1BE - 0x1CD | 1번 파티션에 대한 파티션 정보 |
| 파티션 테이블 엔트리 #2 | 0x1CE - 0x1DD | 2번 파티션에 대한 파티션 정보 |
| 파티션 테이블 엔트리 #3 | 0x1DE - 0x1ED | 3번 파티션에 대한 파티션 정보 |
| 파티션 테이블 엔트리 #4 | 0x1EE - 0x1FD | 4번 파티션에 대한 파티션 정보 |
| 시그니처 | 0x1FE - 0x1FF | 고정값 0x55 0xAA |

| 이름 | 오프셋 | 설명 |
| 부트 플래그 | 0x0 - 0x0 (1 Byte) | 부팅 불가(0x00), 부팅 가능(0x80) |
| CHS 시작 주소 | 0x1 - 0x3 (3 Bytes) | CHS 방식 기반 시작 주소(섹터) |
| 파일시스템 타입 | 0x4 - 0x4 (1 Byte) | NTFS(0x07), FAT32(0x0C) 등 |
| CHS 끝 주소 | 0x5 - 0x7 (3 Bytes) | CHS 방식 기반 끝 주소(섹터) |
| LBA 시작 주소 | 0x8 - 0xB (4 Bytes) | LBA 방식 기반 시작 주소(섹터) |
| 파티션 총 섹터 개수 | 0xC - 0xF (4 Bytes) | 섹터 개수 * 512 = 섹터의 크기 |
파티션 엔트리 #1
nb) 리틀 엔디언 방식이다.
LBA 시작 주소, 파티션 총 섹터 개수의 단위는 섹터. 섹터는 512 바이트이고, 이는 16진수로 0x200
실제로 0x100000 오프셋에는 VBR이 위치하는 것을 확인할 수 있음


| 이름 | 오프셋 | 설명 |
| Jump Command | 0x0 - 0x2 | 부트 코드로 점프 |
| BPB(Bios Parameter Block) | 0x3 - 0x5A | 볼륨의 전반적인 설정을 포함 |
| 부트 코드 | 0x5B - 0x1FD | 볼륨 부트 코드 |
| 시그니처 | 0x1FE - 0x1FF | 고정값 0x55 0xAA |


FAT32 Boot Sector 구조 - Volume Serial Number

아..슬슬 잘 모르겠는데..
GPT야 도와줘
| 오프셋 | 크기 | 설명 |
| 0x000 | 446B | 부트스트랩 코드 (1단계 부트로더) |
| 0x1BE | 64B | 파티션 테이블 (4개 엔트리 × 16B) |
| 0x1FE | 2B | 부트 시그니처 (0x55AA) |
| 오프셋 | 크기 | 설명 |
| 0x000 | 3B | 점프 코드 |
| 0x003 | 8B | OEM Name |
| 0x00B~ | 나머지 | BIOS 파라미터 블록 (BPB), 부트 코드 등 |
| 항목 | MBR | VBR |
| 위치 | 디스크 시작 (Sector 0) | 파티션 시작 |
| 크기 | 512B | 512B |
| 개수 | 1개 | 파티션마다 1개 |
| 주요 정보 | 부트 코드 + 파티션 테이블 | 파티션 부트 코드 + 파일 시스템 정보 |
| 역할 | 디스크 전체 부팅 제어 | 해당 파티션 부팅 담당 |
| 사용 시점 | 부팅 시 가장 먼저 | MBR이 넘겨준 다음 실행됨 |