जब मैं -9 * मारता हूं या बिजली खींचता हूं तो क्या होता है?


13

सेट अप

मैं काफी समय से एक प्रोग्रामर हूं, लेकिन मैं अभी भी गहरे, आंतरिक सामान पर थोड़ा सा फजी हूं।

अभी। मुझे अच्छी तरह पता है कि यह एक अच्छा विचार नहीं है:

  1. मार -9 एक प्रक्रिया (खराब)
  2. अनायास किसी चल रहे कंप्यूटर या सर्वर पर पावर प्लग को खींचना (बदतर)

हालांकि, कभी-कभी आपको सिर्फ सादा करना पड़ता है। कभी-कभी एक प्रक्रिया सिर्फ आपके द्वारा किए गए कार्यों पर कोई प्रतिक्रिया नहीं देगी, और कभी-कभी एक कंप्यूटर सिर्फ जवाब नहीं देगा, चाहे आप कुछ भी करें।

मान लेते हैं कि Apache 2, MySQL 5, PHP 5 और Python 2.6.5 को mod_wsgi के माध्यम से चलाने वाला सिस्टम।

नोट: मुझे यहाँ मैक ओएस एक्स के बारे में सबसे अधिक दिलचस्पी है, लेकिन एक जवाब जो किसी भी यूनिक्स प्रणाली से संबंधित है, मुझे मदद करेगा।

मेरी चिंता

हर बार मुझे इनमें से किसी एक को करना पड़ता है, विशेष रूप से दूसरे को, मैं बहुत समय से चिंतित हूं कि कुछ टूट गया है। कुछ फ़ाइल कहीं भ्रष्ट हो सकती है - कौन जानता है कि कौन सी फ़ाइल है? कंप्यूटर पर 1,000,000 से अधिक फाइलें हैं।

मैं अक्सर ओएस एक्स का उपयोग कर रहा हूं, इसलिए मैं डिस्क उपयोगिता के माध्यम से "वेरिफाई डिस्क" ऑपरेशन चलाऊंगा। यह कोई समस्या नहीं रिपोर्ट करेगा, लेकिन मैं अभी भी इस बारे में चिंतित हूं।

क्या होगा अगर कुछ कॉन्फ़िगरेशन फ़ाइल कहीं खराब हो गई। या इससे भी बदतर, क्या होगा अगर एक बाइनरी फ़ाइल कहीं भ्रष्ट है। या कहीं एक स्क्रिप्ट फ़ाइल अब भ्रष्ट है। क्या होगा अगर कुछ हार्डवेयर क्षतिग्रस्त है?

क्या होगा अगर मैं अगले महीने तक इसके बारे में पता नहीं लगाता हूं, एक महत्वपूर्ण परिदृश्य में, जब भ्रष्टाचार या क्षति एक तबाही का कारण बनती है?

या, क्या होगा यदि मूल्यवान डेटा पहले से ही खो गया है?

मेरी उम्मीद

मेरी आशा है कि ये चिंताएँ और चिंताएँ निराधार हैं। आखिरकार, पहले कई बार ऐसा करने के बाद, वास्तव में कुछ भी बुरा नहीं हुआ है। सबसे बुरी बात यह है कि मुझे कुछ MySQL तालिकाओं को सुधारना पड़ा है, लेकिन मुझे कोई डेटा नहीं मिला है।

लेकिन, अगर मेरी चिंताओं को निराधार नहीं किया गया है, और वास्तविक क्षति 1 या 2 की स्थिति में हो सकती है, तो मेरी आशा है कि इसका पता लगाने और इसके खिलाफ रोकने का एक तरीका है।

मेरे सवाल)

क्या ऐसा हो सकता है क्योंकि आधुनिक ऑपरेटिंग सिस्टम यह सुनिश्चित करने के लिए डिज़ाइन किए गए हैं कि इन परिदृश्यों में कुछ भी खो नहीं जाए? क्या ऐसा हो सकता है क्योंकि आधुनिक सॉफ़्टवेयर को यह सुनिश्चित करने के लिए डिज़ाइन किया गया है कि कुछ भी नहीं खोया? आधुनिक हार्डवेयर डिज़ाइन के बारे में क्या? जब आप पावर प्लग खींचते हैं तो क्या उपाय होते हैं?

मेरा सवाल है, इन दोनों परिदृश्यों के लिए, वास्तव में क्या गलत हो सकता है, और इसे ठीक करने के लिए क्या कदम उठाए जाने चाहिए?

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

मेरी हार्ड ड्राइव पर फाइलों के विशाल जंगल में कहीं छिपी हुई यादृच्छिक फाइलों के भ्रष्टाचार के बारे में क्या?

