SQL Server/SQL on Azure

Azure VM에서 SQL Server에 대한 저장소 구성 지침

SungWookKang 2019. 3. 26. 00:33
반응형

Azure VM에서 SQL Server 대한 저장소 구성 지침

 

·         Version : Azure VM

 

Azure Virtual Machines 에서 SQL Server 사용할 경우 VM SQL Server 완벽하게 제어하고 SQL Server 작업 부하를 위한 가장 간단한 클라우드 마이그레이션 경로를 제공한다.

·         SQL Server on Virtual Machines :  https://azure.microsoft.com/en-us/services/virtual-machines/sql-server/

 

SQL IaaS Extension 기본적으로 Azure Market Place 통해 생성된 SQL VM 설치 된다. SQL IaaS Extension 백업 관리, 자동 보안 패치, 연결 구성, AKV 통합 최적화된 스토리지 구성 기능을 제공한다. Azure Market SQL Server 이미지는 작업 부하 유형에 따라 SQL Server 팀이 성능에 맞춰 조절한다. 그러나 SQL Server 업무상 중요한 서비스를 하는 경우 최적의 저장소 구성은 특정 작업 부하의 I/O 특성 요구 사항에 따라 다르다. 이번 포스트는 Azure IaaS에서 수행된 테스트를 기반으로 SQL Server 팀의 지침을 설명한다.

 

[프리미엄 저장소 적절한 크기의 VM 선택]

프리미엄 스토리지는 낮은 대기 시간과 일관된 높은 I/O 성능을 제공하도록 설계되었다. 캐시되지 않은 읽기는 평균 4ms 대기 시간으로 작동하고 캐시되지 않은 쓰기는 VM 평균 2ms 대기 시간 최대 80,000 IOPS 작동한다. 또한 예측할 없는 작업에서도 호스트의 SSD 기반 BLOB 캐시 기술은 대기 시간이 1ms 미만이며 최대 160,000 IOPS 제공한다. 따라서 일관된 I/O 성능과 높은 성능으로 인해 Azure VM에서 SQL Server 서비스는 프리미엄 스토리지를 사용할 것을 권장한다.

프리미엄 스토리지는VM 따라IOPS, 대역폭 연결할 있는 디스크 수에 대한 크기 제한 성능 사양이 있다. 예를 들어 표준 DS14_v2 VM크기는 64개의 프리미엄 디스크를 사용하여 최대 51,200 IOPS또는 768MBps 디스크 처리량을 제공하며 로컬 SSD 576GB BLOB 캐시를 사용하여 최대 64,000 IOPS또는 512MBps 처리량을 제공한다. 아래 링크에서 모든 VM 크기에 할당된 제한 리소스를 확인할 있다.

·         Memory optimized virtual machine sizes : https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-memory

 

[읽기가 많은 작업 경우 읽기 전용 캐시를 사용하여 처리량을 향상]

프리미엄 스토리지를 지원하는 Azure VM 캐싱을 위해 가상 시스템 RAM 로컬SSD 조합을 사용하는 다중 계층 캐싱 기술을 사용한다. SQL 서버 작업 부하를 가져오는 읽기 전용 캐시 이득은 작업량 특성에 따라 다르다.

아래의 테스트 결과는  10-P30 디스크가 장착된 DS14_v2 VM에서 최대 50,000 IOPS 사용하는 OLTP 작업 부하로 테스트했다. 데이터 로그 파일은 테스트를 위해 10-P30 디스크에서 동일한 저장 영역 풀에 있다.

읽기 80%, 쓰기 20%, 약간의 tempdb 사용하는 OLTP 작업 부하의 경우 캐시가 없는 동일한 구성에 비해 모든 프리미엄 디스크에 대해 읽기 전용 캐시가 활성화 되었을 처리량이 42% 증가했다. 읽기 50%, 쓰기 50%, 약간의 tempdb 사용하는 OLTP 작업 부하의 경우 캐시가 없는 구성에 비해 읽기 전용 캐시의 처리량이 25% 증가했다.

 

[데이터 로그 파일의 분리]

