Azure SQL 내부 디스크 할당 방법   저장 가능 용량 확인

 

·         Version : Azure SQL

 

Azure SQL Database Managed Instance 모든 데이터베이스 파일을 Azure Storage 보관하는 Azure Cloud SQL Server 서비스 이다. 이번 포스트에서는 Managed Instance 스토리지 계층에 디스크를 할당하는 방법과 최대 사용한 가능한 디스크 공간을 확인하는 방법에 대해서 살펴본다.

 

 Azure SQL Database Managed Instance 일반적인 목적의  스토리지 계층과 데이터베이스 파일이 위치하는 Azure Premium 스토리지 계층을 가지고 있다. Managed Instance 모든 파일에 대해 미리 정의된 크기의 Azure disk(128GB, 256GB, 512GB ) 사용한다. 모든 파일은 현재 파일의 크기를 포함할 있는 가장 작은 단일 디스크에 저장된다. 이는 모든 Managed Instance 최대 35TB 내부 저장장치를 가지고 있기 때문에 중요하다. Managed Instance 프로비저닝하면 가지 스토리지 제한이 있다.

1.       Managed Instance 사용자 저장소는 사용자가 포털에서 선택한 managed instance 저장소 이며 저장소 크기에 따라 비용을 지불한다.

2.       Azure Premium disk 내부에서 물리적으로 공간을 할당할 35TB 초과 없다. 결과적으로 GP 인스턴스에서  가장 작은 디스크(128GB) 위치한 280개의 파일이 35TB 한도에 도달하므로 GP인스턴스에 280 넘는 파을을 저장할 없다.

 

데이터베이스 파일을 만들때,  Azure Premium Disk 사용하는데 파일크기가 경우 파일의 내부 조각화가 발생할 있다. Azure Premium Disk 고정된 디스크 크기 집합을 제공하므로 Managed Instance 데이터베이스 파일을 일치하는 디스크에 저장하도록 구현된다. 할당된 디스크 크기의 합은 35TB 초과할 없다. 만약 한계에 도달하면 에러가 발생할 있다. 아래 스크립트는 저장용량 한도에 도달했는지 확인할 있다.  sys.master_files뷰를 래핑하고 모든 파일에 할당된 디스크 크기를 반환하는 표준 스키마뷰를 만든다.

CREATE SCHEMA mi;

GO

CREATE OR ALTER VIEW mi.master_files

AS

WITH mi_master_files AS

( SELECT *, size_gb = CAST(size * 8. / 1024 / 1024 AS decimal(12,4))

FROM sys.master_files )

SELECT *, azure_disk_size_gb = IIF(

database_id <> 2,

CASE WHEN size_gb <= 128 THEN 128

WHEN size_gb > 128 AND size_gb <= 256 THEN 256

WHEN size_gb > 256 AND size_gb <= 512 THEN 512

WHEN size_gb > 512 AND size_gb <= 1024 THEN 1024

WHEN size_gb > 1024 AND size_gb <= 2048 THEN 2048

WHEN size_gb > 2048 AND size_gb <= 4096 THEN 4096

ELSE 8192

END, NULL)

FROM mi_master_files;

GO

 

이제 Azure Premium disk 할당된 모든 데이터베이스 파일에 대한 크기를 있다.

SELECT db = db_name(database_id), name, size_gb, azure_disk_size_gb

from mi.master_files;

 

Azure disk 크기의 합은 35TB 초과해서는 안된다. 그렇지 않으면 Azure disk 오류가 발생한다. 다음 쿼리를 사용하여 할당된 저장 공간을 확인할 있다.

SELECT storage_size_tb = SUM(azure_disk_size_gb) /1024.

FROM mi.master_files

 

아래 스크립트는 새로운 파일이 128GB보다 작은것으로 가정하고 Managed Instance 추가할 있는 파일 수를 확인한다. 결과값이 0 경우 (또는 0 근사할 수록) 파일을 할당할 없으므로 새로운 계획이 필요 하다.

SELECT remaining_number_of_128gb_files =

(35 - ROUND(SUM(azure_disk_size_gb) /1024,0)) * 8

FROM mi.master_files

 

 

[참고자료]

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2018/08/20/reaching-azure-disk-storage-limit-on-general-purpose-azure-sql-database-managed-instance/

 

 

2018-09-05 / Sungwook Kang / http://sqlmvp.kr

 

Azure SQL,  Managed Instance, SQL, Azure disk, database file. Azure storage

+ Recent posts