7장. 파일 시스템
7.1. 파일 시스템 튜닝 시 고려 사항
7.1.1. 포맷 옵션
블록 크기는 mkfs
실행 시 선택할 수 있습니다. 유효한 크기 범위는 시스템에 따라 다릅니다: 상한 범위는 호스트 시스템의 최대 페이지 크기에서 하한 범위는 사용되는 파일 시스템에 의존합니다. 기본값 블록 크기는 대부분의 사용 경우에 적합하도록 되어 있습니다.
시스템이 RAID5와 같은 스트라이프 스토리지를 사용하는 경우 mkfs
실행 시 기본적인 스토리지 지오메트리 사용으로 데이터 및 메타데이터를 정리하여 성능을 향상시킬 수 있습니다. 소프트웨어 RAID (LVM 또는 MD) 및 일부 엔터프라이즈 하드웨어 스토리지 일부의 경우 이 정보는 쿼리되어 자동으로 설정되지만 대부분의 경우 관리자가 명령행에서 mkfs
를 사용하여 수동으로 지오메트리를 지정해야 합니다.
메타데이터 집약적 워크로드는 저널링 파일 시스템 (ext4 및 XFS 등)의 로그 섹션이 매우 자주 업데이트되는 것을 의미합니다. 파일 시스템에서 저널로의 탐색 시간을 최소화하려면 전용 스토리지에 저널을 배치합니다. 하지만 주요 파일 시스템보다 느리게 외부 스토리지에 저널을 배치하면 외부 스토리지 사용과 관련하여 얻을 수 있는 잠재적 이익을 무효화할 수 있다는 점에 유의합니다.
주의
mkfs
실행 시 생성됩니다. 자세한 내용은 mke2fs(8)
, mkfs.xfs(8)
, 및 mount(8)
man 페이지에서 참조하십시오.
7.1.2. 마운트 옵션
쓰기 장애는 심하게 변동하는 쓰기 장애가 전원을 상실해도 해당 파일 시스템의 메타데이터가 올바르게 작성되어 영구적인 스토리지에 정렬되어 있는지 확인하는데 사용되는 커널 메커니즘입니다. 쓰기 장애를 갖는 파일 시스템은 fsync()
를 통해 전송된 데이터가 정전 중에도 영구적으로 지속하게 합니다. Red Hat Enterprise Linux는 이를 지원하는 모든 하드웨어에 기본값으로 장애를 활성화합니다.
fsync()
를 많이 사용하는 애플리케이션이나 여러 작은 파일을 생성 및 삭제하는 애플리케이션의 경우 그러합니다. 심하게 변동하는 쓰기 캐시가 없는 스토리지나 드물게는 정전 이후 파일 시스템 불이치 또는 데이터 손실이 허용되는 경우 nobarrier
마운트 옵션을 사용하여 장애를 비활성화할 수 있습니다. 보다 자세한 내용은 스토리지 관리 가이드에서 참조하십시오.
기존에는 파일을 읽을 때 파일의 액세스 시간 (atime
)은 추가 쓰기 I/O가 포함된 inode 메타데이터에 업데이트해야 했습니다. 정확한 atime
메타데이터가 필요하지 않은 경우 noatime
옵션으로 파일 시스템을 마운트하여 이러한 메타데이터 업데이트를 제거합니다. 하지만 대부분의 경우 Red Hat Enterprise Linux 6 커널에서 기본값 관련 atime (또는 relatime
) 동작으로 인해 대량의 atime
오버헤드가 없습니다. relatime
동작은 이전 atime
이 수정 시간 (mtime
) 또는 상태 변경 시간 (ctime
) 보다 오래된 경우에만 atime
을 업데이트합니다.
참고
noatime
옵션을 활성화하면 nodiratime
동작도 활성화됩니다; noatime
과 nodiratime
모두를 설정할 필요는 없습니다.
미리 읽기는 데이터를 먼저 가져와 이를 페이지 캐시에 로딩하여 디스크에서가 아닌 메모리에서 먼저 사용가능하므로 파일 액세스 속도를 빠르게 합니다. 대량의 연속 I/O 스트리밍 작업과 같은 일부 워크로드는 미리 읽기 값이 높으면 효과를 얻습니다.
blockdev
명령을 사용하여 미리 읽기 값을 표시하나 편집합니다. 특정 블록 장치에 대한 현재의 미리 읽기 값을 표시하려면 다음 명령을 실행합니다:
# blockdev -getra device
# blockdev -setra N device
blockdev
명령으로 선택된 값은 재부팅 후에도 유지되지 않는다는 점에 유의합니다. 부팅 시 이 값을 설정하려면 런레벨 init.d
스크립트를 작성하는 것이 좋습니다.
7.1.3. 파일 시스템 유지 보수
배치 폐기와 온라인 폐기 작업은 파일 시스템에 의해 사용되지 않는 블록을 폐기하는 마운트된 파일 시스템의 기능입니다. 이러한 작업은 솔리드 스테이트 드라이브 및 씬 프로비저닝 스토리지 모두에 유용합니다.
fstrim
명령으로 사용자에 의해 명시적으로 실행됩니다. 이 명령은 사용자의 기준과 일치하는 파일 시스템에서 사용하지 않는 모든 블록을 폐기합니다. 두 작업 유형은 파일 시스템의 기반이 되는 블록 장치가 물리적 폐기 작업을 지원하는 한 Red Hat Enterprise Linux 6.2 및 이후 버전에서 XFS 및 ext4 파일 시스템과 사용 가능합니다. 물리적 폐기 작업은 /sys/block/device/queue/discard_max_bytes
값이 제로가 아닌 경우 지원됩니다.
-o discard
옵션 (/etc/fstab
에서 또는 mount
명령의 부분으로)으로 지정되어 사용자 개입없이 실시간으로 실행됩니다. 온라인 폐기 작업은 사용됨에서 사용 해제로 전환되는 블록만을 폐기합니다. 온라인 폐기 작업은 Red Hat Enterprise Linux 6.2 이상 버전에서는 ext4 파일 시스템에서 Red Hat Enterprise Linux 6.4 이상 버전에서는 XFS 파일 시스템에서 지원됩니다.
7.1.4. 애플리케이션 유의 사항
ext4, XFS, GFS2 파일 시스템은 fallocate(2)
glibc 호출을 통해 효율적인 공간의 사전 할당을 지원합니다. 쓰기 패턴으로 인해 파일이 잘못 조각화되어 읽기 성능이 저하될 경우 공간의 사전 할당은 유용한 방법이 될 수 있습니다. 사전 할당은 테이터를 공간에 작성하지 않고 디스크 공간이 파일에 할당된 것처럼 표시합니다. 사전 할당 블록에 실제 데이터가 기록될 때 까지 읽기 작업은 제로를 반환합니다.