영구 디스크를 가상 머신(VM) 인스턴스의 부팅 디스크로 사용하거나 VM에 연결하는 데이터 디스크로 사용할 수 있습니다. 영구 디스크를 만들 때 빈 영구 디스크를 만들거나 새 디스크가 소스의 데이터를 포함하도록 소스에서 디스크를 만들 수 있습니다.
데이터 소스
다음 데이터 소스에서 영구 디스크를 만들 수 있습니다.
기존 디스크: 기존 영구 디스크를 클론합니다. 기존 비부팅 영구 디스크의 즉시 연결 가능한 사본이 필요할 때 이 옵션을 사용합니다.
스냅샷: 표준 스냅샷 또는 인스턴스 스냅샷에서 비부팅 디스크를 만듭니다. 이 옵션을 사용하면 스냅샷을 사용하여 백업한 영구 디스크에서 데이터를 복원할 수 있습니다.
이미지: 소스 이미지에서 부팅 디스크를 만듭니다. 이 옵션을 사용하여 새 VM의 부팅 디스크를 만들거나 독립형 부팅 영구 디스크를 만듭니다.
시작하기 전에
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.
콘솔
Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.
gcloud
-
Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.
gcloud init
- 기본 리전 및 영역을 설정합니다.
Terraform
로컬 개발 환경에서 이 페이지의 Terraform 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Google Cloud CLI를 설치합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
-
Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
자세한 내용은 로컬 개발 환경의 인증 설정를 참조하세요.
Go
로컬 개발 환경에서 이 페이지의 Go 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Google Cloud CLI를 설치합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
-
Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
자세한 내용은 로컬 개발 환경의 인증 설정를 참조하세요.
Java
로컬 개발 환경에서 이 페이지의 Java 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Google Cloud CLI를 설치합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
-
Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
자세한 내용은 로컬 개발 환경의 인증 설정를 참조하세요.
Python
로컬 개발 환경에서 이 페이지의 Python 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
- Google Cloud CLI를 설치합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
-
Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
자세한 내용은 로컬 개발 환경의 인증 설정를 참조하세요.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
-
기존 디스크에서 디스크 클론 만들기
기존 디스크가 VM 인스턴스에 연결되어 있더라도 기존 영구 디스크에서 새 영구 디스크 클론을 만들 수 있습니다. 디스크를 클론할 때는 소스 디스크의 모든 데이터를 포함하는 새 디스크를 만듭니다. 클론에서 크기와 같은 속성을 수정할 수 있습니다. 클론을 삭제할 위험 없이 소스 디스크를 삭제할 수도 있습니다.
디스크 클론 기능은 디버깅을 위해 프로덕션을 중단하지 않고 프로덕션 데이터를 복제할 때, VM을 확장하는 동안 디스크를 복제할 때, 데이터베이스 백업 확인을 위해 복제본을 만들 때 유용합니다. 또한 디스크를 클론하여 비부팅 디스크 데이터를 새 프로젝트로 이동할 수도 있습니다. 백업 및 재해 복구와 같은 추가 복원력을 위해 데이터 보호가 필요한 시나리오에서는 디스크 클론 대신 표준 스냅샷을 사용하는 것이 좋습니다.
디스크 상태를 다양한 간격으로 캡처하려고 하지만 매번 새 연결 가능한 디스크가 필요하지 않은 경우 인스턴트 스냅샷을 사용하는 것이 좋습니다.
재해 복구에 적합하지는 않지만 인스턴트 스냅샷이 동일한 스냅샷의 여러 클론을 만들 때보다 더 효율적일 수 있습니다. 인스턴트 스냅샷은 증분 백업이기 때문입니다.
빠른 디버깅과 같이 디스크를 빠르게 복제해야 하는 경우 디스크 클론을 사용합니다.
Compute Engine의 다른 데이터 백업 옵션에 대해 알아보세요.
제한사항
- 클론의 디스크 유형은 소스 디스크와 동일해야 합니다.
- 리전 디스크에서 영역 디스크 클론을 만들 수 없습니다.
- 다른 영역에 있는 기존 영역 디스크의 영역 디스크 클론을 만들 수 없습니다.
- 클론의 크기는 최소한 소스 디스크의 크기여야 합니다. Google Cloud Console을 사용하여 클론을 만드는 경우 디스크 크기를 지정할 수 없으며 클론의 크기는 소스 디스크와 동일합니다.
- 고객 제공 암호화 키 또는 고객 관리 암호화 키를 사용하여 소스 디스크를 암호화하는 경우 동일한 키를 사용하여 클론을 암호화해야 합니다. 자세한 내용은 암호화된 소스 디스크의 클론 만들기를 참조하세요.
- 지정된 소스 디스크 또는 해당 클론의 클론을 30초마다 최대 한 개씩 만들 수 있습니다.
- 지정된 소스 디스크 또는 해당 클론의 동시 디스크 클론은 최대 1,000개까지 가능합니다.
이 한도를 초과하면
internalError
가 반환됩니다. 하지만 디스크 클론을 만들고 나중에 삭제할 경우에는 삭제된 디스크 클론이 이 제한에 포함되지 않습니다. - 디스크가 클론되면 해당 디스크 또는 클론의 후속 클론은 원본 소스 디스크의 동시 디스크 클론 1,000개 한도에 계산되며 30초마다 최대 1개 클론 생성 한도에 포함됩니다.
오류 메시지
클론 빈도 한도를 초과하면 다음 오류가 발생하여 요청이 실패합니다.
RATE LIMIT: ERROR: (gcloud.compute.disks.create) Could not fetch resource: - Operation rate exceeded for resource RESOURCE. Too frequent operations from the source resource.
디스크 클론 만들기
Google Cloud Console, Google Cloud CLI 또는 Compute Engine API 중 하나를 사용하여 기존 디스크를 새 디스크에 클론할 수 있습니다.Console
Google Cloud Console에서 디스크 페이지로 이동합니다.
영역 영구 디스크 목록에서 클론할 디스크를 찾습니다.
작업에서 메뉴 버튼을 클릭하고 디스크 클론을 선택합니다.
디스크 클론 패널에서 새 디스크의 이름을 지정합니다.
속성에서 새 디스크의 기타 세부정보를 검토합니다.
저장을 클릭합니다.
gcloud
gcloud CLI에서 disks create
명령어를 사용하고 --source-disk
를 지정합니다. 다음 예시에서는 소스 디스크를 다른 프로젝트의 새 디스크에 클론합니다.
gcloud compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
다음을 바꿉니다.
Terraform
디스크 클론을 만들려면 google_compute_disk
리소스를 사용합니다.
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
Go
Go
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Compute Engine Go API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Java
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Compute Engine Java API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Python
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Compute Engine Python API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
API에서 compute.disks.insert
메서드에 대해 POST
요청을 작성합니다. 요청 본문에서 name
과 sourceDisk
매개변수를 지정합니다. 클론은 소스 디스크에서 생략된 모든 속성을 상속합니다. 다음 예시에서는 소스 디스크를 다른 프로젝트의 새 디스크에 클론합니다.
POST https://compute.googleapis.com/compute/v1/projects/TARGET_PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" }
다음을 바꿉니다.
영역 디스크에서 리전 디스크 클론 만들기
기존 영역 디스크를 클론하여 새로운 리전 디스크를 만들 수 있습니다. 영역 디스크를 리전 디스크로 마이그레이션하려면 영역 디스크의 스냅샷을 만들고 새 리전 디스크로 스냅샷을 복원하는 대신 이 옵션을 사용하는 것이 좋습니다.
제한사항
소스 영역 디스크에서 리전 디스크 클론을 만들려면 클론의 복제본 영역 중 하나가 소스 디스크의 영역과 일치해야 합니다.생성 후 리전 디스크 클론은 평균적으로 3분 이내에 사용할 수 있습니다. 하지만 디스크가 완전히 복제되고 복구 지점 목표(RPO)가 거의 0이 될 때까지는 수십 분이 걸릴 수 있습니다.
디스크 공간을 클론할 수 있는 속도는 제한됩니다. 15분마다 최대 1TB의 클론된 디스크를 만들 수 있으며 버스트 요청 한도는 257TB입니다.
Console
Google Cloud Console에서 디스크 페이지로 이동합니다.
영역 영구 디스크 목록에서 클론할 디스크를 찾습니다.
작업에서 메뉴 버튼을 클릭하고 디스크 클론을 선택합니다.
디스크 클론 패널에서 새 디스크의 이름을 지정합니다.
위치에서 리전을 선택하고 새 리전 디스크에 복제본 영역 두 개를 선택합니다.
속성에서 새 디스크의 기타 세부정보를 검토합니다.
저장을 클릭합니다.
gcloud
다음 gcloud
compute disks create
명령어를 사용하여 영역 디스크에서 리전 디스크 클론을 만들고 새 리전 디스크에 소스 디스크와 복제본 영역 두 개를 제공합니다.
다음 예시에서는 소스 및 대상 디스크가 동일한 프로젝트에 있다고 가정합니다.
gcloud compute disks create TARGET_DISK_NAME \ --description="zonal to regional cloned disk" \ --region=REGION_1 \ --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=REGION_1_ZONE_1 \ --replica-zones=REGION_1_ZONE_1,REGION_1_ZONE_2 \ --project=PROJECT_ID
다음을 바꿉니다.
TARGET_DISK_NAME
: 새 리전 디스크의 이름REGION_1
: 새 리전 디스크의 리전SOURCE_DISK_NAME
: 클론할 영역 디스크의 이름REGION_1_ZONE_1
: 새 리전 디스크의 복제본 영역 두 개 중 하나REGION_1_ZONE_2
: 새 리전 디스크의 다른 복제본 영역PROJECT_ID
: 프로젝트 ID
Terraform
영역 디스크에서 리전 디스크 클론을 만들려면 선택적으로 영역 디스크의 스냅샷을 만든 후 스냅샷을 클론할 수 있습니다. 이렇게 하려면 다음 리소스를 따르세요.
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
Go
Go
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Compute Engine Go API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Java
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Compute Engine Java API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Python
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Compute Engine Python API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
새 리전 디스크에 사용할 소스 디스크와 복제본 영역 두 개를 제공합니다. 다음 예시에서는 소스 및 대상 디스크가 동일한 프로젝트에 있다고 가정합니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_1/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/REGION_1_ZONE_1/disks/SOURCE_DISK_NAME" "replicaZone": "REGION_1_ZONE_1,REGION_1_ZONE_2" }
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 IDREGION_1
: 새 리전 디스크의 리전TARGET_DISK_NAME
: 새 리전 디스크의 이름REGION_1_ZONE_1
: 새 리전 디스크의 복제본 영역 두 개 중 하나SOURCE_DISK_NAME
: 클론할 영역 디스크의 이름REGION_1_ZONE_2
: 새 리전 디스크의 다른 복제본 영역
암호화된 소스 디스크의 클론 만들기
고객 제공 암호화 키를 사용하여 소스 디스크를 암호화하는 경우 같은 키를 사용하여 클론을 암호화해야 합니다.Console
Google Cloud Console에서 디스크 페이지로 이동합니다.
영역 영구 디스크 목록에서 클론할 디스크를 찾습니다.
작업에서 메뉴 버튼을 클릭하고 디스크 클론을 선택합니다.
디스크 클론 패널에서 새 디스크의 이름을 지정합니다.
복호화 및 암호화에서 소스 디스크 암호화 키를 제공합니다.
속성에서 새 디스크의 기타 세부정보를 검토합니다.
저장을 클릭합니다.
gcloud
디스크 클론을 만들 때 --csek-key-file
플래그를 사용하여 소스 디스크 암호화 키를 제공합니다. RSA 래핑 키를 사용하는 경우 gcloud beta
구성요소를 사용합니다.
gcloud beta compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --csek-key-file example-key-file.json
다음을 바꿉니다.
Go
Go
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Compute Engine Go API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Java
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Compute Engine Java API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Python
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Compute Engine Python API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
diskEncryptionKey
속성을 사용하여 소스 디스크 암호화 키를 제공합니다.
POST https://compute.googleapis.com/compute/beta/projects/TARGET_PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, }
다음을 바꿉니다.
고객 관리 암호화 키를 사용하여 소스 디스크를 암호화하는 경우 같은 키를 사용하여 클론을 암호화해야 합니다.
Console
Compute Engine은 소스 디스크 암호화 키를 사용하여 클론을 자동으로 암호화합니다.
gcloud
디스크 클론을 만들 때 --kms-key
플래그를 사용하여 소스 디스크의 키를 제공합니다. RSA 래핑 키를 사용하는 경우 gcloud beta
구성요소를 사용합니다.
gcloud beta compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
다음을 바꿉니다.
Go
Go
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Compute Engine Go API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Java
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Compute Engine Java API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Python
이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Compute Engine Python API 참조 문서를 확인하세요.
Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
디스크 클론을 만들 때 kmsKeyName
속성을 사용하여 소스 디스크의 키를 제공합니다.
POST https://compute.googleapis.com/compute/beta/projects/TARGET_PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, }
다음을 바꿉니다.
다음 단계
- 영구 디스크 작업을 알아봅니다.
- 의도치 않은 데이터 손실을 방지하기 위해 정기적으로 스냅샷을 사용하여 디스크를 백업하는 방법을 알아봅니다.
- 두 영역 간 동기식 복제에 리전 영구 디스크를 사용하는 방법을 알아봅니다.