6.15.3. KVM 仮想マシンのタイミング管理
pvclock
は、これに対応する KVM ゲストに対して安定したタイミングソースを提供します。
- クロックが実際の時刻と同期できなくなり、セッションが無効になり、ネットワークに影響が及ぶ可能性があります。
- クロックが遅い仮想マシンには移行の問題が発生する可能性があります。
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
サービスを使用すると、すべてのケースでクロックスキューの影響を最小限に抑える必要があります。
CPU に一定のタイムスタンプカウンターがあるかどうかの判断
constant_tsc
フラグが存在する場合、CPU には一定のタイムスタンプカウンターがあります。CPU に constant_tsc
フラグがあるかどうかを確認するには、以下のコマンドを実行します。
$ cat /proc/cpuinfo | grep constant_tsc
constant_tsc
ビットがあります。出力が表示されない場合は、以下の手順に従ってください。
Constant タイムスタンプカウンターを使用しないホストの設定
一定のタイムスタンプカウンターのないシステムには、追加の設定が必要です。電源管理機能は正確な時間管理を妨げるため、仮想マシンが KVM で時間を正確に保持するには、無効にする必要があります。
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
ツールを使用して、ホストが同期から外れてドリフトした時にアラートを設定できます。
EnableHostTimeDrift
と HostTimeDriftInSec
の 2 つです。デフォルト値が false の EnableHostTimeDrift
を有効にすると、ホストの時刻ドリフトに関するアラート通知を受け取ることができます。HostTimeDriftInSec
パラメーターを使用して、アラートの送信が開始されるまでの最大許容ドリフトを設定します。
Red Hat Enterprise Linux 仮想マシンでの準仮想化クロックの使用
特定の Red Hat Enterprise Linux 仮想マシンでは、追加のカーネルパラメーターが必要です。このパラメーターは、仮想マシンの /boot/grub/grub.conf ファイルの /kernel 行の末尾に追加することで設定できます。
/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
に変更され、仮想マシンを再起動する必要があります。