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

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

리전 영구 디스크는 영역(zonal) 영구 디스크와 특징이 비슷하지만 몇 가지 차이점이 존재합니다.

  • 읽기/쓰기(RW) 모드로 마운트해야 합니다. 읽기 전용(RO) 모드는 지원하지 않습니다.
  • 부팅 디스크로 사용할 수 없습니다.
  • 영역(zone) 오류가 발생하는 경우 다른 VM 인스턴스에 대한 강제 연결을 지원합니다.
  • 리전 영구 디스크는 스냅샷에서 만들 수 있지만 이미지에서 만들 수는 없습니다.
  • 성능상의 차이는 저장소 옵션 문서에서 확인할 수 있습니다.

지역 영구 디스크는 같은 지역 내 두 영역 사이에서 데이터의 동기식 복제를 제공합니다. 드물지만 영역 장애가 발생하면 트래픽을 다른 VM 인스턴스로 보내고 복제한 디스크를 동일 또는 보조 영역의 다른 VM 인스턴스에 강제 연결할 수 있습니다. 강제 연결 시간은 1분 이내에 발생하도록 설계되었습니다.

지역 영구 디스크는 강력한 시스템을 설계하거나 고가용성을 요구하는 MySQL이나 Postgres 같은 상태 저장 데이터베이스 서비스를 이용할 때 유용한 옵션입니다.

리소스와 리소스 성능을 비교하고 싶다면 Compute Engine 저장소 옵션을 참조하세요.

영구 디스크를 만들 때 항상 적용되는 물리적 블록 크기의 기본값은 4KB입니다. 데이터베이스 애플리케이션에서 물리적 블록 크기를 늘려야 하는 경우 디스크를 만들 때 16KB를 선택할 수 있습니다. 부팅 디스크에는 이 기능이 지원되지 않습니다. 기존 디스크의 물리적 블록 크기를 변경하려면 디스크의 스냅샷을 생성한 후 새 디스크를 만들어야 합니다. 디스크의 물리적 블록 크기를 직접 수정할 수는 없습니다.

시작하기 전에

제한사항

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

  • 읽기/쓰기(RW) 모드로 마운트해야 합니다. 읽기 전용(RO) 모드는 지원하지 않습니다.
  • 부팅 디스크로 사용할 수 없습니다.
  • 지역 영구 디스크는 스냅샷에서 만들 수 있지만 이미지에서 만들 수는 없습니다.

인스턴스에 지역 영구 디스크 추가

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

콘솔

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

지역 영구 디스크를 만듭니다.

  1. 디스크 페이지로 이동합니다.

    디스크 페이지로 이동

  2. 프로젝트를 선택합니다.
  3. 디스크 만들기를 클릭합니다.
  4. 디스크 이름을 지정합니다.
  5. 디스크 유형을 선택합니다.
  6. 이 디스크를 지역 내에 복제 체크박스를 선택합니다.
  7. 지역을 선택합니다.

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

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

    두 개의 영역(zone)을 선택해야 합니다. 두 영역(zone) 중 하나의 인스턴스에 디스크를 연결해야 하므로 선택하는 영역을 기록해 두세요.

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

  10. 필요한 경우 물리적 블록 크기(KB)를 선택합니다. 디스크 기본 크기는 4KB이지만 드롭다운 메뉴에서 16KB를 선택하여 디스크의 물리적 블록 크기를 늘릴 수 있습니다.

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

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

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

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

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

