Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

6.15.3. KVM 가상 머신 타이밍 관리

가상화로 인해 가상 머신 시간 유지에 다양한 문제가 발생합니다. 클럭 소스로 TSC(Time StampECDHE)를 사용하는 가상 머신은 일부 CPU에 일정 시간 StampECDHE이 없기 때문에 타이밍 문제가 발생할 수 있습니다. 정확한 시간 유지 관리 없이 실행되는 가상 머신은 실제 시간보다 더 빠르거나 느려지므로 일부 네트워크 애플리케이션에 심각한 영향을 미칠 수 있습니다.
KVM은 가상 머신에 반가상화 클럭을 제공하여 이 문제를 해결합니다. KVM pvclock 은 이를 지원하는 KVM 게스트에 대한 안정적인 타이밍 소스를 제공합니다.
현재는 Red Hat Enterprise Linux 5.4 이상에서만 반가상화 클럭을 완벽하게 지원합니다.
가상 머신은 부정확한 클럭 및 카운터로 인해 발생할 수 있는 몇 가지 문제가 있을 수 있습니다.
  • 시계가 세션을 무효화하고 네트워크에 영향을 미치는 실제 시간과 동기화되지 않을 수 있습니다.
  • 클럭이 느린 가상 머신은 마이그레이션에 문제가 있을 수 있습니다.
이러한 문제는 다른 가상화 플랫폼에서 항상 테스트해야 하며 타이밍을 테스트해야 합니다.
중요
NTP(Network Time Protocol) 데몬은 호스트와 가상 머신에서 실행되어야 합니다. ECDHE 서비스를 활성화하고 기본 시작 순서에 추가합니다.
  • For Red Hat Enterprise Linux 6
    # service ntpd start
    # chkconfig ntpd on
  • For Red Hat Enterprise Linux 7
    # systemctl start ntpd.service
    # systemctl enable ntpd.service
ECDHE 서비스를 사용하면 모든 경우에 클럭 불일치가 미치는 영향을 최소화해야 합니다.
사용하려는 NTP 서버가 작동 가능하고 호스트 및 가상 머신에 액세스할 수 있어야 합니다.

CPU에 고정 시간 스페어가 있는지 확인

constant_tsc 플래그가 있는 경우 CPU에 고정 시간 StampECDHE이 있습니다. CPU에 constant_tsc 플래그가 있는지 확인하려면 다음 명령을 실행합니다.

$ cat /proc/cpuinfo | grep constant_tsc
출력이 지정되면 CPU의 constant_tsc bit가 있습니다. 출력이 없는 경우 아래 지침을 따릅니다.

일정한 시간 Stamp를 사용하지 않는 호스트 구성

일정한 타임스탬프 카운터가 없는 시스템에는 추가 구성이 필요합니다. 전원 관리 기능은 정확한 시간 유지를 방해하며 KVM을 통해 시간을 정확하게 유지하려면 가상 머신을 비활성화해야 합니다.

