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