액세스할 수 없는 VM 복구


어떤 이유로든 Linux VM에 액세스할 수 없으면 다음 단계를 수행하여 VM을 복구할 수 있습니다.

필요한 역할

VM을 복구하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 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을 복구해야 합니다.

  1. (선택사항) 액세스할 수 없는 VM을 중지합니다.
  2. 액세스할 수 없는 VM의 부팅 디스크에서 스냅샷을 만듭니다.
  3. 액세스할 수 없는 VM의 OS에 가장 가까운 공개 이미지를 사용하여 임시 VM을 만듭니다.
  4. SSH를 사용하여 임시 VM에 연결할 수 있는지 확인합니다.
  5. 다음 단계에 따라 임시 VM에 추가 디스크를 추가합니다.

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

      VM 인스턴스로 이동

    2. 만든 임시 VM의 이름을 클릭합니다.

    3. 수정을 클릭합니다.

    4. 추가 디스크에서 새 디스크 추가를 클릭한 후 다음을 수행합니다.

      1. 디스크 이름을 추가합니다(예: my-recovery-disk).
      2. 소스 유형에서 스냅샷 탭을 선택합니다.
      3. 소스 스냅샷 드롭다운 메뉴에서 이 단계에서 이전에 만든 소스 VM의 스냅샷을 선택합니다.
      4. 완료를 클릭합니다.
    5. 저장을 클릭합니다.

  6. SSH를 사용하여 임시 VM에 연결합니다.

  7. 다음 명령어를 실행합니다.

    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입니다. 새 디스크 심볼릭 링크에서 가리키는 기기 이름을 기록해 둡니다.

  8. /mnt/newdisk에 마운트 지점을 만듭니다.

    sudo mkdir /mnt/newdisk

  9. 추가 디스크 파티션을 마운트 지점 /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을 복원합니다.

  1. 임시 VM의 /mnt/newdisk에 마운트된 추가 디스크를 마운트 해제합니다.

     cd ~
     sudo umount /mnt/newdisk

  2. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

    1. 만든 임시 VM을 선택합니다.

    2. 수정을 클릭합니다.

    3. 추가 디스크에서 이전 단계에서 만든 디스크의 를 클릭하여 임시 VM에서 추가 디스크를 분리합니다.

    4. 저장을 클릭합니다.

  3. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

    1. 액세스할 수 없는 VM이 계속 실행 중이면 VM을 중지합니다.

    2. 방금 중지한 VM의 이름을 클릭한 후 수정을 클릭합니다.

    3. 부팅 디스크에서 부팅 디스크 분리를 클릭하여 액세스할 수 없는 VM에서 종료 중인 부팅 디스크를 분리합니다.

    4. 그런 다음 부팅 디스크 구성을 클릭하여 이전에 만들고 이 페이지의 VM 복구에서 수정한 디스크를 연결합니다.

      1. 부팅 디스크 섹션에서 기존 디스크 탭을 클릭합니다.
      2. 이전 섹션에서 만든 디스크를 드롭다운 목록에서 선택합니다(예: my-recovery-disk).
      3. 선택을 클릭한 후 저장을 클릭합니다.
    5. VM을 시작합니다.

  4. 이제 SSH를 사용하여 VM에 연결할 수 있어야 합니다.