PV 드라이버 문제 해결 - Amazon Elastic Compute Cloud

PV 드라이버 문제 해결

다음은 기존 Amazon EC2 이미지 및 PV 드라이버에 발생할 수 있는 문제에 대한 해결 방법입니다.

인스턴스를 재부팅한 후 Windows Server 2012 R2에서 네트워크와 스토리지 연결이 끊김

중요

이 문제는 2014년 9월 이전에 제공된 AMI에만 발생합니다

2014년 9월 10일 이전에 제공된 Windows Server 2012 R2 Amazon Machine Image(AMI)에서는 인스턴스 재부팅 후 네트워크와 스토리지 연결이 끊길 수 있습니다. AWS Management Console 시스템 로그의 오류는 "콘솔 출력에 대한 PV 드라이버 세부 정보를 감지하는 중 장애 발생"으로 표시됩니다. 플러그-앤-플레이 클린업 기능으로 인해 연결이 끊깁니다. 이 기능은 30일마다 비활성 시스템 디바이스를 검색하고 비활성화합니다. 기능이 EC2 네트워크 디바이스를 비활성 상태로 잘못 식별하고 시스템에서 제거합니다. 이러한 경우 인스턴스가 재부팅 후 네트워크 연결이 끊깁니다.

주의 대상 시스템은 이 문제에 의해 영향을 받을 수 있으며, 현재 위치 드라이버 업그레이드를 다운로드하고 실행할 수 있습니다. 현재 위치 드라이버 업그레이드를 수행할 수 없는 경우에는 헬퍼 스크립트를 실행할 수 있습니다. 스크립트가 인스턴스가 영향을 받는지 여부를 판별합니다. 영향을 받고 있고 Amazon EC2 네트워크 디바이스가 제거되지 않은 경우 스크립트가 플러그-앤-플레이 클린업 스캔을 비활성화합니다. 네트워크 디바이스가 제거되지 않은 경우 스크립트는 디바이스를 복구하고, 플러그-앤-플레이 클린업 스캔을 비활성화하며, 네트워크 연결이 활성화된 상태로 인스턴스가 재부팅되도록 허용합니다.

문제 해결 방법 선택

문제가 발생한 인스턴스에 대한 네트워크 및 스토리지 연결을 복구하는 방법은 두 가지가 있습니다. 다음 방법 중 한 가지를 선택하세요.

방법 사전 조건 절차 개요
방법 1 - 향상된 네트워킹 기능 향상된 네트워킹 기능은 C3 인스턴스 유형을 사용하는 Virtual Private Cloud(VPC)에서만 가능합니다. 서버에서 현재 사용하는 유형이 C3 인스턴스가 아닐 때는 잠시 C3 인스턴스로 변경해야 합니다. 서버 인스턴스 유형을 C3 인스턴스로 변경합니다. 그러면 향상된 네트워킹 기능을 통해 문제가 발생한 인스턴스에 연결하여 문제를 해결할 수 있습니다. 문제를 해결한 후에는 원래 인스턴스 유형으로 다시 바꿀 수 있습니다. 일반적으로 이 방법은 방법 2보다 빠를 뿐만 아니라 사용자 오류의 가능성이 낮습니다. C3 인스턴스가 실행 중일 때는 변경 사항이 추가로 발생하기 마련입니다.
방법 2 - 레지스트리 구성 보조 서버 생성 및 액세스 기능. 레지스트리 설정 변경 기능. 문제가 발생한 인스턴스에서 루트 볼륨을 분리하여 다른 인스턴스에 연결한 다음 레지스트리 설정을 변경합니다. 보조 서버가 실행 중일 때는 변경 사항이 추가로 발생하기 마련입니다. 이 방법은 방법 1보다 느리지만 방법 1로 문제를 해결하지 못하는 상황에서 효과가 있었습니다.

