리전 디스크 만들기 및 관리

Hyperdisk Balanced High Availability는 Compute Engine에서 고가용성(HA) 서비스를 구현할 수 있는 스토리지 옵션입니다. Hyperdisk Balanced High Availability는 같은 리전의 두 영역 간에 데이터를 동기식으로 복제하고 영역 오류 최대 1회까지 디스크 데이터의 HA를 보장합니다. 리전 디스크는 부팅 디스크 또는 비부팅 디스크일 수 있습니다.

(미리보기): 또한 디스크 액세스 모드를 설정하여 다른 인스턴스가 Hyperdisk Balanced High Availability 디스크에 동시에 액세스하도록 허용할 수 있습니다. 리전 디스크는 디스크 복제본과 동일한 영역의 인스턴스에만 연결할 수 있습니다. 자세한 내용은 인스턴스 간 디스크 공유를 참조하세요.

이 문서에서는 리전 디스크에 대해 다음 태스크를 수행하는 방법을 설명합니다.

시작하기 전에

필수 역할 및 권한

리전 디스크를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 리전 디스크를 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

리전 디스크를 만들려면 다음 권한이 필요합니다.

  • compute.disks.create
  • compute.instances.attachDisk
  • compute.disks.use
  • 디스크의 스냅샷 만들기: compute.disks.createSnapshot
  • 디스크 세부정보 보기: compute.disks.get
  • 디스크 목록 가져오기: compute.disks.list
  • 디스크 크기 변경하기: compute.disks.update

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

제한사항

  • 하이퍼디스크 균형 고가용성은 지원되는 머신 유형에만 연결할 수 있습니다.
  • 하이퍼디스크 균형 고가용성 볼륨의 크기는 늘릴 수만 있고 줄일 수는 없습니다.
  • 하이퍼디스크 균형 고가용성 볼륨은 해당 영역 디스크와 성능 특성이 다릅니다. 자세한 내용은 블록 스토리지 성능을 참조하세요.
  • 멀티 작성자 모드인 하이퍼디스크 균형 고가용성 볼륨을 부팅 디스크로 사용할 수 없습니다.
  • 영역 디스크를 클론하여 복제된 디스크를 만드는 경우 두 영역 복제본이 생성 시에 완전히 동기화되지 않습니다. 생성 후에는 평균적으로 3분 이내에 리전 디스크 클론을 사용할 수 있습니다. 그러나 디스크가 완전 복제 상태에 도달하고 복구 지점 목표(RPO)가 0에 근접할 때까지 10분 정도 기다려야 할 수 있습니다. 복제된 디스크가 완전히 복제되었는지 확인하는 방법을 알아보세요.

리전 디스크를 인스턴스의 부팅 디스크로 사용

프로덕션 워크로드를 프로비저닝하기 전에 미리 프로비저닝되는 스테이트풀(Stateful) 워크로드에 대해Hyperdisk Balanced High Availability 디스크를 부팅 디스크로 연결할 수 있습니다. 리전 부팅 디스크는 2개의 컴퓨팅 인스턴스에 동시에 연결할 수 없으므로 핫 대기용으로 사용할 수 없습니다.

스냅샷에서만 Hyperdisk Balanced High Availability 볼륨을 만들 수 있습니다. 이미지에서는 리전 디스크를 만들 수 없습니다.

리전 디스크를 인스턴스의 부팅 디스크로 사용하려면 다음 방법을 사용합니다.

  1. 리전 부팅 디스크로 새 인스턴스 만들기
  2. 리전 부팅 디스크를 만든 후 인스턴스에 연결
    1. 부팅 디스크의 스냅샷에서 리전 디스크 만들기
    2. 인스턴스에 리전 부팅 디스크 연결

리전 부트 디스크를 복제본 영역에서 실행 중인 대기 인스턴스로 장애 조치해야 할 경우 인스턴스에 리전 부팅 디스크 연결에 설명된 단계를 따릅니다.

리전 디스크 만들기

Hyperdisk Balanced High Availability 볼륨을 만듭니다. 디스크는 연결하려는 컴퓨팅 인스턴스와 동일한 리전에 있어야 합니다.

또한 Hyperdisk Balanced High Availability 볼륨을 만들 경우 디스크 액세스 모드를 설정하여 여러 다른 인스턴스가 디스크에 동시에 액세스하도록 허용할 수 있습니다. 자세한 내용은 인스턴스 간 디스크 공유를 참조하세요.

