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