Amazon EC2 Windows 인스턴스 문제 해결 - Amazon Elastic Compute Cloud

Amazon EC2 Windows 인스턴스 문제 해결

다음은 Amazon EC2 Windows 인스턴스와 관련된 문제를 해결하는 데 도움이 되는 문제 해결 팁입니다.

EBS 볼륨이 Windows Server 2016 및 2019에서 초기화를 수행하지 않음

Windows Server 2016 및 2019용 Amazon Machine Image(AMI)에서 생성한 인스턴스는 EBS 볼륨 초기화를 비롯한 다양한 시작 작업에 EC2Launch v1 에이전트를 사용합니다. 기본적으로 EC2Launch v1은 두 번째 볼륨을 초기화하지 않습니다. 하지만 다음과 같이 자동으로 이러한 디스크를 초기화하도록 EC2Launch v1을 구성할 수 있습니다.

드라이브 문자를 볼륨에 매핑
  1. 구성할 인스턴스에 연결하고 C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json 텍스트 편집기에 파일을 엽니다.

  2. 다음과 같이 볼륨 설정을 지정합니다.

    { "driveLetterMapping": [ { "volumeName": "sample volume", "driveLetter": "H" }] }
  3. 변경 내용을 저장하고 파일을 닫습니다.

  4. 디스크를 초기화할 EC2Launch v1 스크립트를 수행하기 위해서 Windows PowerShell을 열고 다음 명령을 실행합니다.

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1

    인스턴스를 부팅할 때마다 디스크를 초기화하려면 다음과 같이 -Schedule 플래그를 추가하세요.

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule

    EC2Launch v1 에이전트는 InitializeInstance.ps1 스크립트와 동시에 실행되는 initializeDisks.ps1 같은 인스턴스 초기화 스크립트를 실행할 수 있습니다. InitializeInstance.ps1 스크립트가 인스턴스를 재부팅하는 경우 인스턴스 시작 시 실행되는 다른 예약된 작업이 중단될 수 있습니다. 잠재적인 충돌을 방지하려면 먼저 인스턴스 초기화가 완료되었는지 확인하는 로직을 initializeDisks.ps1 스크립트에 추가하는 것이 좋습니다.

    참고

    EC2Launch 스크립트가 볼륨을 초기화하지 않는 경우 볼륨이 온라인 상태인지 확인하세요. 볼륨이 오프라인인 경우 다음 명령을 실행하여 모든 디스크를 온라인으로 전환합니다.

    PS C:\> Get-Disk | Where-Object IsOffline -Eq $True | Set-Disk -IsOffline $False

DSRM(Directory Services Restore Mode)로 EC2 Windows 인스턴스 부팅

Microsoft Active Directory를 실행 중인 인스턴스에서 시스템 오류 또는 그 밖에 심각한 문제가 발생할 경우 DSRM(Directory Services Restore )이라는 특수한 버전의 안전 모드로 부팅해 인스턴스 문제를 해결할 수 있습니다. DSRM에서 Active Directory를 복구할 수 있습니다.

DSRM에 대한 드라이버 지원

DSRM을 활성화하고 인스턴스로 부팅하는 방법은 인스턴스가 실행 중인 드라이버에 따라 다릅니다. EC2 콘솔에서는 시스템 로그에서 인스턴스에 대한 드라이버 버전 세부 정보를 볼 수 있습니다. 다음 표에서는 DSRM이 지원되는 드라이버를 보여 줍니다.

