Linux NFS 마운트 옵션

이 페이지에서는 NetApp Volumes 내보내기를 마운트할 때 성능과 동작에 영향을 미치는 Linux NFS 마운트 옵션을 설명합니다. mount 명령어를 실행할 때 또는 /etc/fstab에 추가하여 이러한 옵션을 설정합니다.

권장 설정 순서와 마운트 옵션이 커널 동시 실행 및 미리 읽기와 상호작용하는 방식에 관한 자세한 내용은 Linux NFS 클라이언트 최적화를 참고하세요.

마운트 명령어 및 내보내기 액세스 예시는 NFS 클라이언트 연결을 참고하세요.

시작하기 전에

NetApp Volumes를 마운트하기 전에 다음 요구사항을 완료하세요.

  • 워크로드에 다른 옵션이 필요한 경우가 아니라면 Google Cloud 콘솔 마운트 안내의 마운트 명령어를 사용하세요.

  • 슬롯 테이블 또는 세션 슬롯 설정으로 동시성을 조정하는 경우 마운트하기 전에 이러한 설정을 구성하세요. 자세한 내용은 Linux NFS 동시성을 참고하세요.

  • 비프로덕션 환경에서 변경사항을 테스트합니다. 마운트 옵션의 효과는 워크로드, Linux 버전, 네트워크 지연 시간에 따라 달라질 수 있습니다.

빠른 참조

다음 표에서는 워크로드 목표에 따른 일반적인 마운트 옵션을 간략하게 보여줍니다.

목표 고려할 옵션 참고
범용 Google Cloud 콘솔 마운트 안내 사용 프로토콜에 적합한 기본값이 포함됩니다.
하나의 VM에서 더 높은 처리량 또는 IOPS nconnect=8~nconnect=16, rsize 및 wsize 조정 슬롯 테이블을 먼저 설정합니다. Linux NFS 동시 실행을 참고하세요.
데이터베이스의 지연 시간 감소 rsize=262144, wsize=262144, hard, timeo=600, vers=4.1 특정 애플리케이션 테스트
NFS 버전 지정 vers=3 또는 vers=4.1 Linux는 기본적으로 사용 가능한 가장 높은 버전을 마운트합니다.
권고 잠금 없는 NFSv3 vers=3, nolock 방화벽 및 잠금 관리자 안내는 NFS 클라이언트 연결을 참고하세요.
Kerberos NFSv4.1 sec=krb5, krb5i 또는 krb5p nconnect와 함께 사용하지 않음
일관성 트레이드 오프가 알려진 읽기 전용 데이터 nocto, actimeo= 고급, 먼저 캐시 동작을 이해해야 함

NFSv3를 마운트할 때는 항상 tcp를 포함하세요. Linux는 기본적으로 NFS 트래픽에 TCP를 사용하지만 tcp를 명시적으로 추가하면 마운트 프로세스에서 UDP 대신 TCP를 사용할 수 있습니다. 이렇게 하면 많은 시스템이 동시에 마운트하려고 할 때 성능이 향상됩니다. noatime를 포함하여 메타데이터 작업을 줄입니다.

다음 마운트 프로필은 성능 요구사항, 프로토콜 버전, 클라이언트 규모에 따라 권장되는 옵션을 제공합니다. 이러한 명령어를 실행할 때 VOLUME_IP 및 /export_path을 Google Cloud 콘솔의 마운트 안내에 나오는 실제 값으로 바꿉니다.

프로필 A: 기본값 (콘솔)

Google Cloud 콘솔에 제공된 마운트 명령어를 변경 없이 실행합니다.

프로필 B: 성능 중심 (단일 Linux 클라이언트)

성능 벤치마크 테스트 구성에 맞춰진 NFSv3의 예:

 sudo mount -t nfs -o hard,tcp,vers=3,rsize=262144,wsize=262144,nconnect=16 \
 VOLUME_IP:/export_path /mnt/volume

벤치마크는 nconnect=16 및 64KiB rsize와 wsize를 사용합니다. 많은 워크로드가 nconnect=8에서 잘 작동합니다. 두 값을 모두 테스트합니다.

프로필 C: 명시적 버전이 있는 NFSv4.1

 sudo mount -t nfs -o vers=4.1,hard,rsize=262144,wsize=262144 \
 VOLUME_IP:/export_path /mnt/volume

