23.15. 時間管理
ゲスト仮想マシンのクロックは、通常、ホストの物理マシンのクロックから初期化されます。ほとんどのオペレーティングシステムでは、ハードウェアクロックは UTC (デフォルト設定) に保持されることが想定されています。
ゲスト仮想マシンでの正確な時間管理は、仮想プラットフォームにおける鍵となる課題です。さまざまなハイパーバイザーが、さまざまな方法で時間管理の問題を処理しようとしています。libvirt は、ドメイン XML の
<clock>
と <timer>
要素を使用して、ハイパーバイザーに依存しない時間管理用の設定を提供します。ドメイン XML は、virsh edit コマンドを使用して編集できます。詳細は、「ゲスト仮想マシンの XML 設定の編集」 を参照してください。
図23.25 時間管理
... <clock offset='localtime'> <timer name='rtc' tickpolicy='catchup' track='guest'> <catchup threshold='123' slew='120' limit='10000'/> </timer> <timer name='pit' tickpolicy='delay'/> </clock> ...
ドメイン XML のこのセクションのコンポーネントは以下のとおりです。
State | 説明 |
---|---|
<clock> | <clock> 要素は、ゲスト仮想マシンのクロックをホスト物理マシンのクロックと同期させる方法を決定するために使用されます。offset 属性には 4 つの値を指定できます。これにより、ゲスト仮想マシンのクロックをホスト物理マシンに同期させる方法を詳細に制御できます。ハイパーバイザーは、常にすべてのポリシーをサポートする必要はないことに注意してください。
|
<timer> | 下記を参照してください。 |
<あり> | ゲスト仮想マシンで特定のタイマーが使用可能であるかどうかを指定します。yes または no に設定できます。 |
注記
<clock>
要素には、子としての<timer>
要素を 0 個以上指定できます。<timer>
要素は、ゲスト仮想マシンのクロック同期に使用されるタイムソースを指定します。
各
<timer>
要素では、name
のみが必要で、その他の属性は任意になります。
name
- 変更するtimer
を選択します。指定できる値は、kvmclock
、pit
、またはrtc
です。track
- タイマートラックを指定します。次の値を使用できます:boot
、guest
、またはwall
。track
はname="rtc"
に対してのみ有効です。tickpolicy
- ゲスト仮想マシンにティックを挿入する期限が過ぎた場合の動作を指定します。設定可能な値は、以下のとおりです。delay
- 通常の速度でティックを配信し続けます。ゲスト仮想マシンの時間は、ティックの遅延により遅れます。catchup
- ティックの遅れを取り戻すために、高いレートでティックを配信しますキャッチアップが完了すると、ゲスト仮想マシンの時間は表示されません。さらに、3 つのオプション属性 (それぞれ正の整数) (threshold、slew、および limit) があります。merge
- 遅れたティックを単一のティックにマージし、それらを挿入します。マージの実行方法によっては、ゲスト仮想マシンの時間が遅れる可能性があります。discard
- 遅れたティックを破棄し、デフォルトの間隔設定で今後の挿入を続行します。失われたティックを処理する明示的なステートメントがない限り、ゲスト仮想マシンの時間が遅延する場合があります。
注記
値 utc は、デフォルトで仮想マシンのクロックオフセットとして設定されます。ただし、ゲスト仮想マシンのクロックを localtime の値で実行している場合は、ゲスト仮想マシンのクロックをホスト物理マシンのクロックと同期させるため、クロックオフセットを変更して別の値にする必要があります。
例23.1 常に UTC に同期する
<clock offset="utc" />
例23.2 常にホストの物理マシンのタイムゾーンに同期する
<clock offset="localtime" />
例23.3 任意のタイムゾーンに同期する
<clock offset="timezone" timezone="Europe/Paris" />
例23.4 UTC + 任意のオフセットに同期する
<clock offset="variable" adjustment="123456" />