क्या दर्शन के लिए सच्चाई है कि आपको सिंक करना चाहिए; सिंक; सिंक; सिंक?


27

जब मुझे पहली बार लिनक्स में पेश किया गया था, तो 2000 में सिस्को सिस्टम्स में काम करते हुए, मुझे syncकमांड की खूबियां सिखाई गईं , फाइल सिस्टम के भ्रष्टाचार / डेटा हानि को रोकने के लिए डिस्क को फ्लश करने के लिए इस्तेमाल किया गया। मुझे न केवल वहां सहकर्मियों द्वारा बताया गया था, बल्कि कॉलेज में दोस्तों द्वारा हमेशा sync"एक" या "एक गुच्छा" को चलाने के लिए , अर्थात, केवल एक बार के बजाय 5 - 10 बार।

मैंने इस आदत को तब से जारी रखा है, लेकिन, क्या इसका कोई गुण है? क्या कभी किसी और ने यह सुना है? और सबसे महत्वपूर्ण बात यह है कि क्या कोई इस विचार के खिलाफ / उसके खिलाफ अच्छा तर्क / अनुभवजन्य साक्ष्य प्रदान कर सकता है कि आपको syncइसे प्रभावी बनाने के लिए एक से अधिक बार चलाने की आवश्यकता है ?

जवाबों:


34

मैंने इसे सुना (क्षमा करें, मैं भूल गया कि कहां) syncकमांड टाइप करने के रूप में तीन बार (जैसे:, S Y N C Returnशीघ्र प्रतीक्षा करें, दोहराएं, दोहराएं)। मैंने यह भी पढ़ा कि मूल एक विशेष प्रणाली थी जहां डिस्क को अपने बफ़र्स को फ्लश करने के लिए कुछ सेकंड लगेंगे, भले ही उसने ऑपरेटिंग सिस्टम को बताया था कि सब कुछ ठीक था। कमांड को दो बार टाइप करने से डिस्क को व्यवस्थित होने के लिए पर्याप्त समय मिलता है। ऐसा लगता है कि वर्षों से, उद्देश्य को भुला दिया गया था, और सलाह को संक्षिप्त रूप sync; sync; syncदिया गया था, जिसका वांछित प्रभाव नहीं था (चूंकि डिस्क ने "सभी स्पष्ट" रिपोर्ट की थी, दूसरा और तीसरा सिंक तुरंत और शीघ्र पूरा होगा बहुत जल्दी वापस आ जाएगा)।

मैंने कभी ऐसी प्रणाली के बारे में नहीं सुना है जहां कई syncऑपरेशनों का कोई उपयोग हो, और मैं किसी भी अस्तित्व पर अत्यधिक संदेह करता हूं। मैं इसे एक शहरी किंवदंती मानता हूं। दूसरी ओर, मुझे यह बहुत विश्वसनीय लगता है कि ऐसी प्रणालियाँ होंगी जहाँ आपको सिंकिंग के बाद और पावर डाउन करने से पहले कुछ सेकंड इंतजार करना चाहिए।

Googling कुछ स्वतंत्र समवर्ती विश्लेषण की ओर ले जाता है, उदाहरण के लिए सिंक की किंवदंती । यह भी देखें कि क्या लिनक्स को बंद करने से पहले सिंक (8) का निष्पादन आवश्यक है?


1
बहुत अच्छे धन्यवाद! मुझे स्पष्ट करना चाहिए, जबकि मैंने sync; sync; sync; syncशीर्षक में रखा था, और मैं कभी-कभी इसे इस तरह से टाइप करता हूं, मैंने यह भी सुना है कि मुझे उसी तरह समझाया गया है, अर्थात, सिंक, प्रतीक्षा, फिर से सिंक, प्रतीक्षा, आदि
जोश

9

यहां पुराना टाइमर। TAPE के गौरवशाली दिनों में, 3 रैपिड सिंक की एक पंक्ति TAPE कंट्रोलर्स को टेप-स्ट्रीम को अन-लिंक / अनस्पोल न केवल बताने का एक तरीका था, बल्कि इसे रिवाइंड करने के लिए, यानी FD / rw-head को सेट करें 0 से।

"सिंक; सिंक; सिंक" वास्तव में केवल उन लोगों द्वारा इस्तेमाल किया गया था, जो हम में से उन लोगों द्वारा उपयोग किए जाते हैं, जो TAPE- आधारित यूनिक्स के साथ हमारे दांत काटते हैं, यानी ऐसे ऐप्स जिनकी फाइलें / var / स्पूल पर मुहिम शुरू की गई थी, उस समय संभव सबसे सस्ता भंडारण। ;)

MIPS Risc / OS ऑपरेटर मैनुअल इस पर एक पृष्ठ है ..


6

निश्चित रूप से पुराने UNIX सिस्टम थे जिनके लिए यह एक से अधिक बार सिंक करने के लिए सुरक्षित था, लेकिन सभी कमांड लाइन पर सिंक के रूप में नहीं, सिंक; सिंक "। 80 के दशक के मध्य में, यह आसुत हो गया:

जब आप सिस्टम को बंद करते हैं, तो आप तीन बार सिंक करते हैं। न आधिक न कम। तीन सिंकिंग की संख्या होगी, और सिंकिंग की संख्या तीन होगी। चार बार आप सिंक नहीं करेंगे, न ही दो बार सिंक करेंगे, सिवाय इसके कि आप तीसरी बार सिंक करने के लिए आगे बढ़ें ...

