2011-01-17 10 views
5

Korzystając z podziału na strefy pod Solaris, hostid nie zmienia się według strefy, ale uzyskujesz również (za pomocą wywołania funkcji, getzoneid()) unikalny system stref dla swojej strefy.Czy istnieje interfejs API pod KVM, aby uzyskać identyfikator strefy?

Używając KVM pod Linuksem, hostid zmienia się (przyrosty) według strefy - co jest całkiem niezłe, ale nie jest doskonałe - możesz kolidować z kimś innym hostidem.

Czy istnieje interfejs API dostarczony przez KVM, który pozwala uzyskać strefę czasową?

Odpowiedz

3

chodzi swoimi obawami o zduplikowanych hostids:

przeciwieństwie Solaris, Linux kernel nie przewiduje "gethostid" połączenia. Zamiast "gethostid" (używane przez program /usr/bin/hostid) jest implemented by glibc, który stara się:

  1. Ustal, czy istnieje plik stałą (/etc/hostid w moim systemie); jeśli tak, używa tam 4-bajtowej wartości;
  2. W przeciwnym razie próbuje utworzyć hostid na podstawie adresu IP systemu;
  3. W przeciwnym razie używa hostid 0.

Oznacza to, że jeśli każdy system ma unikalny adres IP, będą również miały unikalny hostid.

Jeśli systemy nie posiadają unikalne adresy IP, można jeszcze zastąpić hostid za pomocą wywołania biblioteki sethostid glibc (który zapisuje do pliku odczytać po kroku (1) glibc za gethostid algorytmu powyżej).

Odnośnie pobierania zoneid instancji KVM:

przeciwieństwie strefach Solaris (gdzie wszystkie instancje mają ten sam kernel), każde wystąpienie KVM prowadzi własną kopię jądra Linuksa, z których wszystkie są nieświadomi do innych uruchomionych instancji. O ile mi wiadomo, nie ma bezpośredniego odpowiednika strefy strefy Solaris, ponieważ każda instancja Linuksa nie ma możliwości współpracy z innymi instancjami systemu Linux.

Jeśli potrzebujesz unikalny identyfikator dla każdej działającej instancji KVM, niektóre funkcje są:

  • Wystarczy rozliczania na adres IP/hostid, jak opisano powyżej;

  • Podczas konfigurowania/uruchamiania instancji, wygeneruj UUID dla systemu, używając uuidgen i zapisz w bezpiecznym miejscu w systemie plików. Takie wygenerowane identyfikatory UUID nigdy nie będą pasować do żadnego innego identyfikatora UUID z bardzo wysokim prawdopodobieństwem;

  • Podczas uruchamiania każdej instancji systemu, należy przekazać do wiersza komend jądra ręcznie skonstruowany unikatowy identyfikator instancji (przy użyciu argumentu wiersza komend KVM o wartości -append). Można to pobrać później z /proc/cmdline.

+0

Wygrywasz nagrodę! :-) –