볼륨에서 NFSv4.2가 사용 설정된 경우 자동으로 마운트되지 않도록 하려면 vers=4.1를 지정하세요. 자세한 내용은 NFS 클라이언트 연결을 참고하세요.

프로필 D: 컴퓨팅 팜용 NFSv3

수백 개와 같이 많은 수의 클라이언트를 볼륨에 연결하는 경우 볼륨에서 사용 가능한 TCP 세션이 소진되지 않도록 nconnect를 사용하지 마세요.

 sudo mount -t nfs -o vers=3,nolock,hard,tcp,rsize=262144,wsize=262144 \
 VOLUME_IP:/export_path /mnt/volume

/etc/fstab에 유지

다음 예시는 NFSv4.1의 /etc/fstab 줄을 보여줍니다.

 VOLUME_IP:/export_path  /mnt/volume  nfs  vers=4.1,hard,tcp,rsize=262144,wsize=262144,timeo=600,_netdev  0  0

시스템이 마운트하기 전에 네트워킹을 기다리도록 _netdev 옵션을 사용합니다.

nconnect

nconnect 마운트 옵션을 사용하면 NFS 클라이언트가 볼륨 IP 주소인 동일한 스토리지 엔드포인트에 여는 TCP 연결 수를 제어할 수 있습니다. 각 연결은 설정된 한도까지 여러 NFS 작업을 동시에 처리합니다. 연결 수를 늘리면 단일 클라이언트의 I/O 동시성과 처리량이 향상됩니다.

권장사항

nconnect 마운트 옵션을 구성할 때는 다음 권장사항을 고려하세요.

  • nconnect=8 및 nconnect=16을 테스트합니다. 최대 16개의 값이 지원됩니다.

  • nconnect는 전용 고성능 클라이언트에만 사용하세요. 컴퓨팅 팜과 같은 여러 클라이언트가 동일한 스토리지에 연결되는 경우 nconnect를 사용하지 마세요.

  • 지정된 볼륨 IP에 첫 번째 마운트 작업을 실행하여 해당 클라이언트에서 해당 IP의 nconnect 값을 설정합니다. 나중에 동일한 IP에 마운트하면 다른 값을 지정하더라도 동일한 값을 사용합니다. 선택한 nconnect 값으로 내보내기를 먼저 마운트하거나 해당 IP의 모든 마운트에 동일한 옵션을 사용합니다.

  • 한 볼륨 IP에 대해 nconnect를 설정해도 다른 볼륨 IP에 대한 마운트에는 영향을 미치지 않습니다.

  • Linux 배포판이 nconnect를 지원하는지 확인한 후 사용하세요.

연결당 슬롯 제한에 관한 자세한 내용은 Linux NFS 동시 실행을 참고하세요.

rsize 및 wsize

rsize 및 wsize 마운트 옵션은 NFS 읽기 및 쓰기 작업의 최대 전송 크기를 설정합니다. 이를 생략하면 클라이언트와 서버가 모두 지원하는 최대 크기를 협상합니다. 이 크기는 Linux 클라이언트와 NetApp Volumes에서 최대 1MiB입니다.

권장사항

rsize 및 wsize 마운트 옵션을 구성할 때는 다음 권장사항을 고려하세요.

  • rsize=262144 및 wsize=262144 (256KiB)을 테스트하여 지연 시간에 민감한 애플리케이션의 처리량과 지연 시간을 조정합니다.

  • 일부 워크로드의 경우 지연 시간이 늘어나거나 처리량이 줄어들 수 있으므로 256KiB보다 큰 값을 사용할 때는 주의하세요. 배포 전에 성능을 측정하세요.

  • 성능 벤치마크에서 이러한 값이 사용되었으므로 NFSv3 테스트에는 rsize=65536 및 wsize=65536 (64KiB)을 사용합니다.

이러한 설정은 일반적으로 rsize 및 wsize보다 작은 작업 크기를 사용하는 무작위 워크로드에 미치는 영향이 최소화됩니다. 페이지 캐시를 통한 순차 I/O는 최대 rsize 및 wsize의 작업 크기를 사용하는 경우가 많습니다.

rsize 마운트 옵션은 미리 읽기 동작에 영향을 미칩니다. 자세한 내용은 Linux NFS 미리 읽기를 참고하세요.

프로토콜 버전

다음 표에는 vers 옵션 값과 해당 프로토콜 버전이 나와 있습니다.

옵션 사용
vers=3 NFSv3
vers=4.1 NFSv4.1
vers=4.2 NFSv4.2