मैं वास्तव में नहीं जानता कि तीन बार कहाँ से आया, शायद सिवाय इसके कि यह मज़ेदार था। लेकिन सड़क पर शब्द दो बार करने के लिए। "सिंक; सिंक" के रूप में नहीं, बल्कि शेल पर दो अलग-अलग लाइनों के रूप में।

वापस, के दिनों में, V7 UNIX, फाइल सिस्टम की मरम्मत ज्यादा मजेदार नहीं थी। फाइल सिस्टम कैसे काम करता है और dcheck, ncheck, और icheck जैसे प्रोग्रामों की आइडियोसिंक्रिसेस के बारे में बहुत कुछ जानते हुए, आपको इसे हाथ से करना था। अगर आपके पास होता तो fsck, हमेशा कुछ ऐसा नहीं होता जिस पर आप भरोसा करते।

यह "हम बर्फ के रास्ते के माध्यम से चला गया दोनों तरह" कहानी की तरह लग रहा है। खैर, हमारे पास रिबूट या शटडाउन जैसे फैंसी कमांड नहीं थे। जब आप सिस्टम को रिबूट करना चाहते थे, तो आपने फाइल सिस्टम को सिंक के साथ सिंक किया, और फिर इसे रोकने के लिए आपने कंसोल पर Ctrl-P मारा।

जब सिंक कमांड बाहर निकलती है, तो कर्नेल ने सिंक को शेड्यूल किया था, लेकिन सभी बफ़र्स (सभी महत्वपूर्ण फाइलसिस्टम सुपरब्लॉक सहित) ने इसे डिस्क पर जरूरी नहीं बनाया था। इसलिए सिंक को चलाना और फिर सुरक्षित होने से पहले चीजों को रोकना बहुत आसान था।

रनिंग सिंक फिर से करना एक आसान काम था, समय निकाला, और यह सब समझने के बिना एक निश्चित सहज अपील थी, या "10 से गिनती" जैसे अस्पष्ट निर्देशों से निपटना या ऐसा कुछ।

यहाँ तक कि V7 मैन पेज पर BUG सेक्शन updateभी कहा गया था:

अपडेट रनिंग के साथ, यदि सीपीयू को रोक दिया जाता है जैसे सिंक को निष्पादित किया जाता है, तो एक फ़ाइल सिस्टम क्षतिग्रस्त हो सकता है। यह आंशिक रूप से डीईसी हार्डवेयर के कारण है जो शून्य लिखते हैं जब एनपीआर अनुरोध विफल हो जाता है। अपडेट के निष्पादन को ट्रिगर करने के लिए कम से कम 30 सेकंड के लिए सिस्टम समय को अस्थायी रूप से बढ़ाकर सिंक (1) सिंक करना होगा। यह CPU को रोकने के लिए 30 सेकंड का अनुग्रह देगा।

(जो, वैसे, V7 मैनुअल के वॉल्यूम 1 में बहुत आखिरी चीज थी)

समय के साथ, फाइलसिस्टम टूल्स और शट डाउन और रीबूटिंग सिस्टम के लिए प्रोग्राम इससे निपटने के लिए बेहतर हो गए। लोकगीत, जादू, और प्रणाली का जादू इसमें प्रवेश करता है जब सिस्टम रहस्यमय तरीके से व्यवहार करता है। दो बार सिंक करने से यह बहुत कम संभावना है कि आपको अपने फाइल सिस्टम को एक साथ रखने के लिए बिट चिमटी से बाहर निकलना होगा, इसलिए यह अनुष्ठान का हिस्सा बन गया। एक बार जब आप इसे कई बार कर लेते हैं, तो आप इसे बिना सोचे-समझे कर लेते हैं। फिर किसी ने नोटिस किया और पूछा कि क्यों। और जवाब कुछ इस तरह है, "हमेशा इसे इस तरह से किया। यह सुरक्षित है।"

मैं यह दावा नहीं करूंगा कि यह आधिकारिक है, और मैं कुछ विवरणों के बारे में गलत हो सकता हूं। लेकिन मुझे लगता है कि यह मूल के बहुत करीब है।


जैसा मैंने सीखा, वैसा ही लगता है ... लेकिन क्या यह वास्तव में कोई कारण था या कोई कारण था? कुछ अन्य उत्तर अच्छे सुझाव देते हैं, क्योंकि यह आदतें हमारे बीच sysadmins का गठन कर सकती हैं
Josh

@ जोश का कारण बताया गया। "जब सिंक कमांड बाहर निकलती है, तो कर्नेल ने सिंक को शेड्यूल किया था, लेकिन सभी बफ़र्स (सभी महत्वपूर्ण फाइलसिस्टम सुपरब्लॉक सहित) ने इसे डिस्क पर जरूरी नहीं बनाया था।" यह भी देखें: "मानक विनिर्देश (उदाहरण के लिए, POSIX.1-2001) के अनुसार, सिंक () लेखन को शेड्यूल करता है, लेकिन वास्तविक लेखन होने से पहले वापस आ सकता है।" man7.org/linux/man-pages/man2/sync.2.html
sourcejedi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.