2011-01-17 19 views
5

ゾーニングをSolarisで使用する場合、ホストIDはゾーンによって変更されませんが、ゾーンの一意のゾーンIDも取得します(関数呼び出しでgetzoneid()によって取得されます)。KVMの下にZoneIDを取得するためのAPIはありますか?

LinuxでKVMを使用すると、hostidがゾーンによって変更(増分)されます。これはかなり良いですが、完全ではありません。あなたが誰かのhostidに衝突する可能性があります。

KVMによって提供されるAPIは、ゾーンIDを取得できるようにしますか?重複したホストIDについてのあなたの懸念について

答えて

3

のSolarisとは異なり、Linuxカーネルが "gethostid" コールを提供していません。代わりに、(/usr/bin/hostidプログラムによって使用される)「gethostidは」しようとするimplemented by glibc、あるに:

  1. 固定ファイル(私のシステム上の/etc/hostid)が存在するかどうかを判断しますそうであれば、そこに4バイトの値を使用します。
  2. これに失敗すると、システムのIPアドレスに基づいてホストIDを作成しようとします。
  3. これに失敗した場合は、0のホストIDを使用します。

これは、すべてのシステムに一意のIPアドレスがある場合、固有のホストIDも持つことを意味します。

あなたのシステムが固有のIPアドレスを持っていない場合、あなたはまだ(はglibcのgethostidアルゴリズム上記のステップ(1)で読み取り、ファイルへの書き込み)sethostid glibcライブラリの呼び出しを使用してホストIDを上書きすることができます。気づかないそれらのすべてが(すべてのインスタンスが同じカーネルを共有する)Solarisゾーンとは異なり

、KVMの各インスタンスは、Linuxカーネルの独自のコピーを実行し、:KVMインスタンスのするzoneidをフェッチについて

実行中の他のインスタンスに移動します。私が知っている限り、SolarisのゾーンIDには直接的な同等物はありません。それぞれのLinuxインスタンスは他のLinuxインスタンスと共同作業する方法がありません。あなたが実行中の各KVMインスタンスの一意の識別子が必要な場合は

、いくつかのオプションがあります:上記のようにジャスト、IPアドレス/ホストIDのためにセトリング

  • インスタンスをセットアップ/起動するときは、uuidgenを使用してシステムのUUIDを生成し、ファイルシステムの安全な場所に保存してください。このように生成されたUUIDは他のどのUUIDとも非常に高い確率で一致することはありません。

  • システムの各インスタンスを起動するときは、カーネルのコマンドラインで、手動で構成されたインスタンスの一意の識別子(-append KVMコマンドライン引数を使用)を渡します。これは後で/proc/cmdlineから取得できます。

+0

あなたは賞金を獲得します。 :-) –

関連する問題