Linux / / 2024. 12. 4. 10:34

EXT4 파일 시스템

EXT4 파일 시스템

EXT4(Extended Filesystem Version 4)는 리눅스 운영 체제에서 가장 널리 사용되는 파일 시스템 중 하나로, EXT3 파일 시스템의 후속 버전입니다. EXT4는 더 큰 파일 및 파일 시스템 지원, 성능 향상, 안정성 및 유연성을 제공하기 위해 설계되었습니다. 아래에서는 EXT4 파일 시스템의 특징, 주요 기능, 구조, 장단점, 그리고 사용법을 자세히 설명합니다.


특징 및 주요 기능

1. 대용량 파일 및 파일 시스템 지원

  • 최대 파일 크기: 최대 16테라바이트(TB).
  • 최대 파일 시스템 크기: 최대 1엑사바이트(EB).
  • EXT3에 비해 훨씬 더 큰 저장소를 지원하여 대규모 데이터 환경에 적합.

2. 익스텐트 기반 할당

  • 기존의 블록 매핑 방식 대신 익스텐트(Extent)라는 방식을 사용하여 디스크 공간을 효율적으로 관리.
  • 익스텐트는 연속된 블록의 범위를 나타내며, 파일 조각화를 줄이고 성능을 향상.

3. 저널링(journaling)

  • EXT4는 저널링을 통해 파일 시스템의 무결성을 유지.
  • 데이터 모드:
    • 저널 모드: 데이터와 메타데이터를 모두 저널링.
    • 오더드 모드: 메타데이터만 저널링하며 데이터 기록을 보장.
    • Writeback 모드: 데이터와 메타데이터의 동기화를 엄격히 보장하지 않음.

4. 지연 할당(Delayed Allocation)

  • 데이터를 디스크에 기록하기 전에 가능한 한 오랫동안 데이터를 메모리에 보관.
  • 파일이 완전히 작성될 때까지 대기하여 디스크 I/O를 최적화.

5. 빠른 파일 시스템 검사

  • 인도렉트 블록 관리를 개선하여 파일 시스템 검사(fsck) 속도를 대폭 향상.

6. 다이렉트 I/O 지원

  • 애플리케이션이 파일 데이터에 직접 액세스할 수 있도록 지원하여 고성능 워크로드에서 효율성 증대.

EXT4의 구조

1. 슈퍼블록(Superblock)

  • 파일 시스템의 전체적인 정보를 저장.
  • 크기, 상태, 익스텐트, 저널링 모드 등을 포함.

2. 블록 그룹(Block Group)

  • 파일 시스템이 여러 블록 그룹으로 나뉘며, 각 블록 그룹은 독립적으로 관리.
  • 블록 그룹 구조:
    • Block Bitmap: 블록 사용 상태를 추적.
    • Inode Bitmap: Inode 사용 상태를 추적.
    • Inode Table: 파일 및 디렉터리에 대한 정보를 저장.

3. 익스텐트(Extent)

  • 익스텐트는 연속된 블록 범위를 정의.
  • 각 익스텐트는 시작 블록, 길이, 상태 정보를 포함.

장점

  • 대용량 파일 및 디스크 지원: 현대 스토리지 환경에 적합.
  • 빠른 성능: 지연 할당 및 익스텐트 기반 구조로 I/O 성능 최적화.
  • 안정성: 저널링으로 데이터 무결성 보장.
  • 유연성: 다양한 파일 크기와 사용 사례에 적합.

단점

  • 메모리 소비: 지연 할당과 익스텐트 관리는 메모리를 더 많이 소비.
  • CPU 사용량 증가: 복잡한 메타데이터 관리는 CPU 부하를 증가.
  • 백워드 호환성 부족: EXT3와의 완전한 호환성 부족.

EXT4 파일 시스템 관리

파일 시스템 생성

mkfs.ext4 /dev/sdX

파일 시스템 마운트

mount -t ext4 /dev/sdX /mnt

파일 시스템 검사

fsck.ext4 /dev/sdX

EXT4의 응용 사례

  1. 데스크톱 환경: 안정성과 성능 덕분에 개인 컴퓨터에서 많이 사용.
  2. 서버 환경: 대규모 데이터 저장소에 적합.
  3. 빅데이터: 대용량 파일 지원으로 분석 및 처리 시스템에서 활용.

요약

EXT4 파일 시스템은 현대 리눅스 환경에서 널리 사용되는 강력한 파일 시스템으로, 대용량 데이터 저장 및 고성능 워크로드에 적합합니다. 익스텐트 기반 할당, 지연 할당, 저널링 등 다양한 기능을 통해 데이터 무결성을 보장하면서 성능을 최적화합니다.

'Linux' 카테고리의 다른 글

리눅스의 루트 파일 시스템  (0) 2024.12.04
Linux의 init 프로세스와 Namespace  (0) 2024.12.03
Linux의 /tmp 디렉토리  (0) 2024.12.03
커맨드 라인 인터페이스 (CLI)  (1) 2024.12.03
Linux에서 자주 쓰이는 명령어  (0) 2024.11.10
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유