हार्डवेयर क्षति के बारे में क्या?

मुझे सबसे ज्यादा क्या मदद मिलेगी

  1. आंतरिक रूप से क्या होता है इसके बारे में विस्तृत विवरण जब आप या तो एक प्रक्रिया को मारते हैं या पूरे सिस्टम पर शक्ति खींचते हैं। (यह तुरंत लगता है, लेकिन क्या कोई मेरे लिए इसे धीमा कर सकता है?)

  2. उन सभी चीजों की व्याख्या जो इन परिदृश्यों में गलत हो सकती हैं, साथ ही (निश्चित रूप से) संभावनाएं (यानी, यह बहुत संभावना नहीं है, लेकिन यह संभावना है) ...

  3. जब ये परिदृश्य होते हैं, तो क्षति या भ्रष्टाचार को रोकने के लिए आधुनिक हार्डवेयर, ऑपरेटिंग सिस्टम और सॉफ़्टवेयर में जगह के उपायों का वर्णन। (मुझे आराम देने के लिए)

  4. किल -9 या पॉवर पुल के बाद क्या करना है, इसके लिए निर्देश "डिस्क को सत्यापित करना" से परे, यह सुनिश्चित करने के लिए कि ड्राइव पर कहीं भी कुछ भी भ्रष्ट या क्षतिग्रस्त नहीं है।

  5. कंप्यूटर सेटअप को मजबूत करने के लिए जो उपाय किए जा सकते हैं ताकि अगर किसी चीज को मारना पड़े या शक्ति को खींचना पड़े, तो किसी भी संभावित नुकसान को कम किया जा सके।

  6. बाइनरी फ़ाइलों के बारे में कुछ जानकारी - क्या यह सच नहीं है कि अपाचे बाइनरी फ़ाइल या कुछ लाइब्रेरी में एक यादृच्छिक बाइट या बीच में दो भ्रष्ट हो सकते हैं, जो बाहर नहीं आएंगे और बाद में समस्या पैदा करेंगे? मैं खुद को कैसे आश्वस्त कर सकता हूं कि पावर पुल या मारने के परिणामस्वरूप ऐसा नहीं हुआ?

बहुत बहुत धन्यवाद!


आप क्या प्रक्रियाएं मार -9 भेज रहे हैं? आपने 'Apache 2, MySQL 5, PHP 5 और Python 2.6.5 का उल्लेख mod_wsgi के माध्यम से किया है।' क्या आप इनमें से कुछ को मार रहे हैं। यह जानते हुए कि आप क्या मार रहे हैं, ऐसा करने के निहितार्थ की अधिक निर्देशित प्रतिक्रिया की अनुमति देगा। इसके अलावा, वास्तव में क्या हो रहा है कि आप प्रक्रियाओं को मारना चाहते हैं। इसे जानें और अपनी समस्या के मूल कारणों को पहचानने में सक्षम हो सकते हैं बजाय इसके कि आप इसे ठीक करने के लिए अपने पाशविक बल के निहितार्थ को समझें। बीटीडब्ल्यू, मैकओएस एक्स पर, आधुनिक मशीनों के लिए पावर खींचने के बजाय 10 सेकंड के लिए पावर बटन दबाए रखें, कम क्रूर है।
ग्राहम डम्पलटन

मैं किल -9 के बारे में नहीं जानता, लेकिन जब तक आपके पास किसी प्रकार की बैकअप बिजली की आपूर्ति नहीं होती है, मुझे लगता है कि यह कहना बहुत सुरक्षित है कि जब आप पावर प्लग को खींचते हैं तो हर कोई मारा जाता है।
जॉन गार्डनियर्स

जवाबों:


9

बिजली को खींचने से सब कुछ उड़ान में बंद हो जाता है, जिसमें कोई चेतावनी नहीं है। किल -9 का एक ही प्रक्रिया पर समान प्रभाव पड़ता है, जबरदस्ती इसे SIGKILL के साथ समाप्त करना ।

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

यदि वे tmpfs में हैं, तो अस्थायी फ़ाइलें / tmp में स्वचालित रूप से चली जाएंगी, लेकिन आपके पास अभी भी एप्लिकेशन-विशिष्ट लॉक फ़ाइलें हो सकती हैं, जिन्हें हटाने के लिए चारों ओर लेटा हुआ है, जैसे लॉक और फ़ायरफ़ॉक्स के लिए .ententlock।

यदि किसी सफल निकास स्थिति को रिकॉर्ड नहीं करता है, तो अधिकांश सॉफ़्टवेयर लेन-देन को फिर से करने के लिए पर्याप्त स्मार्ट है। इसका एक अच्छा उदाहरण एक विशिष्ट मेल सिस्टम है। यदि कोई संदेश दिया जा रहा है, लेकिन बीच में कट जाता है, तो प्रेषक बाद में फिर से प्रयास करेगा जब तक कि उसे सफलता न मिल जाए।

