Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

20.40.4. 호스트 물리적 머신 풀을 연장하기 위한 호환 CPU 모델 확인

이제 단일 호스트 물리적 시스템의 CPU 기능을 확인할 수 있으므로 다음 단계는 게스트 가상 머신에 표시할 CPU 기능을 결정하는 것입니다. 게스트 가상 머신을 다른 호스트 물리적 시스템으로 마이그레이션할 필요가 없다는 것을 알고 있는 경우 호스트 물리적 시스템 CPU 모델을 수정되지 않은 상태로 바로 전달할 수 있습니다. 가상화된 데이터 센터에는 모든 서버가 100% 동일한 CPU를 보유할 수 있는 구성 세트가 있을 수 있습니다. 호스트 물리적 시스템 CPU 모델을 수정하지 않은 상태로 바로 전달할 수 있습니다. 그러나 가장 일반적인 경우는 호스트 물리적 시스템 간의 CPU가 달라질 수 있다는 것입니다. 이 혼합 CPU 환경에서 가장 낮은 공통 분모 CPU를 결정해야합니다. 이 작업은 쉽지 않으므로 libvirt에서 이 작업에 대한 API를 제공합니다. libvirt가 호스트 물리적 시스템의 CPU 모델을 설명하는 각 XML 문서 목록을 제공하는 경우 libvirt는 내부적으로 CPUID 마스크로 변환하고 교집합을 계산하고 CPUID 마스크 결과를 XML CPU 설명으로 변환합니다.
virsh 기능이 실행될 때 libvirt에서 기본 워크스테이션의 기능으로 보고하는 내용의 예는 다음과 같습니다.

그림 20.4. 호스트 물리적 시스템의 CPU 모델 정보 가져오기


<capabilities>
  <host>
    <cpu>
      <arch>i686</arch>
      <model>pentium3</model>
      <topology sockets='1' cores='2' threads='1'/>
      <feature name='lahf_lm'/>
      <feature name='lm'/>
      <feature name='xtpr'/>
      <feature name='cx16'/>
      <feature name='ssse3'/>
      <feature name='tm2'/>
      <feature name='est'/>
      <feature name='vmx'/>
      <feature name='ds_cpl'/>
      <feature name='monitor'/>
      <feature name='pni'/>
      <feature name='pbe'/>
      <feature name='tm'/>
      <feature name='ht'/>
      <feature name='ss'/>
      <feature name='sse2'/>
      <feature name='acpi'/>
      <feature name='ds'/>
      <feature name='clflush'/>
      <feature name='apic'/>
    </cpu>
 </host>
</capabilities>
이제 동일한 virsh 기능을 사용하여 다른 서버와 비교합니다.

그림 20.5. 임의의 서버에서 CPU 설명 생성


<capabilities>
  <host>
    <cpu>
      <arch>x86_64</arch>
      <model>phenom</model>
      <topology sockets='2' cores='4' threads='1'/>
      <feature name='osvw'/>
      <feature name='3dnowprefetch'/>
      <feature name='misalignsse'/>
      <feature name='sse4a'/>
      <feature name='abm'/>
      <feature name='cr8legacy'/>
      <feature name='extapic'/>
      <feature name='cmp_legacy'/>
      <feature name='lahf_lm'/>
      <feature name='rdtscp'/>
      <feature name='pdpe1gb'/>
      <feature name='popcnt'/>
      <feature name='cx16'/>
      <feature name='ht'/>
      <feature name='vme'/>
    </cpu>
    ...snip...
이 CPU 설명이 이전 워크스테이션 CPU 설명과 호환되는지 확인하려면 virsh cpu-compare 명령을 사용합니다.
축소된 콘텐츠는 virsh-caps-hiera-cpu-only.xml 파일에 저장되고 virsh cpu-compare 명령을 이 파일에서 실행할 수 있습니다.
# virsh cpu-compare virsh-caps-workstation-cpu-only.xml
Host physical machine CPU is a superset of CPU described in virsh-caps-workstation-cpu-only.xml
이 출력에서 볼 수 있듯이 libvirt 는 CPU가 엄격하게 호환되지 않는 것으로 올바르게 보고합니다. 이는 서버 CPU에 클라이언트 CPU에서 누락된 여러 기능이 있기 때문입니다. 클라이언트와 서버 간에 마이그레이션하려면 XML 파일을 열고 일부 기능을 주석으로 처리해야 합니다. 제거해야 하는 기능을 확인하려면 두 시스템의 CPU 정보가 포함된 both-cpus.xml 에서 virsh cpu-baseline 명령을 실행합니다. # virsh cpu-baseline both-cpus.xml 을 실행하면 다음과 같은 결과가 나타납니다.

그림 20.6. 복합 CPU 기준


<cpu match='exact'>
  <model>pentium3</model>
  <feature policy='require' name='lahf_lm'/>
  <feature policy='require' name='lm'/>
  <feature policy='require' name='cx16'/>
  <feature policy='require' name='monitor'/>
  <feature policy='require' name='pni'/>
  <feature policy='require' name='ht'/>
  <feature policy='require' name='sse2'/>
  <feature policy='require' name='clflush'/>
  <feature policy='require' name='apic'/>
</cpu>
이 복합 파일은 어떤 요소가 공통인지 보여줍니다. 공통으로 있지 않은 모든 것은 주석으로 처리해야 합니다.