vers를 설정하지 않으면 Linux mount 명령어가 클라이언트와 볼륨에서 지원하는 가장 높은 NFS 버전을 사용합니다. NFSv4.1이 사용 설정된 Flex Unified, Standard, Premium, Extreme 볼륨도 NFSv4.2를 지원합니다. vers=4.1를 지정하지 않는 한 NFSv4.2를 마운트할 수 있습니다.

NFSv4.1 ID 매핑, Kerberos, 숫자 ID에 대한 자세한 내용은 NFS 클라이언트 연결을 참고하세요.

hard, timeo, retrans

hard, timeo, retrans 마운트 옵션은 연결 문제가 발생할 때 클라이언트 동작과 타임아웃 재시도 로직을 관리합니다.

  • hard: NFS 요청이 성공할 때까지 재시도합니다. 이 옵션은 프로덕션 워크로드의 데이터 무결성에 일반적입니다.

  • timeo: 요청이 재시도되기 전의 제한 시간(1/10초)을 지정합니다. 데이터베이스 중심 워크로드에서는 timeo=600(60초)를 사용하는 경우가 많습니다.

  • retrans: 재시도 횟수를 지정합니다.런북에 달리 지정되지 않는 한 Google Cloud 콘솔 기본값이 일반적으로 충분합니다.

NFSv3 nolock 옵션

NFSv3 권고 잠금은 네트워크 잠금 관리자 (NLM)를 사용하며 콜백 포트에 클라이언트 측 rpc.statd 및 방화벽 규칙이 필요합니다. 어드바이저리 잠금을 사용하지 않는 경우 잠금 관리자 트래픽을 방지하기 위해 nolock로 마운트합니다.

NFSv4.1은 포트 2049의 프로토콜에서 잠금을 구현하므로 클라이언트에는 별도의 잠금 관리자 인그레스 규칙이 필요하지 않습니다.

NFSv3 및 NFS 볼륨 액세스를 위한 방화벽 규칙과 함께 사용하는 권고적 잠금에 대한 자세한 내용은 NFS 클라이언트 연결을 참고하세요.

nocto 및 actimeo를 사용한 캐시 및 일관성

NFS 클라이언트는 느슨한 일관성 모델을 사용합니다. 속성 캐시 타이머는 클라이언트가 서버에 연결하기 전에 파일 및 디렉터리 메타데이터를 신뢰하는 시간을 결정합니다. 기본 근접-개방 일관성 (cto)은 파일을 열 때 파일 데이터를 새로고침합니다.

  • nocto: 클라이언트가 열 때 서버 일관성을 강제하지 않습니다. 이렇게 하면 getattr 호출이 줄어들지만 오래된 데이터의 위험이 증가합니다.

  • actimeo=N: 모든 속성 캐시 타이머를 N초(acregmin, acregmax, acdirmin, acdirmax)로 구성합니다.

다음 시나리오에서는 nocto 및 더 높은 actimeo 값을 사용하는 것이 좋습니다.

  • 다른 경로를 통해 업데이트를 수신하는 단일 작성자 또는 읽기 전용 소비자

  • 간단한 비활성 상태가 허용되는 경우 EDA 라이브러리, 웹 콘텐츠, 렌더링 텍스처와 같은 대규모 정적 데이터 세트

대부분의 경우 속성 캐싱에 권장되는 Linux 기본값을 사용합니다.

  • 일반 파일 최소 및 최대: acregmin=3초 및 acregmax=60초

  • 디렉터리 최소 및 최대: acdirmin=30초 및 acdirmax=60초

이러한 값을 낮추면 NFS 서버의 부하가 증가하고 성능이 저하될 수 있습니다. 영향을 이해하는 매우 구체적인 사용 사례를 제외하고는 actimeo=0를 사용하지 마세요.

기타 일반 옵션

NFS 클라이언트에서 사용할 수 있는 기타 일반적인 마운트 옵션은 다음과 같습니다.

  • rw 또는 ro: 읽기-쓰기 또는 읽기 전용 마운트

  • noatime: 읽기 시 액세스 시간을 업데이트하지 않습니다. 이렇게 하면 메타데이터 작업이 줄어들고 권장되는 방법입니다.

  • sec=sys: AUTH_SYS. Kerberos가 아닌 내보내기의 기본값입니다.

  • _netdev: 네트워크를 사용할 수 있게 된 후 마운트하려면 fstab에서 이를 사용하세요.

다음 단계