EXT4
EXT4 의 구조는 부팅과 파티션 관리를 위한 MBR 영역 이후에 여러 개의 Block Group 으로 나누어져 있다. 아래 그림은 EXT4의 전체적인 구조를 나타낸 것이다.
각 Block Group 은 총 6개로, SuperBlock, File descriptor table, data bitmap, inode bitmap, inode table, data 영역으로 나누어져 있다.
1. Super block
Super block 은 전체적인 파일 시스템의 정보를 담고 있다.
총 inode 갯수, 총 블록 갯수, 볼륨 라벨명, 블록 사이즈 등의 전체적인 파일 시스템의 틀을 규정하고 있다.
Super block은 여러개의 Block Group에 모두 동일한 값으로 저장되어 있다.
2. Block descriptor table
Block descriptor table은 각 Block Group에 있는 Data block bitmap, inode bitmap, inode table의 위치를 알려준다.
Block descriptor table 도 Block Group에 모두 동일한 값으로 저장되어 있다.
3. Data block bitmap, inode bitmap
이 영역은 현재 inode와 data의 할당 정보에 대한 정보를 담고 있다.
할당 되어 있으면 1, 할당 되어 있지 않으면 0으로 표현한다.
4. inode table
각 파일의 inode 정보를 알 수 있으며, 이는 표 형식으로 배열되어 있다.
ext4의 경우 기본적으로 하나의 inode 크기는 256bytes 이다.
실제 파일이 어떤 정보(접근&수정&삭제 시각, extents 트리 데이터, extents 할당 블록 개수)를 저장하고 있는지, 또한 실제로 어디에 저장되어 있는지를 알려준다.
5. Data Blocks
실제 데이터들이 저장되어 있는 곳이다. Data Block는 Block 단위로 계산되며, inode 정보를 통해 파일의 실제 데이터 위치를 파악한다.
NTFS
New Technology File System 의 약자인 NTFS는 Microsoft에서 개발한 독점 저널링 파일 시스템이다. NTFS 파일 시스템의 구조는 5가지 구성 요소가 있다.
OS 부트 레코드, MFT 1, MFT 메타데이터, MFT 2, 데이터 영역으로 이루어져 있다.
1. 파티션 부트 섹터
PBS 라고 불리며, 부트 정보를 보유한다.
2. 마스터 파일 테이블(MFT: Master File Table)
파일 이름과 생성 날짜, 액세스 권한, 크기 등을 포함하는 메타파일 데이터(메타 데이터)를 저장하는 디렉터리 이다.
3. 메타파일
파일 시스템을 정의 및 구성하며, 중요한 파일 시스템 데이터를 백업한다. 파일 시스템의 변경 사항을 버퍼링 하고, 여유 공간 할당을 관리 한다. 이는 메타데이터를 보다 효율적으로 구성하는 데 도움이 된다.
4. 데이터 영역
파이션 또는 외장 드라읍에 파일 및 데이터를 저장하는 단위를 가리킨다.
EXT4, NTFS 상에서의 복구
- EXT4는 전체 파티션을 여러개의 블록 그룹으로 나누고, 각각의 블록 그룹에는 슈퍼블록, 그룹 디스크립터 테이블, 데이터블록 비트맵, 아이노드 비트맵, 아이노드 테이블, 데이터 영역으로 이루어져 있다. 저널 영역의 위치는 inode 8번에 저장되어 있다. inode 8번 파일에는 저널 영역에 대한 주소값이 저장되어 있다. 해당 저널링 기능을 통해 삭제된 파일을 복구한다. 이를 통해 EXT4는 저널링 파일 시스템임을 알 수 있다. 저널링은 저널(디스크의 연속된 영역에 있는 순환 로그)을 통해 파일 시스템의 변경 사항을 기록하는 프로세스 이다.
저널 영역은 아래 그림과 같이 하나의 슈퍼블록 과 여러개의 트랜잭션으로 구성되어 있다. 저널의 슈퍼블록에는 저널의 블록 타입, 블록 사이즈, 저널 영역의 총 블록 수 등 저널의 전체적인 정보에 대한 명세가 기록되어 있다.
저널 영역의 슈퍼블록 다음에는 여러 트랜잭션으로 이루어져 있다. 각 트랜잭션은 디스크립터 블록이나 revocation Block으로 시작하여, 실제 데이터가 담긴 저널 데이터 블록 이후, 트랜잭션의 끝을 알리는 커밋 블록으로 이루어져 있다.
1) 저널 디스크립터 블록: 이 블록에는 바로 뒤에 이어질 데이터에 대한 정보를 담고 있다. 이를 '저널 태그' 라 부르는데, 하나의 디스크랩터 블록에는 여러개의 저널 태그가 포함되어 있다.
2) 저널 데이터 영역: 저널 태그에 해당하는 위치의 수정되기 이전의 데이터 값을 담고 있는 영역이다. 이 영역을 통해 삭제된 파일을 복구할 수 있다.
3) 저널 커밋 블록: 하나의 트랜잭션의 끝을 나타내는 블록이다. 커밋된 시각 정보가 담겨져 있다.
EXT4 상에서는 node 파일의 주소값이 0으로 초기화 시킨다. 즉, inode 파일과 실제 데이터 사이의 연결을 끊으며 파일을 삭제한다. 따라서, 삭제된 파일을 복구하기 위해서는 끊어진 inode파일과 실제 데이터를 다시 연결시켜주면 되는 것이다. 로그에 기록된 변경 사항에 따라 물리적 스토리지에 실제 변경사항 또한 적용이 된다. 이를 통해 좀 더 안정적으로 변경 사항을 구현할 수 있으며 작업 중에 시스템 오류 또는 전원 문제가 발생하더라도 일관성을 유지할 수 있다 결과적으로 파일 시스템의 손실 가능성이 줄어드는 효과를 얻을 수 있다.
- NTFS 에서는 디스크 볼륨을 재구성하여 일관성 있는 상태로 되돌려 놓는다. 파일 시스템 변경들에 의해 트랜잭션 처리 모델을 적용함으로써, 각각의 주요 변경 작업은 모두 실행되거나 전혀 실행되지 않는 '원자적 동작'으로 취급된다. 장애 발생 당시 처리 중이던 각 트랜잭션은 완전히 되돌려지거나 완료된다. 또한 NTFS는 중요한 파일 시스템 데이터를 중복 저장함으로써, 한 디스크 섹터에 장애가 발생해도 파일시스템의 구조와 상태를 기술하는 데이터는 손실되지 않게 하고 있다.
1) 입출력 관리자: NTFS의 기본적인 열기, 닫기, 읽기, 쓰기 기능을 다루는 NTFS 드라이브 포함
2) 로그파일 서비스: 디스크 상의 파일 시스템 메타데이터 수정의 로그를 유지
3) 캐시 관리자: 성능 향상을 위해 캐싱 파일에 읽기, 쓰기 담당
성능 향상 기술
Ext4는 디스크에 데이터를 쓰기 전에 할당하는 방식의 많은 개선사항을 도입함으로써, 대형 파일 시스템을 효율적으로 지원할 수 있다. 그에 대한 개선사항은 아래 그림을 확인할 수 있다.
extent는 한번에 예약하여 처리할 수 있는 연속된 물리적 블록의 범위이다. (4KiB 블록 크기라고 가정했을때 128MiB까지) extent 를 활용하면 지정된 파일에 필요한 inode들의 수을 줄이고 단편화를 감소시키며, 큰 용량의 파일을 쓸 때 성능을 향상시킬 수 있다. EXT4에서는 이러한 extents 트리를 이용하여 파일을 관리한다. 아래 그림은 extents 구조를 나타낸 것으로, extents 구조를 활용하면 depth가 2를 넘어가지 않아도 56TB의 파일을 관리 할 수 있다. 또한, 불량 블록의 구조는 테이블 형식이며 제약사항으로는 최대 볼륨 크기가 1 EiB, 최대 파일 크기는 16 TiB(4k 블록 파일 시스템 기준) 을 들 수 있다.
NTFS 상에서의 기본 할당 단위는 클러스터이며, 섹터를 인식하지 않는다. NTFS 의 최대 클러스터의 크기는 4KB 이다. 왜냐하면 더 큰 클러스터 크기를 가진 드라이브에 NTFS 파일 압축이 불가능하기 때문이다. NTFS 상 최대 볼륨 크기는 2^64 바이트이다.
EXT4 는 지연된 할당: allocate-on-flush라는 파일 시스템 성능 기술을 사용한다.
NTFS 는 파일 시스템 성능 향상을 위해 아래 세가지 방법을 활용할 수 있다.
1. NTFS 파일 시스템으로 포맷할 때 설정하는 클러스터(cluster) 크기를 기본 값인 2,048바이트에서 4,096 바이트로 바꾼다. 읽기와 쓰기 성능이 좀더 효율적으로 된다.
2. 가상 메모리로 쓰는 페이징 파일 위치를 윈도가 깔린 파티션이 아닌 별도의 하드디스크에 저장하고 클러스터 크기를 좀더 크게 한다.
3. NTFS의 MFT(master file table)의 MFT 존(MFT Zone)의 설정을 바꾼다. MFT 존은 MFT의 시작점과 끝점을 뜻하는데, 기본 값은 하드디스크 용량의 12.5%를 할당한다. 이 크기를 늘리면 성능이 향상된다. MFT 존은 1에서 4까지 설정할 수 있다. 1은 12.5%, 2는 25%, 3이 37.5%, 4가 50%다. 파일서버의 경우, 전에는 읽기 작업을 많이 하는 PC 로 2나 3으로 설정했지만 요즘은 데스크톱 PC 도 대용량 하드디스크를 달아서 쓰므로 2나 3으로 설정하는 게 효율적이다. 기본 값으로 설정된 MFT 존의 값을 바꿔보자.
그외 EXT4, NTFS 에 대해서
EXT4
- 하위 호환성: ext3와 ext2에 대한 하위 호환성이 있어서 ext3와 ext2 파일 시스템을 ext4로 마운트 하는 것이 가능하다. 하지만 ext4의 중요한 새로운 특징인 extents를 사용한다면 ext3로 마운트는 불가능하다.
- 32000개의 하위 디렉토리 제한 없음, ext4에서는 64000개로 늘어났으며, dir_nlink 기능을 이용한다면 더 큰 개수도 허용한다. H-tree인덱스를 이용하여 지속된 성능을 얻을 수 있다.1
NTFS
기존 여타 파일 시스템과 다르게 중요한 설정 데이터 값들이 모두 파일 형태로 할당된다.
하지만, NTFS 는 설정파일이 별도로 존재하며, 그 파일은 볼륨 어디에 위치해 있는지 상관 없다. 즉, 볼륨 전체가 FAT의 Data 영역처럼 할당 가능한 영역으로 된다는 것이다.
별도로 존재하는 이 설정파일은 MFT라고 부른다.
1. 클러스터 당 할당 용량이 4KB가 최적이지만, 최대 64KB까지 지원한다.
즉, 최대 볼륨 사이즈 256TB까지 가능 - 확장성
2. 파일의 변동사항을 따로 기록하여 예외 발생으로 시스템 종료되었을 시, 처리 중이던 작업을 보호하는 기능 - USN 저널링
3. 단일 파일에 대해 다중 데이터 스트림을 정의 가능, 파일의 실제 내용은 바이트 스트림으로 취급된다.
4. LZNT1 알고리즘을 이용한 파일 압축 - 파일 압축
5. 실제 데이터가 기록되지 않은 메타데이터만 존재하는 파일 지원 - 스파스 파일
6. 파일/디렉토리의 쓰기 작업 이전의 데이터를 백업 및 복원하게 해주는 기능 - VSS
7. 파일/디렉토리에 대한 권한 제어, 시스템 접근 작업에 대한 감사 - 보안성
8. EFS(Encrypting File System) 볼륨 암호화 기능 제공 - 암호화
9. 사용자 각각에 디스크 할당량 조정 가능 - 할당량
'OS' 카테고리의 다른 글
OSI 7 Layer (0) | 2023.07.22 |
---|---|
여러 대의 컴퓨터가 통신하려면?? feat.Router (0) | 2023.07.20 |
TCP/UDP (0) | 2023.07.19 |
TCP/IP (0) | 2023.07.16 |
Process Thread (0) | 2023.07.12 |