방법 1 - 향상된 네트워킹 기능

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

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

  3. 문제가 발생한 인스턴스를 찾습니다. 인스턴스를 선택하고 [인스턴스 상태(Instance state)]를 선택한 다음 [인스턴스 중지(Stop instance)]를 선택합니다.

    주의

    인스턴스를 중지하면 인스턴스 스토어 볼륨의 데이터가 삭제됩니다. 인스턴스 스토어 볼륨의 데이터를 유지하려면 영구 스토리지에 백업하세요.

  4. 인스턴스가 중지되면 백업을 생성합니다. 인스턴스를 선택하고 [작업(Actions)], [이미지 및 템플릿(Image and templates)] 및 [이미지 생성(Create image)]을 차례로 선택합니다.

  5. 인스턴스 유형을 C3 인스턴스로 변경합니다.

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

  7. 원격 데스크톱을 사용하여 인스턴스에 연결한 다음 AWS PV 드라이버 업그레이드 패키지를 인스턴스에 다운로드합니다.

  8. 폴더의 내용 압축을 풀고 AWSPVDriverSetup.msi를 실행합니다.

    MSI를 실행하면 인스턴스가 자동으로 재부팅되고 드라이버를 업그레이드합니다. 최대 15분 동안 인스턴스를 사용할 수 없습니다.

  9. 업그레이드를 완료하고 인스턴스가 Amazon EC2 콘솔에서 두 상태 확인을 모두 통과하면 원격 데스크톱을 사용하여 인스턴스에 연결하고 새 드라이버가 설치되었는지 확인합니다. 디바이스 관리자(Device Manager)의 스토리지 컨트롤러(Storage Controllers) 아래에서 AWS PV Storage Host Adapter를 찾습니다. 드라이버 버전이 드라이버 버전 기록 표에 나열된 최신 버전과 동일한지 확인합니다. 자세한 내용은 AWS PV 드라이버 패키지 기록 섹션을 참조하세요.

  10. 인스턴스를 중단하고 원래 인스턴스 유형으로 다시 바꿉니다.

  11. 원래 인스턴스를 시작하여 정상적인 사용을 재개합니다.

방법 2 - 레지스트리 구성

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

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

  3. 문제가 발생한 인스턴스를 찾습니다. 인스턴스를 선택하고 [인스턴스 상태(Instance state)]를 선택한 다음 [인스턴스 중지(Stop instance)]를 선택합니다.

    주의

    인스턴스를 중지하면 인스턴스 스토어 볼륨의 데이터가 삭제됩니다. 인스턴스 스토어 볼륨의 데이터를 유지하려면 영구 스토리지에 백업하세요.

  4. [인스턴스 시작(Launch instances)]을 선택하고 문제가 발생한 인스턴스와 동일한 가용 영역에 임시 Windows Server 2008 또는 Windows Server 2012 인스턴스를 생성합니다. Windows Server 2012 R2 인스턴스를 생성하지 마세요.

    중요

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

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

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

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

  8. 임시 인스턴스에서 실행 대화 상자를 열고 regedit를 입력한 다음 Enter 키를 누릅니다.

  9. 레지스트리 편집기 탐색 창에서 HKEY_Local_Machine을 선택한 후 파일(File) 메뉴에서 Hive 로드(Load Hive)를 선택합니다.

  10. Hive 로드(Load Hive) 대화 상자에서 Affected Volume\Windows\System32\config\System을 탐색하고 키 이름(Key Name) 대화 상자에 임시 이름을 입력합니다. 예를 들어, OldSys를 입력합니다.

  11. 레지스트리 편집기의 탐색 창에서 다음 키를 찾습니다.

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e97d-e325-11ce-bfc1-08002be10318

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e96a-e325-11ce-bfc1-08002be10318

  12. 각각의 키에 대해 UpperFilters를 두 번 클릭하고 XENFILT 값을 입력한 후 확인(OK)을 선택합니다.

    
                                문제가 발생한 볼륨의 레지스트리 키.
  13. 다음 키를 찾습니다.

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS\Parameters

  14. ActiveDevice 이름 및 다음 값을 사용하여 새 문자열(REG_SZ)을 생성합니다.

    PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01

  15. 다음 키를 찾습니다.

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS

  16. 수(Count)를 0에서 1로 변경합니다.

  17. 다음 키를 찾아 삭제합니다.

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\xenvbd\StartOverride

    HKEY_LOCAL_MACHINE \your_temporary_key_name\ControlSet001\Services\xenfilt\StartOverride

  18. 레지스트리 편집기 탐색 창에서 처음 레지스트리 편집기를 열 때 생성한 임시 키를 선택합니다.

  19. 파일(File) 메뉴에서 Hive 언로드(Unload Hive)를 선택합니다.

  20. 디스크 관리(Disk Management) 유틸리티에서 이전에 연결한 드라이브를 선택하고 컨텍스트(오른쪽 클릭) 메뉴를 열고 오프라인(Offline)을 선택합니다.

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

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

  23. 원격 데스크톱을 사용하여 인스턴스에 연결한 다음 AWS PV 드라이버 업그레이드 패키지를 인스턴스에 다운로드합니다.

  24. 폴더의 내용 압축을 풀고 AWSPVDriverSetup.msi를 실행합니다.

    MSI를 실행하면 인스턴스가 자동으로 재부팅되고 드라이버를 업그레이드합니다. 최대 15분 동안 인스턴스를 사용할 수 없습니다.

  25. 업그레이드를 완료하고 인스턴스가 Amazon EC2 콘솔에서 두 상태 확인을 모두 통과하면 원격 데스크톱을 사용하여 인스턴스에 연결하고 새 드라이버가 설치되었는지 확인합니다. 디바이스 관리자(Device Manager)의 스토리지 컨트롤러(Storage Controllers) 아래에서 AWS PV Storage Host Adapter를 찾습니다. 드라이버 버전이 드라이버 버전 기록 표에 나열된 최신 버전과 동일한지 확인합니다. 자세한 내용은 AWS PV 드라이버 패키지 기록 섹션을 참조하세요.

  26. 앞에서 임시로 생성한 인스턴스는 이 절차에서 삭제하거나 중단합니다.

