

# RDS for SQL Server에서 스토리지 작업
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseStorage"></a>

RDS for SQL Server를 사용하면 RDS for SQL Server 인스턴스에 최대 3개의 추가 볼륨을 연결할 수 있으며, 각 볼륨은 고유한 Windows 드라이브 문자에 매핑됩니다. 이렇게 하면 기본 `D:` 드라이브를 넘어 여러 볼륨에 데이터베이스 파일을 배포할 수 있습니다. 스토리지 볼륨을 추가하면 데이터베이스 파일 관리 및 스토리지 최적화를 위한 유연성이 향상됩니다.

이점은 다음과 같습니다.
+ **유연한 파일 배포** - 데이터베이스 데이터 파일과 로그 파일을 여러 볼륨에 분산하여 I/O 성능을 개선합니다.
+ **스토리지 최적화** - 워크로드 요구 사항에 따라 다양한 스토리지 유형 및 구성을 사용합니다.
+ **확장성** - 기존 볼륨을 수정하지 않고 스토리지 용량을 추가합니다.

**Topics**
+ [

## RDS for SQL Server에서 추가 스토리지 볼륨을 사용하기 위한 고려 사항
](#SQLServer.ASV.Considerations)
+ [

## RDS for SQL Server를 사용하여 스토리지 볼륨 추가, 제거 또는 수정
](#SQLServer.ASV.Management)
+ [

## RDS for SQL Server를 사용하여 추가 스토리지 볼륨에 대한 복원 작업
](#SQLServer.ASV.Restore)
+ [

## RDS for SQL Server를 사용한 추가 스토리지 볼륨 사용 사례
](#SQLServer.ASV.UseCases)

## RDS for SQL Server에서 추가 스토리지 볼륨을 사용하기 위한 고려 사항
<a name="SQLServer.ASV.Considerations"></a>

RDS for SQL Server에서 추가 스토리지 볼륨을 사용할 때는 다음 기능과 제한 사항에 유의하세요.
+ SQL Server Standard Edition(SE), Enterprise Edition(EE) 및 Developer Edition(DEV-EE)에서만 스토리지 볼륨을 추가할 수 있습니다.
+ 인스턴스당 최대 3개의 스토리지 볼륨을 추가할 수 있습니다.
+ 볼륨 이름은 다음과 같이 Windows 드라이브 문자에 자동으로 매핑됩니다.
  + `rdsdbdata2` – `H:` 드라이브
  + `rdsdbdata3` – `I:` 드라이브
  + `rdsdbdata4` – `J:` 드라이브
+ TempDB 파일은 NVMe 인스턴스 스토리지를 사용할 때 `T:` 드라이브를 계속 사용합니다. SQL Server Audit 파일과 Microsoft Business Intelligence(MSBI) 파일은 `D:` 드라이브에 남아 있습니다.
+ 범용 SSD(gp3)와 프로비저닝된 IOPS SSD(io2) 스토리지 유형만 추가할 수 있습니다.
+ 추가 스토리지 볼륨의 최소 스토리지 크기는 기본 `D:` 드라이브에 설정된 제한과 동일합니다. DB 인스턴스의 최대 스토리지 크기는 모든 볼륨에서 총 256TiB입니다.
+ 읽기 전용 복제본이 있는 인스턴스 또는 읽기 전용 복제본 인스턴스에 스토리지 볼륨을 추가하는 것은 지원되지 않습니다.
+ 교차 리전 자동 백업이 활성화된 인스턴스에 스토리지 볼륨을 추가하는 것은 지원되지 않습니다.
+ 스토리지 자동 규모 조정을 위한 추가 스토리지 볼륨 구성은 지원되지 않습니다.
+ 생성 후 볼륨 간 파일 이동은 지원되지 않습니다.
+ `D:` 볼륨은 삭제할 수 없지만 비어 있는 다른 스토리지 볼륨은 삭제할 수 있습니다.
+ 스냅샷 복원 또는 특정 시점 복구(PITR) 중에 기존 볼륨의 크기를 수정하는 것은 지원되지 않습니다. 그러나 복원 작업 중에 새 스토리지 볼륨을 추가할 수 있습니다.

## RDS for SQL Server를 사용하여 스토리지 볼륨 추가, 제거 또는 수정
<a name="SQLServer.ASV.Management"></a>

AWS CLI 또는 AWS Management Console을 사용하여 추가 스토리지 볼륨을 추가, 수정 및 제거할 수 있습니다. 모든 작업은 `additional-storage-volumes` 파라미터와 함께 `modify-db-instance` API 작업을 사용합니다.

**중요**  
스토리지 볼륨을 추가하거나 제거하면 백업 보류 중 작업과 특정 시점 복원 블랙아웃 창이 생성됩니다. 백업 워크플로가 완료되면 이 창이 닫힙니다.

**Topics**
+ [

### 스토리지 볼륨 추가
](#SQLServer.ASV.Adding)
+ [

### 추가 스토리지 볼륨 확장
](#SQLServer.ASV.Scaling)
+ [

### 추가 스토리지 볼륨 제거
](#SQLServer.ASV.Removing)

### 스토리지 볼륨 추가
<a name="SQLServer.ASV.Adding"></a>

기본 `D:` 드라이브 외에 최대 3개의 스토리지 볼륨을 추가할 수 있습니다. RDS for SQL Server 인스턴스에 새 스토리지 볼륨을 추가하려면 `additional-storage-volumes` 파라미터와 함께 `modify-db-instance` 명령을 사용합니다.

다음 예제에서는 `rdsdbdata4`라는 새로운 4,000GiB 범용 SSD(gp3) 볼륨을 추가합니다.

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":4000}]' \
  --apply-immediately
```

### 추가 스토리지 볼륨 확장
<a name="SQLServer.ASV.Scaling"></a>

스토리지 크기를 제외한 추가 볼륨의 모든 스토리지 설정을 수정할 수 있습니다. 다음 예시에서는 `rdsdbdata2` 볼륨에 대한 IOPS 설정을 수정합니다.

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":4000}]' \
  --apply-immediately
```

### 추가 스토리지 볼륨 제거
<a name="SQLServer.ASV.Removing"></a>

`D:` 볼륨은 삭제할 수 없지만 다른 스토리지 볼륨이 비어 있을 때는 삭제할 수 있습니다.

**주의**  
추가 스토리지 볼륨을 제거하기 전에 볼륨에 저장된 데이터베이스 파일이 없는지 확인합니다.

다음 예제에서는 `rdsdbdata4` 볼륨을 제거합니다.

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","SetForDelete":true}]' \
  --apply-immediately
```

## RDS for SQL Server를 사용하여 추가 스토리지 볼륨에 대한 복원 작업
<a name="SQLServer.ASV.Restore"></a>

데이터베이스를 복원할 때 스토리지 볼륨을 추가할 수 있습니다. 기존 볼륨의 스토리지 설정을 수정할 수도 있습니다.

**Topics**
+ [

### 스냅샷 복원
](#SQLServer.ASV.SnapshotRestore)
+ [

### 시점 복구
](#SQLServer.ASV.PITR)
+ [

### 기본 데이터베이스 복원
](#SQLServer.ASV.NativeRestore)

### 스냅샷 복원
<a name="SQLServer.ASV.SnapshotRestore"></a>

스냅샷에서 복원할 때 새 스토리지 볼륨을 추가하거나 기존 볼륨의 IOPS, 처리량 및 스토리지 유형 설정을 수정할 수 있습니다.

다음 예시에서는 스냅샷에서 DB 인스턴스를 복원하고 `rdsdbdata2` 볼륨에 대한 IOPS 설정을 수정합니다.

```
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier my-restored-instance \
  --db-snapshot-identifier my-snapshot \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":5000}]'
```

### 시점 복구
<a name="SQLServer.ASV.PITR"></a>

특정 시점 복구(PITR) 중에 사용자 지정 구성을 사용하여 새 스토리지 볼륨을 추가할 수 있습니다.

다음 예제에서는 PITR을 수행하고 새로운 5,000GiB 범용 SSD(gp3) 볼륨을 추가합니다.

```
aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier my-source-instance \
  --target-db-instance my-pitr-instance \
  --use-latest-restorable-time \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":5000,"IOPS":5000,"StorageThroughput":200}]'
```

### 기본 데이터베이스 복원
<a name="SQLServer.ASV.NativeRestore"></a>

`rds_restore_database` 저장 프로시저를 사용하여 데이터베이스를 특정 추가 스토리지 볼륨으로 복원할 수 있습니다. 두 가지 새로운 파라미터가 볼륨 선택을 지원합니다.

**`data_file_volume`**  
데이터베이스 데이터 파일의 드라이브 문자를 지정합니다.

**`log_file_volume`**  
데이터베이스 로그 파일의 드라이브 문자를 지정합니다.

다음 예시에서는 `H:` 드라이브의 데이터 파일과 `I:` 드라이브의 로그 파일을 사용하여 데이터베이스를 복원합니다.

```
EXEC msdb.dbo.rds_restore_database    
    @restore_db_name='my_database',
    @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak',
    @data_file_volume='H:',
    @log_file_volume='I:';
```

볼륨 파라미터를 지정하지 않거나 두 파라미터 모두에 `D:` 드라이브를 지정하면 데이터베이스 파일이 기본 `D:` 드라이브로 복원됩니다.

```
EXEC msdb.dbo.rds_restore_database    
    @restore_db_name='my_database',
    @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak';
```

## RDS for SQL Server를 사용한 추가 스토리지 볼륨 사용 사례
<a name="SQLServer.ASV.UseCases"></a>

추가 스토리지 볼륨은 다양한 데이터베이스 관리 시나리오를 지원합니다. 다음 섹션에서는 일반적인 사용 사례 및 구현 접근 방식을 설명합니다.

**Topics**
+ [

### 추가 스토리지 볼륨에 데이터베이스 생성
](#SQLServer.ASV.NewDatabase)
+ [

### 스토리지 용량 확장
](#SQLServer.ASV.ExtendStorage)
+ [

### 볼륨 간 데이터베이스 이동
](#SQLServer.ASV.MoveDatabase)
+ [

### 비용 효과적인 스토리지에 데이터 보관
](#SQLServer.ASV.ArchiveData)

### 추가 스토리지 볼륨에 데이터베이스 생성
<a name="SQLServer.ASV.NewDatabase"></a>

표준 SQL Server `CREATE DATABASE` 문을 사용하여 추가 스토리지 볼륨에 직접 새 데이터베이스를 생성할 수 있습니다.

다음 예시에서는 `H:` 드라이브의 데이터 파일과 `I:` 드라이브의 로그 파일을 사용하여 데이터베이스를 생성합니다.

```
CREATE DATABASE MyDatabase
ON (
    NAME = 'MyDatabase_Data',
    FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data.mdf',
    SIZE = 100MB,
    FILEGROWTH = 10MB
)
LOG ON (
    NAME = 'MyDatabase_Log',
    FILENAME = 'I:\rdsdbdata\data\MyDatabase_Log.ldf',
    SIZE = 10MB,
    FILEGROWTH = 10%
);
```

### 스토리지 용량 확장
<a name="SQLServer.ASV.ExtendStorage"></a>

기본 `D:` 드라이브가 최대 용량에 도달하면 스토리지 볼륨을 추가하고, 기존 볼륨을 확장하고, 새 볼륨에 새 데이터 파일 또는 로그 파일을 생성할 수 있습니다.

**스토리지 용량 확장**

1. `modify-db-instance` 명령을 사용하여 인스턴스에 스토리지 볼륨을 추가합니다.

1. 추가 스토리지 볼륨에 새 데이터 파일을 추가합니다.

   ```
   ALTER DATABASE MyDatabase
   ADD FILE (
       NAME = 'MyDatabase_Data2',
       FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data2.ndf',
       SIZE = 500MB,
       FILEGROWTH = 50MB
   );
   ```

### 볼륨 간 데이터베이스 이동
<a name="SQLServer.ASV.MoveDatabase"></a>

데이터베이스를 다른 볼륨으로 이동하려면 `rds_backup_database` 및 `rds_restore_database` 저장 프로시저와 함께 백업 및 복원 접근 방식을 사용합니다. 자세한 내용은 [기본 백업 및 복원 사용](SQLServer.Procedural.Importing.Native.Using.md) 섹션을 참조하세요.

**데이터베이스를 다른 볼륨으로 이동**

1. `rds_backup_database`를 사용하여 데이터베이스를 백업합니다.

   ```
   EXEC msdb.dbo.rds_backup_database 
       @source_db_name='MyDatabase',
       @s3_arn_to_backup_to='arn:aws:s3:::my-bucket/database-backup.bak';
   ```

1. 데이터베이스를 대상 볼륨으로 복원합니다.

   ```
   EXEC msdb.dbo.rds_restore_database    
       @restore_db_name='MyDatabase_New',
       @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/database-backup.bak',
       @data_file_volume='H:',
       @log_file_volume='I:';
   ```

1. 이전 드라이브에서 데이터베이스를 삭제하여 공간을 해제합니다. 자세한 내용은 [Amazon RDS for Microsoft SQL Server DB 인스턴스 데이터베이스 삭제](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md) 섹션을 참조하세요.

### 비용 효과적인 스토리지에 데이터 보관
<a name="SQLServer.ASV.ArchiveData"></a>

분할된 테이블의 경우 이전 데이터를 성능 특성이 다른 추가 스토리지 볼륨에 보관할 수 있습니다.

**분할된 데이터 아카이브**

1. 적절한 스토리지 유형 및 용량을 가진 스토리지 볼륨을 추가합니다.

1. 추가 스토리지 볼륨에 새 파일 그룹을 생성합니다.

   ```
   ALTER DATABASE MyDatabase
   ADD FILEGROUP ArchiveFileGroup;
   
   ALTER DATABASE MyDatabase
   ADD FILE (
       NAME = 'Archive_Data',
       FILENAME = 'H:\rdsdbdata\data\Archive_Data.ndf',
       SIZE = 1GB,
       FILEGROWTH = 100MB
   ) TO FILEGROUP ArchiveFileGroup;
   ```

1. SQL Server 파티션 관리 명령을 사용하여 파티션을 새 파일 그룹으로 이동합니다.