어떤 이유로든 Linux VM에 액세스할 수 없으면 다음 단계를 수행하여 VM을 복구할 수 있습니다.
필요한 역할
VM을 복구하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Compute 인스턴스 관리자(v1)(
roles/compute.instanceAdmin.v1
) -
서비스 계정을 사용하는 VM:
서비스 계정 사용자(
roles/iam.serviceAccountUser
)
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 VM을 복구하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
VM을 복구하려면 다음 권한이 필요합니다.
-
프로젝트에 대한
compute.instances.create
권한 -
프로젝트에 대한
compute.disks.create
권한 -
프로젝트에 대한
compute.instances.get
권한 -
디스크에 대한
compute.disks.createSnapshot
권한 -
새 VM에 대한
compute.instances.attachDisk
권한 -
디스크에 대한
compute.disks.use
권한 -
신규 및 액세스할 수 없는 VM에 대한
compute.instances.start
권한 -
신규 및 액세스할 수 없는 VM에 대한
compute.instances.stop
권한
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
VM 복구
VM에 연결할 수 없거나 부팅 디스크가 가득 찬 경우에는 임시 VM을 만들어 액세스할 수 없는 VM을 복구해야 합니다.
- (선택사항) 액세스할 수 없는 VM을 중지합니다.
- 액세스할 수 없는 VM의 부팅 디스크에서 스냅샷을 만듭니다.
- 액세스할 수 없는 VM의 OS에 가장 가까운 공개 이미지를 사용하여 임시 VM을 만듭니다.
- SSH를 사용하여 임시 VM에 연결할 수 있는지 확인합니다.
다음 단계에 따라 임시 VM에 추가 디스크를 추가합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
만든 임시 VM의 이름을 클릭합니다.
수정을 클릭합니다.
추가 디스크에서
새 디스크 추가를 클릭한 후 다음을 수행합니다.- 디스크 이름을 추가합니다(예: my-recovery-disk).
- 소스 유형에서 스냅샷 탭을 선택합니다.
- 소스 스냅샷 드롭다운 메뉴에서 이 단계에서 이전에 만든 소스 VM의 스냅샷을 선택합니다.
- 완료를 클릭합니다.
저장을 클릭합니다.
SSH를 사용하여 임시 VM에 연결합니다.
다음 명령어를 실행합니다.
ls -l /dev/disk/by-id/google-*
출력은 다음과 비슷하게 표시됩니다.
/dev/disk/by-id/google-my-vm -> ../../sda /dev/disk/by-id/google-my-vm-part1 -> ../../sda1 /dev/disk/by-id/google-my-vm-part14 -> ../../sda14 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15 /dev/disk/by-id/google-my-recovery-disk -> ../../sdb /dev/disk/by-id/google-my-recovery-disk-part1 -> ../../sdb1 /dev/disk/by-id/google-my-recovery-disk-part2 -> ../../sdb2 /dev/disk/by-id/google-my-recovery-disk-part5 -> ../../sdb5
심볼릭 링크(
/dev/disk/by-id/google-my-recovery-disk-partN
)를 사용하여 새로 추가된 디스크의 기본 기기와 파티션(예:/dev/sdb1
)을 찾습니다.디스크의 심볼릭 링크는 google-DISK_NAME이거나 디스크에 커스텀 기기 이름을 지정한 경우에는 google-DEVICE_NAME입니다. 새 디스크 심볼릭 링크에서 가리키는 기기 이름을 기록해 둡니다.
/mnt/newdisk
에 마운트 지점을 만듭니다.sudo mkdir /mnt/newdisk
추가 디스크 파티션을 마운트 지점
/mnt/newdisk
에 마운트합니다.sudo mount -o discard,defaults DISK_NAME /mnt/newdisk
DISK_NAME을 이전 단계에서 기록한 기기 이름으로 바꿉니다(예:
/dev/sdb1
).Filesystem has duplicate UUID XXXXXX - can't mount
,mount: /mnt/newdisk: wrong fs type, bad option
또는bad superblock on /dev/sdb
오류가 표시되면 다음 명령어를 사용합니다.sudo mount -o nouuid DISK_NAME /mnt/newdisk
이제 액세스할 수 없는 VM의 파일 시스템이
/mnt/newdisk
에 마운트됩니다. 파일 시스템을 탐색하거나 구성 파일을 변경하거나 문제를 해결하거나 데이터를 검색할 수 있습니다.
변경사항을 되돌리고 액세스할 수 없는 VM 다시 부팅
문제가 해결되거나 데이터를 검색한 후에는 실제 VM을 다시 가져와야 합니다. 다음 단계를 수행하여 원래 VM을 복원합니다.
임시 VM의
/mnt/newdisk
에 마운트된 추가 디스크를 마운트 해제합니다.cd ~ sudo umount /mnt/newdisk
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
만든 임시 VM을 선택합니다.
수정을 클릭합니다.
추가 디스크에서 이전 단계에서 만든 디스크의
를 클릭하여 임시 VM에서 추가 디스크를 분리합니다.저장을 클릭합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
이제 SSH를 사용하여 VM에 연결할 수 있어야 합니다.