Linux file system
리눅스 파일 시스템은 컴퓨터 하드 디스크나 저장 장치에 저장된 데이터나 파일들의 모음으로, 파일 시스템이 없으면 파일들은 마치 보이지 않는 것처럼 작동하여 많은 문제를 야기할 수 있다. 리눅스에서는 다양한 파일 시스템을 지원한다.
리눅스에서는 ext2, ext3, ext4, JFS, ReiserFS, XFS, Btrfs 등 다양한 파일 시스템이 사용된다. 이들 파일 시스템은 파일의 이름, 저장 방식, 검색 방법 등을 정의하며 파일 시스템은 파일들을 개별적인 조각으로 분리하고, 이러한 파일에 대한 데이터(파일 이름, 권한 등)를 저장하는 방법을 제공한다.
리눅스 파일 시스템은 데이터와/또는 파일들이 컴퓨터의 하드디스크나 저장장치에 저장되어 있는 구조다. 이 파일 시스템은 컴퓨터에서 파일의 위치와 위치를 파악하는 데 필수적이다. 만약 이 파일 시스템이 없으면 파일들은 마치 보이지 않는 것처럼 동작하여 많은 문제를 일으키게 된다.
또한, 리눅스 파일 시스템은 하드디스크나 파티션에 있는 파일들의 구조화된 집합이다. 파티션은 메모리의 세그먼트로, 특정 데이터를 포함하고 있다. 보통 각 파티션에는 파일 시스템이 들어 있다.
리눅스 파일 시스템은 총 3개의 계층으로 이루어져 있다. 가장 위에는 논리 파일 시스템이 있으며, 이것은 사용자 애플리케이션과 상호작용하여 열기, 읽기, 닫기 등의 작업을 수행하고 하위 계층으로 요청을 전달한다. 가상 파일 시스템은 여러 인스턴스의 물리 파일 시스템이 동시에 실행될 수 있도록 한다.
Ext2
Ext2(확장 파일 시스템 2)는 Linux 운영 체제에서 사용되는 파일 시스템이다. 1993년에 도입되었으며 이전 버전인 확장 파일 시스템(Ext)의 한계를 극복하도록 설계되었다.
다음은 Ext2의 몇 가지 주요 특징이다.
- Ext2는 Linux용 최초의 상용 등급 파일 시스템이었다.
- Ext 파일 시스템의 대체품으로 Rémy Card에서 개발했다.
- 처음에는 파일 시스템의 기능을 확장하면서 파일 시스템의 내부 구조를 유지하도록 설계되었다.
- 최대 개별 파일 크기는 최대 2TB가 될 수 있으며 파일 시스템 크기는 블록 크기에 따라 4TB에서 32TB까지 가능하다.
- 벤치마킹 기준으로 사용될 정도로 속도가 빠르다.
- 최대 파일 이름 길이는 255바이트를 지원하지만 파일 이름 길이는 문자로 제한되지 않는다.
- 시스템에 치명적인 문제를 일으킬 수 있는 저널링을 지원하지 않는다.
- 플래시 드라이브 및 USB 장치 와 함께 사용하는 것이 좋다.
- 특히 중소형 파일 에 대해 탁월한 파일 액세스 성능을 제공한다.
Ext3
Ext3(Third Extended File System)은 2001년 11월에 도입된 Linux용 저널링 파일 시스템이다. 저널링 지원을 추가하는 Ext2 파일 시스템의 확장으로, 향상된 안정성을 제공하고 불결한 종료 후 파일 시스템을 확인할 필요가 없습니다. Ext3는 Stephen Tweedie 에 의해 설계되었으며 오늘날에도 여전히 사용되고 있다.
Ext3의 주요 이점 중 하나는 파일 시스템에 대한 모든 변경 사항을 추적하는 저널링 기능이다. 이는 안정성을 향상시키고 파일 시스템 손상 가능성을 줄이는 데 도움이 된다.
Ext3의 또 다른 장점은 데이터를 백업 및 복원할 필요 없이 Ext2에서 업그레이드할 수 있다는 것이다.Ext2와 마찬가지로 Ext3도 동일한 inode 테이블 구조를 사용하고 최대 파일 크기 2TiB를 지원한다. 또한 최대 파일 이름 길이를 255바이트로 제한한다.
파일 시스템은 2001년에 Linux 커널에 추가되었으며 최근까지 거의 모든 Linux 배포판에서 사용되는 기본 파일 시스템이었다. 전반적으로 Ext3는 이전 버전인 Ext2보다 데이터 손실 및 손상에 대해 더 나은 보호 기능을 제공하는 안정적이고 효율적인 파일 시스템이다.
Ext4
Ext4는 리눅스에서 사용되는 파일 시스템 중 하나다. 이전 버전인 ext3과 비교하여 성능과 안정성이 개선되었다. Ext4는 파일을 여러 개의 블록 그룹으로 분할하여 저장한다.
각 블록 그룹은 SuperBlock, File descriptor table, data bitmap, inode bitmap, inode table, data 영역으로 구성된다. 이를 통해 파일을 빠르게 찾고, 분산시켜 저장함으로써 파일 시스템의 성능이 향상되었다.
또한, Ext4는 데이터 일치성을 위해 사용되는 저널링 기능을 제공한다. 이 기능은 시스템이 갑자기 멈추거나 정전 등으로 꺼지는 경우에도 데이터의 복구가 가능하도록 한다.
Ext4는 extent라는 개념을 도입하여 파일을 더욱 효율적으로 저장한다. extent는 연속적으로 할당된 블록에 대해 단일 블록을 매핑함으로써, 파일에 대한 접근을 빠르게 만든다. 이를 통해 큰 사이즈의 파일을 삭제하는 경우 시간을 단축할 수 있다.
또한, 지연된 할당 기능을 제공한다. 이 기능은 디스크 공간 할당을 마지막 순간까지 지연시켜 성능을 개선한다. 이 외에도 Ext4는 기존 파일 시스템에 비해 다음과 같은 특징이 있다.
- 체크섬을 가진 사용하지 않는 노드를 저장하여 파일 시스템 점검 속도가 빨라짐
- 파일 시스템이 포맷된 후 마운트를 해도 컴퓨터가 리부팅 될 때마다 마운트가 해제되는 문제를 /etc/fstab에 등록함으로써 해결 가능
위와 같은 특징들을 통해 Ext4는 파일 시스템의 성능과 안정성을 크게 개선시켰다.
XFS
XFS는 Silicon Graphics에서 개발한 고성능 파일 시스템으로, 64비트 파일 시스템이며 대용량 파일을 다루는 데 최적화되어 있다. XFS는 저널링 기법을 사용하여 파일 수에 관계없이 예상치 못한 상황으로부터 신속하게 복구하여 재시작이 가능하며, 읽기/쓰기의 신속한 트랜잭션을 제공한다.
또한 XFS는 파일시스템의 확장성이 높아 동시 다발적인 I/O 요청 처리와 같은 작업에 유리하다. XFS는 리눅스 커널에 2001년에 포함되었으며, RHEL 7부터는 Default 파일 시스템으로 지정되어 있다. 그러나 축소가 불가능한 한계를 가지고 있으며, 사용 시 마운트 옵션 및 튜닝에 따라 성능이 크게 차이날 수 있다.
다음은 XFS의 몇가지 특징을 정리했다.
- 저널링(Journaling) 기능 XFS는 저널링 기능을 지원하여, 파일 수에 상관없이 예기치 못한 상황에서도 빠르게 복구할 수 있다. 기존의 파일 시스템에서는 파일 시스템 체크 프로그램을 오랜 시간 동안 수행하여 복구했어야 했지만, XFS는 이러한 체크 프로그램을 사용하지 않아도 된다. 이를 통해 데이터 손실 가능성을 줄일 수 있다.
- 익스텐트 기반 할당(Extent-based Allocation) XFS는 익스텐트 기반 할당을 사용하여, 메타데이터가 소비되는 공간과 조각화를 최소화하며, 대용량 파일의 성능을 향상시킨다. 지연 할당(Lazy Allocation)과 사전 할당(Pre-allocation) 또한 지원하여, 성능 저하를 최소화한다.
- 빠른 복구 기능 XFS는 메타데이터 저널링을 지원하므로, 빠른 복구 기능을 제공한다. 또한, 마운트된 상태에서 조각 모음과 확장이 가능하며, 특정 유틸리티의 백업과 복원도 지원한다.
- 성능 향상 XFS는 트랜잭션으로 인한 성능 저하를 최소화하는 기능을 제공한다. 읽기/쓰기 트랜잭션을 최소화하며, 지연 할당과 사전 할당을 통해 단편화를 줄이고 성능을 향상시킨다.
- 확장성 XFS는 파일 시스템에서 사용 가능한 공간에 의해서만 파일 수가 제한되며, 마운트된 상태에서 확장이 가능하다.
- 유틸리티 지원 Red Hat Enterprise Linux 6에서는 XFS에 특정 유틸리티의 백업 및 복원을 지원한다.
Btrfs
Btrfs는 리눅스 커널에서 사용되는 고급 파일 시스템 중 하나다. 이름은 B-Tree File System의 약어인데, 발음은 butter나 butter eff ess 등으로 불린다.
Btrfs는 주요한 기능으로 스냅샷, 미러링, 스트리핑, 압축, 데이터 암호화, 그리고 대용량 서버에서 사용하기 위해 설계된 파일 시스템으로, 동적 아이노드 할당, 파일 크기 제한 등 많은 기능을 가지고 있다.
Btrfs는 내장 암호화 기능은 없지만, 암호화된 파티션을 만들고 그 위에 Btrfs를 사용할 수 있다. 또는 EncFS나 TrueCrypt와 같은 도구를 사용할 수도 있다.
Btrfs는 기능이 많아서 일반적으로 다른 파일 시스템에 비해 더 많은 시스템 리소스를 소비한다. 따라서 중요한 자료를 저장하기 위한 용도로는 아직 적합하지 않는다. 또한 P2P같은 용도로도 적합하지 않는다.
Btrfs는 스냅샷과 서브볼륨을 지원하는 등 유연한 기능을 가지고 있다. 그러나 Btrfs는 아직 완전하지 않은 파일 시스템으로 분류된다. 따라서 안정성과 신뢰성을 고려할 때, 현재는 여전히 EXT4와 같은 파일 시스템을 사용하는 것이 좋다.
최근에는 Btrfs가 점점 더 안정적이고 신뢰성 있는 파일 시스템으로 개선되고 있다. Btrfs는 리눅스 커널에 이미 포함되어 있으며, 일부 리눅스 배포판에서는 기본 파일 시스템으로 설정되어 있다.
JFS, ReiserFS는 거의 사용되지 않거나 개발이 중단되어 더 이상 사용하는 것이 권장되지 않는다.
참고 문헌
[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18]
'Linux > Linux 이론' 카테고리의 다른 글
[Linux 이론] SSH(Secure SHell) (0) | 2023.03.14 |
---|---|
[Linux 이론] Binary란? (2) | 2023.03.13 |
[Linux 이론] 서버와 클라이언트(+ DHCP) (2) | 2023.03.11 |
[Linux 이론] 다운로드 명령어 (yum, dnf) (0) | 2023.03.11 |
[Linux 이론] 사용자와 그룹 정보 분석하기 (0) | 2023.03.08 |