आपका फ़ाइल सिस्टम संभवतः जर्नल है। यदि आप कोई फ़ाइल ले जा रहे हैं या लिख ​​रहे हैं और यह मध्य-धारा में मर जाता है, तो जर्नल फ़ाइल सिस्टम अभी भी मूल का संदर्भ देगा। जर्नल की गई फ़ाइल सिस्टम पुरानी प्रतिलिपि को छोड़कर, गैर-विनाशकारी रूप से परिवर्तन करेगी, फिर डिस्क पर कब्जा कर ली गई पुरानी प्रतियों को पुनः प्राप्त करने से पहले नई प्रतिलिपि को अंतिम चरण के रूप में संदर्भित करें।

अब अगर आपके पास RAID सरणी है, तो प्रदर्शन को बढ़ाने और बिजली की विफलता में विश्वसनीयता प्रदान करने के लिए सभी प्रकार के मेमोरी बफ़र्स हैं। सबसे अधिक संभावना है कि आपके फाइल सिस्टम को डिवाइस और उनके राज्य में कैश के बारे में नहीं पता होगा, इसलिए यह सोचता है कि डिस्क में बदलाव किया गया है, लेकिन यह अभी भी कहीं न कहीं RAID कैश में है। तो क्या होता है जब बिजली मर जाती है? उम्मीद है कि आपके RAID बाड़े में एक कार्यात्मक बैटरी है और आप इसकी निगरानी करते हैं। अन्यथा आपके पास fsck के लिए एक भ्रष्ट फ़ाइल सिस्टम है।

हां, बाइनरी में कुछ बिट्स दूषित हो सकते हैं, लेकिन मैं आधुनिक हार्डवेयर पर इस बारे में चिंता नहीं करूंगा। यदि आप वास्तव में पागल हैं, तो आप अपने डिस्क और RAID के स्वास्थ्य की निगरानी उचित औजारों से कर सकते हैं, लेकिन आपको ऐसा करना चाहिए। नियमित बैकअप करें और एक निर्बाध विद्युत आपूर्ति प्राप्त करें।


5

अप्रत्याशित शटडाउन में, केवल फाइलें जो दूषित होनी चाहिए वे फाइलें हैं जो लिखने के लिए खुली हैं। किसी भी समय किसी भी समय अधिकांश सिस्टम पर, आप शायद किसी फ़ाइल पर नहीं लिख रहे हैं। शायद।

१ मार-९

POSIX SIGKILL है और कार्यान्वयन पर निर्भर है। इस सिग्नल को प्राप्त करने वाली प्रक्रिया को इसे संभालने का अवसर नहीं दिया जाएगा।

1 बिजली बंद

हार्डवेयर पर निर्भर करता है। ड्राइव गति के तहत ऑटो-पार्क और आपके लेखन कैश में सब कुछ DRAM ताज़ा करता है और कुछ ही सेकंडों के भीतर भ्रष्टाचार को कम कर देता है। आपके सिस्टम मेमोरी, सीपीयू कैश, रजिस्टर आदि के लिए भी ऐसा ही होता है।

Wdc.com से (google: site: wdc.com सुरक्षात्मक प्रमुख पार्किंग)

पावर खो गया है: हार्ड ड्राइव रीसेट है। हेड को स्पिंडल ऊर्जा का उपयोग करके लैंडिंग ज़ोन में रखा गया है। स्पिंडल मोटर बंद हो गई।

2 - क्या गलत हो सकता है

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

3 - प्रतिवाद

ऊपर देखें कि डिस्क क्या करती है।

जर्नल फ़ाइल सिस्टम देखें, वे अब सामान्य हैं: http://en.wikipedia.org/wiki/Journaling_file_system

MS Word या vi जैसे सॉफ़्टवेयर मूल के बजाय एक अस्थायी फ़ाइल को लिखेंगे। उद्देश्य यह है कि सिस्टम को कभी भी ऐसी स्थिति में न छोड़ें जहां डिस्क पर कोई सुसंगत प्रतिलिपि न हो।

Windows रजिस्ट्री की प्रतियां रखता है (यह सिर्फ बहुत महत्वपूर्ण है) विकिपीडिया: "Windows 2000 रजिस्ट्री पित्ती (.ALT) की एक वैकल्पिक प्रतिलिपि रखता है और भ्रष्टाचार का पता चलने पर इसे स्विच करने का प्रयास करता है" (मैंने तब से भारी तकनीकी समर्थन नहीं किया है Win2k, इसलिए मुझे यकीन नहीं है कि एमएस के नए तंत्र क्या हैं)

