Frage

Wenn Zoning unter Solaris verwendet, wird die Host-ID nicht durch Zone ändern, sondern Sie auch erhalten (über einen Funktionsaufruf, getzoneid ()) eine einzigartige zoneid für Ihre Zone.

Mit KVM unter Linux, die Host-ID ändert (Schritte) von Zone - was ziemlich gut ist, aber es ist nicht perfekt -. Sie mit jemandem anderem hostid kollidieren könnten

Es gibt eine API von KVM zur Verfügung gestellt, die mir ermöglicht eine zoneid zu bekommen?

War es hilfreich?

Lösung

In Bezug auf Ihre Bedenken über doppelten hostids:

Im Gegensatz zu Solaris, der Linux-Kernel bietet keine "gethostid" nennen. Stattdessen "gethostid" (vom /usr/bin/hostid Programm verwendet) ist implementiert von glibc , die versucht, zu:

  1. Sie fest, ob eine feste Datei (/etc/hostid auf meinem System) vorhanden ist; wenn ja, verwendet den 4-Byte-Wert dort;
  2. in Ermangelung eines solchen, versucht, eine Host-ID erstellen auf der Grundlage der IP-Adresse des Systems;
  3. Gelingt das nicht, wird eine Host-ID von 0.

Das bedeutet, dass, wenn jedes System eine eindeutige IP-Adresse hat, wird sie auch eine einzigartige Host-ID hat.

Wenn Sie Ihre Systeme keine eindeutigen IP-Adressen haben, können Sie immer noch die Host-ID außer Kraft setzen, indem Sie den sethostid glibc-Bibliothek-Aufruf (die in die Datei schreibt gelesen von Schritt (1) von gethostid Algorithmus glibc oben).

Im Hinblick auf die zoneid einer KVM-Instanz holen:

Im Gegensatz zu Solaris Zonen (wo alle Instanzen den gleichen Kernel teilen), jede Instanz von KVM läuft seine eigene Kopie des Linux-Kernels, von denen alle anderen Instanzen nicht bewusst sind aktiv. Soweit ich weiß, gibt es keine direkte Entsprechung eines Solaris zoneid, da jede Linux-Instanz keine Möglichkeit der Zusammenarbeit mit anderen Linux-Instanzen hat.

Wenn Sie eine eindeutige Kennung für jede ausgeführte KVM Instanz benötigen, einige Optionen sind:

  • Abrechnung nur für die IP-Adresse / Host-ID, wie oben beschrieben;

  • Beim Einrichten / Booten Ihre Instanzen, erzeugen ein UUID für das System mit uuidgen und es an einem sicheren Ort auf dem Dateisystem speichern.

  • , so erzeugt UUID wird nie mit sehr hoher Wahrscheinlichkeit andere UUID übereinstimmen
  • Wenn jede Instanz des Systemstarts auf der Kernel-Befehlszeile übergibt in eine manuell aufgebauten eindeutige Kennung für die Instanz (das -append KVM Befehlszeilenargument verwenden). Dies kann später von /proc/cmdline abgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top