데이터 로그 파일을 분리한 별도의 저장 영역을 사용하여 읽기 전용 캐시의 이득을 최적화 하는 것이 좋다. 캐시가 없는 프리미엄 스토리지 디스크에 로그파일을 호스팅 하면 읽기 작업에 대해서는 호스트 BLOB 캐시의 사용 가능한 공간과 처리량이 절약되어 이점을 극대화 한다. 특히  SQL Server 데이터 파일을 호스팅하는 저장소에 포함될 프리미엄 저장소 디스크에는 읽기 전용 캐시를 사용하는 것이 좋다. 예를 들어 데이터 파일에 IOPS 요구사항이 30,000 이라면 모든 디스크에 RO 캐시를 활성화 6 - P30 디스크 또는 4 - P50 디스크를 스트라이핑 하는것이 좋다.

 

로그 파일을 호스팅 하는 저장소에 포함될 프리미엄 저장소 디스크는 읽기전용 캐시를 구성하지 않는것이 좋다. 또한 로그 파일의 디스크 처리량 요구 사항이 7500 IOPS 미만인 경우 단일 P50 디스크로 IOPS 달성할 있으므로 로그 파일에 대한 저장소 풀이 필요하지 않다. 특히 작은 호스트 BLOB 캐시가 있는 VM에서SQL Server 작업의 부하가 경우 로그 파일과 데이터 파일을  분리하였을때 테스트에서 상당한 처리량 증가를 보였다. 평균적인 예로 데이터를 호스팅하는것과 비교하여 RO 캐시가 있는 별도의 스토리지 풀에서 호스트되는 캐시 데이터 파일이 없는 스토리지 풀에서 로그 파일을 호스팅할  쓰기 50% 비율의 OLTP 테스트 경우 처리량이 35%  증가했다.  

 

[올바른 크기의 VM 선택  로컬 SSD tempdb 배치]

VM 크기에 따라 로컬 SSD BLOB 캐시에 대해 최대 대역폭, 최대 처리량 크기 제한이 가능한 스토리지 용량을 정의한다. Tempdb 사용량이 높은 업무용 SQL Server 경우 로컬 SSD temp db 호스팅하면 작업 부하 성능과 처리량에 영향을 준다. VM 로컬 SSD 대한 크기, 처리량 대역폭 제한이 tempdb IO 요구 사항을 허용해야 한다. 그리고  VM 호스트 BLOB 캐시 스케일 한계는 로컬 SSD 읽기 호스트 BLOB 캐시 읽기가 발생하는 읽기 활동을 허용할 만큼 충분히 커야 한다.

최대 로컬 디스크 + SSD 캐시 성능한계는 로컬 SSD 읽기 쓰기 작업 SSD 캐시의 읽기 작업에 대한 최대 작업을 정의한다. tempdb 로컬 SSD 디스크에 배치되고 SQL Server 데이터 파일을 호스팅하는 프리미엄 디스크에 RO 캐시가 사용되는 경우 tempdb에서 구동되는 읽기 + 쓰기 IOPS RO 캐시의 읽기 IOPS 공유된다. 예를들어 표준 DS14_v2 임시 디스크의 크기가 224GB이고 호스트 캐시가 576GB이며 로컬 캐시의 tempdb 활동과 함께 읽기 캐시에 사용할 있는 최대 처리량은 64,000 IOPS 524MB/s이다.

 

Storage Optimized L-Series 또는 Memory Optimized M-Series 로컬 SSD 최대 14TB이고 메모리가 최대 4TB 이다. 이러한 서버는 고부하의 SQL Server 작업을 처리하는데 가장 적합하다. 적절한 VM 크기 선택 구성으로 Azure VM SQL Server 작업 부하에 대해 미션 크리티컬 성능을 얻을 있다.

 

[참고자료]

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2018/09/25/storage-configuration-guidelines-for-sql-server-on-azure-vm/

 

 

2018-10-02 / Sungwook Kang / http://sqlmvp.kr

 

Azure SQL, Azure VM, BLOB Storage, local SSD, local cache, SQL Server On Azure VM, SQL Server on Azure

반응형