수정 스크립트 실행

현재 위치 드라이버 업그레이드를 수행하거나 새로운 인스턴스를 마이그레이션할 수 없는 경우 수정 스크립트를 실행하여 플러그-앤-플레이 클린업 작업에서 발생한 문제를 수정할 수 있습니다.

수정 스크립트를 실행하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

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

  3. 수정 스크립트를 실행할 인스턴스를 선택합니다. [인스턴스 상태(Instance state)]를 선택한 다음 [인스턴스 중지(Stop instance)]를 선택합니다.

    주의

    인스턴스를 중지하면 인스턴스 스토어 볼륨의 데이터가 삭제됩니다. 인스턴스 스토어 볼륨의 데이터를 유지하려면 영구 스토리지에 백업하세요.

  4. 인스턴스가 중지되면 백업을 생성합니다. 인스턴스를 선택하고 [작업(Actions)], [이미지 및 템플릿(Image and templates)] 및 [이미지 생성(Create image)]을 차례로 선택합니다.

  5. [인스턴스 상태(Instance state)]를 선택한 다음 [인스턴스 시작(Start instance)]을 선택합니다.

  6. 원격 데스크톱을 사용하여 인스턴스에 연결하고 RemediateDriverIssue.zip 폴더를 인스턴스에 다운로드합니다.

  7. 폴더 내용을 추출합니다.

  8. Readme.txt 파일의 지침에 따라 수정 스크립트를 실행합니다. 파일은 RemediateDriverIssue.zip을 추출한 폴더에 있습니다.

TCP 오프로드

중요

AWS PV 또는 Intel 네트워크 드라이버를 실행하는 인스턴스에는 이 문제가 적용되지 않습니다.

기본적으로, Windows AMI의 Citrix PV 드라이버에서는 TCP 오프로드가 활성화됩니다. 예를 들어, 특정 SQL 워크로드 등 전송 수준 오류 또는 패킷 전송 오류(Windows 성능 모니터에서 확인 가능)가 발생한 경우 이 기능을 비활성화해야 합니다.

주의

TCP 오프로드를 비활성화하면 인스턴스의 네트워크 성능이 감소합니다.

Windows Server 2012 및 2008에서 TCP 오프로드를 비활성화하려면,
  1. 인스턴스 연결 후 로컬 관리자로 로그인합니다.

  2. Windows Server 2012의 경우 Ctrl+Esc를 눌러 시작 화면에 액세스한 다음 제어판을 선택합니다. Windows Server 2008의 경우 시작 화면에 액세스한 다음 제어판을 선택합니다.

  3. 네트워크 및 인터넷, 그 다음 네트워크 및 공유 센터를 선택합니다.

  4. 어댑터 설정 변경을 선택합니다.

  5. Citrix PV Ethernet Adapter #0를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

    
                            로컬 영역 연결 속성입니다.
  6. 로컬 영역 연결 속성 대화 상자에서 구성을 선택하여 Citrix PV Ethernet Adapter #0 속성 대화 상자를 엽니다.

  7. 고급 탭에서 TCP/UDP 체크섬 값 수정 외에 각 속성을 해제합니다. 속성을 해제하려면 속성 중에서 선택하여 에서 비활성화를 선택합니다.

  8. 확인을 선택합니다.

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

    netsh int ip set global taskoffload=disabled netsh int tcp set global chimney=disabled netsh int tcp set global rss=disabled netsh int tcp set global netdma=disabled
  10. 인스턴스를 재부팅합니다.

