본문 바로가기
Linux

[File System] ext (EXTended file system)

by Skogkatt의 개인 블로그 2019. 7. 13.
반응형

ext (EXTended file system)

  • 1992년 4월에 Stephen Tweedie가 리눅스에서 사용하기 위해 만든 파일 시스템으로 Linux 0.96c에 처음 추가되었다.
  • MFS(MINIX File System)의 두 가지 주요 문제[각주:1]을 해결했다.
  • 타임 스탬프, 아이노드 수정, 데이터 수정, 암호화를 지원하지 않는다.
  • 프리 블록과 아이노드의 트랙을 다루기 위해 연결 리스트를 사용한다.[각주:2]
  • 최대 볼륨 크기 2GB / 최대 파일 이름 길이 255byte

ext2

  • 1993년 1월에 Rémy Card가 ext의 문제점을 해결하기 위해 UFS와 xifas의 아이디어를 통합해 개발하였다.
  • 다음 버전에서 사용할 많은 디스크상 데이터의 남은 공간에 대한 확장성을 염두에 두고 설계되었다.
  • ext2와 완전히 호환 가능한 저널링 시스템인 ext3로 대신할 때까지 데비안, 레드햇 리눅스를 포함한 몇몇 리눅스 배포판의 기본 파일시스템이었다.
  • 수정(mtime), 속성 수정(ctime), 접근(atime) 세가지의 타임스탬프를 지원한다.
  • 1초의 정밀도로 1901-12-14 부터 2038-01-18까지 표현 가능하다.
  • 분리 접근과, 아이노드 수정[각주:3], 데이터 수정을 지원하고 암호화는 지원하지 않는다.
  • 최대 볼륨 크기 2TB ~ 32TB / 최대 파일크기 16GB ~ 2TB / 최대 파일 이름 길이 255byte 
  • 시스템이 갑자기 다운된 경우, 재부팅 시에 e2fsck라는 ext2 파일 시스템 검사 프로그램을 무조건 전체 파일 시스템을 대상으로 실행하여야만 했으며, 이를 거부할 수도 없고, 취소할 수도 없고, 건너 뛸 수도 없고, 그렇다고 검사 시간을 단축할 수도 없다. 그리고 이 검사 과정 중에는 아무것도 할 수 없다.

ext3

  • 2001년 11월에 Stephen Tweedie가 만들어 Linux 커널 2.4.15에 처음 적용되었다.
  • ext2에서 자료 삭제나 손실 없이 ext3으로 변경할 수 있을 정도로 뛰어난 호환성을 가진다.
    대부분의 기능이 ext2와 같다.
  • 이전 ext2에서의 e2fsck 문제가 해결되었다.
  • 저널링 파일 시스템으로 Journal(리스크 최소), Ordered(리스크 중간), Writeback(리스크 최고)로 나눠진다.
  • JFS, ReiserFS, XFS 등에 비해 낮은 처리 속력을 가지고 ext2와 호환을 주 목표로 하였기 때문에 당시 최신 파일 시스템 기능들이 부족하다.
  • 파일 시스템 레벨에서 사용할 수 있는 온라인 ext3 조각 모음 기능이 없다.[각주:4]
  • Checksum 검사를 하지 않는다. 
  • 최대 볼륨 크기 2TB ~ 32TB / 최대 파일크기 16GB ~ 2TB / 최대 파일 이름 길이 255byte / 서브 디렉토리 최대 수 31998[각주:5]

ext4

  • 저널링 파일 시스템 중 하나로 현재 리눅스 파일 시스템의 표준이다.
  • Mingming Cao, Andreas Dilger, Alex Tomas, Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh와 그 외 여러 사람에 의해 ext3를 바탕으로 개발되었다[각주:6]