4 - क्या करें

कठिनाई के क्रम में (आसान-कठिन)

  • बैकअप रखें
  • जांचें कि आप पिछली बार क्या काम कर रहे थे
  • एक अलग डिस्क से बूट करें और यह पता लगाने के लिए अंतिम संशोधित तिथियों / समय की तलाश करें कि दुर्घटना के समय साइटम क्या कर रहा होगा।
  • एक अलग डिस्क से बूट करें और अपनी सभी फाइलों के md5sums की तुलना एक ऑफलाइन कॉपी से करें।

बैकअप रखें सबसे उपयुक्त उत्तर है, अच्छा बैकअप आपको पहले संशोधित संस्करण में वापस जाने देना चाहिए।

5

निरर्थक शक्ति? उपयोगकर्ता शिक्षा समाप्त करें? पावर बटन के ऊपर टेप और कार्डबोर्ड लगाएं?

6

हार्डवेयर की खराबी, दूषित डिस्क ड्राइवर, टूटे हुए ओएस कर्नेल, चेकआउट की अनुपस्थिति या अपग्रेड के दौरान क्रैश, बायनेरीज़ और लाइब्रेरीज़ को रीड-राइट नहीं खोला जाता है, ताकि वे दूषित न हों। ऐसा होता है, लेकिन यह दुर्लभ है।


बिंदु # 6 के लिए +1
बिगबियो 2002

4

एक किल -9 के लिए, यह मौके पर "मरने" की प्रक्रिया के लिए एक संकेत भेजता है। प्रक्रिया मर जाती है (जब तक कि यह निर्बाध नींद में न हो, जिस स्थिति में यह एक ज़ोंबी बन जाता है)। कोई फ़ाइल बंद नहीं है, कोई डेटा नहीं लिखा है, और प्रोग्राम इस सिग्नल को पकड़ नहीं सकता है और कुछ और कर सकता है। कोई सफाई नहीं, कुछ नहीं: यह सिर्फ मर जाता है।

फाइल सिस्टम आज बहुत मजबूत हैं; XFS, JFS, ext3, और ext4 जैसी सभी पत्रिकाओं और अन्य चीजों में फाइलसिस्टम मेटाडेटा बरकरार रखने के लिए है।

स्वयं अपाचे और अन्य जैसे बायनेरिज़ को शक्ति की अचानक हानि या सिस्टम किल द्वारा भ्रष्ट होने की संभावना नहीं है, क्योंकि वे या तो स्मृति में हैं या पढ़े जा रहे हैं; अगर उन्हें (यानी, अपाचे HTTP उदाहरण के लिए शुरू हो रहा है) से पढ़ा जा रहा है, तो संभव है कि पावर सर्ज बाइनरी को दूषित कर सकता है, लेकिन ऐसा लगता है कि संभावना नहीं है।

मुझे लगता है कि एक मैक मिनी लोगों को ठंड बंद करना पसंद है (कोई फर्क नहीं पड़ता कि मैं कितनी बार उन्हें बताता हूं .....) और यह बस चलता रहता है।

अधिकांश भाग के लिए, जब तक आप नियमित रूप से किल -9 या पावर पर भरोसा नहीं करते हैं, मैं बहुत ज्यादा चिंता नहीं करूंगा। अतीत में हालात बहुत बदतर थे; मैं (उदाहरण के लिए) सोलारिस 2.6 के बारे में अधिक चिंता करता हूँ, क्योंकि मैं सोलारिस 10 (और इसी तरह) के बारे में बताता हूँ।



3

एक "किल -9" एक लंबित IO ऑपरेशन को सिंक नहीं करेगा। यह अक्सर कोई समस्या नहीं होती है, लेकिन यदि सिस्टम भारी IO लोड के अंतर्गत है, तो आप डेटा खो सकते हैं।

सर्वर के साथ इसकी अधिक समस्या, जहां RAID नियंत्रक (बैटरी-समर्थित कैश के बिना) कैश लिख सकता है और आपका डेटा खो सकता है।

संपादित करें : एक और बात ... यदि आप नेटवर्क माउंटेड ड्राइव पर निर्भर हैं और फ़ाइल हैंडल खुले हैं, तो आप फ़ाइल को असंगत या दूषित छोड़ सकते हैं। विंडोज पर, इसका उत्कृष्ट उदाहरण जहां आप इसे देखते हैं, जब उपयोगकर्ता एक शेयर पर आउटलुक पीएसटी फ़ाइलों को माउंट करते हैं और पावर या नेटवर्क कनेक्टिविटी खो देते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.