Solaris でゾーニングを使用する場合、ホスト ID はゾーンごとに変更されませんが、(関数呼び出し getzoneid() を介して) ゾーンの一意のゾーン ID も取得します。
Linux で KVM を使用すると、ホスト ID がゾーンごとに変化 (増分) します。これは非常に優れていますが、完全ではありません。他の誰かのホスト ID と衝突する可能性があります。
KVM が提供する、ゾーン ID を取得できる API はありますか?
Solaris でゾーニングを使用する場合、ホスト ID はゾーンごとに変更されませんが、(関数呼び出し getzoneid() を介して) ゾーンの一意のゾーン ID も取得します。
Linux で KVM を使用すると、ホスト ID がゾーンごとに変化 (増分) します。これは非常に優れていますが、完全ではありません。他の誰かのホスト ID と衝突する可能性があります。
KVM が提供する、ゾーン ID を取得できる API はありますか?
重複したホスト ID に関する懸念について:
Solaris とは異なり、Linux カーネルは「gethostid」呼び出しを提供しません。代わりに、「gethostid」(/usr/bin/hostid
プログラムで使用) がglibc によって実装され、次のことを試みます。
/etc/hostid
固定ファイル (私のシステム上) が存在するかどうかを確認します。その場合は、そこにある 4 バイトの値を使用します。0
ます。これは、すべてのシステムが固有の IP アドレスを持っている場合、固有のホスト ID も持つことを意味します。
システムに固有の IP アドレスがない場合でも、sethostid
glibc ライブラリー呼び出し (上記の glibc のgethostid
アルゴリズムのステップ (1) で読み取ったファイルに書き込む) を使用して、ホスト ID をオーバーライドできます。
KVM インスタンスのゾーン ID の取得について:
Solaris ゾーン (すべてのインスタンスが同じカーネルを共有する) とは異なり、KVM の各インスタンスは、Linux カーネルの独自のコピーを実行します。これらはすべて、実行中の他のインスタンスを認識しません。私の知る限り、Solaris のゾーン ID に直接相当するものはありません。各 Linux インスタンスは他の Linux インスタンスと連携する方法がないからです。
実行中の KVM インスタンスごとに一意の識別子が必要な場合は、次のオプションがあります。
上記のように、IPアドレス/ホストIDを設定するだけです。
インスタンスをセットアップ/起動するときに、使用してシステムのUUIDuuidgen
を生成し、ファイルシステムの安全な場所に保存します。このように生成された UUID は、非常に高い確率で他の UUID と一致することはありません。
システムの各インスタンスを起動するときに、カーネル コマンド ラインで、手動で作成したインスタンスの一意の識別子を渡します ( -append
KVM コマンド ライン引数を使用)。これは、後で から取得できます/proc/cmdline
。