다음을 통해 공유


Azure Blob Storage의 NFS(네트워크 파일 시스템) 3.0 성능 고려 사항

이제 Blob Storage는 NFS(네트워크 파일 시스템) 3.0 프로토콜을 지원합니다. 이 문서에는 스토리지 요청의 성능을 최적화하는 데 도움이 되는 권장 사항이 포함되어 있습니다. Azure Blob Storage에 대한 NFS 3.0 지원에 대해 자세히 알아보려면 Azure Blob Storage에 대한 NFS(Network File System) 3.0 프로토콜 지원을 참조하세요.

클라이언트를 추가하여 처리량 늘리기

Azure Blob Storage 최대 스토리지 계정 송신 및 수신 제한에 도달할 때까지 선형으로 크기 조정됩니다. 따라서 애플리케이션은 더 많은 클라이언트를 사용하여 더 높은 처리량을 달성할 수 있습니다. 스토리지 계정 송신 및 수신 제한을 보려면 표준 스토리지 계정의 확장성 및 성능 목표를 참조하세요.

다음 차트에서는 더 많은 클라이언트를 추가할 때 대역폭을 늘리는 방법을 보여 줍니다. 이 차트에서 클라이언트는 표준 범용 v2 스토리지 계정이 있는 VM(가상 머신)입니다.

Standard performance

다음 차트는 프리미엄 블록 Blob Storage 계정에 적용될 때 이와 동일한 효과를 보여 줍니다.

Premium performance

소규모 애플리케이션에 프리미엄 블록 Blob Storage 계정 사용

클라이언트를 더 추가하여 모든 애플리케이션을 확장할 수 있는 것은 아닙니다. 이러한 애플리케이션의 경우 Azure 프리미엄 블록 Blob Storage 계정은 일관된 짧은 대기 시간과 높은 트랜잭션 속도를 제공합니다. 프리미엄 블록 Blob Storage 계정은 스레드 및 클라이언트 수를 줄여 최대 대역폭에 도달할 수 있습니다. 예를 들어 단일 클라이언트의 경우 프리미엄 블록 Blob Storage 계정은 표준 성능 범용 v2 스토리지 계정에 사용된 것과 동일한 설정에 비해 2.3배의 대역폭을 달성할 수 있습니다.

다음 차트의 각 막대는 프리미엄 및 표준 성능 스토리지 계정 간에 달성된 대역폭의 차이를 보여 줍니다. 클라이언트 수가 늘어나면 이러한 차이가 줄어듭니다.

Relative performance

큰 파일 읽기 처리량을 늘리기 위해 미리 읽기 크기 개선

read_ahead_kb kernel 매개 변수는 지정된 읽기 요청을 수행한 후에 읽어야 하는 추가 데이터의 양을 나타냅니다. 이 매개 변수를 16MiB로 늘려 대용량 파일 읽기 처리량을 향상시킬 수 있습니다.

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

데이터에 대한 자주 덮어쓰기 방지

새 쓰기 작업보다는 덮어쓰기 작업을 완료하는 데 시간이 더 오래 걸립니다. NFS 덮어쓰기 작업, 특히 부분 내부 파일 편집은 몇 가지 기본 Blob 작업(읽기, 수정 및 쓰기 작업)의 조합이기 때문입니다. 그러므로 자주 사용하는 편집이 필요한 애플리케이션은 NFS 사용 Blob Storage 계정에 적합하지 않습니다.

대기 시간에 민감한 애플리케이션을 위한 Azure HPC Cache 배포

일부 애플리케이션에는 높은 처리량 외에 짧은 대기 시간이 필요할 수 있습니다. Azure HPC Cache를 배포하여 대기 시간을 크게 개선할 수 있습니다. Blob Storage의 대기 시간에 대해 자세히 알아봅니다.

TCP 연결 수를 늘립니다.

nconnect 탑재 옵션을 사용하여 단일 VM에서 더 높은 집계 읽기 및 쓰기 성능을 얻을 수 있지만 Linux 커널에 Azure nconnect 지원이 있는 경우에만 가능합니다.

nconnect는 클라이언트와 Blob 서비스 엔드포인트 간에 여러 TCP 연결을 사용할 수 있는 클라이언트 쪽 Linux 탑재 옵션입니다. 탑재 명령의 nconnect 옵션을 사용하여 만들려는 TCP 연결 수를 지정할 수 있습니다(예: mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain).

Important

최신 Linux 배포판은 nconnect를 완벽하게 지원하지만 커널에 Azure nconnect 지원이 있는 경우에만 이 옵션을 사용해야 합니다. Azure nconnect 지원 없이 nconnect 탑재 옵션을 사용하면 처리량이 감소하고, 여러 시간이 초과되고, READDIRREADIRPLUS 등 명령이 잘못 작동합니다.

Azure nconnect 지원은 Azure 가상 머신에서 사용할 수 있는 대부분의 최신 Ubuntu 커널에서 사용할 수 있습니다. 커널에 Azure nconnect 지원을 사용할 수 있는지 확인하려면 다음 명령을 실행합니다.

[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"

커널에 Azure nconnect 지원을 사용할 수 있는 경우 Yes가 콘솔에 인쇄됩니다. 아니면 'No가 콘솔에 출력됩니다.

Azure nconnect 지원을 사용할 수 있는 경우 다음 명령을 실행하여 사용하도록 설정합니다.

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

기타 모범 사례 권장 사항

  • 네트워크 대역폭이 충분한 VM을 사용합니다.

  • 워크로드에서 허용하는 경우 여러 탑재 위치를 사용합니다.

  • 최대한 많은 스레드를 사용합니다.

  • 큰 블록 크기를 사용합니다.

  • 스토리지 계정과 동일한 지역에 있는 클라이언트에서 스토리지 요청을 만듭니다. 이렇게 하면 네트워크 대기 시간을 향상시킬 수 있습니다.

다음 단계