検索

6.15.3. KVM 仮想マシンのタイミング管理

download PDF
仮想化には、仮想マシンの時刻の維持に関してさまざまな課題があります。一部の CPU には一定のタイムスタンプカウンターがないため、TSC (タイムスタンプカウンター) をクロックソースとして使用する仮想マシンでは、タイミングの問題が発生することがあります。正確な時刻管理なしで実行される仮想マシンは、実際の時刻よりも早く、または遅く実行されるため、ネットワーク化されたアプリケーションに深刻な影響を与える可能性があります。
KVM は、準仮想化クロックを仮想マシンに提供することで、この問題を回避します。KVM pvclock は、これに対応する KVM ゲストに対して安定したタイミングソースを提供します。
現在、準仮想化クロックを完全にサポートしているのは、Red Hat Enterprise Linux 5.4 以降の仮想マシンのみです。
仮想マシンには、不正確なクロックとカウンターによりさまざまな問題が生じる可能性があります。
  • クロックが実際の時刻と同期できなくなり、セッションが無効になり、ネットワークに影響が及ぶ可能性があります。
  • クロックが遅い仮想マシンには移行の問題が発生する可能性があります。
これらの問題は、他の仮想化プラットフォームに存在しており、タイミングは常にテストする必要があります。
重要
Network Time Protocol (NTP) デーモンがホストおよび仮想マシンで実行されている必要があります。ntpd サービスを有効にし、デフォルトの起動シーケンスに追加します。
  • Red Hat Enterprise Linux 6 の場合
    # service ntpd start
    # chkconfig ntpd on
  • Red Hat Enterprise Linux 7 の場合
    # systemctl start ntpd.service
    # systemctl enable ntpd.service
ntpd サービスを使用すると、すべてのケースでクロックスキューの影響を最小限に抑える必要があります。
使用しようとしている NTP サーバーは稼働しており、ホストと仮想マシンからアクセスできる必要があります。

CPU に一定のタイムスタンプカウンターがあるかどうかの判断

constant_tsc フラグが存在する場合、CPU には一定のタイムスタンプカウンターがあります。CPU に constant_tsc フラグがあるかどうかを確認するには、以下のコマンドを実行します。

$ cat /proc/cpuinfo | grep constant_tsc
出力が得られると、CPU には constant_tsc ビットがあります。出力が表示されない場合は、以下の手順に従ってください。

Constant タイムスタンプカウンターを使用しないホストの設定

一定のタイムスタンプカウンターのないシステムには、追加の設定が必要です。電源管理機能は正確な時間管理を妨げるため、仮想マシンが KVM で時間を正確に保持するには、無効にする必要があります。

重要
この手順は、AMD リビジョン F の CPU のみを対象としています。
CPU に constant_tsc ビットがない場合は、すべての電源管理機能を無効にします(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 設定ファイルを編集して cpufreq を無効にします( constant_tscのないホストでのみ必要)。MIN_SPEED 変数および MAX_SPEED 変数を利用可能な最大周波数に変更します。有効な制限は、/sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies ファイルにあります。

engine-config ツールを使用して、ホストが同期から外れたときにアラートを受信します。

engine-config ツールを使用して、ホストが同期から外れてドリフトした時にアラートを設定できます。

ホストの時刻ドリフトに関連するパラメーターは EnableHostTimeDriftHostTimeDriftInSec の 2 つです。デフォルト値が false の EnableHostTimeDrift を有効にすると、ホストの時刻ドリフトに関するアラート通知を受け取ることができます。HostTimeDriftInSec パラメーターを使用して、アラートの送信が開始されるまでの最大許容ドリフトを設定します。
アラートはホストごとに 1 時間ごとに 1 回送信されます。

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 ファイルを手動でバックアップする必要があります。新しい grub.conf.kvm ファイルは、追加のブート行パラメーターを除き、grub.conf に手動で検査する必要があります。 grub.conf.kvm ファイルの名前は最後に grub.conf に変更され、仮想マシンを再起動する必要があります。
以下の表は、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 : 5.4 x86(準仮想化クロックあり)
追加の仮想マシンカーネルパラメーター : 追加のパラメーターは必要ありません
Red Hat Enterprise Linux : 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
追加の仮想マシンカーネルパラメーター : 追加のパラメーターは必要ありません
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.