gcloud

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

  1. create 명령어를 사용하여 새 리전 영구 디스크를 만듭니다. 처리량 또는 IOPS를 높이기 위해 리전 SSD 영구 디스크가 필요하면 --type 플래그를 포함하고 pd-ssd를 지정합니다. 필요한 경우 --physical-block-size 플래그를 추가하여 물리적 블록 크기를 설정합니다.

    gcloud beta compute disks create [DISK_NAME] --size [DISK_SIZE] \
        --type [DISK_TYPE] \
        --region [REGION] \
        --replica-zones [ZONE1,ZONE2] \
        --physical-block-size [BLOCK_SIZE]
    

    각 항목의 의미는 다음과 같습니다.

    • [DISK_NAME]은 새 디스크의 이름입니다.
    • [DISK_SIZE]는 새 디스크의 크기(GB)입니다.
    • [DISK_TYPE]은 영구 디스크의 유형입니다. pd-standard 또는 pd-ssd 입니다.
    • [REGION]은 리전 디스크가 상주하는 위치입니다. 예: europe-west1.
    • [ZONE1,ZONE2]는 리전 내에서 두 개의 디스크가 있는 영역(zone)입니다.
      두 개의 영역(zone)을 선택해야 합니다. 예: europe-west1-a,europe-west1-b
    • [BLOCK_SIZE]4096(4KB) 또는 16384(16KB)입니다. 물리적 블록 크기의 기본값은 4KB입니다. 16KB는 증가된 물리적 블록 크기입니다.

  2. 디스크를 만든 후 실행 중이거나 중지된 인스턴스에 연결합니다. gcloud beta compute instances attach-disk 명령어를 사용하고 --disk-scope regional 플래그를 포함하여 리전 디스크임을 나타냅니다.

    gcloud beta compute instances attach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME] \
        --disk-scope regional
    

    각 항목의 의미는 다음과 같습니다.

    • [INSTANCE_NAME]은 새 리전 영구 디스크를 추가할 인스턴스의 이름입니다.
    • [DISK_NAME]은 인스턴스에 연결할 새 디스크의 이름입니다.
    • --disk-scoperegional로 설정합니다.

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

  3. gcloud beta compute disks describe 명령어를 사용하여 디스크의 설명을 확인합니다. 응답에 디스크의 물리적 블록 크기가 포함됩니다.

API

  1. API에서 리전 영구 디스크를 만드는 POST 요청을 작성합니다. compute.regionDisks.insert 요청 본문에서 디스크 namereplicaZones 속성으로 새 디스크를 초기화합니다. 빈 디스크를 만들려면 이미지 또는 스냅샷 소스를 지정하지 마세요. 필요한 경우 physicalBlockSizeBytes 속성을 포함하여 물리적 블록 저장소 크기를 설정합니다.

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

    각 항목의 의미는 다음과 같습니다.

    • [PROJECT_ID]는 프로젝트 ID입니다.
    • [DISK_NAME]은 새 디스크의 이름입니다.
    • [BLOCK_SIZE]4096(4KB) 또는 16384(16KB)입니다. 물리적 블록 크기의 기본값은 4KB입니다. 16KB는 증가된 물리적 블록 크기입니다.
    • [ZONE1]은 새 디스크가 있는 영역(zone)입니다. 디스크를 인스턴스에 연결하는 영역(zone)과 같은 영역(zone)입니다.
    • [ZONE2]는 복제본 디스크가 있는 곳입니다.

  2. API에서 compute.instances.attachDisk 메소드에 대한 POST 요청을 작성하고 방금 생성한 영구 디스크를 가리키는 URL을 포함합니다.

    POST https://www.googleapis.com/compute/beta/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]은 새 디스크의 이름입니다.

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

영역(zone) 장애가 있을 때 리전 영구 디스크에 액세스하기

드물지만 영역(zone)에 정전이 발생하는 경우 강제 연결 명령어를 사용하여 리전 영구 디스크를 다른 영역(zone)에 있는 VM 인스턴스로 장애 조치할 수 있습니다.

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

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

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

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

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

영역(zone) 내 장애

리전 영구 디스크를 같은 영역(zone)에 있는 VM 인스턴스에 강제 연결할 수도 있습니다. 이 영역 내(intra-zone) 장애 조치 옵션을 이용하면 VM 구성 오류, 잘못된 OS 업그레이드 또는 기타 장애 모드로 인한 중단 문제를 처리할 수 있습니다.