중요
이러한 지침은 AMD 버전 F CPU에만 해당합니다.
CPU에 constant_tsc bit가 없는 경우 모든 전원 관리 기능(BZ#513138)을 비활성화합니다. 각 시스템에는 시간을 유지하기 위해 사용하는 여러 타이머가 있습니다. TSC는 호스트에서 안정적이지 않으며, 이로 인해 cpufreq 변경, 딥 C 상태 또는 더 빠른 TSC가 있는 호스트로의 마이그레이션으로 인해 발생하는 경우가 있습니다. 깊은 C 수면 상태는 TSC를 중지할 수 있습니다. 딥 C 상태를 사용하는 커널이 호스트의 grub.conf 파일의 커널 부팅 옵션에 "processor.max_cstate=1"을 추가합니다.
term Red Hat Enterprise Linux Server (2.6.18-159.el5)
        root (hd0,0)
	kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet processor.max_cstate=1
/etc/sysconfig/cpuspeed 구성 파일을 편집하고 MIN_SPEEDMAX_SPEED 변수를 사용 가능한 가장 높은 빈도로 변경하여 cpufreq ( constant_tsc없이 호스트에서만 필요)를 비활성화합니다. 유효한 제한은 /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies 파일에서 확인할 수 있습니다.

호스트가 동기화되지 않을 때 engine-config 툴을 사용하여 경고를 수신합니다.

engine-config 도구를 사용하여 호스트가 동기화되지 않을 때 경고를 구성할 수 있습니다.

호스트의 시간 드리프트에 대한 관련 매개 변수는 EnableHostTimeDriftHostTimeDriftInSec 의 두 가지입니다. 기본값이 false인 EnableHostTimeDrift 은 호스트 시간 드리프트에 대한 경고 알림을 수신하도록 활성화할 수 있습니다. HostTimeDriftInSec 매개변수는 경고가 전송되기 전에 허용되는 최대 드리프트를 설정하는 데 사용됩니다.
경고는 호스트당 시간당 한 번 전송됩니다.

Red Hat Enterprise Linux 가상 머신에서 반가상화 클럭 사용

특정 Red Hat Enterprise Linux 가상 머신의 경우 추가 커널 매개 변수가 필요합니다. 이러한 매개변수는 가상 시스템의 /boot/grub/grub.conf 파일에 있는 /kernel 행의 끝에 추가하여 설정할 수 있습니다.

참고
ktune 패키지를 사용하여 커널 매개변수 구성 프로세스를 자동화할 수 있습니다.
ktune 패키지는 대화형 Bourne 쉘 스크립트인 fix_clock_drift.sh 를 제공합니다. 슈퍼 유저로 실행할 때 이 스크립트는 다양한 시스템 매개변수를 검사하여 실행 중인 가상 시스템이 부하에서 클럭 드리프트에 취약하는지 확인합니다. 이렇게 하면 /boot/grub/ 디렉터리에 새로운 grub.conf.kvm 파일이 생성됩니다. 이 파일에는 추가 커널 매개변수가 포함된 커널 부팅 행이 포함되어 있으며 KVM 가상 머신에서 커널이 고려될 수 있고 클럭이 상당한 드리프트가 발생하지 않도록 합니다. fix_clock_drift.sh 를 슈퍼 유저로 실행한 후, 스크립트가 grub.conf.kvm 파일을 생성한 후 시스템 관리자가 수동으로 백업해야 하는 경우 새로운 grub.conf.kvm 파일을 수동으로 검사해야 추가 부팅 줄 매개 변수를 제외하고 grub.conf.kvm 파일을 수동으로 검사해야 합니다. grub.conf.kvm 파일의 이름이 grub.conf 여야 하며 가상 머신을 재부팅해야 합니다.
아래 표에는 일정한 Time StampECDHE 없이 Red Hat Enterprise Linux 버전과 시스템의 가상 머신에 필요한 매개변수가 나열되어 있습니다.
Red Hat Enterprise Linux : 5.4 반가상화 클럭이 있는 AMD64/Intel 64
추가 가상 머신 커널 매개변수 : 추가 매개변수가 필요하지 않음
Red Hat Enterprise Linux : 5.4 반가상화 클럭이 없는 AMD64/Intel 64
추가 가상 머신 커널 매개변수 : notsc lpj=n
Red Hat Enterprise Linux : paravirtualized 클럭이 있는 5.4 x86
추가 가상 머신 커널 매개변수 : 추가 매개변수가 필요하지 않음
Red Hat Enterprise Linux : paravirtualized 클럭이 없는 5.4 x86
추가 가상 머신 커널 매개변수 : clocksource=acpi_pm lpj=n
Red Hat Enterprise Linux : 5.3 AMD64/Intel 64
추가 가상 머신 커널 매개변수 : notsc
Red Hat Enterprise Linux : 5.3 x86
추가 가상 머신 커널 매개변수 : clocksource=acpi_pm
Red Hat Enterprise Linux : 4.8 AMD64/Intel 64
추가 가상 머신 커널 매개변수 : notsc
Red Hat Enterprise Linux : 4.8 x86
추가 가상 머신 커널 매개변수 : clock=pmtmr
Red Hat Enterprise Linux : 3.9 AMD64/Intel 64
추가 가상 머신 커널 매개변수 : 추가 매개변수가 필요하지 않음
Red Hat Enterprise Linux : 3.9 x86
추가 가상 머신 커널 매개변수 : 추가 매개변수가 필요하지 않음