ऑनलाइन, जबकि ऑफ़लाइन और RTC के साथ NTP के साथ घड़ी सिंक्रनाइज़ करें?


11

क्या कोई मौजूदा तंत्र है जो ऑनलाइन रहते हुए 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 बहाव के बारे में एक बहुत ही दिलचस्प चर्चा है

जैसा कि मैं इसे समझता हूं, पहले से ही ntpd और hwclock का संयोजन आपको इन सभी चीजों को करने की अनुमति देता है।
रॉय

@ रोय ज़रूर। सवाल यह है: अधिकतम सटीकता प्राप्त करने के लिए ntp (d) और RTC (hwclock) को कैसे संयोजित किया जाए?
नेल्स टॉड्टमैन

मैं समझता हूं कि एसटीसी घड़ी आरटीसी से अधिक बहती है। मुझे उत्सुकता है कि क्या आपने ड्रोन के सिस्टम ड्रिफ्ट के प्रबंधन के तरीके / प्रभावशीलता के बारे में अस्वीकार्य पाया? आपके लिए क्रॉनी कैसे विफल रही?
dfc

@ पीडीएफ क्रॉनी हम पर विफल नहीं हुआ। हमने अभी तक इसकी कोशिश नहीं की है क्योंकि ऐसा लगता है कि ऑफ़लाइन अवधियों के दौरान समय रखने के लिए आरटीसी का उपयोग नहीं किया गया है, जो मुझे लगता है कि हमारे उपयोग के मामले में सटीकता बढ़ाएगा। अगर कोई और अधिक आशाजनक दिखने वाले तरीकों का सुझाव दिया जाता है तो हम परीक्षण का परीक्षण करेंगे।
निल्स टेड्टमैन

मुझे लगता है कि आपको क्रॉनिक दिखना चाहिए। सम्मान से ऐसा लगता है कि आप कूबड़ के आधार पर एक अच्छे विकल्प को खारिज कर रहे हैं। मेरी राय में यह इस बात की जांच करने के लिए है कि यदि कोई RTC-ntpd नहीं पाया गया है ऐसा लगता है सबसे आसान काम देखने के लिए अगर chrony अपनी आवश्यकताओं को पूरा है और यदि नहीं तो यह खरगोश की मांद नीचे जाना
Dfc

जवाबों:


4

आपकी स्थिति असामान्य है, और मुझे आश्चर्य होगा कि यदि कोई भी मानक- ntpdविन्यास वाले कॉन्फ़िगरेशन के साथ आता है तो आप क्या चाहते हैं। उस ने कहा, मुझे आश्चर्यचकित होना पसंद है, और यह अक्सर इन हिस्सों के आसपास होता है।

लेकिन जब तक कोई बेहतर विचार के साथ आता है, क्या आपने crontabइस तरह से एक प्रविष्टि पर विचार किया है ?

*/5 * * * *   ntpdate 0.pool.ntp.org || ( hwclock --adjust; hwclock --hctosys )

IE, हर पांच मिनट के माध्यम से घड़ी को सिंक करने की कोशिश करते हैं ntpdate, और यदि (और केवल अगर) विफल रहता है, तो /etc/adjtimeफ़ाइल के अनुसार बहाव के लिए हार्डवेयर घड़ी को समायोजित करें (जिसका प्रारूप विस्तृत है man hwclock, और जिसकी पहली पंक्ति में आपने अपने ज्ञान का उपयोग करके उचित रूप से आबाद किया है उस विशेष RTC की दर से), फिर RTC से सिस्टम क्लॉक सेट करें।

ध्यान दें कि यदि आप इस तरह के समाधान के लिए जाते हैं, और आप इन प्रणालियों में से किसी भी महत्वपूर्ण संख्या को तैनात कर रहे हैं, तो इसे पूल के साथ काम करने के लिए विनम्र माना जाता है, और आपके उपयोग के अनुपात में वापस सर्वर का योगदान देता है। आप http://www.pool.ntp.org/en/vendors.html पर अधिक जानकारी प्राप्त कर सकते हैं ।


आपने मूल विचार को रोक दिया है :-) लेकिन यह उत्तर (अभी तक) के रूप में नहीं गिनता है क्योंकि यह (निरंतर, लेकिन महत्वपूर्ण) आरटीसी बहाव के लिए खाता नहीं है। क्या हम इसे बेहतर कर सकते हैं, उदाहरण के लिए /etc/adjtimeऔर hwclock --adjust?
निल्स टेड्टमैन

हाँ; ऊपर देखो।
मध्याह्न

इस तरह का समाधान मेरे मन में था जब मैंने अपनी पिछली टिप्पणी लिखी थी। इसके अलावा, अगर सिस्टम क्लॉक वर्तमान में ntpd के माध्यम से सिंक में है, तो आप RTC के लिए काफी सटीक बहाव दर को मापने और सेट करने के लिए hwclock का उपयोग कर सकते हैं।
रॉय

दुर्भाग्य से नहीं, ntpd & '11
-minute

-1

NTP के पास पहले से ही यह जानने के लिए तंत्र है कि यह ऑनलाइन या ऑफ़लाइन है, और यह आवश्यकतानुसार कम प्राथमिकता वाले स्रोतों पर स्विच करेगा। वैकल्पिक स्रोत को ट्रिगर करने के लिए पहुंच मूल्य की जांच करना बहुत आसान है, लेकिन मैं एनटीपी के साथ चिपका रहूंगा। जैसा कि आरटीसी बहाव के लिए निगरानी और सुधार के लिए नीचे चर्चा की गई है, मुश्किल होने की संभावना है।

