Notice
Recent Posts
Recent Comments
05-17 21:28
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Linux master 1급 - 리눅스의 다양한 파일 시스템 본문

OS/Linux

Linux master 1급 - 리눅스의 다양한 파일 시스템

알 수 없는 사용자 2023. 2. 4. 15:33
더보기

 리눅스 마스터 1급의 이론서를 공부하면서 정리한 내용들을 적으려고 한다. 방학 동안 필기만 합격을 해놓고, 1학기의 강의를 들으면서 실기를 이번년도 상반기에 딸 것이다. 정리한 내용이 다른 분들에게도 도움이 되었으면 한다. 또한, 2급을 따지 않은 입장에서 쓴 글들은 정말 논리적으로 비약적이고, 높은 확률로 정확하지 않을 수 있으므로, 이를 보는 다른 사람들은 해당 글들을 비판하면서 볼 수 있었으면 좋겠습니다.

 리눅스와 관련된 다양한 파일 시스템에 대해 알아본다. ext, btrFS, ZFS, XFS, OCFS 등만 자세히 보고, 다른 것들은 있다는 것만 알아두자.

 

리눅스 로컬 파일 시스템 (Local Filesystems)

 리눅스 또한 운영체제이기에 내부에 파일 시스템이 포함되어 있어야 디스크의 파티션 노테이션(?)을 설정할 수 있으며, 읽을 수 있다. 로컬 파일 시스템은 그러한 파일 시스템에 대한 것들이다.

ext

파일 접근에 대한 타임스탬프 기능이 있었으며, 단점으로는 아이노드 수정 기능의 부재, 조각화 문제가 있었음.

 

ext2

 ext의 한계를 극복하기 위해, 아이노드 수정 기능, 조각화 이슈를 해결한 버전이며, 파일 시스템에 데이터를 쓰는 동안 전원이 끊어지면 데이터가 제대로 저장되지 않는 문제가 있으며, fsck 명령어를 통해 복구가 가능하지만, 시간이 매우 오래 걸리는게 한계다. 파일 시스템의 크기는 블록 단위에 따라 2TiB ~ 32TiB이며, 파일 크기도 블록 단위에 따라 16GiB~2GiB이다.

 

ext3

 커널 2.4.15버전부터 포함되었으며 저널링 파일 시스템이다. ext2의 한계인 데이터 쓰는 도중 전원 오프의 데이터 손실에 대해 해결하기 위해 로그를 통한 파일 시스템을 복구하는 저널링 기술을 채용했다. HTree 인덱싱 기능, ACL을 통한 접근 제어 기능이 있다. (단점으로는 조각모음 프로그램이 없음) 최대 파일이나 파일 시스템의 크기는 ext2와 동일하다.

 

ext4

 ext2, ext3을 전부 호환하면서 기능을 확장하였고, 48비트 블록 주소 지정을 통해 1EiB까지의 디스크 볼륨과 16TiB까지의 파일을 지원한다.

  • 단편화 현상을 줄이기 위해 ext2, 3에서는 간접 블록 매핑을 사용했지만, Extents 방식을 사용한다.
  • ext2, ext3 → ext4 마운트 되지만 ext4 → ext3은 마운트 될 수 없다.
  • 저널 체크섬 기능 제공
  • ext3의 32,000 개의 서브 디렉토리 제약을 극복하고 64,000 개의 서브 디렉토리 제공
  • XFS, ZFS, btrFS, Reiser4와 같은 현대 파일 시스템에서 제공하는 지연된 할당 기능(Delayed allocation)을 제공한다. 이는 프로세스가 write를 호출하더라도 즉시 디스크에 블록을 할당하지 않고 캐시에 보관하는 것으로 디스크에 대한 I/O를 최소화 및 mballoc 할당자를 통해 한 번에 여러 블록을 할당.
  • 나노초 단위의 파일 스탬프 제공

 

btrFS

 B-Tree 파일 시스템이며, 전체 파일 시스템이 아닌 특정 파일, 볼륨, 하위 볼륨의 스냅샷 찍기 기능을 제공.

  • 저렴한 디스크의 RAID 제공.
  • 역참조는 파일 시스템 개체에 I/O 오류를 매핑.
  • 자동 압축 기능 제공.
  • ext4와 동일하게 체크섬 기능 제공

 

ZFS

 유닉스의 파일 시스템을 대체하기 위해서 개발된 파일 시스템이다. Solaris 10에서 소개됨.

  • 블록 수준 암호화, 데이터 손상 탐지 기능, 자동 손상 복구, 신속한 비동기 증분 복제, 인라인 압축 등 많은 기능 제공
  • 단일 파일 시스템에 여러 개의 개별 저장 장치를 처리하는 볼륨 매니저 역할 수행

 

Reiserfs

 커널 2.4.1에 포함된 저널링 파일 시스템

 

XFS

 실리콘 그래픽스가 만든 고성능 64비트 저널링 파일 시스템으로 커널 2.4.20에 포함됨.

  • 최대 파일 시스템의 크기는 8EiB -1 이지만 32비트 리눅스 시스템의 경우 16EiB로 제한
  • Extents 기반 할당을 사용하여 조각화를 줄임.
  • 사전 할당(explicit pre-allocation) 및 지연 할당(delayed allocation) 등과 같은 다양한 할당 방법을 제공
  • 마운트가 활성화되어 있는 상태에서도 조각 모음이 가능하고 볼륨의 확장이 가능
  • XFS는 b-트리 알고리즘을 사용하여 모든 데이터를 인덱스하여 우수한 I/O 확장성을 제공

 

JFS

IBM에 의해 개발된 64bit 저널링 파일 시스템으로 커널 2.5.24에 포함됨.

 

클러스터 파일 시스템 (Clustered Filesystems)

 Raw Partitions

 파일 시스템이 설정되어 있지 않은 상태를 의미하며, 운영체제의 버퍼캐시를 사용하지 않으므로 고성능 입출력이 가능하다. 파일 시스템을 이용하지 않기 때문에 오버헤드가 없고, 숙련된 관리자의 관리가 필요하다.

 

Oracle Cluster FilesSystem(OCFS)

Raw Partition의 다루기 어려운 문제를 해결하면서 RAC(Real Application Cluster)의 사용 목적을 위해 설계된 파일. Raw Partition 보다 약 2~5% 정도 느리며, 다음 버전인 OCFS2는 POSIX를 호환하는 범용 클러스터 파일 시스템으로 개발됨.

 

기타 리눅스 파일 시스템

minix

 교육 목적으로 개발된 운영체제이다. 파티션 사이즈가 64MB 제한이 있으며, 파일 이름도 14자까지 지원한다. 단일 타임스탬프 사용

xiafs

 Minix 파일 시스템의 기초가 되었고, 프랭크 시아(Frank Xia)가 개발한 리눅스 커널을 위한 파일 시스템이다.

vfat

 마이크로소프트의 FAT32 파일 시스템 호환을 목적으로 개발한 파일 시스템

isofs

 ISO 기준을 따르는 표준 CD-ROM파일 시스템

nfs

 네트워크 상에서 파일 시스템을 공유하기 위한 파일 시스템

proc

 프로세스 등 커널의 정보를 표현하는 리눅스의 가상 파일 시스템

smb ⇒ CIFS

 smb 프로토콜을 지원하는 네트워크 파일 시스템으로 최근 CIFS로 발전됨.

Comments