리전 영구 디스크 추가 또는 크기 조절

이 페이지에서는 리전 영구 디스크 스토리지 리소스를 추가하고 관리하는 방법을 설명합니다. 지역 영구 디스크의 크기 조절은 크기 증가만 지원합니다. 영구 디스크의 크기를 줄일 수는 없습니다.

리전 영구 디스크는 영역 영구 디스크와 비슷하지만 몇 가지 차이점이 있습니다.

  • 부팅 디스크로 사용할 수 없습니다.
  • 영역에서 오류가 발생하는 경우 다른 가상 머신(VM) 인스턴스에 대한 강제 연결을 지원합니다.
  • 스냅샷에서는 리전 영구 디스크를 만들 수 있지만 이미지에서는 만들 수 없습니다.
  • 성능상의 차이는 스토리지 옵션 문서에서 확인할 수 있습니다.

리전 영구 디스크는 한 리전의 두 영역 간에 데이터를 동기식으로 복제합니다. 드물게 영역 오류가 발생할 경우 동일한 영역 또는 보조 영역의 다른 VM으로 워크로드를 장애 조치할 수 있습니다. 그러면 리전 영구 디스크를 이 인스턴스에 강제 연결할 수 있습니다. 강제 연결 시간은 1분 이내입니다.

의도하지 않은 데이터 손실을 방지하려면 스냅샷을 사용하여 리전 영구 디스크를 백업하는 것이 좋습니다.

리전 영구 디스크는 강력한 시스템을 설계할 때와 고가용성이 필요한 MySQL 및 Postgres 등의 스테이트풀(Stateful) 데이터베이스 서비스를 고려할 때 적합한 옵션입니다.

리소스와 리소스 성능을 비교하려면 Compute Engine 스토리지 옵션을 참조하세요.

시작하기 전에

제한사항

리전 영구 디스크에는 다음과 같은 제한사항이 있습니다.

  • 부팅 디스크로 사용할 수 없습니다.
  • 스냅샷에서 리전 영구 디스크를 만들 수 있지만 이미지에서는 만들 수 없습니다.
  • 리전 표준 영구 디스크의 최소 크기는 200GB입니다.
  • 메모리 최적화 머신 유형 또는 컴퓨팅 최적화 머신 유형에서는 리전 영구 디스크를 사용할 수 없습니다.

인스턴스에 리전 영구 디스크 추가

리전 표준 영구 디스크나 리전 SSD 영구 디스크를 만들고 인스턴스에 연결하세요. 인스턴스가 없다면 먼저 새 인스턴스를 만들고 시작해야 합니다. 인스턴스는 디스크와 동일한 지역에 만들어야 합니다.

Console

먼저 리전 영구 디스크를 만든 다음 기존 인스턴스에 연결해야 합니다. 리전 영구 디스크는 장애 조치 중에 강제 연결할 수 없으므로 부팅 디스크로 만들 수 없습니다.

리전 영구 디스크를 만듭니다.

  1. Google Cloud Console에서 디스크 페이지로 이동합니다.

    디스크로 이동

  2. 프로젝트를 선택합니다.

  3. 디스크 만들기를 클릭합니다.

  4. 디스크 이름을 지정합니다.

  5. 디스크 유형을 선택합니다.

  6. 이 디스크를 리전 내에 복제 체크박스를 선택합니다.

  7. 리전을 선택합니다.

    인스턴스를 만들 때 동일한 지역을 선택해야 하므로 지역을 기록해두세요.

  8. 해당 리전에서 두 개의 영역(zone)을 선택하고 확인을 클릭합니다.

    영역 두 개를 선택해야 합니다. 이러한 영역 중 하나에서 디스크를 인스턴스에 연결해야 하므로 선택한 영역을 기록해 둡니다.

  9. 소스 유형을 선택합니다.

  10. 암호화를 선택합니다.

  11. 만들기를 클릭하여 디스크 만들기를 마칩니다.

리전 영구 디스크를 만든 후에는 디스크를 인스턴스에 연결합니다.

디스크를 인스턴스에 연결할 때 디스크가 이미 다른 인스턴스에 연결되어 있으면 오류 메시지가 나타날 수 있습니다. 기존 디스크 연결을 클릭한 뒤 강제 연결 체크박스를 선택하여 디스크를 인스턴스에 강제로 연결해야 할 수 있습니다.