시간 동기화

2013.02.13 Windows AMI 릴리스 이전에는 Citrix Xen 게스트 에이전트에서 시스템 시간이 올바르지 않게 설정될 수 있었습니다. 이로 인해 DHCP 임대 만료가 발생했습니다. 인스턴스 연결에 문제가 있으면 이 에이전트를 업데이트하세요.

Citrix Xen 게스트 에이전트의 업데이트 여부를 확인하려면 C:\Program Files\Citrix\XenGuestAgent.exe 파일의 날짜가 2013년 3월인지 확인합니다. 이 파일의 날짜가 그 이전인 경우 Citrix Xen 게스트 에이전트 서비스를 업데이트합니다. 자세한 내용은 Citrix Xen 게스트 에이전트 서비스 업그레이드 섹션을 참조하세요.

20,000 디스크 IOPS 이상을 활용하는 워크로드에서 CPU 병목 현상으로 인해 성능 저하 발생

20,000 IOPS 이상을 활용하는 AWS PV 드라이버를 실행하는 Windows 인스턴스를 사용하고 있고 버그 확인 코드 0x9E: USER_MODE_HEALTH_MONITOR이(가) 발생하는 경우 이 문제의 영향을 받을 수 있습니다.

AWS PV 드라이버의 디스크 읽기 및 쓰기(IO)는 IO 준비IO 완료의 두 단계로 발생합니다. 기본적으로 준비 단계는 단일한 임의 코어에서 실행됩니다. 완료 단계는 코어 0에서 실행됩니다. IO를 처리하는 데 필요한 계산량은 크기 및 기타 속성에 따라 다릅니다. 일부 IO는 준비 단계에서 더 많은 계산을 사용하고 다른 IO는 완료 단계에서 더 많은 계산을 사용합니다. 인스턴스가 20,000 IOPS를 초과할 경우 준비 또는 완료 단계에 따라 병목 현상이 발생할 수 있습니다. 이 경우 인스턴스가 실행되는 CPU가 100% 용량이 됩니다. 준비 단계나 완료 단계가 병목 현상이 되는지 여부는 애플리케이션에서 사용하는 IO의 속성에 따라 다릅니다.

