2. 파일 시스템
1
- 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제 → 저장장
치에는 수 많은 파일이 존재, 이를 관리하는 방법
- 공간 관리 기능과 사용자 인터페이스(사용자와 컴퓨터의 상호작용 시스템)를 제공하여 실제 저장장치
에 접근하여 물리적 공간을 관리하고 시스템과 데이터에 접근이 가능하게 한다
- 메타데이터 활용하여 파일에 관련된 정보는 파일시스템에 기록
File System 구조
- file system은 Meta 영역과 Data 영역으로 나뉘며 각각 파일 관리를 위한 메타 데이터와 실제 파
일의 데이터가 저장되는 영역이다
※ Meta data : 파일의 이름, 위치, 크기, 시간정보, 삭제 유무 등 파일에 관한 정보가 저장된 데이터를 말한다
File System
3. 섹터
- 하드디스크의 최소 저장 단위(데이터 기록의 기본 단위)이며 섹터의 위치를 구분하기 위한 고유번호
저장에 59byte, 실제 데이터 저장에 512byte, 총 571 byte
파일 시스템
2
File System 용어
4. 클러스터
- 저장장치에 데이터를 읽고 쓰는 기본 단위
- 파일 시스템에 따라 크기가 고정되어 있으며 운영체제가 파일 시스템 생성 시 저장장치의 크기
또는 사용 용도에 따라 크기를 조절한다
- 클러스터의 크기가 작으면 낭비되는 영역(슬랙 공간)이 줄어 디스크를 효율적으로 사용이 가능하
지만 입출력(처리 속도에 관련해 가장 큰 비용을 요구함)이 많아져 오히려 속도가 느려질 수 있다.
- 디스크를 포맷하거나 파일시스템을 생성하는 시점에 클러스터의 크기를 지정 할 수 있다.(클러스
터 내 섹터의 개수를 조정)
파일 시스템
3
File System 용어
5. 파일 시스템
4
File System 용어
파일
- 속성(파일의 이름, 위치, 크기 등)을 기록하는 메타 데이터 영역, 실제 데이터를 기록하는 데이터 영역
으로 나뉜다.
디렉토리(Directory)
- 파일들을 계층화(트리 구조를 형성)하고 그룹화(파일을 분류하여 보관) 하는 개념
- 디렉토리 속 디렉토리는 하위 디렉토리 또는 서브 디렉토리
6. 파일 시스템
5
File System 요소
소유권
- 각 파일마다 그룹과 소유권을 따로 관리
- 한 컴퓨터에 여러명의 사용자가 접근하는 경우 파일에 대한 접근 권한을 따로 관리할 필요가 있음
- FAT에서는 소유권 관리를 할 수 없지만 NTFS, EXT2등의 파일 시스템은 모든 파일에 사용자 그룹과 소유
권한을 부여 할 수 있다.
동기화
- OS의 멀티태스킹 지원으로 하나의 CPU에서 여러 작업이 동시에 실행 되는 것처럼 동작
- 하나의 파일에 여러 프로세스가 동시에 접근해 작업을 하는 경우 공유 객체에 동시에 접근하지 못하게 해
당 파일에 락(Lock)걸고 작업이 완료되면 해제 하는 과정
7. 파일 시스템
6
File System 요소
보안
- 파일 시스템에는 보안과 관련해 여러 방법이 있으며 한 예로 파일의 소유권한과 실행 권한이 있다.
- 파일의 소유 권한과 실행 권한은 OS를 통해 파일시스템에 접근하는 상황에 해당될 뿐이라 물리적으로 디
스크에 접근하는 경우 데이터가 모두 드러나는데(디스크를 다른 pc에 연결하는 경우) 이러한 상황에 대비해 파일
시스템의 암호화 기법을 사용할 수 있다.
일관성 체크
- 파일 쓰기나 업데이트를 하고 있는 중 얘기치 못한 상황 때 파일시스템에서는 실제 파일이 있는 것처럼 표
시되는데 데이터가 잘못되어 일관성이 깨질 수 있다.
- 이런 상황에 대비해 파일을 쓸 때 메타데이터와 파일 데이터를 쓰는 순서부터 시스템 Crash상황(프로그램이
정상적으로 동작하지 않는 상황)을 고려 해야한다.
- 파일 시스템의 일관성에 문제가 발생했다고 판단되는 경우 별도의 유틸리티 프로그램을 사용하는데 대표
적으로 window의 FAT, NTFS를 체크하는 'chkdsk.exe'
- linux의 EXT를 체크하는 'e2fsck'가 있다.
8. 파일 시스템
7
File System 요소
저널링
- 하드 디스크의 용량이 커질수록 일관성 체크에 걸리는 시간도 길어지게 되는데 이런 상황에 사용
- DB(Data Base)에서 일관성 체크를 위해 사용되는 방법을 파일 시스템에 적용한 것으로 파일시스템 업데이트
시 로그를 기록한다. 문제가 발생하면 해당 로그를 참조하여 업데이트를 취소하거나 파일시스템에 업데이
트를 적용 완료 할 수도 있다.
* 일관성 체크를 위해 사용되는 방법
- 트랜잭션이 성공적으로 완료하면 그 데이터베이스는 일관성 있는 상태로 변환
- 트랜잭션(Transaction)은 상태를 변환시키기 위해 수행하는 하나의 작업 단위이며 데이터베이스의 완전성을 보장함
- 저널링은 업데이트 로그를 기록하기 때문에 일관성 체크를 위해 파일시스템의 전 영역을 검색하지 않아도
되며, 해당 로그만 찾아가 작업 수행 가능
9. 파일 시스템
8
Window OS - FAT(File Allocation Table)
- 어느 영역에 파일이 속해 있는지, 공간에 여유가 있는지, 또 어디에 각 파일이 디스크에 저장되어 있는지에
대한 정보를 중심으로 하는 테이블을 이용
- 상대적으로 간단한 파일 시스템이지만 성능은 다른 파일시스템에 비해 좋지 않다.
→단순한 자료구조를 사용하고 크기가 작은 파일이 많으면 공간 활용률이 적어지기 때문
10. 파일 시스템
9
FAT12
- MS-DOS 초기부터 주로 쓰임
- 플로피 디스크에서 사용
FAT16
- 32MB 이상의 하드 디스크를 지원하기 위해 MS-DOS 3.0과 함께 나왔으며 윈도우 95까지 주로 이용
- 최대 2GB 파티션을 지원
FAT32
- 지원하는 드라이브 최대 용량은 32GB이고 파일 하나당 저장할 수 있는 최대 크기는 4GB이다
- 안정성이 좋으며 다양한 OS, 기기에 대한 호환성이 좋다
Window OS - FAT(File Allocation Table)
11. 파일 시스템
10
Window OS - FAT(File Allocation Table)
NTFS(New Technology File System)
- FAT32의 약점을 보완하기 위해 개발된 파일 시스템
- 지원하는 드라이브 최대 용량은 256TB이고 파일 하나당 저장할 수 있는 최대 크기는 16TB이다
- 윈도우에서는 최적화되어 있으나 Apple의 MAC OS, Google의 Android, Linux와 같은 기기에서 사용에 제
한이 있다
exFAT(Extended File Allocation Table)
- NTFS의 호환성 문제를 극복하기 위하여 개발된 방식. (FAT64라고도 한다.)
- 지원하는 드라이브 최대 용량과 파일 하나당 저장할 수 있는 최대 크기가 512TB
- usb안전제거 방식이 아니라 그냥 뽑는 경우 파일 소실 가능성 존재한다는 점에서 안정성이 떨어진다.
12. - 리눅스용 파일 시스템 중 하나로 많은 리눅스 배포판에서 주 파일 시스템으로 쓰이고 있음.
ext2
- ext를 대체하기 위해 고안
ext3
- ext2에서 자료 삭제 및 손실 없이 ext3로 변경가능(자료 백업 불필요)
- 다른 파일시스템에 비해 처리속도가 낮다
ext4
- 대형 파일 시스템을 지원
- 64비트 기억 공간 제한을 없애고 ext3의 성능을 향상
- 지연할당으로 인한 데이터 유실 가능성.
※지연할당 : 데이터를 디스크에 커밋할 준비가 될 때 데이터를 쓸 실 제 블록을 할당
※커밋 : 이전 상태부터 현재 상태까지 변경이력 기록
파일 시스템
Linux - Ext(extended file system - 확장 파일 시스템)
11
13. 파일 시스템
mac OS - HFS, APFS
HFS(Hierarchical File System - 계층적 파일 시스템)
- 애플이 맥 OS를 구동하는 컴퓨터 시스템에 사용할 목적으로 개발한 파일 시스템
APFS(Apple File System)
- 애플에서 macOS, iOS, watchOS, tvOS등에서 범용으로 사용하고자 만드는 파일시스템
12
14. 파티션 & 볼륨
1. BIOS (Basic input / Output system)
펌웨어
- 운영 체제 중 가장 기본적인 컴퓨터의 입출력을 처리하는 소프트웨어
- 컴퓨터 내부에 하드웨어와 소프트웨어의 특성을 모두 가지고 있으면서 양쪽을
유기적으로 결합시키는 요소
- 변경할 필요가 없는 소프트웨어를 롬(ROM) 등에 기입하여 사용하는 것.
⇒ 처리 고속화 & 회로 단순화. 즉, 하드웨어화된 소프트웨어
13
15. 파티션 & 볼륨
1. BIOS (Basic input / Output system)
BIOS (pc용 펌웨어)
- PC의 전원을 켰을 때 자동으로 실행, 가장 먼저 하드웨어의 상태를 진단, 초기화(불필요한 정보 제거
) 하여 운영체제의 시작을 준비.
+ 하드웨어의 상태를 진단 : 주요 하드웨어의 정상 동작 여부를 확인 후, 보조기억장치에
접근하여 저장된 운영체제의 파일을 불러와 부팅을 시작.
- BIOS는 PC의 가장 기초적인 기능을 담당하므로 손상되거나 지워진 PC는 작동을 하지 않음
- ROM(Read Only Memory)에 저장되어 있기 때문에 ROM BIOS라고 불림. (비휘발성 메모리)
- 제품마다 다르지만 부팅 시 F2, F10등을 눌러 진입 가능
역할
- CPU와 주변장치를 진단, 활성화/비활성화
- 부팅 장치의 우선 순위 설정
- 부트 모드 전환
- 날짜 및 시간 설정
14
16. 파티션 & 볼륨
1. BIOS (Basic input / Output system) 부트 모드
1) Legacy BIOS
- 약 20년 전 운영 체제를 가동을 위해 설계.
- 16비트 시스템이며, 최대 1MB의 메모리 액세스
- 2TB 이상의 디스크에서 운영체제와
DML(Data Manipulation Language - 데이터조작 언어)
통합에 한계 발생
15
17. 파티션 & 볼륨
1. BIOS (Basic input / Output system)
2) UEFI(Unified Extended Firmware Interface)
- Legacy BIOS를 대체하는 새로운 시스템
- 2TB 이상의 고용량 하드 디스크 제어 및 Windows 64bit 버전에 적합.
- GUI(Graphical User Interface - 그래픽 사용자 인터페이스)를
제공하여 아이콘이나 그림 메뉴 형태로 이루어진 BIOS이며
조작이 용이하다
- 파티션을 분할하지않고 C드라이브만 사용 가능하여
파티션 관리가 편리
- Fast Boot & Secure Boot 지원
16
18. 파티션 & 볼륨
1. BIOS (Basic input / Output system)
2) UEFI(Unified Extended Firmware Interface, 통일 확장 펌웨어 인터페이스)
- Fast Boot
+ ROM BIOS에서 부팅 시 검사하는 하드웨어 및 세팅 작업을 스킵하여 부팅 시간을 단축
- Secure Boot
+ 부팅 방식으로 UEFI를 이용할 때 펌웨어 유효성을 검사, Window8 부터 UEFI에서 설정 가
능
+ 신뢰할 수 있는 펌웨어를 통해서만 부팅이 되도록 하는 것을 의미, 부팅 경로를 주요 공격 대
상으로 삼는 Malware의 공격을 차단
+ cmd에서 msinfo32로 부트 모드를 확인 할 수 있다.
17
20. 파티션 & 볼륨
3. 슬랙 공간(Slack Space)
* 정의
- 물리적으로는 파일에 할당되었지만 논리적으로 사용할 수 없어 낭비되는 공간
- 정보 은닉, 파일 복구, 및 삭제된 파일 파편 조사에 유용
- 파일 시스템에 더 이상 보이지 않지만, 완전히 덮여 쓰여지지 않은 파일 또는 파일 조각
(Accessdata)
- 저장 매체의 물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비 공간(TTA)
- 파일 마지막 클러스터와 해당 파일 마지막 사이의 공간(Guidance)
19
21. 파티션 & 볼륨
3. 슬랙 공간(Slack Space)
* 종류
- 램 슬랙 (RAM Slack)
- 드라이브 슬랙 (Drive Slack)
- 파일 시스템 슬랙 (File System Slack)
- 볼륨 슬랙 (Volume slack)
- 파일 슬랙 (File Slack) = 램 슬랙 + 드라이
20
22. 파티션 & 볼륨
3. 슬랙 공간(Slack Space)
* 램 슬랙(RAM Slack)
- 램에 저장된 데이터가 저장매체에 기록될 때 발생하는 슬랙 공간
- 0으로 초기화 함으로써 파일의 끝을 알 수 있음
- 파일의 끝을 알 수 있기 때문에 삭제된 파일을 복구할 때 유용하게 사용됨
* 드라이브 슬랙(Drive Slack)
- 클러스터의 사용으로 인해 낭비되는 공간(섹터)
- 파일이 클러스터 단위로 나누어 떨어지지 않아서 발생하는 슬랙
- 빈 영역이지만 다른 용도로 사용하지 않아서 악성코드(ex. Slackskit)를 기록해 두는 경우도 있음
- 데이터 복구에 사용되는 영역
21
23. 파티션 & 볼륨
3. 슬랙 공간(Slack Space)
* 파일 시스템 슬랙(File System Slack)
- 파일 시스템의 마지막 부분에 있어 사용할 수 없는 영역
- 저장매체의 물리적인 크기가 클러스터 단위로 나누어 떨어지지 않아서 발생하는 슬랙
- 볼륨의 크기가 클러스터 크기의 배수가 아니라면 발생
- 악성코드를 은닉하는데 많이 사용
22
24. 파티션 & 볼륨
3. 슬랙 공간(Slack Space)
* 볼륨 슬랙(Volume Slack)
- 전체 볼륨 크기와 할당된 파티션 크기의 차이로 발생하는 낭비 공간
- Volume 크기가 파티션들의 크기 합과 다르기 때문에 발생
- 파티션의 크기는 임의로 변경이 가능하기 때문에 다른 슬랙과 다르게 슬랙 공간을 임의로 변경
가능
23
25. 파티션 & 볼륨
4. MBR(Master Boot Record)
1) BR(Boot Record)
- 디스크의 운영 체계를 컴퓨터 시스템에 설치하기 위한 명령어를 저장하고 있는 곳으로써,
컴퓨터를 부팅할 때 맨 처음 읽히는 레코드
- 각파티션의 첫 번째 섹터에 위치함
+ 단일 파티션 : 1개의 BR 영역이 첫 번째 섹터에 위치
+ 다중 파티션 : 각 파티션에 BR 영역을 관리
- 단일 파티션과 다중 파티션의 차이점은 MBR 유무
24
26. 파티션 & 볼륨
4. MBR(Master Boot Record)
2) MBR(Master Boot Record)
- 저장매체의 첫 번째 섹터(LBA 0)에 위치하는 512 바이트 크기의 영역
- 운영체제가 부팅될 때 POST(Power On Self-Test) 과정을 마친 후, 저장매체의 첫 번째 섹터를
호출할 때 해당 부트코드가 수행됨
- MBR의 기본적인 구조
446 byte 부트코드 영역
2 byte 시그니처
64 byte 파티션 테이블
25
27. 파티션 & 볼륨
4. MBR(Master Boot Record)
3) Boot Code
- MBR 영역에서 부팅될 때 POST(Power On Self-Test) 과정을 마친 후 처음 처리되는 코드
- 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터(Boot Sector)를 호출해
주는 역할
- 만약 부팅 가능한 파티션이 없을 경우에는 미리 정의된 에러 메시지 출력
26
28. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
- 각각 16 byte씩4개의 엔트리를 가지고 있음
27
29. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
파티션을 하나도 생성하지 않았을 때
모든 파티션 테이블에0이 들어감
28
30. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
파티션을 하나 만들어 주면 파티션 테이블 첫 번째 줄에 파티션에 대한 정보가 기록됨.
29
31. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
파티션 테이블에 기록되는 정보는 다음과 같다.
- Boot Flag
- 파티션 시작의 CHS(Cylinder-Head-Sector) 주소
- 파티션 타입
- 파티션 끝의 CHS 주소
- 파티션 시작 LBA(Logical Block Address) 주소
- 파티션 섹터의 수
30
32. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
- Boot Flag
+ 컴퓨터가 부팅할 때 운영체제가 어떤 파티션에 위치해 있는지 구분하기 위해 사용.
(운영체제가 설치된 파티션을 표시)
+ 부팅 불가능한 파티션일 경우 0x00으로 설정
+ 부팅 가능한 파티션일 경우 0x80으로 설정
31
37. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
- 시작 LBA 주소(Starting LBA Adres)
+ LBA 2048(0x00000800)
+ 섹터 2048로 이동해 보면 NTFS(New Technology
File System) 파일 시스템을 의미하는 시그니처가
존재, 하단에 BR의 시그니처인 0x55AA가 존재
-> 정상적으로 NTFS 파일 시스템을 가지는
파티션의 시작 부분
섹터 2048
36
39. 파티션 & 볼륨
4. MBR(Master Boot Record)
4) Partition Table
+ 파티션 시작의 부분과 똑같음
-> 해당 파티션의 마지막 부분이라는 것을 알
수 있음
섹터 125,825,023
38
40. 파티션 & 볼륨
3. MBR ( Master Boot Record )
* FTK Imager로 MBR확인
- 추가로 CHS타입을 사용하지 않기 때문에 나머지를 0으로 나타냄
39
41. 파티션 & 볼륨
3. MBR ( Master Boot Record )
* 파티션 타입 확인
- NTFS 파일 시스템의 시그니쳐( EB 52 90 4E 54 46 53 검색)
* BR의 위치 확인
- BR의 섹터를 확인 할수있다
- 섹터는 2048의 위치한다
40
42. 파티션 & 볼륨
3. MBR ( Master Boot Record )
* LBA 확인
- Size in Sector: LBA 0x000F97FF (파티션의 크기)
* 파티션의 섹터 수를 확인
- BR의 시작섹터 2048 (0x100000), 마지막 섹터 307144(0x95f9000)
- 파티션의 섹터 수 = 305,096(0x4a7c8)
41
43. 파티션 & 볼륨
3. MBR ( Master Boot Record )
* MBR 복원
- 위의 계산으로 나온 값을 복원 한다면 이렇게 표현할수 있다
1. Partition Type : 0x07(NTFS)
2. Starting LBA Addr = LBA 0x800
3. Size in Sector : LBA 0x000F97FF ( 파티션의 크기)
4. Signature: 0x55AA
42
45. 파티션 & 볼륨
5. GPT(GUID Partition Table)
○ LBA(Logical Block Addressing) 주소 체계를 사용한다.
○ MBR의 단점을 극복하기 위해서 파티션 엔트리를 128 Byte로 확장하여 최대 128개의 파
티션 생성이 가능하다. 디스크의 최대 용량은 이론적으로 8ZB(제타바이트)까지 지원 가능하
지만 18EB(엑사바이트)로 제한된다.
○ x64 기반의 플랫폼에서 사용 가능하다.
○ CRC(Cyclic Redundancy Check)를 이용해서 파티션 테이블 보호가 가능하다. → 신뢰성
확보
○ GPT의 중요 데이터 구조는 볼륨의 끝에 복제본을 저장한다. → 장애 복구 가능
44
51. 파티션 & 볼륨
5. GPT(GUID Partition Table)
● Protective MBR
○ LBA 0에 위치한다.
○ 기존 MBR과 호환할 수 있다.
○ 보는 방법은 MBR 영역과 동일하다.
○ 2TB 단일 파티션으로 인식한다.
○ GPT 디스크를 인식하지 못하고 MBR 디스크만을 인식하는 시스템이나 프로그램에서 해당 디
스크가 비어 있는 것으로 착각하고 GPT 디스크를 수정하는 것을 방지하기 위해 해당 디스크가 비
어 있지 않다는 것을 알려주는 역할을 한다.
49
52. 파티션 & 볼륨
5. GPT(GUID Partition Table)
● GPT Header
○ LBA 1에 위치한다.
○ GPT에 대한 전반적인 설정 정보를
기록한다.
○ 총 92 byte로 구성된다.
○ 그 이외에 영역은 NULL 값으로 기록한다.
50
53. 파티션 & 볼륨
5. GPT(GUID Partition Table)
● Partition Table
○ LBA 2~33
○ 각 파티션에 대한 전반적인 설정 정보를
기록한다.
51