콘솔

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

    디스크로 이동

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

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

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

  5. 위치에 대해 리전을 선택합니다.

  6. 리전영역을 선택합니다. 인스턴스를 만들 때 같은 리전을 선택해야 합니다.

  7. 동일한 리전에서 복제본 영역을 선택합니다. 이러한 영역 중 하나에서 디스크를 인스턴스에 연결해야 하므로 선택한 영역을 기록해 둡니다.

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

  9. 디스크 설정에서 디스크 유형크기를 선택합니다. 또한 기본 프로비저닝된 IOPS프로비저닝된 처리량 설정을 변경할 수 있습니다.

  10. 선택사항: Hyperdisk Balanced High Availability 볼륨에서는 멀티 작성자 모드로 디스크를 만들어 여러 인스턴스에 디스크를 연결하도록 설정할 수 있습니다(미리보기). 액세스 모드에서 여러 VM 읽기 쓰기를 선택합니다.

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

gcloud

compute disks create 명령어를 사용하여 리전 디스크를 만듭니다.

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

다음을 바꿉니다.

  • DISK_NAME: 새 디스크의 이름입니다.
  • DISK_SIZE: 새 디스크의 크기(GiB)입니다.
  • DISK_TYPE: Hyperdisk의 경우 hyperdisk-balanced-high-availability 값을 지정합니다.
  • REGION: 리전 디스크가 상주할 리전(예: europe-west1)입니다.
  • ZONE1,ZONE2: 2개의 디스크 복제본이 있는 리전 내 영역(예: europe-west1-b,europe-west1-c)
  • DISK_ACCESS_MODE: 선택사항: 인스턴스가 Hyperdisk Balanced High Availability 디스크의 데이터에 액세스하는 방법입니다(미리보기). 지원되는 값은 다음과 같습니다.

    • READ_WRITE_SINGLE: 한 인스턴스에서 읽기-쓰기 액세스를 위한 값입니다. 기본값입니다.
    • READ_WRITE_MANY: 여러 인스턴스에서 읽기-쓰기 액세스를 위한 값입니다.

    Hyperdisk Balanced High Availability 디스크에 대해서만 액세스 모드를 설정할 수 있습니다.

Terraform

Hyperdisk Balanced High Availability 볼륨을 만들려면 google_compute_region_disk 리소스를 사용하면 됩니다.

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

REST

Hyperdisk Balanced High Availability 볼륨을 만들려면 compute.regionDisks.insert 메서드에 대한 POST 요청을 작성합니다.