ext4의 대표적 특징

  • Large File System
    최대 1엑사바이트의 볼륨과 최대 16테비바이트의 파일을 지원한다.
  • Extent
    ext2와 ext3에서 쓰이던 블록 매핑(block mapping) 방식을 대체하는 것이다.
    근접한 물리적 블록을 하나로 묶어버려 대용량 파일 접근 성능을 향상시키고 단편화를 줄여 성능 향상하였다.
  • 하위 호환성
    ext3과 ext2에 대한 하위 호환성이 있어서 ext3과 ext2 파일 시스템을 ext4로 마운트하는 것이 가능하다.
  • allocate-on-flush (also called delayed allocation)
    데이터가 디스크에 쓰여지기도 전에 블록을 할당하는 다른 파일 시스템과 다르게 데이터가 디스크에 쓰여지기 전까지 블록 할당을 지연한다.
    따라서 실제 파일 크기에 기반하여 블록 할당을 결정하므로 하나의 파일에 대한 블록이 여러 곳으로 분산되는 현상을 막는다.
    이는 디스크 이동을 최소화 하여 성능을 향상시킨다.
  • Umlimited sub directories
    ext3에서 하위 디렉터리의 수가 32,000개로 제한되어 있는 것을 64,000개로 늘렸다
  • Journal checksumming
    파일 시스템이 깨진 후에 일부 항목이 잘못되었거나 최초 마운트 이후 비순차적이거나 유효하지 않은 일부 항목들을 알 수 있도록 한다.
    이로 인해 문제가 발생하는 특정 저널 항목이나 일부 엔트리의 롤백을 피하고 더 나아가 파일시스템을 손상시키는 것을 방지한다.
  • Fast filesystem checks
    ext3에서 fsck를 할때 전체 파일시스템(삭제되거나 빈 파일까지 포함해서)을 확인한다.
    그에 반해 ext4는 할당되지 않은 블록과 inode 테이블의 섹션을 표시하므로 fsck를 완전히 건너 뛸 수 있다.
  • Improved timestamps
    나노초 단위로 시간 스탬프를 계산하여 사용 가능한 범주를 매우 확장하였다.
    또한 표현 가능한 날짜가 2038년에서 2446년으로 확장되었다.
  • Online defragmentation
    Ext4는 온라인, 커널 모드, 파일 시스템 인식, 블록 및 확장 수준의 조각 모음 유틸리티 인 e4defrag를 사용해 온라인 조각 모음을 실시한다.

 

참고링크

오픈소스컨설팅 기술님의 블로그 - https://tech.osci.kr/linux/2018/07/31/linux-filesystem/

  1. 64MB 최대 파티션 크기, 파일 이름 14자 제한 [본문으로]
  2. 사용하면 사용할수록 리스트가 엉키고 파일 시스템이 조각화된다는 큰 단점이 존재한다. [본문으로]
  3. 모든 파일이나 디렉토리는 아이노드로 표현된다. 아이노드는 크기, 권한, 소유권 그리고 파일이나 디렉토리의 디스크 위치에 대한 데이터를 포함한다. [본문으로]
  4. e2defrag라고 하는 오프라인 ext2 조각 모음기가 있지만 ext3 파일 시스템은 ext2로 먼저 재변환되어야 한다. e2defrag는 데이터를 손상시킬 수 있다. [본문으로]
  5. inode가 32000개의 링크를 지원하기 때문. 2개는 현재폴더와 상위 폴더 [본문으로]
  6. 2006년 6월 28일 ext3의 핵심 개발자 Theodore Ts'o가 새로운 ext개발 발표, 2006년 10월 10일 불안정판 발표, 2008년 10월 11일 ext4는 안정화된 코드로 리눅스 2.6.28 소스 코드 저장소에 추가, 2008년 12월 25일 리눅스 커널 2.6.28과 함께 공개 [본문으로]
반응형

'Linux' 카테고리의 다른 글

iptables  (0) 2020.03.31
[Kali Linux] VirtualBox에 Kali Linux 설치  (0) 2020.02.27
LILO(Linux Loader)  (0) 2019.10.11
Linux Mint  (0) 2019.07.14
리눅스 디렉터리  (0) 2019.07.07

댓글