Linux NFS 클라이언트 최적화

이 페이지에서는 NetApp Volumes 내보내기를 마운트하는 Linux NFS 클라이언트를 조정하는 방법을 설명합니다. 많은 워크로드의 경우 조정이 필요하지 않습니다. 높은 처리량, 더 많은 IOPS, 볼륨의 낮은 메타데이터 로드 또는 특정 캐싱 동작이 필요하지 않은 경우Google Cloud 콘솔에서 마운트 명령어를 사용하세요.

연결 단계, 내보내기 정책 설정, 마운트 명령어에 대한 자세한 내용은 NFS 클라이언트 연결을 참고하세요.

클라이언트 구성

다음 순서로 Linux NFS 설정을 구성합니다.

  1. 커널 동시성: 파일 시스템을 마운트하기 전에 NFS 요청 슬롯 수 (NFSv3의 경우 슬롯 테이블 항목, NFSv4.1의 경우 세션 슬롯)를 설정합니다. 설정을 변경하는 경우 파일 시스템을 다시 마운트해야 합니다. 자세한 내용은 Linux NFS 동시 실행을 참고하세요.

  2. 마운트 옵션: 마운트 시 프로토콜 버전, I/O 크기, TCP 연결 수, 잠금, 캐시 관련 옵션을 선택합니다. 자세한 내용은 Linux NFS 마운트 옵션을 참고하세요.

  3. 선행 읽기: 볼륨이 마운트된 후 마운트 지점별로 순차 읽기 프리패치를 조정합니다. 자세한 내용은 Linux NFS 선행 읽기를 참고하세요.

다음 표에는 이러한 구성 단계가 요약되어 있습니다.

단계 일시 제어 대상 구성 위치 가이드
1 첫 번째 마운트 전 또는 재마운트 전 TCP 연결당 미해결 RPC 작업, 세션당 NFSv4.1 명령어 /etc/sysctl.conf,
/etc/modprobe.d/
Linux NFS 동시 실행
2 마운트 시 프로토콜, I/O 전송 크기, 연결 수, 잠금, 속성 캐시 mount -o, /etc/fstab Linux NFS 마운트 옵션
3 마운트 후 순차 읽기 프리패치 /sys/class/bdi/.../read_ahead_kb, udev 규칙 Linux NFS 미리 읽기

설정의 작동 방식

Linux 커널은 연결별 동시성을 정의합니다 (위 표의 1단계). nconnect 마운트 옵션 (위 표의 2단계)을 사용하면 하나의 클라이언트에서 동일한 볼륨 IP 주소로 여러 TCP 연결을 열 수 있습니다.

한 클라이언트의 대략적인 동시성은 다음과 같이 계산됩니다.

(slots per connection) x (nconnect value)

NetApp Volumes NFS 엔드포인트에 대한 각 TCP 연결은 NFSv3의 경우 연결당 최대 128개의 미해결 작업을 지원합니다. NFSv4.1은 세션 수준 제한도 협상합니다. 단일 TCP 연결은 세션 최대값 미만으로 유효 동시성을 제한할 수 있습니다. 자세한 내용은 Linux NFS 동시 실행을 참고하세요.

여러 클라이언트가 동일한 볼륨 IP 주소를 마운트하는 경우 클라이언트 전체에서 미해결 작업의 합계가 권장 한도 내에 유지되도록 클라이언트별 슬롯 한도를 낮게 사용합니다.

마운트 포인트별로 미리 읽기를 구성합니다 (위 표의 3단계). 이는 rsize 마운트 옵션과 Linux 배포 기본값에 따라 달라집니다. 일부 배포에서는 rsize와 관계없이 고정된 128KiB 미리 읽기를 사용하므로 이를 조정할 때까지 순차 읽기 성능이 저하될 수 있습니다.

마운트 옵션과 커널 설정은 내보내기 정책, Kerberos 구성, 방화벽 요구사항, 볼륨 서비스 수준 처리량 및 IOPS 제한을 변경하지 않습니다.

워크로드 시작점

다음 표에서는 시작점을 제공합니다. 애플리케이션, Linux 배포, 네트워크 경로를 사용하여 설정을 검증하세요.

워크로드 커널 동시 실행 마운트 옵션 미리 읽기
범용 운영체제 기본값 Google Cloud 콘솔의 마운트 안내 사용 운영체제 기본값
단일 VM, 높은 처리량/IOPS
  • 연결별 슬롯 테이블을 128 이하로 제한
  • NFSv4.1의 경우 max_session_slots를 서버 최대값까지 설정
  • 미해결 작업이 128개를 초과하는 경우 nconnect=2 이상을 사용하세요.
  • nconnect=8~nconnect=16
  • rsize 및 wsize 조정
워크로드가 순차 읽기 바운드인 경우 조정
클라이언트가 많은 경우 (EDA/HPC/렌더링 작업장)
  • 클라이언트당 슬롯이 적음 (예: 8개)
  • 볼륨 IP당 총 슬롯 수를 권장 한도 미만으로 유지
  • NFSv3인 경우가 많음
  • nconnect 없음
  • 대용량 볼륨의 경우 여러 볼륨 IP에 클라이언트 분산
대규모 정적 데이터 세트의 경우 더 높은 경우가 많음
Kerberos NFSv4.1
  • max_session_slots 조정
  • 성능을 위해 nconnect에 의존하지 마세요.
  • sec=krb5, krb5i 또는 krb5p
  • nconnect와 결합하지 마세요.
순차적 읽기에 필요한 경우
권고 잠금 없는 NFSv3 운영체제 기본값 필요에 따라

튜닝 측정 및 검증

클라이언트 설정을 업데이트한 후 다음 단계를 완료합니다.

  • 클라이언트에서 nfsiostat, mountstats, nfsstat를 실행합니다. 자세한 내용은 성능 모니터링을 참고하세요.

  • 성능 업계 기준치와 결과를 비교합니다. 이러한 벤치마크에서는 Red Hat Enterprise Linux 9에서 일부 NFSv3 테스트에 nconnect=16, rsize=65536, wsize=65536를 사용했습니다.

클라이언트를 조정하면 가상 머신 (VM)의 볼륨에 대한 네트워크 경로 사용의 효율성이 향상됩니다. 볼륨 용량, 서비스 수준, 스토리지 풀 한도, Compute Engine VM 크기는 여전히 결과를 제한할 수 있습니다.

다음 단계