8.4.7. 성능을 위해 파일 시스템 구성
이 섹션에서는 Red Hat Enterprise Linux 7에서 지원되는 각 파일 시스템에 특정한 튜닝 매개 변수에 대해 설명합니다. 매개변수는 스토리지 장치를 포맷할 때 또는 포맷된 장치를 마운트할 때 값을 구성해야 하는지에 따라 나뉩니다.
파일 조각화 또는 리소스 경합으로 인해 성능이 손실되는 경우 일반적으로 파일 시스템을 재구성하여 성능이 향상될 수 있습니다. 그러나 경우에 따라 애플리케이션을 변경해야 할 수도 있습니다. 이 경우 Red Hat은 고객 지원에 문의하는 것이 좋습니다.
8.4.7.1. XFS 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 포맷 및 마운트 시 XFS 파일 시스템에서 사용할 수 있는 몇 가지 튜닝 매개 변수에 대해 설명합니다.
XFS의 기본 포맷 및 마운트 설정은 대부분의 워크로드에 적합합니다. Red Hat은 특정 구성 변경이 워크로드에 도움이 될 경우에만 변경할 것을 권장합니다.
8.4.7.1.1. 포맷 옵션 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
이러한 포맷 옵션에 대한 자세한 내용은 도움말 페이지를 참조하십시오.
$ man mkfs.xfs
- 디렉터리 블록 크기
- 디렉터리 블록 크기는 I/O 작업별로 검색하거나 수정할 수 있는 디렉터리 정보의 양에 영향을 미칩니다. 디렉터리 블록 크기의 최소값은 파일 시스템 블록 크기(4KB)입니다. 디렉터리 블록 크기의 최대값은
64KB입니다.지정된 디렉터리 블록 크기에서 큰 디렉터리에는 작은 디렉터리보다 더 많은 I/O가 필요합니다. 디렉터리 블록 크기가 큰 시스템은 디렉터리 블록 크기가 작은 시스템보다 I/O 작업당 더 많은 처리 성능을 사용합니다. 따라서 워크로드에 대해 가능한 한 작은 디렉터리 및 디렉터리 블록 크기를 사용하는 것이 좋습니다.Red Hat은 표 8.1. “디렉터리 블록 크기에 권장되는 최대 디렉터리 항목” 에 나열된 쓰기 및 읽기 복구 워크로드에 대해 나열된 항목 수를 초과하는 파일 시스템에 대해 에 나열된 디렉터리 블록 크기를 권장합니다.표 8.1. 디렉터리 블록 크기에 권장되는 최대 디렉터리 항목 디렉터리 블록 크기 max. 항목(읽기하이) 최대 항목(쓰기 복구) 4KB 100,000–200,000 1,000,000–2,000,000 16KB 100,000–1,000,000 1,000,000–10,000,000 64 KB >1,000,000 >10,000,000 다양한 크기의 파일 시스템에서 디렉터리 블록 크기가 읽기 및 쓰기 워크로드에 미치는 영향에 대한 자세한 내용은 XFS 설명서를 참조하십시오.디렉터리 블록 크기를 구성하려면 mkfs.xfs -l 옵션을 사용합니다. 자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오. - 할당 그룹
- 할당 그룹은 파일 시스템의 섹션에서 사용 가능한 공간을 인덱스하고 할당된 inode를 인덱싱하는 독립적인 구조입니다. 각 할당 그룹은 독립적으로 수정할 수 있으므로 동시 작업이 다른 할당 그룹에 영향을 미치는 한 XFS는 할당 및 할당 작업을 동시에 수행할 수 있습니다. 따라서 파일 시스템에서 수행할 수 있는 동시 작업 수는 할당 그룹 수와 동일합니다. 그러나 동시 작업을 수행하는 기능도 작업을 수행할 수 있는 프로세서 수로 제한되므로 할당 그룹 수가 시스템의 프로세서 수보다 크거나 같을 것을 권장합니다.단일 디렉터리는 여러 할당 그룹에서 동시에 수정할 수 없습니다. 따라서 Red Hat은 많은 수의 파일을 생성하고 제거하는 애플리케이션에서 모든 파일을 단일 디렉터리에 저장하지 않는 것이 좋습니다.할당 그룹을 구성하려면 mkfs.xfs -d 옵션을 사용합니다. 자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오.
- 성장 제한 조건
- 포맷 시간 후에 파일 시스템의 크기를 늘려야 하는 경우(하드웨어를 추가하거나 씬 프로비저닝을 통해) 포맷이 완료된 후 할당 그룹 크기를 변경할 수 없으므로 초기 파일 레이아웃을 신중하게 고려해야 합니다.할당 그룹은 초기 용량이 아닌 파일 시스템의 최종 용량에 따라 크기를 조정해야 합니다. 할당 그룹이 최대 크기(1TB)를 초과하지 않는 한 완전히 성장하고 있는 파일 시스템의 할당 그룹 수는 백을 초과해서는 안 됩니다. 따라서 대부분의 파일 시스템에서 파일 시스템을 허용하는 권장 최대 증가는 초기 크기보다 10배입니다.새 할당 그룹 헤더가 새로 추가된 스토리지에 올바르게 정렬되도록 장치 크기를 할당 그룹 크기의 정확한 배수에 정렬해야 하므로 RAID 배열에서 파일 시스템을 확장할 때 추가 주의를 수행해야 합니다. 또한 새 스토리지에는 포맷 시간 후에 변경할 수 없으므로 기존 스토리지와 동일한 스토리지가 있어야 하므로 동일한 블록 장치에서 다른 Cryostat의 스토리지에 최적화될 수 없습니다.
- inode 크기 및 인라인 속성
- inode에 사용 가능한 공간이 충분한 경우 XFS는 속성 이름과 값을 inode에 직접 작성할 수 있습니다. 이러한 인라인 속성은 추가 I/O가 필요하지 않으므로 별도의 속성 블록을 검색하는 것보다 빠른 순서로 검색 및 수정할 수 있습니다.기본 inode 크기는 256바이트입니다. 이 중 약 100바이트만 inode에 저장된 데이터 범위 포인터의 수에 따라 속성 스토리지에 사용할 수 있습니다. 파일 시스템을 포맷하면 inode 크기를 늘리면 특성을 저장하는 데 사용할 수 있는 공간을 늘릴 수 있습니다.특성 이름과 속성 값은 모두 254바이트의 최대 크기로 제한됩니다. 이름 또는 값이 길이에서 254바이트를 초과하는 경우, 속성은 인라인으로 저장되는 대신 별도의 특성 블록으로 푸시됩니다.inode 매개 변수를 구성하려면 mkfs.xfs -i 옵션을 사용합니다. 자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오.
- RAID
- 소프트웨어 RAID를 사용 중인 경우 mkfs.xfs 는 적절한 스트라이프 단위 및 너비를 사용하여 기본 하드웨어를 자동으로 구성합니다. 그러나 일부 하드웨어 RAID 장치가 이 정보를 내보내는 것은 아니므로 하드웨어 RAID가 사용 중인 경우 스트라이프 단위와 너비를 수동으로 구성해야 할 수 있습니다. 스트라이프 단위 및 너비를 구성하려면 mkfs.xfs -d 옵션을 사용합니다. 자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오.
- 로그 크기
- 동기화 이벤트가 트리거될 때까지 보류 중인 변경 사항은 해당 시점에 로그에 기록됩니다. 로그 크기는 한 번에 진행 중일 수 있는 동시 수정 수를 결정합니다. 또한 메모리에 집계할 수 있는 최대 변경 양과 로그 데이터가 디스크에 기록되는 빈도를 결정합니다. 작은 로그는 데이터가 더 큰 로그보다 더 자주 디스크에 기록되도록 합니다. 그러나 더 큰 로그는 더 많은 메모리를 사용하여 보류 중인 수정 사항을 기록하므로 메모리가 제한된 시스템은 더 큰 로그의 이점을 얻을 수 없습니다.로그는 기본 스트라이프 단위에 정렬될 때 더 잘 수행됩니다. 즉, 스트라이프 단위가 스트라이프 단위 경계에서 시작하고 끝납니다. 스트라이프 단위에 로그를 정렬하려면 mkfs.xfs -d 옵션을 사용합니다. 자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오.로그 크기를 구성하려면 다음 mkfs.xfs 옵션을 사용하여 logsize 를 로그 크기로 교체합니다.
# mkfs.xfs -l size=logsize자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오.$ man mkfs.xfs - 로그 스트라이프 단위
- RAID5 또는 RAID6 레이아웃을 사용하는 스토리지 장치에 대한 로그 쓰기는 스트라이프 단위 경계를 시작하고 종료할 때 더 잘 수행할 수 있습니다(기본 스트라이프 단위에 맞게 조정됨). mkfs.xfs 는 적절한 로그 스트라이프 장치를 자동으로 설정하려고 하지만 이 정보를 내보내는 RAID 장치에 따라 다릅니다.큰 로그 스트라이프 장치를 설정하면 로그 스트라이프 단위의 크기에 작은 쓰기를 채워야 하므로 워크로드가 동기화 이벤트를 트리거하는 경우 성능이 저하될 수 있습니다. 워크로드가 로그 쓰기 대기 시간에 바인딩되는 경우 가능한 한 정렬되지 않은 로그 쓰기가 트리거되도록 로그 스트라이프 단위를 1 블록으로 설정하는 것이 좋습니다.지원되는 최대 로그 스트라이프 단위는 최대 로그 버퍼 크기(256KB)의 크기입니다. 따라서 기본 스토리지에 로그에 구성할 수 있는 것보다 큰 스트라이프 단위가 있을 수 있습니다. 이 경우 mkfs.xfs 는 경고를 발행하고 32KB의 로그 스트라이프 단위를 설정합니다.로그 스트라이프 장치를 구성하려면 다음 옵션 중 하나를 사용합니다. 여기서 N 은 스트라이프 단위로 사용할 블록 수이며 크기는 KB의 스트라이프 단위 크기입니다.
mkfs.xfs -l sunit=Nb mkfs.xfs -l su=size자세한 내용은 mkfs.xfs 도움말 페이지를 참조하십시오.$ man mkfs.xfs
8.4.7.1.2. Mount Options 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
- inode 할당
- 크기가 1TB보다 큰 파일 시스템에 권장됩니다.
inode64매개변수는 전체 파일 시스템에서 inode 및 데이터를 할당하도록 XFS를 구성합니다. 이렇게 하면 inode가 파일 시스템 시작 부분에 많이 할당되지 않고 파일 시스템 끝에 데이터가 크게 할당되지 않아 대용량 파일 시스템의 성능이 향상됩니다. - 로그 버퍼 크기 및 번호
- 로그 버퍼가 클수록 로그에 모든 변경 사항을 쓰는 데 필요한 I/O 작업이 줄어듭니다. 더 큰 로그 버퍼는 비휘발성 쓰기 캐시가 없는 I/O 집약적인 워크로드가 있는 시스템의 성능을 향상시킬 수 있습니다.로그 버퍼 크기는
logbsize마운트 옵션으로 구성되며 로그 버퍼에 저장할 수 있는 최대 정보 양을 정의합니다. 로그 스트라이프 단위가 설정되지 않은 경우 버퍼 쓰기가 최대값보다 짧을 수 있으므로 동기화가 많은 워크로드에 대한 로그 버퍼 크기를 줄일 필요가 없습니다. 로그 버퍼의 기본 크기는 32KB입니다. 최대 크기는 256KB이고 기타 지원되는 크기는 32KB에서 256KB 사이의 로그 스트라이프 단위의 2KB, 128KB 또는 전원 2개입니다.로그 버퍼 수는logbufs마운트 옵션으로 정의됩니다. 기본값은 8개의 로그 버퍼(최대)이지만 최소 두 개의 로그 버퍼를 구성할 수 있습니다. 일반적으로 추가 로그 버퍼에 메모리를 할당할 수 없는 메모리 바인딩된 시스템을 제외하고 로그 버퍼의 수를 줄일 필요가 없습니다. 로그 버퍼 수를 줄이면 로그 I/O 대기 시간에 민감한 워크로드에서 로그 성능을 줄이는 경향이 있습니다. - 변경 로깅 지연
- XFS에는 로그에 쓰기 전에 메모리에 변경 사항을 집계할 수 있는 옵션이 있습니다.
delaylog매개변수를 사용하면 변경될 때마다 정기적으로 로그에 메타데이터를 쓸 수 있습니다. 이 옵션은 충돌에서 손실될 가능성이 있는 작업 수를 늘리고 메타데이터를 추적하는 데 사용되는 메모리 양을 늘립니다. 그러나 데이터 및 메타데이터를 디스크에 쓰는 데 사용되는 경우 메타데이터 수정 속도와 확장성을 순서대로 늘릴 수 있으며fsync,fdatasync또는sync을 사용하여 데이터 또는 메타데이터 무결성을 줄일 수 없습니다.
마운트 옵션에 대한 자세한 내용은 man xfs를 참조하십시오.