Question

Lors de l'utilisation de zonage sous Solaris, le hostid ne change pas par zone, mais vous obtenez également (via un appel de fonction, getzoneid ()) un IDZone unique pour votre zone.

En utilisant KVM sous Linux, les changements de hostid (incréments) par zone - ce qui est assez bon, mais pas parfait -. Vous pourriez entrer en collision avec elses quelqu'un hostid

Il y une API fournie par KVM qui me permet d'obtenir un IDZone?

Était-ce utile?

La solution

En ce qui concerne vos préoccupations au sujet de double hostids:

Contrairement à Solaris, le noyau Linux ne fournit pas l'appel « gethostid ». Au lieu de cela, "gethostid" (utilisé par le programme /usr/bin/hostid) est mis en œuvre par glibc , qui cherche à:

  1. déterminer si un fichier fixe (/etc/hostid sur mon système) existe; le cas échéant, met en oeuvre la valeur de 4 octets dans la;
  2. A défaut, les tentatives de créer un hostid basé sur l'adresse IP du système;
  3. A défaut, utilise un hostid de 0.

Cela signifie que si chaque système dispose d'une adresse IP unique, ils auront également un hostid unique.

Si vos systèmes ne sont pas des adresses IP uniques, vous pouvez toujours passer outre le hostid en utilisant l'appel de la bibliothèque glibc sethostid (qui écrit dans le fichier lu par étape (1) de l'algorithme de gethostid de glibc ci-dessus).

En ce qui concerne la récupération de l'IDZone d'une instance KVM:

Contrairement à des zones Solaris (où toutes les instances partagent le même noyau), chaque instance de KVM exécute sa propre copie du noyau Linux, qui sont tous inconscients à d'autres instances en cours d'exécution. Pour autant que je sache, il n'y a pas d'équivalent direct d'un IDZone Solaris, comme chaque instance Linux n'a aucun moyen de collaborer avec d'autres instances Linux.

Si vous avez besoin d'un identifiant unique pour chaque instance KVM en cours d'exécution, certaines options sont:

  • Il suffit de se contenter de l'adresse IP / hostid, comme décrit ci-dessus;

  • Lors de la configuration / le démarrage de vos instances, générer un UUID pour le système en utilisant uuidgen et l'enregistrer dans un endroit sûr sur le système de fichiers. Ces UUID générés ne correspondront jamais toute autre UUID avec une probabilité très élevée;

  • Lors du démarrage à chaque instance du système, passer sur la ligne de commande du noyau d'un identificateur unique construit manuellement pour l'instance (en utilisant l'argument de ligne de commande KVM -append). Cela peut être tiré par les cheveux plus tard à partir /proc/cmdline.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top