빈 디스크를 만들려면 스냅샷 소스를 지정하지 마세요.

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/disks
{
  "name": "DISK_NAME",
  "region": "projects/PROJECT_ID/regions/REGION",
  "replicaZones": [
    "projects/PROJECT_ID/zones/ZONE1",
    "projects/PROJECT_ID/zones/ZONE2"
  ],
  "sizeGb": "DISK_SIZE",
  "type": "projects/PROJECT_ID/regions/REGION/diskTypes/DISK_TYPE",
  "accessMode": "DISK_ACCESS_MODE"
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION: 리전 디스크가 상주할 리전(예: europe-west1)입니다.
  • DISK_NAME: 새 디스크의 이름입니다.
  • ZONE1,ZONE2: 새 디스크의 복제본이 있어야 하는 영역입니다.
  • DISK_SIZE: 새 디스크의 크기(GiB)입니다.
  • DISK_TYPE: Hyperdisk의 경우 hyperdisk-balanced-high-availability 값을 지정하세요.
  • DISK_ACCESS_MODE: 선택사항: 인스턴스가 Hyperdisk Balanced High Availability 디스크의 데이터에 액세스하는 방법입니다(미리보기). 지원되는 값은 다음과 같습니다.

    • READ_WRITE_SINGLE: 한 인스턴스에서 읽기-쓰기 액세스를 위한 값입니다. 기본값입니다.
    • READ_WRITE_MANY: 여러 인스턴스에서 읽기-쓰기 액세스를 위한 값입니다.

    Hyperdisk Balanced High Availability 디스크에 대해서만 액세스 모드를 설정할 수 있습니다.

인스턴스에 리전 디스크 연결

부팅 디스크가 아닌 디스크의 경우 Hyperdisk Balanced High Availability 볼륨을 만든 후 인스턴스에 연결할 수 있습니다. 인스턴스는 디스크와 동일한 리전에 있어야 합니다.

인스턴스에 리전 부팅 디스크를 연결하려면 인스턴스에 리전 부팅 디스크 연결을 참조하세요.

Hyperdisk Balanced High Availability 디스크를 여러 인스턴스에 연결하려면 각 인스턴스에 대해 이 섹션의 절차를 반복합니다. Hyperdisk Balanced High Availability 디스크는 읽기-쓰기 모드에서만 연결할 수 있습니다.

콘솔

  1. 인스턴스에 디스크를 연결하려면 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 이름 열에서 인스턴스 이름을 클릭합니다.

  3. 수정 을 클릭합니다.

  4. +기존 디스크 연결을 클릭합니다.

  5. 인스턴스에 추가할 이전에 만든 리전 디스크를 선택합니다.

  6. 선택한 디스크가 이미 다른 인스턴스에 연결되어 있다는 경고가 표시되면 디스크 강제 연결 체크박스를 선택하여 수정 중인 인스턴스에 디스크를 강제로 연결합니다.

    리전 디스크 장애 조치 시 리전 디스크를 강제 연결하는 경우의 사용 사례를 검토합니다.

  7. 선택사항: Hyperdisk Balanced High Availability 디스크를 여러 인스턴스에 연결하는 경우 디스크 연결 모드읽기/쓰기를 선택합니다.

  8. 저장을 클릭합니다.

  9. VM 수정 페이지에서 저장을 클릭합니다.

gcloud

실행 중이거나 중지된 인스턴스에 리전 디스크를 연결하려면 --disk-scope 플래그를 regional로 설정하여 compute instances attach-disk 명령어를 사용합니다.

멀티 작성자 모드에서 Hyperdisk Balanced High Availability 디스크를 여러 인스턴스에 연결할 경우 지원되는 연결 모드는 기본 액세스 모드인 rw입니다. --mode 플래그는 포함하지 않아도 됩니다.

gcloud compute instances attach-disk INSTANCE_NAME \
    --disk=DISK_NAME \
    --disk-scope=regional \
    --device-name=DEVICE_NAME

다음을 바꿉니다.

  • INSTANCE_NAME: 리전 디스크를 추가하려는 인스턴스의 이름입니다.
  • DISK_NAME: 인스턴스에 연결하려는 새 디스크의 이름입니다.
  • DEVICE_NAME: 선택사항: 게스트 OS가 디스크를 식별하는 데 도움이 되는 심볼릭 링크를 만드는 데 사용하는 이름입니다.

Terraform

Hyperdisk Balanced High Availability 볼륨을 인스턴스에 연결하려면 google_compute_attached_disk 리소스를 사용하면 됩니다.

resource "google_compute_instance" "test_node" {
  name         = "test-node"
  machine_type = "f1-micro"
  zone         = "us-west1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  attached_disk {
    source      = google_compute_disk.default.id
    device_name = google_compute_disk.default.name
  }

  network_interface {
    network = "default"
    access_config {
      # Ephemeral IP
    }
  }

  # Ignore changes for persistent disk attachments
  lifecycle {
    ignore_changes = [attached_disk]
  }


}

REST

실행 중이거나 중지된 인스턴스에 리전 디스크를 연결하려면 compute.instances.attachDisk 메서드에 대해 POST 요청을 수행하고 사용자가 만든 리전 디스크에 대한 URL을 포함합니다.

