클라우드에 Nested Virtualization 지원 VM 구축

8752 단어 Nested_Virtualization
개시하다
클라우드에서 OpenStack 환경을 구축하려고 시도할 때 OpenStack Nested Virtualization을 실행하기 위해서는 필수적이라는 것을 알았습니다.
※ Nested Virtualization은 VM 위에 VM을 올려 만든 컨테이너를 말합니다.
유감스럽게도 OpenStack의 시험 환경은 결국 작동할 수 없었다
이 글에는 AWS·GCP·Azure에서 Nested Virtualization 구축을 시도했다는 내용이 실렸다.
카탈로그
  • AWS
  • GCP
  • Azure
  • AWS
    곧, AWS가 구축하는 방법을 몰라서 아무런 정보도 없다.
    만약 무엇을 알게 된다면 나는 보충할 것이다.
    GCP
    ※ 클라우드 셸을 통해 실행됩니다.
    1. 이미지 만들기
    # GCPが  するイメージを  する
    gcloud compute images list --standard-images | grep ubuntu
    NAME                                                  PROJECT                 FAMILY                            DEPRECATED  STATUS
    ubuntu-1804-bionic-v20201014                          ubuntu-os-cloud      ubuntu-1804-lts                               READY
    ubuntu-2004-focal-v20201014                           ubuntu-os-cloud      ubuntu-2004-lts                               READY
    # ※    は、    しています
    
    # ベースイメージとして   に  するソースディスクを  する
    gcloud compute disks create disk-nested-ubuntu \
    --image-project ubuntu-os-cloud \
    --image-family ubuntu-1804-lts \
    --zone us-central1-a
    
    # ※  
    Created [https://www.googleapis.com/compute/v1/projects/******/zones/us-central1-a/disks/disk-nested-ubuntu].
    NAME   ZONE           SIZE_GB  TYPE         STATUS
    disk-nested-ubuntu  us-central1-a  10       pd-standard  READY
    
    # enable-vmxライセンスを  してカスタムイメージを  する
    gcloud compute images create nested-ubuntu-image \
      --source-disk disk-nested-ubuntu --source-disk-zone us-central1-a \
      --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
    
    # ※  
    Created [https://www.googleapis.com/compute/v1/projects/******/global/images/nested-vm-image].
    NAME             PROJECT FAMILY  DEPRECATED  STATUS
    nested-vm-image  ******                      READY
    
    # ソースディスクが  になったので、  する
    gcloud compute disks delete disk-nested-ubuntu --zone us-central1-a
    
    2. 이미지에서 인스턴스 만들기
    인스턴스를 만들 때 1에서 만든 이미지를 선택할 수 있습니다.

    3. 제작 결과 확인/proc/cpuinfoflags에 존재하는 것으로 확인vmx.flags에 CPU가 어떤 기능을 하는지 적혀 있다.
    # SSHで  する(  )
    gcloud compute ssh example-nested-vm
    
    # cpuinfoに、vmxの  を  する
    ******@example-nested-vm:~$ cat /proc/cpuinfo | grep vmx
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat md_clear arch_capabilities
    
    Azure
    ACU(Azure Computing Unit) 목록에 있는 CPU 코어 수의 열에는 가족용 Nested Virtualization***이 있습니다.*** ハイパースレッド されており、 れ になった を できます。예를 들어, Dv3 및 Dsv3 시리즈에 기재된 Standard D4 v3에서 작성된 결과는 다음과 같습니다.
    # SSHで  する
    ssh $USERNAME@$PUBLIC_IP
    
    # GCPと じく、  したVMにSSHで  し、cpuinfoを  
    cat /proc/cpuinfo | grep vmx
    
    # 「Standard_D4_v3」で  しました。CPUが4つあるので4  ています。
    nested-user@nested-vm:~$ cat /proc/cpuinfo | grep vmx
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti tpr_shadow vnmi ept vpid fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti tpr_shadow vnmi ept vpid fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti tpr_shadow vnmi ept vpid fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti tpr_shadow vnmi ept vpid fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
    
    참고 자료
    다음을 참조하였습니다.

  • GCP
  • VM 인스턴스 네스트된 가상화 활성화
  • GCE에서 NestedVirtualization을 지원하는 Ubuntu 인스턴스 만들기
  • 사용자 정의 운영체제 구축

  • Azure
  • Azure VM의 네스트된 가상화를 효율적으로 수행하는 방법
  • ACU(Azure Computing Unit)
  • Azure에서 Nested Virtualization 사용 가능

  • 구축 후 확인
  • /proc/cpuinfo 파일
  • 22.13. 가상화 확장 기능 확인

  • OpenStack
  • DevStack
  • devstack 및 virtualBox를 사용하여 Openstack의 테스트 환경 구축
  • (Blog) VirtualBox6.1 Intel CPU의 Nested Virtualization 해제
  • (Blog) VirtualBox는 가상 머신 중첩을 허용합니다.
  • 끝말
    '완전히 이해'했기 때문에 잘못과 오해의 표현이 있다면 저에게 메시지를 남겨주시면 기쁠 것 같습니다.
    참고로 VirtualBox도 Nested Virtualization을 효과적으로 사용할 수 있다.
    VirtualBox에서 OpenStack의 시험 환경(DevStack)이 단 한 번뿐인 것 같습니다.

    좋은 웹페이지 즐겨찾기