자격증/리눅스마스터 1급

리눅스 마스터 1급 ext 파일시스템 및 기타 파일 시스템

CodeMuscle 2024. 8. 17. 23:17
반응형

1.파일 시스템

- EXT 파일 시스템

우선 요약으로 대충 내용을 익히고 자세히 알아보겠읍니다.

파일 시스템 출시 연도 최대 파일 크기 최대 파일 시스템 크기 저널링 지원 주요 특징
Ext 1992 2GB 2GB 아니요
리눅스 최초의 파일 시스템, 기본 기능 제공
Ext2 1993 2TB 32TB 아니요
저널링 미지원, 빠른 성능과 낮은 오버헤드, 주로 임베디드 시스템에서 사용
Ext3 2001 2TB 32TB
저널링 지원으로 데이터 복구 기능 강화, Ext2와의 호환성 유지
Ext4 2008 16TB 1EB
성능 향상, 대용량 파일 및 디렉토리 지원, 고급 기능 도입 (지연 할당, 멀티블록 할당 등)

* 저널링이란?

- 파일 시스템의 데이터 무결성과 안정성을 향상시키기 위한 기술.

- 저널링을 사용하는 파일 시스템은 데이터를 디스크에 기록하기 전에 로그(저널)에 변경 사항을 기록.

- 저널링시스템은 충돌이나 전원 손실과 같은 갑작스러운 중단이 발생할 경우 파일 시스템을 빠르고 안전하게 복구.

 

 

 

EXT(Extended File System)은 리눅스 커널에 사용되는 파일 시스템의 종류 중 하나로,

리눅스에서 가장 널리 사용되는 파일 시스템 계열입니다. 

하나씩 자세히 알아보겠읍니다.

 

EXT (Extended File System 1)

출시 연도: 1992년
개발자: Rémy Card
특징:

  • 리눅스의 첫 번째 파일 시스템으로, 리눅스 커널 0.96c에서 처음으로 도입되었습니다.
  • 이 파일 시스템은 당시 다른 파일 시스템보다 우수한 기능을 제공했으며, 유닉스 파일 시스템과 호환성을 유지했습니다.
  • 최대 파일 시스템 크기는 2GB, 파일 크기는 2GB로 제한되어 있습니다.
  • 고정된 인덱스 노드(inode) 테이블을 사용하였고, 부팅 중에 전체 파일 시스템을 검사해야 했기 때문에 대용량 파일 시스템에서는 성능 저하가 발생할 수 있었습니다.
  • 단점: EXT1은 제한된 기능과 용량으로 인해 현대적인 시스템에서는 거의 사용되지 않습니다.

EXT2 (Second Extended File System)

출시 연도: 1993년
개발자: Rémy Card
특징:

  • EXT1의 후속 버전으로, EXT2는 리눅스의 주요 파일 시스템으로 자리 잡았습니다.
  • 저널링 기능이 없으며, 파일 시스템의 손상 복구 시 시간이 많이 걸릴 수 있습니다.
  • 최대 파일 크기는 16GB, 파일 시스템 크기는 2TB로 EXT1보다 큰 파일과 파일 시스템을 지원합니다.
  • 동적 inode 할당 방식을 사용하여 디스크 공간을 효율적으로 관리할 수 있습니다.
  • 시스템 충돌 후 fsck (파일 시스템 검사)를 통해 복구하는 데 시간이 많이 소요될 수 있지만, 저널링이 없기 때문에 더 빠른 쓰기 성능을 제공했습니다.
  • 여전히 일부 임베디드 시스템이나 플래시 메모리 장치에서 사용될 수 있습니다.

EXT3 (Third Extended File System)

