SQL Server 가상 머신용 Azure Storage 최적화 방법 설명
스토리지 성능은 데이터베이스 엔진과 같이 I/O가 많은 애플리케이션의 중요한 구성 요소입니다. Azure는 다양한 스토리지 옵션을 제공하며, 워크로드 요구 사항에 맞게 스토리지 솔루션을 빌드할 수도 있습니다.
Azure Storage는 많은 애플리케이션의 요구 사항을 충족하는 다양한 솔루션을 제공하며 스케일링 기능이 뛰어나고 안전한 스토리지 플랫폼입니다. 이 과정은 데이터베이스를 중점적으로 다루기 때문에 디스크, 파일, Blob Storage인 SQL Server 워크로드에 적용되는 Blob Storage의 측면에 대해 설명합니다. 위의 모든 스토리지 형식은 Microsoft에서 관리하거나 사용자 정의 암호화 키를 사용하여 미사용 암호화를 지원합니다.
Blob Storage - Blob Storage는 개체 기반 스토리지라고도 하며 콜드, 핫, 보관 스토리지 계층을 포함합니다. Blob Storage는 SQL Server 환경에서 일반적으로 SQL Server의 URL 백업 기능을 사용한 데이터베이스 백업에 사용됩니다.
File Storage - File Storage는 하드웨어를 설정할 필요 없이 가상 머신 내에 탑재할 수 있는 파일 공유입니다. SQL Server는 File Storage를 장애 조치(failover) 클러스터 인스턴스의 스토리지 대상으로 사용할 수 있습니다.
Disk Storage - Azure Managed Disks는 가상 머신에 제공되는 블록 저장소를 제공합니다. 해당 디스크는 가상화된 디스크라는 점을 제외하면 온-프레미스 서버의 실제 디스크처럼 관리됩니다. 워크로드에 따라 관리 디스크 내에 몇 가지 성능 계층이 있습니다. 해당 형식의 스토리지는 SQL Server 데이터 및 트랜잭션 로그 파일에 가장 일반적으로 사용되는 형식입니다.
Azure Managed Disks
Azure Managed Disks는 Azure Virtual Machines에 제공되는 블록 수준 스토리지 볼륨입니다. 블록 수준 스토리지는 개별 하드 드라이브로 생성되고 처리될 수 있는 원시 스토리지 볼륨을 가리킵니다. 해당 블록 디바이스는 운영 체제 내에서 관리할 수 있으며 스토리지 계층은 디스크의 내용을 인식하지 못합니다. 블록 저장소 대신 사용할 수 있는 것이 파일 및 해당 메타데이터가 기본 스토리지 시스템에 저장되는 개체 스토리지입니다. Azure Blob Storage는 개체 스토리지 모델의 예입니다. 개체 스토리지는 많은 최신 개발 솔루션에서 잘 작동하지만, 가상 머신에서 실행되는 대부분의 워크로드는 블록 저장소를 사용합니다.
관리 디스크의 구성은 SQL Server 워크로드의 성능에 중요합니다. 온-프레미스 환경에서 이동하는 경우 앞서 설명한 것처럼 성능 모니터에서 평균 디스크 읽기 시간(초) 및 평균 디스크 쓰기 시간(초)과 같은 메트릭을 캡처하는 것이 중요합니다. 캡처할 또 다른 메트릭은 초당 I/O 작업으로, SQL Server가 수용할 수 있는 IOP 최대치를 보여주는 SQL Server: 리소스 풀 통계 디스크 읽기 및 쓰기 IO/초 카운터를 사용해 캡처할 수 있습니다. 워크로드를 이해하는 것이 중요합니다. 상당한 대기 시간을 발생시키지 않으면서 관련 워크로드의 수요에 맞게 스토리지 및 가상 머신을 디자인하는 것이 좋습니다. 각 Azure 가상 머신 형식에는 IOP에 제한이 있습니다.
Azure Managed Disks는 다음 네 가지 유형으로 제공됩니다.
Ultra Disk - Ultra Disk는 짧은 대기 시간으로 미션 크리티컬 데이터베이스를 위한 높은 IO 워크로드를 지원합니다.
프리미엄 SSD - 프리미엄 SSD 디스크는 처리량이 많고 대기 시간이 짧으며 클라우드에서 실행되는 대부분의 데이터베이스 워크로드 요구 사항을 충족할 수 있습니다.
표준 SSD - 표준 SSD는 적은 양의 IO를 수행하고 예측 가능한 대기 시간을 요구하며 사용량이 적은 개발/테스트 워크로드 또는 웹 서버를 위한 디스크입니다.
표준 HDD -표준 HDD는 자주 액세스하지 않는 백업 및 파일 스토리지에 적합합니다.
일반적으로 프로덕션 SQL Server 워크로드는 Ultra Disk나 프리미엄 SSD를 사용하거나 둘의 조합을 사용합니다. 일반적으로 Ultra Disks는 응답 시간 중 대기 시간이 1밀리초 미만이길 원하는 경우 사용합니다. 일반적으로 프리미엄 SSD는 응답 시간이 10밀리초 미만이지만 비용이 저렴하고 유연하게 디자인할 수 있습니다. 또한, 프리미엄 SSD는 디스크로의 왕복 횟수를 줄여 읽기 작업이 많은 데이터베이스 워크로드에 도움이 되는 읽기 캐싱을 지원합니다. 읽기 캐시는 로컬 SSD(Windows의 경우 D:\ 드라이브, Linux의 경우 /dev/sdb1/)에 저장되어 실제 디스크로의 왕복 횟수를 줄일 수 있습니다.
최대 처리량을 위한 디스크 스트라이프
Azure 디스크에서 더 높은 성능과 더 많은 볼륨을 확보하는 방법 중 하나는 데이터를 여러 디스크에 스트라이프하는 것입니다. Ultra Disk의 경우 단일 디스크에서 IOP, 처리량, 최대 크기를 독립적으로 스케일링할 수 있으므로 해당 기술이 적용되지 않습니다. 그러나 프리미엄 SSD를 사용하는 경우 IOP와 스토리지 볼륨을 모두 스케일링하는 것이 유용할 수 있습니다. Windows에서 디스크를 스트라이프하려면 원하는 디스크 수를 VM에 추가하고 Windows에서 저장소 공간을 사용하여 풀을 만듭니다. Azure 프레임워크는 디스크 오류로부터 디스크를 보호하기 위해 모든 디스크의 복사본 3개를 동기 복제에 유지하고 중복도를 제공하므로 풀에 대해 중복도를 구성해서는 안 됩니다(성능 제한이 발생할 수 있음). 풀을 만들 때, 풀에 IOP의 합계와 풀에 있는 모든 디스크 볼륨의 합계가 있습니다. 예를 들어 각 1TB에 해당하는 10개의 P30 디스크를 사용하고 디스크당 5000 IOP를 사용하는 경우 5만 IOP를 사용할 수 있는 10TB 볼륨을 사용할 수 있습니다.
SQL Server 스토리지 구성 모범 사례
Azure VM의 SQL Server와 해당 스토리지 구성에 대한 몇 가지 모범 사례 권장 사항은 다음과 같습니다.
데이터 및 트랜잭션 로그 파일에 대한 별도의 볼륨을 만듭니다.
데이터 파일 볼륨에서 읽기 캐싱을 사용하도록 설정합니다.
로그 파일 볼륨에서 캐싱을 사용하지 않습니다.
워크로드 최대치를 처리하기 위해 VM용 스토리지를 빌드할 때 IOP 및 처리량의 20%를 추가로 계획합니다.
서버가 다시 시작할 때 TempDB가 다시 만들어지므로 데이터가 손실될 위험이 없도록 TempDB 파일 D: 드라이브(로컬로 연결된 SSD)를 사용합니다.
파일 증가 작업의 영향을 줄이기 위해 즉시 파일 초기화를 사용합니다.
추적 파일 및 오류 로그 디렉터리를 데이터 디스크로 이동합니다.
1밀리초 미만의 스토리지 대기 시간이 필요한 워크로드의 경우 프리미엄 SSD보다 Ultra Disk를 사용하는 것이 좋습니다.
Azure 가상 머신 리소스 공급자
Azure 가상 머신에서 SQL Server용 스토리지를 빌드하는 복잡성을 줄이는 한 가지 방법은 Azure Marketplace에서 SQL Server 템플릿을 사용하는 것입니다. 그러면 아래와 같이 배포의 일부로 스토리지를 구성할 수 있습니다. 필요에 따라 IOP를 구성할 수 있으며 템플릿에서는 Windows 내에서 저장소 공간 풀을 만드는 작업을 수행합니다.
또한, 해당 리소스 공급자는 로컬 SSD 드라이브에 TempDB 추가를 지원하고 시작 시 폴더를 만드는 예약된 작업을 만듭니다.