पूर्व-इंटरनेट के दिनों में मैंने एक प्रोग्राम का इस्तेमाल किया, जो एक डेटा स्रोत के लिए फोन करेगा और घड़ी को सिंक करेगा। अभी भी ऐसी सेवाएँ उपलब्ध हो सकती हैं जो एक मॉडेम पर एक समय स्रोत प्रदान करती हैं। इसके लिए एक फोन लाइन की आवश्यकता होगी।

स्थानीय घड़ी के साथ ज्ञात समस्याएं हैं, जो आरटीसी पर लागू नहीं होती हैं। कुछ मुद्दों को एनटीपी ज्ञात ओएस मुद्दों की सूची में प्रलेखित किया गया है । ये आपके घड़ी के बहाव के कारण हो सकते हैं। उन्हें हल करने से आपकी समस्या हल हो सकती है। मिस्ड टिक की अनुपस्थिति में, मैंने पाया है कि स्थानीय (सिस्टम) समय स्रोत बहुत स्थिर हो सकता है।

आप एक प्रोग्राम के साथ डंब क्लॉक ड्राइवर (33) का उपयोग करने में सक्षम हो सकते हैं जो उचित आरटीसी समय को / dev / dumbclockX डिवाइस पर लिखते हैं।

रेडियो घड़ियों पर आधारित कई अन्य ड्राइवर हैं। इनमें से कुछ डब्ल्यूडब्ल्यूवी और सीएचयू जैसी शॉर्टवेव सेवाओं का उपयोग करते हैं, जो उन वातावरणों में काम कर सकते हैं जहां जीपीएस सिग्नल उपलब्ध नहीं हैं। यूरोप के लिए इस सूची में बीबीसी, टीडीएफ, आरबीयू और आरएमडब्ल्यू शामिल होंगे।

Pavel Krejci ने RTC ड्राइवर भी लिखा है, लेकिन यह आधिकारिक ड्राइवरों में शामिल नहीं हुआ है। यह PPS प्रकार सिंक्रनाइज़ेशन के साथ काम कर सकता है।

तैनाती से पहले आरटीसी बहाव को मापना संभव होना चाहिए। हालांकि, आपको यह सुनिश्चित करने की आवश्यकता होगी कि आरटीसी स्वचालित रूप से अपडेट नहीं हो रहा है। जब सिस्टम घड़ी adjtimex फ़ंक्शन के साथ अपडेट की जाती है, तो RTC को हर 11 मिनट में अपडेट किया जा सकता है।

कनेक्ट होने पर NTP घड़ी को अपडेट करेगा। आम तौर पर एनटी सिस्टम घड़ी में बड़े समायोजन करने से इनकार कर देगा। समायोजित करने के लिए विकल्प हैं कि घड़ी को कितनी दूर तक समायोजित किया जा सकता है।

मैंने ऊपर RTC का उपयोग करने के लिए विकल्प सुझाए हैं। एक जीपीएस घड़ी की तुलना में एक रेडियो घड़ी अधिक उपयुक्त हो सकती है।

एक विश्वसनीय समय स्रोत की अनुपस्थिति में बहाव को मापना इसके खिलाफ तुलना करना एक व्यर्थ प्रयास है। यदि स्थानीय समय अस्थिर है, तो आप इसका उपयोग आरटीसी और इसके विपरीत निगरानी के लिए नहीं कर सकते हैं। एनटीपी कनेक्ट होने पर बहाव को मापने से काम नहीं चलेगा अगर कर्नेल आरटीसी को हर 11 मिनट में अपडेट कर रहा है। मैंने जिन RTCs का उपयोग किया है उनमें एक दूसरा रिज़ॉल्यूशन है, इसलिए उन्हें मज़बूती से मापने योग्य होने के लिए काफी बहाव करना होगा।


मुझे समझ नहीं आता कि यह मेरे सवाल से कैसे संबंधित है। मुझे नहीं लगता कि मेरी समस्या ड्राइवरों की कमी है ... या यह है?
नेल्स टॉड्टमैन

@NilsToedtmann जहाँ तक मुझे पता है कि RTC के लिए कोई आधिकारिक ड्राइवर नहीं है। मेरा मानना ​​है कि localड्राइवर केवल सर्वर घड़ी का उपयोग करता है, जिसे आप drifts रिपोर्ट करते हैं। मैं अपनी प्रतिक्रिया अपडेट करूंगा।
बिल्टोर २३'१४

जब आप 'ड्राइवर' कहते हैं, तो क्या आपका मतलब लिनक्स कर्नेल ड्राइवर (जिनमें से बहुत सारे हैं), या ntpd फीचर्स हैं? आपके सुझावों के लिए Thx, उनमें से कुछ दिलचस्प हैं - हालांकि मुझे लगता है कि उन्हें टिप्पणियों के बजाय पोस्ट किया जाना चाहिए था। विशेष रूप से '11-अधिक 'का उल्लेख करने के लिए Thx, मैं इसके बारे में भूल गया था। मैंने अपना प्रश्न अपडेट किया।
निल्स टेड्टमैन

@NilsToedtmann नहीं, मेरा मतलब एनटी घड़ी ड्राइवरों से है। यह मेरा अनुभव है कि आरटीसी आमतौर पर बहाव करता है, लेकिन अगर बल्लेबाज अच्छा है तो उच्च दरों पर नहीं। मिस्ड टिक सिस्टम घड़ी के साथ एक मुद्दा हो सकता है।
बिल्टोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.