출시 연도: 2001년
개발자: Stephen Tweedie
특징:

  • EXT2의 개선판으로, 저널링 기능이 추가되어 데이터 손실 위험을 크게 줄였습니다.
  • 저널링을 통해 파일 시스템 충돌 후 복구 시간을 크게 단축할 수 있습니다.
  • EXT2와의 하위 호환성을 제공하며, EXT2 파일 시스템을 손쉽게 EXT3로 업그레이드할 수 있습니다.
  • 최대 파일 크기는 2TB, 파일 시스템 크기는 32TB로 확장되었습니다.
  • 3가지 저널링 모드를 지원: Writeback, Ordered, Journal.
    • Writeback: 메타데이터만 저널링하고 데이터는 저널링하지 않아 빠른 성능을 제공하지만, 데이터 손실의 위험이 있습니다.
    • Ordered: 데이터와 메타데이터의 순서를 유지하며, 데이터가 디스크에 기록된 후 메타데이터를 저널링합니다. 성능과 안정성 간의 균형을 제공합니다.
    • Journal: 데이터와 메타데이터를 모두 저널링하여 최고의 데이터 보호를 제공합니다.
  • 단점: 기본 구조는 EXT2와 유사하므로 대용량 파일 시스템에서의 성능 최적화는 제한적입니다.

EXT4 (Fourth Extended File System)

출시 연도: 2008년
개발자: Theodore Ts'o
특징:

  • EXT3의 후속 버전으로, 성능과 안정성이 크게 개선되었습니다.
  • 주요 기능으로는 Extents(연속적인 블록을 하나의 블록으로 묶어 관리), 지연 할당(디스크에 기록하기 전에 메모리에 데이터를 더 오래 보관하여 디스크 I/O를 최적화), 다중 블록 할당(multi-block allocation), 빠른 파일 시스템 검사, 그리고 저널링 체크섬이 포함됩니다.
  • 최대 파일 크기는 16TB, 파일 시스템 크기는 1EB(엑사바이트)로 EXT3보다 훨씬 큰 파일과 파일 시스템을 지원합니다.
  • 빠른 fsck, 저널링 데이터 무결성 보호(저널링 체크섬), 향상된 시간 스탬프(나노초 단위 지원) 등 다양한 개선 사항이 포함되었습니다.
  • 기존 EXT3에서 EXT4로의 마이그레이션이 가능하며, EXT4는 기본적으로 대부분의 리눅스 배포판에서 기본 파일 시스템으로 채택되었습니다.
  • Extents: 파일의 블록들을 연속적인 블록으로 관리하여 파일의 조각화 문제를 줄이고 성능을 향상시킵니다.
  • Scalable Block Group (FlexBG): 블록 그룹 간의 유연성을 높여 디스크 공간 사용 효율을 극대화합니다.

EXT4와 EXT3의 차이점

  • 성능: EXT4는 EXT3보다 더 높은 성능을 제공합니다. 특히 대용량 파일 처리와 관련하여 뛰어난 성능을 보입니다.
  • 저널링: EXT4는 저널링 체크섬을 통해 저널링의 무결성을 추가로 보호합니다.
  • 파일 크기 및 파일 시스템 크기: EXT4는 더 큰 파일과 파일 시스템을 지원합니다.

 

저널링의 작동 방식

  1. 저널에 기록: 파일 시스템에서 변경이 필요할 때, 먼저 그 변경 사항을 저널이라는 특별한 영역에 기록합니다. 이 저널은 파일 시스템의 변경 내역을 순차적으로 저장하는 로그 파일과 유사합니다.
  2. 변경 적용: 저널에 기록된 후에 실제로 파일 시스템에 변경이 적용됩니다. 만약 변경 도중에 시스템이 중단되면, 저널에 기록된 내용을 바탕으로 파일 시스템을 복구할 수 있습니다.
  3. 저널 삭제: 변경이 성공적으로 적용되면, 저널에서 해당 로그를 삭제하거나 무효화합니다.

저널링의 장점

  • 데이터 무결성 향상: 갑작스러운 전원 꺼짐이나 시스템 충돌 같은 예기치 않은 문제로 인해 파일 시스템이 손상될 위험을 줄입니다. 파일 시스템이 다시 시작될 때 저널을 검사하여 중단된 작업을 복구하거나 무효화합니다.
  • 빠른 복구 시간: 저널링 파일 시스템은 비저널링 파일 시스템보다 훨씬 빠르게 복구할 수 있습니다. 시스템 충돌 후 재부팅할 때 전체 파일 시스템을 검사할 필요 없이 저널만 검사하면 되기 때문입니다.
  • 안전한 데이터 쓰기: 저널에 데이터를 먼저 기록하고 나서 변경을 적용하는 방식이기 때문에 데이터 손실이 발생할 확률이 적습니다.

