ext4 파일 시스템

2024. 11. 20. 11:14Docker

ext4 파일 시스템이란?

ext4(4th extended filesystem)는 리눅스 커널에서 사용되는 현대적인 저널링 파일 시스템으로, 이전 버전인 ext3와 비교해 성능, 안정성, 확장성을 대폭 개선한 버전입니다. ext4는 현재 리눅스의 기본 파일 시스템으로 널리 사용되며, 대용량 스토리지와 현대적인 컴퓨팅 환경을 지원하도록 설계되었습니다.


ext4의 주요 특징

  1. 대용량 지원

    • 최대 파일 크기: 16TiB
    • 최대 파일 시스템 크기: 1EiB
    • 최대 디렉토리 항목 수: 10억 개 이상
  2. 저널링 지원

    • 데이터 일관성을 유지하기 위해 변경 내용을 기록(저널링)합니다.
    • 저널링 모드:
      • Writeback: 메타데이터만 기록, 데이터는 나중에 기록.
      • Ordered: 메타데이터를 먼저 기록한 후 데이터 기록.
      • Journal: 메타데이터와 데이터 모두 기록(가장 안전하지만 느림).
  3. 연속 할당(Block Preallocation)

    • 큰 파일을 저장할 때 미리 연속된 블록을 할당하여 단편화를 줄이고 성능을 향상시킵니다.
  4. 지연 할당(Delayed Allocation)

    • 데이터를 디스크에 바로 쓰지 않고 메모리에 임시 저장하여 더 나은 블록 배치와 디스크 사용 효율성을 제공합니다.
  5. Extents(범위)

    • 파일 데이터를 기록할 때, 작은 블록 단위가 아닌 연속된 블록 범위로 기록하여 디스크 단편화를 줄이고 성능을 높입니다.
  6. 빠른 파일 시스템 점검(fsck)

    • ext4는 "불량 블록 그룹"을 식별하여 전체 파일 시스템 점검 시간을 줄입니다.
  7. Backward Compatibility

    • ext3로 포맷된 디스크를 ext4에서 사용할 수 있습니다.
    • ext4로 변환하면 ext3로 돌아가는 것은 어렵습니다.
  8. 저널링 비활성화 가능

    • 필요한 경우 저널링 기능을 끌 수 있어, 높은 성능이 요구되는 상황에서 사용됩니다.
  9. 64비트 파일 시스템 지원

    • 더 많은 블록과 데이터를 관리할 수 있도록 설계되었습니다.
  10. Multiblock Allocation

    • 파일 크기에 따라 여러 블록을 동시에 할당하여 성능을 향상시킵니다.

ext4의 구조

1. 슈퍼블록(Superblock)

  • 파일 시스템의 메타데이터 정보를 포함합니다.
  • 슈퍼블록에는 파일 시스템의 크기, 상태, 블록 크기, 저널링 상태 등이 기록됩니다.

2. 블록 그룹(Block Group)

  • ext4는 디스크를 여러 블록 그룹으로 나누어 관리합니다.
  • 각 블록 그룹에는 다음과 같은 구조가 포함됩니다:
    • 슈퍼블록의 복사본(중요한 정보 백업용).
    • 블록 비트맵: 사용 중인 블록과 사용 가능한 블록을 추적.
    • 아이노드 비트맵: 사용 중인 아이노드와 사용 가능한 아이노드를 추적.
    • 데이터 블록: 실제 데이터가 저장되는 영역.

3. 아이노드(Inode)

  • 각 파일의 메타데이터를 저장합니다.
  • 파일 크기, 파일 유형, 소유자, 권한, 타임스탬프 등의 정보를 포함.

4. Extents

  • 파일 데이터를 효율적으로 저장하기 위해 연속된 블록 범위를 사용합니다.
  • 디스크 단편화를 줄이고, 대용량 파일의 읽기/쓰기 성능을 개선합니다.

5. 저널(Journal)

  • 파일 시스템 변경 사항을 기록하는 로그로, 시스템 충돌 시 데이터 복구에 사용됩니다.

ext4의 장점

  1. 성능 향상

    • ext3 대비 I/O 성능이 크게 향상됨.
    • 대규모 데이터와 고성능 시스템에서 적합.
  2. 안정성

    • 저널링 기능으로 데이터 손실 가능성을 최소화.
    • 디스크 손상 시 데이터 복구가 쉬움.
  3. 확장성

    • 대용량 스토리지와 파일 크기를 지원.
    • 수십억 개의 파일을 저장 가능.
  4. 유연성

    • ext3 파일 시스템과의 호환성 유지.
    • 필요 시 저널링 비활성화로 높은 성능 제공.
  5. 빠른 점검

    • ext4는 파일 시스템 크기가 커도 점검(fsck) 속도가 빠름.

ext4의 단점

  1. SSD에 비효율적

    • ext4는 기존 HDD 기반 설계를 기반으로 하므로, SSD의 특성을 완전히 활용하지 못함.
    • SSD 최적화가 필요한 경우에는 btrfsxfs를 고려.
  2. 데이터 저널링 모드의 성능

    • 가장 안전한 저널링 모드(data=journal)에서는 성능이 저하될 수 있음.
  3. 기술적 한계

    • ext4는 기존 ext 시리즈의 구조를 유지하여 설계되었으므로, 완전히 새로운 파일 시스템(btrfs, zfs)에 비해 구조적 제약이 있음.

ext4와 다른 파일 시스템 비교

특성 ext4 ext3 XFS Btrfs
저널링 메타데이터 및 데이터 선택적 메타데이터만 메타데이터만 Copy-on-Write
최대 파일 크기 16TiB 2TiB 8EiB 16EiB
최대 파일 시스템 크기 1EiB 32TiB 8EiB 16EiB
성능 HDD에 최적화 기본적인 성능 고성능(대용량 작업에 유리) SSD와 RAID에 최적화
데이터 복구 빠름 느림 느림 내장된 스냅샷 및 복구

명령어로 ext4 확인 및 관리

  1. 파일 시스템 타입 확인

    df -T
  2. 파일 시스템 생성

    mkfs.ext4 /dev/sdX
  3. 파일 시스템 점검

    fsck.ext4 /dev/sdX
  4. 파일 시스템 정보 확인

    tune2fs -l /dev/sdX

ext4가 적합한 환경

  1. 서버 환경:

    • 안정적이고 성능이 중요한 환경에서 널리 사용됨.
    • 예: 웹 서버, 데이터베이스 서버.
  2. 대규모 데이터 저장소:

    • 대용량 파일과 수많은 작은 파일을 효율적으로 관리 가능.
  3. 일반 사용자 환경:

    • 안정성과 호환성을 중요시하는 리눅스 데스크톱 배포판에서 기본적으로 사용.


ext4는 리눅스에서 안정적이고 널리 사용되는 파일 시스템으로, 성능, 확장성, 안정성 측면에서 강력한 선택지입니다. 특히 기존 ext3와 호환성을 유지하면서도 다양한 현대적인 기능을 제공하여, 서버부터 개인 컴퓨터까지 폭넓은 사용 사례에 적합합니다. 그러나 SSD 및 최신 기술을 완벽히 활용하려면 btrfs나 xfs와 같은 대안을 고려할 수 있습니다.

'Docker' 카테고리의 다른 글

Remove Container & Docker Image  (0) 2024.11.20
Overlay Driver  (0) 2024.11.20
MNT 네임스페이스  (0) 2024.11.20
AWS EC2 Docker 설치 및 Docker 권한 추가  (0) 2024.11.18
리눅스 완전 공정 스케줄러(CFS: Completely Fair Scheduler)  (0) 2024.11.17