क्या कोई मौजूदा तंत्र है जो ऑनलाइन रहते हुए NTP के साथ एक linux system को सिंक्रोनाइज़ करता है, और ऑफ़लाइन होने पर RTC की भविष्यवाणी के साथ?
हम दूरस्थ "कलेक्टरों" को संचालित करते हैं: एम्बेडेड लिनक्स सिस्टम जो डेटा एकत्र करते हैं और टाइमस्टैम्प सेंसर करते हैं। हमें 5 सेकंड से नीचे, यथोचित रूप से छोटे रहने के लिए उनकी घड़ी की त्रुटियों की आवश्यकता है। आमतौर पर हम एनटीपी का उपयोग अपनी घड़ियों को सिंक करने के लिए करते हैं, और यह ठीक काम करता है - जब तक सिस्टम ऑनलाइन है।
समस्या यह है कि कुछ कलेक्टरों में बहुत खराब अपलिंक होते हैं जो घंटों, दिनों या हफ्तों तक नीचे जा सकते हैं। यह स्थानीय डेटा संग्रह को नहीं रोकता है, लेकिन NTP के बिना, लिनक्स सिस्टम घड़ी बुरी तरह से और काफी अप्रत्याशित रूप से बहती है।
OTOH, हार्डवेयर का RTC भारी रूप से बहता है, लेकिन स्थिर दर पर। RTC बहाव दर बोर्ड से बोर्ड तक भिन्न होती है, लेकिन प्रति बोर्ड निरंतर होती है और इसे मापा जा सकता है।
मुझे लगता है कि हमें जो चाहिए वह एक तंत्र है जो निम्नलिखित कार्य करता है:
- अपनी तैनाती से पहले एक बोर्ड के आरटीसी बहाव दर को मापें
- जब संभव हो एनटीपी के माध्यम से / नियमित रूप से चल रहे सिस्टम समय को समायोजित करें
- RTC से सिस्टम समय को नियमित रूप से समायोजित करें जब NTP अप्राप्य हो। ज्ञात आरटीसी बहाव दर को ध्यान में रखें।
- वैकल्पिक: ऑनलाइन होने के दौरान चल रहे RTC बहाव दर को मापें और रिकॉर्ड करें (1)
'मेकेनिज्म' से मेरा मतलब है कि कुछ अच्छी तरह से बनाए रखा गया, सॉफ्टवेयर का टुकड़ा और / या कॉन्फ़िगरेशन जो दो राज्यों "ऑनलाइन" बनाम "ऑफ़लाइन" को संभाल सकता है, यह सुनिश्चित करता है कि सिस्टम घड़ी सही समय स्रोत (ntp बनाम) के साथ सिंक्रनाइज़ है rtc), राज्य के परिवर्तन का पता लगाने, और RTC बहाव के लिए सही है। यह ज्यादा मायने नहीं रखता है कि क्या इसे एक विशेष एनटीपीडी कॉन्फ़िगरेशन / प्लगइन के रूप में, एक अलग डेमॉन के रूप में, क्रोन जॉब के रूप में लागू किया जाता है, या फिर।
मुझे क्रॉनिक पर एक नज़र थी , लेकिन इसके प्रलेखन के अनुसार यह सिस्टम घड़ी के बहाव की भविष्यवाणी करने की कोशिश करता है , जो हमारे मामले में आरटीसी की तुलना में कहीं अधिक अप्रत्याशित रूप से बहती है। लगता है कि क्रोन्टी आरटीसी का इस्तेमाल केवल रिबूट के दौरान करने के लिए कर रहा है।
(1) नोट ntpd कर्नेल के '11-मिनट मोड 'को सक्रिय करता है (हर 11 वें सिस्टम घड़ी से rtc अपडेट)। 11 मिनट के मोड को रोकने के लिए वर्तमान गुठली और ntpd के साथ कोई रास्ता नहीं लगता है। इसलिए, किसी भी rtc बहाव की जानकारी खो जाती है जबकि ntpd चल रहा है (thx @billthor)।
अद्यतन / संपादन:
- हम USB या सीरियल के माध्यम से MSF या DCF77 सिग्नल (हम यूरोप में आधारित हैं) के लिए एक बाहरी रेडियो घड़ी जोड़ने पर विचार कर रहे हैं। लेकिन हम बल्कि हार्डवेयर को दुबला रखते हैं।
- हमारे कलेक्टर घर के अंदर स्थित होते हैं, अक्सर तहखाने में। तो जीपीएस घड़ियों को जोड़ने में मदद नहीं करेगा।
- हम डेबियन का उपयोग करते हैं। इसका मतलब है कि उपयोग-लाइनक्स -२.२०.१ से nwpdate-४.२.६ पीपी ५, एनटीपीडी से एनटीपी-४.२.६.पी ५, क्रोनी -१.२४ (संभावित १.३०)।
- ध्यान दें कि हमारी समस्या यह नहीं है कि हम यह नहीं जानते कि कैसे उपयोग करें
ntpdate(8)
,hwclock(8)
औरdate(1)
, आदि कृपया इटालिक्स में जोड़े गए खंड को 'मैकेनिज्म' से जोड़कर देखें । - '11 मिनट मोड 'के बारे में फुटनोट जोड़ा गया
- यहां ऑफ़लाइन-सिंक और RTC बहाव के बारे में एक बहुत ही दिलचस्प चर्चा है