저널링의 유형

저널링에는 몇 가지 유형이 있으며, 파일 시스템에 따라 다르게 구현될 수 있습니다:

  1. Write-ahead logging (쓰기 전 기록): 변경을 파일 시스템에 적용하기 전에 모든 변경 사항을 저널에 기록합니다.
  2. Ordered journaling (순차적 저널링): 데이터 블록이 디스크에 기록되기 전에 저널에 메타데이터(파일 시스템 구조에 대한 정보)만 기록합니다.
  3. Data journaling (데이터 저널링): 메타데이터뿐만 아니라 실제 데이터 블록도 저널에 기록합니다. 가장 안전하지만 성능 오버헤드가 큽니다.

저널링이 사용되는 파일 시스템

리눅스에서는 Ext3, Ext4, XFS, JFS, Btrfs 등 많은 파일 시스템이 저널링을 지원합니다. 이러한 파일 시스템은 주로 서버나 중요한 데이터를 저장하는 시스템에서 데이터 무결성을 보장하기 위해 사용됩니다.

 

 

기타 파일 시스템

- Btrfs (B-Tree 파일 시스템)

출시 연도: 2007년
개발자: Oracle, Red Hat, Facebook, SUSE, Fujitsu 등
특징:

  • Copy-on-Write (CoW): Btrfs는 데이터 수정 시 원본 데이터를 보존하고 변경 사항을 새로운 위치에 기록하는 CoW 방식을 사용하여 데이터 무결성을 유지합니다.
  • 스냅샷: 스냅샷 기능을 통해 파일 시스템의 특정 시점 상태를 저장할 수 있습니다. 이는 백업과 복구 작업에 유용하며, 스냅샷 간의 차이만 저장하여 저장 공간을 절약합니다.
  • 서브볼륨: Btrfs는 서브볼륨(Subvolume)을 지원하여 하나의 파일 시스템 안에서 여러 개의 파일 시스템을 운영하는 것처럼 사용할 수 있습니다.
  • 압축: 데이터 압축 기능을 제공하여 디스크 공간을 절약할 수 있습니다.
  • RAID 지원: RAID 0, 1, 5, 6, 10과 같은 다양한 RAID 레벨을 지원합니다. 이는 파일 시스템 자체에서 소프트웨어 RAID를 관리할 수 있도록 합니다.
  • 디스크 관리: 온디스크 포맷이 고정되어 있지 않으며, 파일 시스템이 온라인 상태에서 디스크를 추가하거나 제거할 수 있습니다.

- ZFS (Zettabyte File System)

출시 연도: 2005년
개발자: Sun Microsystems (현재 Oracle 소유)
특징:

  • 고용량 지원: ZFS는 매우 큰 데이터 세트를 처리할 수 있도록 설계되었으며, 이름에서 알 수 있듯이 제타바이트(Zettabyte) 단위의 데이터를 관리할 수 있습니다.
  • Copy-on-Write (CoW): Btrfs와 마찬가지로 CoW 방식을 사용하여 데이터 무결성을 보장합니다.
  • 스냅샷 및 복제: ZFS는 효율적인 스냅샷과 복제 기능을 제공하여 데이터 복구 및 백업에 유리합니다.
  • 풀링 (Pooling): ZFS는 기존의 디스크 파티셔닝 개념을 제거하고, 모든 디스크를 하나의 스토리지 풀로 관리합니다. 이 풀에서 자유롭게 저장 공간을 할당할 수 있습니다.
  • 데이터 무결성: 데이터가 디스크에 쓰여질 때마다 체크섬을 생성하여 데이터 손상을 탐지하고, 필요 시 자동으로 복구합니다.
  • RAID-Z: ZFS는 RAID-Z라는 고유의 RAID 방식을 사용하여 RAID 5에서 발생할 수 있는 쓰기 구멍 문제를 해결합니다.
  • 데이터 압축 및 중복 제거: ZFS는 실시간 데이터 압축과 중복 제거 기능을 제공하여 스토리지 효율성을 극대화합니다.