멀티 작성자 모드에서 Hyperdisk Balanced High Availability 디스크를 여러 인스턴스에 연결할 경우 지원되는 연결 모드는 기본 액세스 모드인 READ-WRITE입니다. mode 속성은 포함하지 않아도 됩니다.

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
{
  "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME",
  "deviceName": DEVICE_NAME
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • ZONE: 인스턴스의 위치입니다.
  • INSTANCE_NAME: 새 리전 디스크를 추가하려는 인스턴스의 이름입니다.
  • REGION: 리전 디스크가 있는 리전입니다.
  • DISK_NAME: 리전 디스크의 이름입니다(Google Cloud 콘솔에 표시됨).
  • DEVICE_NAME: 선택사항: 게스트 OS가 디스크를 식별하는 데 도움이 되는 심볼릭 링크를 만드는 데 사용하는 이름입니다.

비부팅 디스크의 경우 빈 리전 디스크를 만들고 인스턴스에 연결한 후 디스크 포맷 및 마운트를 수행해야 운영체제가 사용 가능한 스토리지 공간을 사용할 수 있습니다.

영역 디스크를 리전 디스크로 변경

Hyperdisk를 리전 디스크로 변환하려면 리전 디스크를 Hyperdisk Balanced High Availability 디스크로 변경에 설명된 대로기존 디스크의 스냅샷에서 새 Hyperdisk Balanced High Availability 디스크를 만듭니다.

리전 디스크로 새 인스턴스 만들기

인스턴스를 만들 때는 선택적으로Hyperdisk Balanced High Availability 볼륨을 추가 디스크로 포함할 수 있습니다.

인스턴스를 만드는 동안Hyperdisk Balanced High Availability 볼륨을 만들고 인스턴스에 연결하려면 다음 중 하나를 참조하세요.

리전 부팅 디스크로 새 인스턴스 만들기

고가용성 컴퓨팅 리소스를 설정할 때는 리전 부팅 디스크로 기본 인스턴스를 만들 수 있습니다. 영역 서비스 중단이 발생하면 새 인스턴스를 만드는 대신 보조 영역에서 인스턴스를 다시 시작할 수 있습니다.

부팅 기기가 리전 디스크인 고가용성 설정에서는 대기 인스턴스를 미리 만들고 시작하지 않는 것이 좋습니다. 대신 장애 조치 단계에서 forceAttach 옵션을 사용하여 대기 인스턴스를 만들 때 기존 리전 디스크를 연결합니다.

리전 디스크인 부팅 디스크로 인스턴스를 만들려면 다음 방법 중 하나를 따릅니다.

gcloud

gcloud compute instances create 명령어를 사용하여 인스턴스를 만들고 --create-disk 플래그를 사용하여 리전 디스크를 지정합니다.

gcloud compute instances create PRIMARY_INSTANCE_NAME  \
 --zone=ZONE  \
 --create-disk=^:^name=REGIONAL_DISK_NAME:boot=true:type=DISK_TYPE:source-snapshot=SNAPSHOT_NAME:replica-zones=ZONE,REMOTE_ZONE

디스크 파라미터를 지정할 때 ^:^ 문자는 파라미터 사이의 구분 문자를 콜론(:)으로 지정합니다. 이렇게 하면 복제본 영역 파라미터를 지정할 때 쉼표(,)를 사용할 수 있습니다.

다음을 바꿉니다.

  • PRIMARY_INSTANCE_NAME: 인스턴스 이름입니다.
  • ZONE: 인스턴스를 만들려는 영역의 이름입니다.
  • REGIONAL_DISK_NAME: 리전 디스크의 이름입니다.
  • DISK_TYPE: 만들려는 디스크 유형입니다(예: hyperdisk-balanced-high-availability).
  • SNAPSHOT_NAME: 부팅 디스크용으로 만든 스냅샷의 이름입니다.
  • REMOTE_ZONE: 리전 디스크의 대체 영역입니다.

REST

instances.insert 메서드에 대해 POST 요청을 만들고 boot: 'true'replicaZones 속성을 지정합니다. 예를 들면 다음과 같습니다.

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
 "name": "INSTANCE_NAME",
 "disks": [{
    "boot": true,
    "initializeParams": {
       "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME",
       "replicaZones": [
           "projects/PROJECT_ID/zones/ZONE",
           "projects/PROJECT_ID/zones/REMOTE_ZONE"
       ],
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
    }
  }],
 "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • ZONE: 인스턴스를 만들려는 영역의 이름입니다.
  • INSTANCE_NAME: 인스턴스 이름입니다.
  • BOOT_SNAPSHOT_NAME: 부팅 디스크 스냅샷의 이름입니다.
  • REMOTE_ZONE: 리전 디스크의 원격 영역입니다.
  • DISK_TYPE: 만들려는 디스크 유형입니다(예: hyperdisk-balanced-high-availability).

인스턴스에 리전 부팅 디스크 연결

다음 단계를 따르세요.

  • 기존 인스턴스의 부팅 디스크를 리전 부팅 디스크로 바꿉니다.
  • 리전 부팅 디스크를 백업 영역에서 실행되는 핫 대기 인스턴스로 장애 조치합니다. 이렇게 하려면 리전 디스크를 인스턴스에 부팅 디스크로 연결합니다.

이 단계에서는 리전 디스크와 인스턴스가 이미 있다고 가정합니다.

gcloud

  1. 인스턴스를 중지합니다.
    gcloud compute instances stop INSTANCE_NAME  --zone=ZONE
    
  2. 인스턴스에서 현재 부팅 디스크를 분리합니다.
    gcloud compute instances detach-disk INSTANCE_NAME \
     --zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME
    
  3. 리전 부팅 디스크를 인스턴스에 연결합니다.
    gcloud compute instances attach-disk INSTANCE_NAME  \
     --zone=ZONE  \
     --disk=REGIONAL_DISK_NAME  \
     --disk-scope=regional --force-attach \
     --boot
    
  4. 인스턴스를 다시 시작합니다.

    gcloud compute instances start INSTANCE_NAME
    

이전 명령어의 변수를 다음으로 바꿉니다.

  • INSTANCE_NAME: 리전 부팅 디스크를 연결하려는 인스턴스의 이름입니다.
  • ZONE: 인스턴스가 있는 영역입니다.
  • CURRENT_BOOT_DEVICE_NAME: 인스턴스에서 사용 중인 부팅 디스크의 이름입니다. 일반적으로 인스턴스 이름과 동일합니다.
  • REGIONAL_DISK_NAME: 인스턴스에 부팅 디스크로 연결하려는 리전 디스크의 이름입니다.

선택사항: 서비스 중단 또는 장애로 인해 기본 인스턴스에서 리전 부팅 디스크를 성공적으로 분리할 수 없으면 --force-attach 플래그를 포함하세요.

REST

  1. 인스턴스를 중지합니다.

    POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop
    
  2. 인스턴스에서 현재 부팅 디스크를 분리합니다.

    POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
    
  3. 리전 부팅 디스크를 인스턴스에 연결합니다.

    compute.instances.attachDisk 메서드에 대해 POST 요청을 생성하고 리전 부팅 디스크의 URL을 포함합니다.

    POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
    {
    "source": "compute/v1/projects/PROJECT_ID/regions/REGION/disks/REGIONAL_DISK_NAME",
    "boot": true
    }
  4. 인스턴스를 다시 시작합니다.

    POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/start
    

이전 명령어의 변수를 다음으로 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • INSTANCE_NAME: 리전 디스크를 연결하려는 인스턴스의 이름입니다.
  • ZONE: 인스턴스가 있는 영역입니다.
  • CURRENT_BOOT_DEVICE_NAME: 인스턴스에서 사용 중인 부팅 디스크의 이름입니다. 일반적으로 인스턴스 이름과 동일합니다.
  • REGION: 리전 디스크가 있는 리전입니다.
  • REGIONAL_DISK_NAME: 인스턴스에 부팅 디스크로 연결하려는 리전 디스크의 이름입니다.

선택사항: 서비스 중단 또는 장애로 인해 원래 연결된 인스턴스에서 리전 부팅 디스크를 성공적으로 분리할 수 없으면 요청 본문에 "forceAttach": true를 포함하세요.

리전 디스크 나열 및 설명

구성된 모든 리전 디스크 목록과 다음을 비롯한 해당 속성 정보를 볼 수 있습니다.

  • 디스크 ID
  • 디스크 이름
  • 크기
  • 디스크 유형
  • 리전
  • 영역 복제본

리전 디스크에 대한 자세한 정보를 보려면 다음을 따릅니다.

리전 디스크 크기 조절

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

리전 디스크 크기 조절을 위한 명령어는 영역 디스크를 크기 조절할 때와 매우 비슷합니다. 단, 디스크 위치로 영역 대신 리전을 지정해야 합니다.

디스크 크기를 늘릴 수만 있으며 줄일 수는 없습니다. 디스크 크기를 줄이려면 더 작은 크기로 새 디스크를 만들어야 합니다. 더 큰 원본 디스크까지 삭제할 때까지는 두 디스크 모두에 대한 요금이 부과됩니다.

리전 디스크 수정 방법에 대한 안내는 다음을 참조하세요. Hyperdisk 볼륨 수정

다음 단계