7장. 파일 시스템

다음 부분에서는 Red Hat Enterprise Linux에서 지원되는 파일 시스템 개요와 성능을 최적화하는 방법에 대해 설명합니다.

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 마운트 옵션을 사용하여 장애를 비활성화할 수 있습니다. 보다 자세한 내용은 스토리지 관리 가이드에서 참조하십시오.
액세스 타임 (noatime)

기존에는 파일을 읽을 때 파일의 액세스 시간 (atime)은 추가 쓰기 I/O가 포함된 inode 메타데이터에 업데이트해야 했습니다. 정확한 atime 메타데이터가 필요하지 않은 경우 noatime 옵션으로 파일 시스템을 마운트하여 이러한 메타데이터 업데이트를 제거합니다. 하지만 대부분의 경우 Red Hat Enterprise Linux 6 커널에서 기본값 관련 atime (또는 relatime) 동작으로 인해 대량의 atime 오버헤드가 없습니다. relatime 동작은 이전 atime이 수정 시간 (mtime) 또는 상태 변경 시간 (ctime) 보다 오래된 경우에만 atime을 업데이트합니다.

참고

noatime 옵션을 활성화하면 nodiratime 동작도 활성화됩니다; noatimenodiratime 모두를 설정할 필요는 없습니다.
미리 읽기 지원 강화

미리 읽기는 데이터를 먼저 가져와 이를 페이지 캐시에 로딩하여 디스크에서가 아닌 메모리에서 먼저 사용가능하므로 파일 액세스 속도를 빠르게 합니다. 대량의 연속 I/O 스트리밍 작업과 같은 일부 워크로드는 미리 읽기 값이 높으면 효과를 얻습니다.

tuned 도구와 LVM 스트라이핑의 사용은 미리 읽기 값을 증가시키지만 일부 워크로드의 경우 항상 충분한 것은 아닙니다. 또한 Red Hat Enterprise Linux는 파일 시스템이 감지할 수 있는 내용에 따라 항상 적절한 미리 읽기 값을 설정할 수 없습니다. 예를 들어 강력한 스토리지 배열이 하나의 강력한 LUN으로 Red Hat Enterprise Linux로 제시되면 운영 체제는 이를 강력한 LUN 배열로 취급하지 않으며 따라서 기본값으로 스토리지에서 사용할 수 있는 잠재적 미리 읽기의 장점을 최대한 활용할 수 없는 것입니다.
blockdev 명령을 사용하여 미리 읽기 값을 표시하나 편집합니다. 특정 블록 장치에 대한 현재의 미리 읽기 값을 표시하려면 다음 명령을 실행합니다:
# blockdev -getra device
블록 장치의 미리 읽기 값을 편집하려면 다음과 같은 명령을 실행합니다. N은 512 바이트 섹터의 번호를 나타냅니다.
# 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 파일 시스템에서 지원됩니다.
Red Hat은 시스템의 워크로드가 배치 폐기를 실행할 수 없는 경우 또는 성능 유지를 위해 온라인 폐기 작업이 필요한 경우를 제외하고 배치 폐기 운영을 권장하고 있습니다.

7.1.4. 애플리케이션 유의 사항

사전 할당

ext4, XFS, GFS2 파일 시스템은 fallocate(2) glibc 호출을 통해 효율적인 공간의 사전 할당을 지원합니다. 쓰기 패턴으로 인해 파일이 잘못 조각화되어 읽기 성능이 저하될 경우 공간의 사전 할당은 유용한 방법이 될 수 있습니다. 사전 할당은 테이터를 공간에 작성하지 않고 디스크 공간이 파일에 할당된 것처럼 표시합니다. 사전 할당 블록에 실제 데이터가 기록될 때 까지 읽기 작업은 제로를 반환합니다.


Red Hat의 최신 제품 문서 번역을 신속하게 제공하기 위해 이 페이지에는 영어 원본을 한국어로 자동 번역한 내용이 포함되어 있을 수 있습니다. [자세한 내용보기]