A czas sobie płynie… czyli timekeeping w Linuxie.

Od jakiegoś czasu borykałem sie z problemem zbyt szybkiego bicia czasu na ESX’ach 3.5 w maszynach wirtualnych opartych o system Linux. Problem nie jest może jakiś zawiły ale co najmniej dziwny i co by tu nie mówić nieco uciążliwy. Ciężko jest bowiem bez ujednoliconego czasu utrzymać w ryzach stado liczące ponad 50 maszyn wirtualnych. Agregowanie i korelacja logów stają się koszmarem którego nie powstydził by się sam Freddy.

Większość moich serwerów oparta jest o systemy z rodziny Ubuntu LTS. Wszystkie w niedawnym czasie zostały zaktualizowane do wersji 8.04.2. W otchłaniach sieci znalazłem szereg sposobów jak zwalczyć zjawisko zbyt szybko bijącego czasu. Niektóre były dosyć hardcorowe, np. zmiany parametrów vmkernella w samych ESX’ach, lub rekonfiguracja hypervisora w plikach systemowych itp. Nie skusiłem się na te pikantne propozycje. Postanowiłem znaleźć rozwiązanie mniej ingerujące w kręgosłup technologii VMware.

Rozwiązanie jest, a co więcej jest proste i skuteczne w 98% – jak prezerwatywa. Wystarczy w pliku gruba, bądź lilo dorzucić odpowiednie parametry do jajca linuxowego i wykonać restart.  Tak wiec dla systemów 32bit:

RHEL 5.3 – 5.1 => divider=10 clocksource=acpi_pm
RHEL 5.0 => clocksource=acpi_pm
RHEL 4.7 => clock=pmtmr divider=10
RHEL 4.6 – 4.0 => clock=pmtmr

SLES/SLED 10.0 – 9.0 => clock=pmtmr

Suse Linux 10.3 – 10.2 => clocksource=acpi_pm
Suse Linux 10.1 – 9.1 => clock=pmtmr

Ubuntu 8.10 – 7.04 => clocksource=acpi_pm
Ubuntu 6.10 – 5.04 => clock=pmtmr

Dla innych systemów polecam przejrzenie tabeli na stronie http://kb.vmware.com. Znaleźć tam można parametry dla jajek zarówno 32-bit jak i 64-bit dla bardzo rożnych systemów operacyjnych.
Sam parametr należy wpisać w pliku z definicją startu systemu. Dla gruba w systemie Ubuntu jest to/boot/grub/menu.lst. A parametr dorzucamy dopisując go na końcu linii z definicją kernela:

title    Ubuntu 8.04.2, kernel 2.6.24-19-server
root     (hd0,0)
kernel   /boot/vmlinuz-2.6.24-19-server ro quiet splash clocksource=acpi_pm
initrd   /boot/initrd.img-2.6.24-19-server
quiet

Mam nadzieję że VMware poprawi ten błąd po stronie swoich hypervisorow. Problem dla jednych jest dosyć poważny, dla innych nie, ale dla wszystkich jest upierdliwy w rozwiązywaniu. Ponieważ pamiętanie o dodawaniu tych parametrów przy instalacji każdej maszyny wirtualnej opartej o system Linux jest według mnie uciążliwe.

About the author

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT. Specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert.

Leave a Reply