새 디스크를 인스턴스에 연결한 후에는 운영체제가 가용 저장공간을 사용할 수 있도록 디스크를 포맷하고 마운트해야 합니다.

gcloud

gcloud 명령줄 도구를 사용하여 리전 영구 디스크를 만들고 연결합니다.

  1. 리전 영구 디스크를 만들려면 compute disks create 명령어를 사용합니다. 추가 처리량 또는 IOPS에 사용할 리전 SSD 영구 디스크가 필요한 경우에는 --type 플래그를 포함하고 pd-ssd를 지정합니다.

    gcloud compute disks create DISK_NAME \
        --size DISK_SIZE \
        --type DISK_TYPE \
        --region REGION \
        --replica-zones ZONE1,ZONE2
    

    다음을 바꿉니다.

    • DISK_NAME: 새 디스크의 이름
    • DISK_SIZE: 새 디스크의 크기(GB)입니다.
    • DISK_TYPE: 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.
    • REGION: 리전 디스크가 상주하는 위치입니다. 예를 들면 europe-west1입니다.
    • ZONE1,ZONE2: 두 개의 디스크 복제본이 있는 리전 내 영역입니다.
      영역 두 개를 선택해야 합니다. 예를 들면 europe-west1-a,europe-west1-b입니다.
  2. 디스크를 만든 후 실행 중이거나 중지된 인스턴스에 연결합니다. compute instances attach-disk 명령어를 사용하고 --disk 플래그를 포함합니다.

    gcloud compute instances attach-disk INSTANCE_NAME \
        --disk DISK_NAME
    

    다음을 바꿉니다.

    • INSTANCE_NAME: 새 리전 영구 디스크를 추가할 인스턴스의 이름
    • DISK_NAME: 인스턴스에 연결할 새 디스크의 이름

    새 디스크를 만들고 인스턴스에 연결한 후에는 운영체제가 가용 저장공간을 사용할 수 있도록 디스크를 포맷하고 마운트해야 합니다.