AWS PV 드라이버 8.4.0부터 준비 단계 및 완료 단계의 부하를 여러 코어에 분산하여 병목 현상을 제거할 수 있습니다. 각 애플리케이션은 서로 다른 IO 속성을 사용합니다. 따라서 다음 구성 중 하나를 적용하면 애플리케이션의 성능이 향상 또는 낮아지거나 성능에 영향을 주지 않을 수 있습니다. 이러한 구성을 적용한 후 애플리케이션을 모니터링하여 원하는 성능을 충족하는지 확인합니다.

  1. 필수 조건

    이 문제 해결 절차를 시작하기 전에 다음과 같은 사전 요구 사항을 확인하세요.

  2. 인스턴스에 대한 CPU 부하 관찰

    Windows 작업 관리자를 사용하여 각 CPU의 부하를 보고 디스크 IO에 잠재적인 병목 현상을 확인할 수 있습니다.

    1. 애플리케이션이 실행 중이고 프로덕션 워크로드와 유사한 트래픽을 처리하고 있는지 확인합니다.

    2. RDP를 사용하여 인스턴스에 연결합니다.

    3. 인스턴스에서 [시작] 메뉴를 선택합니다.

    4. [시작] 메뉴에 Task Manager를 입력하여 작업 관리자를 엽니다.

    5. 작업 관리자가 요약 보기를 표시하는 경우 [자세히]를 클릭하여 세부 보기를 확장합니다.

    6. 성능 탭을 선택합니다.

    7. 왼쪽 창에서 [CPU]를 선택합니다.

    8. 기본 창에서 그래프를 마우스 오른쪽 버튼으로 클릭하고[그래프 변경]>[논리 프로세서]를 클릭하여 각 개별 코어를 표시합니다.

    9. 인스턴스에 있는 코어 수에 따라, 시간 경과에 따른 CPU 부하를 표시하는 줄이 나타나거나 숫자만 나타날 수 있습니다.

      • 시간 경과에 따른 부하를 표시하는 그래프가 나타나면 상자가 거의 완전히 음영 처리된 CPU를 찾습니다.

      • 각 코어에 숫자가 나타나면 95% 이상을 일관되게 표시하는 코어를 찾습니다.

    10. 코어 0 또는 다른 코어가 과부하를 겪고 있다는 점에 유의합니다.

  3. 적용할 구성 선택
    구성 이름 이 구성을 적용해야 하는 경우 참고
    Default configuration 워크로드가 20,000 IOPS 미만을 구동하거나 다른 구성으로 인해 성능 또는 안정성이 향상되지 않았습니다.

    이 구성의 경우 IO는 몇 개의 코어에서 발생하므로 캐시 지역성을 높이고 컨텍스트 전환을 줄임으로써 더 작은 워크로드에 도움이 될 수 있습니다.

    Allow driver to choose whether to distribute completion 워크로드가 20,000 IOPS 이상을 구동하고 코어 0에서 중간 또는 높은 부하가 관찰됩니다. 이 구성은 문제 발생 여부에 관계없이 PV 8.4.0 이상을 사용하고 20,000 IOPS 이상을 활용하는 모든 Xen 인스턴스에 권장됩니다.
    Distribute both preparation and completion 워크로드가 20,000 IOPS 이상을 구동하고 있으며 드라이버가 배포를 선택할 수 있도록 허용해도 성능이 향상되지 않았거나0 이외의 코어에서 높은 부하가 발생하고 있습니다. 이 구성을 통해 IO 준비 및 IO 완료 모두를 분산시킬 수 있습니다.
    참고

    준비 단계가 병렬로 실행될 때 완료 단계가 준비 단계의 과부하에 민감하기 때문에 IO 완료(DpcRedirection 설정 없이 NotifierDistributed 설정)를 분산시키지 않고 IO 준비를 분산시키는 것은 좋지 않습니다.

    레지스트리 키 값
    • NotifierDistributed

      0 값 또는 존재하지 않음 — 완료 단계는 코어0에서 실행됩니다.

      1 값 — 드라이버가 완료 단계나 코어 0 또는 연결된 디스크당 하나의 추가 코어를 실행하도록 선택합니다.

      2 값 — 드라이버가 연결된 디스크당 하나의 추가 코어에서 완료 단계를 실행합니다.

    • DpcRedirection

      0 값 또는 존재하지 않음 — 준비 단계가 하나의 임의의 코어에서 실행됩니다.

      1 값 — 준비 단계가 여러 코어에 분산됩니다.

    기본 구성

    8.4.0 이전의 AWS PV 드라이버 버전에 또는 이 섹션의 다른 구성 중 하나를 적용한 후 성능 또는 안정성 저하가 관찰되는 경우 기본 구성을 적용하세요.

    1. RDP를 사용하여 인스턴스에 연결합니다.

    2. 관리자 권한으로 새 PowerShell 명령 프롬프트를 엽니다.

    3. 다음 명령을 실행하여 NotifierDistributedDpcRedirection 레지스트리 키를 제거합니다.

      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name NotifierDistributed
      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name DpcRedirection
    4. 인스턴스를 재부팅합니다.

    드라이버에서 완료를 배포할지 여부를 선택하도록 허용

    PV 스토리지 드라이버가 IO 완료를 분산시킬지 여부를 선택할 수 있도록 NotiferDistributed 레지스트리 키를 설정합니다.

    1. RDP를 사용하여 인스턴스에 연결합니다.

    2. 관리자 권한으로 새 PowerShell 명령 프롬프트를 엽니다.

    3. 다음 명령을 실행하여 NotiferDistributed 레지스트리 키를 설정합니다.

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name NotifierDistributed
    4. 인스턴스를 재부팅합니다.

    준비와 완료를 모두 배포

    항상 준비 단계와 완료 단계를 모두 분산시키도록 NotifierDistributedDpcRedirection레지스트리 키를 설정합니다.

    1. RDP를 사용하여 인스턴스에 연결합니다.

    2. 관리자 권한으로 새 PowerShell 명령 프롬프트를 엽니다.

    3. 다음 명령을 실행하여 NotifierDistributedDpcRedirection 레지스트리 키를 설정합니다.

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000002 -Name NotifierDistributed
      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name DpcRedirection
    4. 인스턴스를 재부팅합니다.