드라이버 버전 DSRM 지원 여부 다음 단계
Citrix PV 5.9 아니요 백업에서 인스턴스를 복원합니다. DSRM을 활성화할 수 없습니다.
AWS PV 7.2.0 아니요 이 드라이버에 대한 DSRM은 지원되지 않지만, 그래도 인스턴스에서 루트 볼륨을 분리하고, 볼륨의 스냅샷을 생성하거나 볼륨에서 AMI를 만들고, 이를 보조 볼륨과 동일한 가용 영역에 있는 다른 인스턴스에 연결할 수 있습니다. (이 섹션의 설명처럼) DSRM을 활성화할 수 있습니다.
AWS PV 7.2.2 이상 루트 볼륨을 분리하고 다른 인스턴스에 연결하고 DSRM(이 섹션에 설명된 대로)을 활성화합니다.
향상된 네트워킹 루트 볼륨을 분리하고 다른 인스턴스에 연결하고 DSRM(이 섹션에 설명된 대로)을 활성화합니다.

향상된 네트워킹을 활성화하는 방법에 대한 자세한 내용은 EC2 인스턴스에서 ENA로 향상된 네트워킹 활성화 섹션을 참조하세요. AWS PV 드라이버 업그레이드에 대한 자세한 내용은 Upgrade PV drivers on Windows instances를 참조하세요.

DSRM으로 부팅하도록 인스턴스 구성

EC2 Windows 인스턴스는 운영 체제가 실행되기 전에 네트워크에 연결되지 않습니다. 이러한 이유로 키보드에서 F8 버튼을 눌러 부팅 옵션을 선택할 수 없습니다. 다음 절차 중 하나를 사용하여 DSRM으로 EC2 Windows Server 인스턴스를 부팅할 수 있습니다.

Active Directory가 손상되었는데도 인스턴스가 여전히 실행 중이라고 의심된다면 System Configuration 대화 상자나 명령 프롬프트를 사용하여 DSRM으로 부팅하도록 인스턴스를 구성할 수 있습니다.

System Configuration 대화 상자를 사용하여 DSRM으로 온라인 인스턴스를 부팅하려면
  1. 실행 대화 상자에 msconfig를 입력하고 Enter 키를 누릅니다.

  2. 부팅 탭을 선택합니다.

  3. 부팅 옵션 아래에서 안전 부팅을 선택합니다.

  4. Active Directory 복구를 선택한 다음 확인을 선택합니다. 시스템에서 서버를 재부팅하라는 메시지를 표시합니다.

명령줄을 사용하여 DSRM으로 온라인 인스턴스를 부팅하려면

명령 프롬프트 창에서 다음 명령을 실행합니다.

bcdedit /set safeboot dsrepair

인스턴스가 오프라인이고 연결할 수 없으면 루트 볼륨을 분리하고 다른 인스턴스에 연결하여 DSRM 모드를 활성화해야 합니다.

DSRM으로 오프라인 인스턴스를 부팅하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Instances(인스턴스)를 선택합니다.

  3. 영향을 받는 인스턴스를 찾아 선택합니다. 인스턴스 상태, 인스턴스 중지를 차례로 선택합니다.

  4. 인스턴스 시작을 선택하고 문제가 발생한 인스턴스와 동일한 가용 영역에 임시 인스턴스를 생성합니다. 다른 버전의 Windows를 사용하는 인스턴스 유형을 선택합니다. 예를 들어, 인스턴스가 Windows Server 2016이면 Windows Server 2019 인스턴스를 선택합니다.

    중요

    문제가 발생한 인스턴스와 동일한 가용 영역에서 인스턴스를 생성하지 않는 경우에는 문제가 발생한 인스턴스의 루트 볼륨을 새 인스턴스에 연결할 수 없습니다.

  5. 탐색 창에서 볼륨을 선택합니다.

  6. 문제가 발생한 인스턴스의 루트 볼륨을 찾습니다. 볼륨을 분리하고 이전에 생성한 임시 인스턴스에 연결합니다. 기본 디바이스 이름(xvdf)으로 연결합니다.

  7. 원격 데스크톱을 사용하여 임시 인스턴스에 연결한 후 디스크 관리 유틸리티를 사용하여 볼륨을 사용할 수 있도록 지정합니다.

  8. 명령 프롬프트를 열고 다음 명령을 실행합니다. 방금 연결한 보조 볼륨의 실제 드라이브 문자로 D를 바꿉니다.

    bcdedit /store D:\Boot\BCD /set {default} safeboot dsrepair
  9. 디스크 관리(Disk Management) 유틸리티에서 이전에 연결한 드라이브를 선택하고 컨텍스트(오른쪽 클릭) 메뉴를 열고 오프라인(Offline)을 선택합니다.

  10. EC2 콘솔에서 임시 인스턴스로부터 문제가 발생한 볼륨을 분리하고 디바이스 이름 /dev/sda1을 사용하여 원래 인스턴스에 다시 연결합니다. 볼륨을 루트 볼륨으로 지정하려면 이 디바이스 이름을 지정해야 합니다.

  11. 인스턴스를 시작합니다.

  12. 인스턴스가 EC2 콘솔에서 상태 확인을 통과하면 원격 데스크톱을 사용하여 인스턴스에 연결하고 DSRM 모드로 부팅되는지 확인합니다.

  13. (선택 사항) 앞에서 임시로 생성한 인스턴스는 이 절차에서 삭제하거나 중단합니다.

