Bir linux sistemini çevrim içi iken NTP ile ve çevrimdışıyken tahmin edilebilir şekilde sürüklenen bir RTC ile senkronize eden mevcut bir mekanizma var mı?
Uzak "toplayıcılar" işletiyoruz: sensör verilerini toplayan ve zaman damgası ekleyen yerleşik Linux sistemleri. 5 saniyenin altında, makul derecede küçük kalmak için saat hatalarına ihtiyacımız var. Genellikle saatlerini senkronize etmek için NTP kullanırız ve sistem çevrimiçi olduğu sürece iyi çalışır.
Sorun şu ki, bazı koleksiyoncular saatler, günler hatta haftalar boyunca inebilecek çok kötü bağlantılara sahip. Bu, yerel veri toplamayı durdurmaz, ancak NTP olmadan, Linux sistem saati kötü ve oldukça öngörülemez şekilde sürüklenir.
OTOH, donanımın RTC'si de ağır bir şekilde sürüklenir, ancak sabit bir oranda. RTC sürüklenme hızı karttan karta değişir, ancak kart başına sabittir ve ölçülebilir.
Sanırım ihtiyacımız olan şey aşağıdakileri yapan bir mekanizma:
- Bir kartın konuşlandırılmadan önce RTC kayma hızını ölçün
- Mümkün olduğunda sistem süresini devam eden / düzenli olarak NTP üzerinden ayarlayın
- NTP kullanılamadığında sistem saatini düzenli olarak RTC'den ayarlayın. Bilinen RTC sürüklenme oranını dikkate alın.
- İsteğe bağlı: Çevrimiçi durumdayken devam eden RTC sürüklenme oranını ölçün ve kaydedin (1)
'Mekanizma' ile, "çevrimiçi" ve "çevrimdışı" iki durumu işleyebilen, bakımlı, belgelenmiş bir yazılım ve / veya yapılandırma parçası anlamına gelir, sistem saatinin doğru zaman kaynağıyla (ntp vs. rtc), durum değişikliğini tespit edin ve RTC sapması için düzeltin. Özel bir ntpd yapılandırması / eklentisi, ayrı bir arka plan programı, bir cron işi veya başka bir uygulama olarak uygulanması önemli değildir.
Chrony'ye bir göz attım , ancak belgelerine göre , bizim durumumuzda RTC'den çok daha öngörülemez şekilde sürüklenen sistem saatinin sürüklenmesini tahmin etmeye çalışıyor . Chrony, RTC'yi yalnızca yeniden başlatmalarda zaman tutmak için kullanıyor gibi görünüyor.
(1) Not ntpd, çekirdeğin '11 dakikalık modunu 'etkinleştirir (rtc'yi her 11 dakikada bir sistem saatinden güncelleyin). Mevcut çekirdekler ve ntpd ile 11 dakikalık modu engellemenin bir yolu yok gibi görünüyor. Bu nedenle, ntpd çalışırken herhangi bir rtc sürüklenme bilgisi kaybolur (thx @billthor).
Güncellemeler / düzenlemeler:
- USB veya Seri yoluyla MSF veya DCF77 sinyali için harici bir radyo saati eklemeyi düşünüyoruz. Ancak donanımı yalın tutmayı tercih ediyoruz.
- Koleksiyonerlerimiz kapalı mekanda, genellikle bodrum kattadır. Bu yüzden GPS saatleri eklemek yardımcı olmaz.
- Debian 7 kullanıyoruz. Bunun anlamı util-linux-2.20.1, ntpdate-4.2.6p5, ntpd ntp-4.2.6.p5, chrony-1.24 (potansiyel olarak 1.30).
- Not bizim sorunumuz biz nasıl kullanılacağını bilmiyorum olmadığını
ntpdate(8)
,hwclock(8)
,date(1)
vb eklenen bölümüne bakın italik i 'mekanizma' ile ne anlama geldiği hakkında. - '11 dakikalık mod 'hakkında dipnot eklendi
- İşte çevrimdışı senkronize olmayan ve RTC sürüklenme ile ilgili çok ilginç tartışma