콘솔

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

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 프로젝트를 선택합니다.
  3. 인스턴스의 이름을 지정합니다.
  4. 지역 영구 디스크가 상주할 지역을 선택합니다.
  5. 디스크가 원래 연결되었던 VM 인스턴스의 대체 영역을 선택합니다.

    디스크가 디스크 페이지에 나열됩니다.

  6. 관리, 디스크, 네트워킹, SSH 키를 클릭합니다.
  7. 디스크를 클릭합니다.
  8. 추가 디스크 아래에서 + 기존 디스크 연결을 클릭합니다.
  9. 드롭다운 메뉴에서 지역 영구 디스크를 선택합니다.
  10. 체크박스를 선택하여 디스크를 강제로 연결합니다.
  11. 완료를 클릭합니다.
  12. 만들기를 클릭하여 인스턴스 만들기를 마칩니다.

    새로운 VM 인스턴스가 VM 인스턴스 페이지에 표시됩니다.
    중단되었던 영역이 복구되면 동일한 단계를 반복하여 디스크를 원래 인스턴스에 강제로 연결합니다.

gcloud

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

gcloud beta compute instances attach-disk [INSTANCE_NAME] \
    --disk [DISK_NAME] \
    --disk-scope [REGIONAL] \
    --force-attach [TRUE]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 지역 내 새 VM 인스턴스의 이름입니다.
  • [DISK_NAME]은 디스크의 이름입니다.
  • --disk-scoperegional로 설정합니다.

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

API

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

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk?forceAttach=true

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

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [REGION]은 인스턴스와 새 디스크가 있는 곳입니다.
  • [INSTANCE_NAME]은 새 영구 디스크를 추가할 인스턴스의 이름입니다.
  • [DISK_NAME]은 새 디스크의 이름입니다.

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

리전 영구 디스크 크기 조절

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

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

콘솔

리전 영구 디스크 크기 조절

  1. 디스크 페이지로 이동합니다.

    디스크 페이지로 이동

  2. 크기를 조절할 디스크를 선택합니다.
  3. 페이지 상단의 수정을 클릭합니다.
  4. 디스크 크기(GB)를 입력합니다.

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

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

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

gcloud

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

gcloud beta compute disks resize [DISK_NAME] \
    --region [DISK REGION] \
    --size [DISK_SIZE]

각 항목의 의미는 다음과 같습니다.

  • [DISK_NAME]은 크기를 조절할 디스크의 이름입니다.
  • [DISK REGION]은 디스크가 있는 리전입니다.
  • [DISK_SIZE]는 디스크의 새로운 크기(GB)입니다.

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

API

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

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/resize

{
 "sizeGb": "[DISK_SIZE]"
}

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [REGION]은 디스크가 있는 리전입니다.
  • [DISK_NAME]은 크기를 조절할 디스크의 이름입니다.
  • [DISK_SIZE]는 디스크의 새로운 크기(GB)입니다.

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

영역(zonal) 영구 디스크를 리전 영구 디스크로 이전

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

gcloud

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

gcloud compute disks snapshot [DISK_NAME] /
    --zone [DISK_ZONE] /
    --snapshot-name [SNAPSHOT_DISK_NAME]

각 항목의 의미는 다음과 같습니다.

  • [DISK_NAME]은 스냅샷을 생성할 디스크의 이름입니다.
  • [DISK_ZONE]은 디스크가 상주하는 영역(zone)입니다.
  • [SNAPSHOT_DISK_NAME]은 새로 스냅샷이 생성된 디스크의 이름입니다.

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

gcloud beta compute disks create [DISK_NAME] \
    --region [DISK_REGION] \
    --replica-zones [ZONE1,ZONE2] \
    --source-snapshot [SNAPSHOT_DISK_NAME]

각 항목의 의미는 다음과 같습니다.

  • [DISK_NAME]은 새 디스크의 이름입니다.
  • [DISK_REGION]은 디스크가 상주하는 지역입니다.
  • [ZONE1,ZONE2]는 복제된 디스크가 상주하는 영역입니다.
  • [SNAPSHOT_DISK_NAME]은 소스 스냅샷 디스크의 이름입니다.

동일한 메소드를 이용해 지역 디스크를 영역 디스크로 이전할 수 있습니다.

API

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

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK]/createSnapshot

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [ZONE]은 디스크가 위치하는 영역입니다.
  • [DISK]는 스냅샷을 생성하는 디스크의 이름입니다.

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

POST https://www.googleapis.com/compute/beta/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]은 인스턴스와 새로운 디스크가 있는 영역(zone)입니다.
  • [ZONE2]는 복제된 디스크의 위치입니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서