- ReiserFS

출시 연도: 2001년
개발자: Hans Reiser 및 Namesys
특징:

  • 저널링: ReiserFS는 저널링 파일 시스템으로, 파일 시스템 충돌 후 빠른 복구를 지원합니다.
  • 작은 파일에 최적화: ReiserFS는 특히 작은 파일의 성능이 우수하며, 작은 파일을 효율적으로 저장할 수 있는 구조를 가지고 있습니다.
  • B+ 트리 구조: 파일 및 디렉터리를 B+ 트리 구조로 관리하여 빠른 탐색 및 접근을 지원합니다.
  • 동적 inode 할당: 디스크 공간을 보다 효율적으로 사용할 수 있게 합니다.
  • Reiser4: ReiserFS의 후속 버전으로, 더 나은 성능과 기능을 제공하지만, 리눅스 커널에 공식적으로 포함되지 않아 제한적으로 사용됩니다.

- XFS

출시 연도: 1994년
개발자: Silicon Graphics (SGI)
특징:

  • 고성능: XFS는 대용량 파일과 고성능이 요구되는 환경에 적합하도록 설계되었습니다. 특히 병렬 I/O 작업에서 뛰어난 성능을 보입니다.
  • 저널링: XFS는 저널링을 사용하여 데이터 무결성을 유지하며, 특히 메타데이터의 저널링에 중점을 둡니다.
  • 확장성: XFS는 매우 큰 파일 시스템과 파일을 지원하며, 파일 시스템 크기는 8EB(엑사바이트), 파일 크기는 8EB까지 지원합니다.
  • 동적 디스크 확장: XFS는 파일 시스템을 온라인 상태에서 동적으로 확장할 수 있습니다.
  • 데이터 스트라이핑: XFS는 소프트웨어 RAID와 함께 사용될 때 I/O 성능을 극대화할 수 있는 데이터 스트라이핑 기능을 제공합니다.
  • 디스크 조각화 방지: XFS는 파일 조각화를 줄이기 위한 다양한 최적화 기능을 제공합니다.

- JFS (Journaled File System)

출시 연도: 1990년대
개발자: IBM
특징:

  • 저널링: JFS는 저널링 파일 시스템으로, 메타데이터의 저널링을 통해 데이터 무결성을 유지합니다.
  • 고성능: JFS는 낮은 CPU 사용률과 빠른 파일 시스템 복구 시간을 제공하며, 대용량 파일 시스템에서 효율적입니다.
  • 확장성: JFS는 최대 4PB(페타바이트)까지 파일 시스템을 지원하며, 파일 크기도 최대 4PB까지 지원합니다.
  • 디스크 조각화 방지: JFS는 디스크 조각화 방지 기능이 우수하여, 파일 시스템 성능을 장기간 유지할 수 있습니다.
  • 빠른 복구: 시스템 충돌 후 빠른 복구가 가능하여, 서버 환경에서 안정적으로 사용됩니다.
  • 저자원 사용: CPU와 메모리 자원을 적게 사용하여, 리소스가 제한된 환경에서도 효과적으로 운영될 수 있습니다.

 

결론

이들 파일 시스템은 각각 고유한 특성과 강점을 가지고 있어, 특정 용도와 환경에 따라 적합한 파일 시스템을 선택할 수 있습니다.

예를 들어, 고성능 서버에서는 XFS나 ZFS가 많이 사용되며, 데이터 무결성이 중요할 경우 Btrfs나 ZFS가 선택될 수 있습니다. 작은 파일 처리에 최적화된 ReiserFS, 대규모 스토리지에 강한 JFS 등 다양한 선택지가 존재합니다. 

반응형