인스턴스의 네트워크 연결이 끊어지거나 예약된 작업이 예정 시간에 실행되지 않음

인스턴스를 다시 시작하면 네트워크 연결이 끊어지는 경우 인스턴스의 시간이 잘못 설정되었을 수 있습니다.

기본적으로 Windows 인스턴스는 협정 세계시(UTC)를 사용합니다. 인스턴스의 시간을 다른 표준 시간대로 설정한 후 인스턴스를 다시 시작하면 시간이 어긋나면서 인스턴스가 일시적으로 IP 주소를 손실합니다. 인스턴스의 네트워크 연결은 이후에 복구되지만 여기에 몇 시간이 걸릴 수 있습니다. 인스턴스의 네트워크 연결이 복구되는 데 걸리는 시간은 UTC와 다른 표준 시간대의 차이에 따라 달라집니다.

이와 같은 시간 문제로 인해 예약된 작업이 예정 시간에 실행되지 않을 수도 있습니다. 이러한 경우 인스턴스의 시간이 정확하지 않기 때문에 예약된 작업이 예정 시간에 실행되지 않는 것입니다.

UTC 이외의 표준 시간대를 지속적으로 사용하려면 RealTimeIsUniversal 레지스트리 키를 설정해야 합니다. 이 키가 없으면 인스턴스가 다시 시작된 후 UTC가 사용됩니다.

네트워크 연결이 끊어지게 만든 시간 문제를 해결하려면 다음을 수행합니다.
  1. 권장 PV 드라이버를 사용하고 있는지 확인합니다. 자세한 내용은 EC2 Windows 인스턴스의 PV 드라이버 업그레이드 단원을 참조하십시오.

  2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal 레지스트리 키가 있으며 값이 1로 설정되었는지 확인합니다.

콘솔 출력을 가져올 수 없음

Windows 인스턴스의 경우 인스턴스 콘솔은 Windows 부팅 프로세스 중에 수행된 작업의 출력을 표시합니다. Windows가 성공적으로 부팅된 경우 마지막으로 기록되는 메시지는 Windows is Ready to use입니다. 콘솔에 이벤트 로그 메시지를 표시할 수도 있지만 이 기능은 Windows 버전에 따라 기본적으로 활성화되어 있지 않을 수 있습니다. 자세한 내용은 Amazon EC2 Windows 인스턴스의 Windows 시작 에이전트 단원을 참조하십시오.

Amazon EC2 콘솔을 사용하여 인스턴스에 대한 콘솔 출력을 가져오려면 인스턴스를 선택한 다음 [작업(Actions)], [모니터링 및 문제 해결(Monitor and troubleshoot)], [시스템 로그 가져오기(Get system log)]를 차례로 선택합니다. 명령줄을 사용하여 콘솔 출력을 확인하려면 get-console-output(AWS CLI) 또는 Get-EC2ConsoleOutput(AWS Tools for Windows PowerShell) 명령 중 하나를 사용합니다.