API

  1. API에서 POST 요청을 작성하여 리전 영구 디스크를 만듭니다. compute.regionDisks.insert 요청 본문에서 새 디스크를 초기화하고 디스크 namereplicaZones 속성을 지정합니다. 빈 디스크를 만들려면 이미지 또는 스냅샷 소스를 지정하지 마세요.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION
    
    {
     "name": "DISK_NAME",
     "replicaZones": [
       "projects/PROJECT_ID/zones/ZONE1",
       "projects/PROJECT_ID/zones/ZONE2"
       ],
     }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • DISK_NAME: 새 디스크의 이름
    • [ZONE1,ZONE2: 새 디스크의 복제본이 있어야 하는 영역
  2. API에서 compute.instances.attachDisk 메서드에 대한 POST 요청을 작성하고 방금 만든 영구 디스크를 가리키는 URL을 포함합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
    
    {
     "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • ZONE: 인스턴스의 위치
    • INSTANCE_NAME: 새 영구 디스크를 추가할 인스턴스의 이름
    • DISK_NAME: 새 디스크의 이름

새 디스크를 만들고 인스턴스에 연결한 후에는 운영체제가 가용 저장공간을 사용할 수 있도록 디스크를 포맷하고 마운트해야 합니다.

영역 장애가 있는 경우의 리전 영구 디스크 액세스

드물게 영역 장애가 발생하는 경우 --force-attach 플래그와 함께 attach-disk 명령어를 사용하여 리전 영구 디스크를 다른 영역의 VM 인스턴스로 장애 조치할 수 있습니다.

VM 인스턴스가 실행 중인 영역을 사용할 수 없으면 분리 작업을 수행하기 위해 인스턴스에 도달할 수 없으므로 디스크를 인스턴스에서 분리할 수 없습니다. 강제 연결을 사용하면 리전 영구 디스크가 다른 인스턴스에 연결되어 있어도 이 디스크를 VM 인스턴스에 연결할 수 있습니다.

강제 연결 작업을 완료한 후 Compute Engine은 원래 VM이 디스크에 쓰지 못하게 합니다. 강제 연결을 사용하면 안전하게 데이터에 대한 액세스 권한을 다시 얻고 서비스를 복구할 수 있습니다.

쓰기 작업은 두 복제본에서 지속적으로 유지되는 경우에만 VM에 승인됩니다. 복제본 중 하나를 사용할 수 없으면 Compute Engine은 정상 복제본에만 기록합니다. 비정상 복제본이 Compute Engine에 의해 결정된 대로 백업되면 정상 복제본과 투명하게 동기화되고 완전한 동기화 작업 모드가 다시 시작됩니다. 이 작업은 VM에 대해 투명합니다.

드물지만 두 복제본을 동시에 사용할 수 없게 되거나 다른 복제본을 동기화하는 동안 정상 복제본을 사용할 수 없게 되면 해당 디스크를 사용할 수 없게 됩니다.

강제 연결 단계 수행 후 인스턴스를 수동으로 종료할 수도 있습니다.

영역 내 장애

또 다른 옵션은 리전 영구 디스크를 동일한 영역의 VM 인스턴스에 강제로 연결하는 것입니다. 이 영역 내 장애 조치 옵션을 사용하여 VM 구성 오류, 잘못된 OS 업그레이드, 기타 장애 모드로 인한 중단 문제를 해결할 수 있습니다.

Console

대기 VM 인스턴스를 만든 후 디스크를 인스턴스에 강제로 연결합니다.

  1. Google Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 프로젝트를 선택합니다.

  3. 만들기를 클릭합니다.

  4. 인스턴스 이름을 지정합니다.

  5. 리전 영구 디스크가 상주할 리전을 선택합니다.

  6. 디스크가 연결되었던 원본 VM 인스턴스의 대체 영역을 선택합니다. 디스크가 디스크 페이지에 나열됩니다.

  7. 관리, 디스크, 네트워킹, SSH 키를 클릭합니다.

  8. 디스크를 클릭합니다.

  9. 추가 디스크 섹션에서 기존 디스크 연결을 클릭합니다.

  10. 목록에서 리전 영구 디스크를 선택합니다.

  11. 체크박스를 선택하여 디스크를 강제 연결합니다.

  12. 완료를 클릭합니다.

  13. 만들기를 클릭하여 인스턴스 만들기를 마칩니다. 새 VM 인스턴스가 VM 인스턴스 페이지에 나타납니다. 중단되었던 영역이 복구되면 동일한 단계를 반복하여 디스크를 원래 인스턴스에 강제로 연결합니다.

gcloud

gcloud 도구에서 instances attach-disk 명령어를 사용하여 복제본 디스크를 VM 인스턴스에 연결합니다. --disk-scope 플래그를 포함하고 regional로 설정합니다.

gcloud compute instances attach-disk INSTANCE_NAME  \
    --disk DISK_NAME --disk-scope regional \
    --force-attach

다음을 바꿉니다.

  • INSTANCE_NAME: 리전의 새 VM 인스턴스 이름
  • DISK_NAME: 디스크 이름

디스크 강제 연결 후 필요하면 파일 시스템을 디스크에 마운트합니다. 인스턴스는 강제 연결한 디스크를 이용해 읽기 및 쓰기 작업을 계속 진행할 수 있습니다.

API

compute.instances.attachDisk 메서드에 대한 POST 요청을 작성하고 방금 만든 영구 디스크의 URL을 포함합니다. 기본 인스턴스에 여전히 디스크가 있지만 forceAttach=true 쿼리 매개변수에서 디스크를 새 VM 인스턴스에 연결해야 합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk?forceAttach=true

{
 "source": "projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • ZONE: 인스턴스의 위치
  • INSTANCE_NAME: 새 영구 디스크를 추가할 인스턴스의 이름
  • REGION: 새 리전 영구 디스크가 위치하는 리전
  • DISK_NAME: 새 디스크의 이름

복제본 디스크를 연결한 후 필요하면 파일 시스템을 디스크에 마운트합니다. 인스턴스는 복제본 디스크를 사용하여 읽기 및 쓰기 작업을 계속할 수 있습니다.

리전 영구 디스크 크기 조절

리전 영구 디스크가 있는 인스턴스에 추가 저장공간, IOPS 또는 처리량이 필요하면 디스크 크기를 조절할 수 있습니다. 데이터를 고유한 볼륨으로 분리해야 하는 경우 인스턴스에 대한 여러 보조 디스크를 만듭니다. 디스크가 실행 중인 인스턴스와 연결되어 있는지와 관계없이 언제든지 디스크의 크기를 조절할 수 있습니다.

리전 영구 디스크의 크기를 조절하는 명령어는 표준 영구 디스크의 크기 조절 명령어와 동일하지만 리전에 대한 추가 플래그가 있습니다.

Console

리전 영구 디스크 크기 조절

  1. Google Cloud Console에서 디스크 페이지로 이동합니다.

    디스크로 이동

  2. 크기를 조절할 디스크를 선택합니다.

  3. 페이지 상단의 수정을 클릭합니다.

  4. 디스크 크기(GB)를 입력합니다.

    디스크 크기는 늘릴 수만 있습니다. 디스크 크기를 줄일 수는 없습니다.

  5. 저장을 클릭합니다.

  6. 디스크 크기를 조절한 후에는 운영체제가 추가 공간에 액세스할 수 있도록 파일 시스템 크기를 조절해야 합니다.

    새로운 디스크 크기가 디스크 목록에 표시됩니다.

gcloud

gcloud 도구에서 compute disks resize 명령어를 사용합니다. 원하는 디스크 크기(GB)로 --size 플래그를 지정하고 디스크가 있는 리전으로 --region 플래그를 지정합니다.

gcloud compute disks resize DISK_NAME \
    --region REGION  \
    --size DISK_SIZE

다음을 바꿉니다.

  • DISK_NAME: 크기를 조절할 디스크의 이름
  • REGION: 디스크가 있는 리전
  • DISK_SIZE: 디스크의 새 크기(GB)

디스크 크기를 조절한 후에는 운영체제가 추가 공간에 액세스할 수 있도록 파일 시스템 크기를 조절해야 합니다.

API

API에서 compute.regionDisks.resize 메서드에 대한 POST 요청을 작성합니다. 요청 본문에서 sizeGb 매개변수를 지정하고 원하는 디스크 크기(GB)로 설정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize

{
 "sizeGb": "DISK_SIZE"
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • REGION: 디스크가 있는 리전
  • DISK_NAME: 크기를 조절할 디스크의 이름
  • DISK_SIZE: 디스크의 새 크기(GB)

디스크 크기를 조절한 후에는 운영체제가 추가 공간에 액세스할 수 있도록 파일 시스템 크기를 조절해야 합니다.

여러 인스턴스 간에 리전 영구 디스크 공유

비부팅 영구 디스크를 두 개 이상의 가상 머신 인스턴스에 읽기 전용 모드로 연결할 수 있으며, 이 경우 정적 데이터를 여러 인스턴스에서 공유할 수 있습니다. 한 영구 디스크에서 여러 인스턴스 사이에 고정 데이터를 공유하면 인스턴스마다 데이터를 고유 디스크에 복제할 때보다 비용이 적게 듭니다.

영구 디스크를 여러 인스턴스에 연결할 경우 해당 인스턴스가 모두 영구 디스크를 읽기 전용 모드로 연결해야 합니다. 영구 디스크를 읽기-쓰기 모드로 여러 인스턴스에 연결하는 것은 불가능합니다. 여러 인스턴스 사이에 동적 저장공간을 공유해야 할 경우 다음 옵션 중 하나를 사용할 수 있습니다.

영구 디스크의 데이터를 여러 인스턴스에서 공유하려는 경우, 영구 디스크를 읽기-쓰기 인스턴스와 분리하여 하나 이상의 인스턴스에 읽기 전용 모드로 연결합니다.

Console

  1. Google Cloud Console에서 인스턴스 페이지로 이동합니다.

    인스턴스로 이동

  2. 디스크를 연결하려는 인스턴스의 이름을 클릭합니다. 인스턴스 세부정보 페이지가 열립니다.

  3. 인스턴스 세부정보 페이지의 상단에서 수정을 클릭합니다.

  4. 추가 디스크 섹션에서 기존 디스크 연결을 클릭합니다.

  5. 목록에서 리전 영구 디스크를 선택합니다.

  6. 모드 섹션에서 읽기 전용을 선택합니다.

  7. 완료를 클릭합니다.

  8. 인스턴스 세부정보 페이지 하단에 있는 저장을 클릭해 변경사항을 인스턴스에 적용합니다.

  9. 인스턴스에 연결하고 디스크를 마운트합니다.

  10. 다른 인스턴스에 디스크를 읽기 전용 모드로 추가하려면 이 프로세스를 반복합니다.

gcloud

gcloud 도구에서 compute instances attach-disk 명령어를 사용하고 ro 옵션으로 --mode 플래그를 지정합니다.

gcloud beta compute instances attach-disk INSTANCE_NAME --disk DISK_NAME \
    --disk-scope regional --mode ro

다음을 바꿉니다.

  • INSTANCE_NAME: 영구 디스크를 연결할 인스턴스의 이름
  • DISK_NAME: 연결할 디스크의 이름

디스크를 연결한 후에 인스턴스에 연결하고 마운트합니다.

이 디스크를 읽기 전용 모드로 추가하려는 각 인스턴스에 이 명령어를 반복합니다.

API

API에서 compute.instances.attachDisk 메서드에 대해 POST 요청을 작성합니다. 요청 본문에서 mode 매개변수를 READ_ONLY로 지정합니다.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk

{
 "source": "regions/REGION/disks/DISK_NAME",
 "mode": "READ_ONLY"
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • ZONE: 인스턴스의 영역
  • INSTANCE_NAME: 영구 디스크를 연결할 인스턴스의 이름
  • REGION: 디스크가 있는 리전
  • DISK_NAME: 연결하는 디스크의 이름

디스크를 연결한 후에 인스턴스에 연결하고 마운트합니다.

이 디스크를 읽기 전용 모드로 추가하려는 각 인스턴스에 이 요청을 반복합니다.

영역 영구 디스크를 리전 영구 디스크로 마이그레이션

기존 영역(zonal) 영구 디스크를 리전 영구 디스크로 전환하려면 현재 영구 디스크의 스냅샷을 생성하고 해당 스냅샷에서 리전 영구 디스크를 만들어야 합니다.

gcloud

gcloud 도구에서 compute disks snapshot 명령어를 사용하고 --snapshot-names 플래그와 --zone 플래그를 지정합니다.

gcloud compute disks snapshot DISK_NAME \
    --zone ZONE \
    --snapshot-names SNAPSHOT_DISK_NAME

다음을 바꿉니다.

  • DISK_NAME: 스냅샷을 생성하려는 디스크의 이름
  • ZONE: 소스 영역 디스크가 있는 위치
  • SNAPSHOT_DISK_NAME: 새로 스냅샷이 생성된 디스크의 이름

compute disks create를 사용하여 영역 디스크의 스냅샷에서 리전 디스크를 만듭니다. 디스크 이름, --region, --replica-zones, --source-snapshot 플래그를 지정합니다.

gcloud compute disks create DISK_NAME \
    --region REGION \
    --replica-zones ZONE1,ZONE2 \
    --source-snapshot SNAPSHOT_DISK_NAME

다음을 바꿉니다.

  • DISK_NAME: 새 디스크의 이름
  • REGION: 디스크가 상주할 리전
  • ZONE1,ZONE2: 새 리전 영구 디스크의 복제본이 상주할 영역
  • SNAPSHOT_DISK_NAME: 소스 스냅샷 디스크의 이름

동일한 메서드를 이용해 리전 디스크를 영역 디스크로 마이그레이션할 수 있습니다.

API

API에서 compute.disk.createSnapshot 메서드에 대해 POST 요청을 작성하여 디스크의 스냅샷을 만듭니다. 요청 본문에서 디스크가 상주하는 zone, 스냅샷을 만들고 있는 disk의 이름과 createSnapshot을 지정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/createSnapshot

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • ZONE: 디스크가 있는 영역
  • DISK_NAME: 스냅샷을 생성하는 디스크의 이름

API에서 POST 요청을 작성하여 리전 영구 디스크를 만듭니다. compute.regionDisks.insert 요청 본문에서 새 디스크를 초기화하고 디스크 이름과 replica-zone 속성을 지정합니다. 데이터 디스크이므로 빈 디스크를 만드는 sourceImage 속성을 포함하지 마세요.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks

{
 "name": "DISK_NAME",
 "sourceSnapshot": "global/snapshots/SNAPSHOT_NAME",
 "replicaZones": [
 "projects/PROJECT_ID/zones/ZONE1",
 "projects/PROJECT_ID/zones/ZONE2"
 ],
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • REGION: 디스크가 상주할 리전
  • DISK_NAME: 새 디스크의 이름
  • SNAPSHOT_NAME: 복원할 스냅샷
  • ZONE1,ZONE2: 새 리전 영구 디스크의 복제본이 상주할 영역

다음 단계