शास्त्रीय स्थिति: मैं एक बुरा भाग गया rm
और तुरंत बाद में महसूस किया कि मैंने गलत फाइलें निकाल दी हैं। (कुछ भी महत्वपूर्ण नहीं है और मेरे पास हाल ही में बैकअप था, लेकिन अभी भी कष्टप्रद है।)
यह जानते हुए कि आगे डिस्क गतिविधि मेरा दुश्मन था अगर मैं extundelete
इस तरह के उपकरणों के साथ फ़ाइलों को पुनर्प्राप्त करना चाहता था , तो मैंने तुरंत मशीन को भौतिक रूप से संचालित किया (यानी, पावर बटन के साथ, halt
या इस तरह के किसी भी कमांड के साथ नहीं )। यह एक लैपटॉप था जिसमें कोई महत्वपूर्ण कार्य नहीं चल रहा था या कुछ भी खुला था, इसलिए यह एक स्वीकार्य ऑपरेशन था। (वैसे, मैंने तब से सीखा कि ऐसी स्थिति में पहली बात यह होगी कि सबसे पहले अनुमान लगाना होगा कि क्या लापता फाइलें अभी भी एक प्रक्रिया द्वारा खोली जा सकती हैं https://unix.stackexchange.com/a/101247 - यदि वे हैं, तो आपको मशीन को बिजली देने के बजाय इस तरह से पुनर्प्राप्त करना चाहिए।]
फिर भी, एक बार मशीन संचालित होने के बाद मैंने कुछ समय के लिए सोचा और तय किया कि फाइलें उचित फोरेंसिक के लिए लाइव सिस्टम को बूट करने के समय के निवेश के लायक नहीं हैं। इसलिए मैंने मशीन को वापस संचालित किया। और फिर मुझे पता चला कि मेरी फाइलें अभी भी डिस्क पर बैठी हुई थीं: rm
डिस्क को मेरे द्वारा संचालित करने से पहले प्रचारित नहीं किया गया था। मैंने थोड़ा नृत्य किया और अपनी अप्रत्याशित माफी के लिए सिसड्मिन के देवता को धन्यवाद दिया।
मेरा सवाल अब यह समझना है कि यह कैसे संभव था, और rm
वास्तव में डिस्क पर प्रचारित होने से पहले विशिष्ट देरी क्या है । मुझे पता है कि डिस्क IO को तुरंत फ्लश नहीं किया जाता है, लेकिन यह कुछ समय के लिए मेमोरी में बैठता है, लेकिन मैंने सोचा कि डिस्क जर्नल जल्दी से सुनिश्चित करेगा कि लंबित संचालन पूरी तरह से खो न जाए। https://unix.stackexchange.com/a/78766 गंदे पन्नों को फ्लश करने और जर्नल ऑपरेशंस को फ्लश करने के लिए एक अलग तंत्र पर संकेत देता है, लेकिन इस बारे में पर्याप्त विवरण नहीं देता है कि पत्रिका किस तरह से शामिल होगी rm
, और पहले देरी होने की उम्मीद है संचालन को बाधित किया जाता है।
कुछ और विवरण: डेटा एक LUKS मात्रा के अंदर एक ext4 विभाजन में था, और जब मशीन को बूट कर रहा था तो मैंने निम्नलिखित को देखा syslog
:
Sep 24 10:24:58 gamma kernel: [ 11.457007] EXT4-fs (dm-0): 1 orphan inode deleted
Sep 24 10:24:58 gamma kernel: [ 11.458393] EXT4-fs (dm-0): recovery complete
Sep 24 10:24:58 gamma kernel: [ 11.482475] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
लेकिन मुझे विश्वास नहीं है कि यह संबंधित है rm
।
एक अन्य प्रश्न यह होगा कि क्या कर्नेल को यह बताने का कोई तरीका है कि मशीन को कम करने के बजाय लंबित डिस्क संचालन में से कोई भी कार्य न करें (बल्कि कहें, उन्हें कहीं डंप करें)। (बेशक, यह लंबित संचालन नहीं करने के लिए खतरनाक लगता है, लेकिन यह तब होता है जब मशीन को किसी भी तरह से पावर डाउन किया जाता है, और यह कुछ मामलों में यह आपको बचा सकता है।) यह निश्चित रूप से "क्लीनर" होगा, और दिलचस्प भी। उदाहरण के लिए दूरस्थ सर्वर जहां भौतिक शक्तिपात एक आसान विकल्प नहीं है।
rm
है जो लिखे जाने से पहले अनुग्रह समय का अनुमान लगा सकता है? दूसरे शब्दों में, चीजें केवल पत्रिका के लिए प्रतिबद्ध होती हैं जब एक लेखन सिर्फ प्रदर्शन के बारे में होता है? या क्या चित्र उससे अधिक जटिल है? Alt-sysrq-u के लिए, यह एक बहुत साफ विचार है। क्या आपके पास "यह प्रतीत होता है" दावे के लिए एक संदर्भ है? (यह आपके द्वारा दिए गए लिंक्स से नहीं लगता है।) धन्यवाद! :)