Windows Server 2012 R2 및 이전 버전을 실행하는 인스턴스에서 콘솔 출력이 비어 있는 경우 EC2Config 서비스에 구성 파일 오류 또는 Windows 부팅 실패 등의 문제가 발생한 것일 수 있습니다. 문제를 해결하려면 최신 버전의 EC2Config를 다운로드하여 설치합니다. 자세한 내용은 최신 버전의 EC2Config 설치 단원을 참조하십시오.

네트워크에서 Windows Server 2012 R2를 이용할 수 없는 경우

네트워크에서 사용할 수 없는 Windows Server 2012 R2 인스턴스의 문제 해결에 대한 자세한 내용은 Windows Server 2012 R2 loses network and storage connectivity after an instance reboot을 참조하세요.

디스크 서명 충돌

EC2Rescue for Windows Server를 사용하여 디스크 서명 충돌을 확인하고 해결할 수 있습니다. 또는 다음 단계를 수행하여 디스크 서명 문제를 수동으로 해결할 수 있습니다.

주의

다음 절차에서는 레지스트리 편집기를 사용하여 Windows 레지스트리를 편집하는 방법을 설명합니다. Windows 레지스트리에 대해 또는 레지스트리 편집기를 사용하여 안전하게 수정하는 방법을 잘 알지 못하는 경우 레지스트리 구성을 참조하세요.

  1. 명령 프롬프트를 열고 regedit.exe를 입력한 후 Enter 키를 누릅니다.

  2. 레지스트리 편집기의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)에서 HKEY_LOCAL_MACHINE을 선택한 후 찾기를 선택합니다.

  3. Windows Boot Manager를 입력한 후 다음 찾기를 선택합니다.

  4. 11000001을 선택합니다. 이 키는 이전 단계에서 찾은 키 바로 위의 키입니다.

  5. 오른쪽 창에서 Element를 선택한 후 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)에서 수정을 선택합니다.

  6. 데이터에서 오프셋 0x38의 4바이트 디스크 서명을 찾습니다. 부팅 구성 데이터베이스 서명(BCD)입니다. 바이트를 거꾸로 하여 디스크 서명을 만들고 기록해 둡니다. 예를 들어, 다음 데이터가 나타내는 디스크 서명은 E9EB3AA5입니다.

    ... 0030 00 00 00 00 01 00 00 00 0038 A5 3A EB E9 00 00 00 00 0040 00 00 00 00 00 00 00 00 ...
  7. 명령 프롬프트 창에서 다음 명령을 실행하여 Microsoft DiskPart를 시작합니다.

    diskpart
  8. select disk DiskPart 명령을 실행하고 디스크 서명 충돌이 있는 볼륨의 디스크 번호를 지정합니다.

    작은 정보

    디스크 서명 충돌이 있는 볼륨의 디스크 번호를 확인하려면 디스크 관리 유틸리티를 사용합니다. 명령 프롬프트를 열고 compmgmt.msc를 입력한 후 Enter 키를 누릅니다. 왼쪽 탐색 패널에서 디스크 관리를 두 번 클릭합니다. 디스크 관리 유틸리티에서 디스크 서명 충돌이 있는 오프라인 볼륨의 디스크 번호를 확인합니다.

    DISKPART> select disk 1 Disk 1 is now the selected disk.
  9. 다음 DiskPart 명령을 실행하여 디스크 서명을 봅니다.

    DISKPART> uniqueid disk Disk ID: 0C764FA8
  10. 이전 단계에서 표시된 디스크 서명이 앞에서 기록한 디스크 서명과 일치하지 않을 경우 다음 DiskPart 명령을 사용하여 일치하도록 디스크 서명을 변경합니다.

    DISKPART> uniqueid disk id=E9EB3AA5