Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5장. ext4 파일 시스템

ext4 파일 시스템은 ext3 파일 시스템의 확장 가능한 확장입니다. Red Hat Enterprise Linux 7에서는 파일 시스템만 16TB까지 지원하는 Red Hat Enterprise Linux 6과 달리 최대 16TB의 개별 파일 크기 16테라바이트 및 파일 시스템을 최대 50테라바이트까지 지원할 수 있습니다. 또한 무제한의 하위 디렉토리( ext3 파일 시스템은 최대 32,000만 지원)를 지원하지만 링크 수가 65,000을 초과하면 더 이상 증가하지 않습니다. bigalloc 기능은 현재 지원되지 않습니다.
참고
fsck 를 수행하려면 ext3에서 ext4 볼륨을 분리해야 합니다. 자세한 내용은 4장. ext3 파일 시스템 에서 참조하십시오.
주요 기능
ext4 파일 시스템은 ext2 및 ext3에서 사용하는 기존 블록 매핑 체계와는 반대로 확장 기능을 사용하므로 대용량 파일을 사용할 때 성능이 향상되고 대용량 파일의 메타데이터 오버헤드가 감소합니다. 또한 ext4는 할당되지 않은 블록 그룹 및 inode 테이블 섹션에 레이블을 지정하여 파일 시스템 검사 중에 건너뛸 수 있습니다. 이렇게 하면 파일 시스템의 크기가 증가함에 따라 파일 시스템 점검이 빨라집니다.
할당 기능
ext4 파일 시스템에는 다음과 같은 할당 체계가 있습니다.
  • 영구 사전 할당
  • 할당량 지연
  • 다중 블록 할당
  • 스트라이프 인식 할당
지연된 할당 및 기타 성능 최적화로 인해 ext4의 디스크에 파일 작성 동작이 ext3과 다릅니다. ext4에서는 프로그램이 파일 시스템에 쓸 때 프로그램이 나중에 fsync() 호출을 발행하지 않는 한 디스크상의 것이 보장되지 않습니다.
기본적으로 ext3는 fsync() 를 사용하지 않고도 새로 생성된 파일을 즉시 디스크에 적용합니다. 이 동작은 fsync() 를 사용하지 않은 프로그램의 버그로 인해 기록된 데이터가 디스크에 있는지 확인합니다. 반면 ext4 파일 시스템은 종종 몇 초 동안 디스크에 변경 사항을 쓸 때까지 대기하여 ext3보다 더 나은 디스크 성능을 위해 쓰기를 결합하고 재정렬할 수 있습니다.
주의
ext3과 달리 ext4 파일 시스템은 트랜잭션 커밋 시 데이터를 디스크에 강제 적용하지 않습니다. 따라서 버퍼링된 쓰기가 디스크에 플러시되는 데 시간이 더 오래 걸립니다. 모든 파일 시스템과 마찬가지로 fsync() 와 같은 데이터 무결성 호출을 사용하여 데이터가 영구 스토리지에 작성되었는지 확인합니다.
기타 ext4 기능
ext4 파일 시스템은 다음과 같은 기능도 지원합니다.
  • 확장 속성 (xattr) - 이를 통해 시스템은 파일당 여러 개의 추가 이름 및 값 쌍을 연결할 수 있습니다.
  • 할당량 저널링 - 충돌 후 긴 할당량 일관성 검사가 필요하지 않습니다.
    참고
    ext4에서 지원되는 유일한 저널링 모드는 data=ordered (기본값)입니다.
  • 하위 시간 타임스탬프 - 이 명령은 타임스탬프를 서브초에 제공합니다.

5.1. ext4 파일 시스템 생성

  • ext4 파일 시스템을 생성하려면 다음 명령을 사용합니다.
    # mkfs.ext4 block_device
    • block_device 를 블록 장치의 경로로 교체합니다. 예를 들어 /dev/sdb1,/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-59453ceb2a, /dev/my-volgroup/my-lv.
    • 일반적으로 기본 옵션은 대부분의 사용 시나리오에 적합합니다.

예 5.1. mkfs.ext4 명령 출력

다음은 결과 파일 시스템 기하 도형 및 기능을 표시하는 이 명령의 샘플 출력입니다.
~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245280 inodes, 979456 blocks
48972 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
중요
tune2fs 를 사용하여 ext3 파일 시스템에서 특정 ext4 기능을 활성화할 수 있습니다. 그러나 이러한 방식으로 tune2fs 를 사용하는 것은 완전히 테스트되지 않았으므로 Red Hat Enterprise Linux 7에서는 지원되지 않습니다. 따라서 Red Hat은 tune2fs 를 사용하여 변환되거나 마운트된 ext3 파일 시스템의 일관된 성능과 예측 가능한 동작을 보장할 수 없습니다.

사용되지 않는 블록 장치

스트라이핑된 블록 장치(예: RAID5 배열)의 경우 파일 시스템 생성 시 스트라이프 지오메트리를 지정할 수 있습니다. 적절한 스트라이프 지오메트리를 사용하면 ext4 파일 시스템의 성능이 크게 향상됩니다.
LVM 또는 MD 볼륨에서 파일 시스템을 만들 때 mkfs.ext4 는 최적의 지오메트리를 선택합니다. 이는 기하 도형 정보를 운영 체제에 내보내는 일부 하드웨어 RAID에서 사실일 수도 있습니다.
스트라이프 지오메트리를 지정하려면 다음 하위 옵션과 함께 mkfs.ext4 (즉, 확장 파일 시스템 옵션)의 -E 옵션을 사용합니다.
stride=value
RAID 청크 크기를 지정합니다.
stripe-width=value
RAID 장치의 데이터 디스크 수 또는 스트라이프의 스트라이프 단위 수를 지정합니다.
두 하위 옵션 모두 파일 시스템 블록 단위로 값을 지정해야 합니다. 예를 들어 4k 블록 파일 시스템에서 64k stride (즉, 16 x 4096)를 가진 파일 시스템을 만들려면 다음 명령을 사용하십시오.
# mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device

UUID 구성

파일 시스템에 대해 특정 UUID를 설정할 수도 있습니다. 파일 시스템을 생성할 때 UUID를 지정하려면 -U 옵션을 사용합니다.
# mkfs.ext4 -U UUID device
  • UUID 를 설정할 UUID로 바꿉니다(예: 7cd65de3-e0be-41d9-b66d-96d749c02da7 ).
  • UUID를 추가할 수 있도록 device 를 ext4 파일 시스템의 경로로 바꿉니다(예: /dev/sda8 ).
기존 파일 시스템의 UUID를 변경하려면 다음을 참조하십시오. 25.8.3.2절. “영구 이름 지정 속성 수정”

추가 리소스

ext4 파일 시스템 생성에 대한 자세한 내용은 다음을 참조하십시오.
  • mkfs.ext4(8) 도움말 페이지