क्या external ड्राइव को बिना eject किए निकालने से वह ख़राब हो सकती है?

हर किसी ने कम से कम एक बार बिना eject किए USB ड्राइव को खींचकर निकाला है। जानिए जब आप eject का स्टेप छोड़ देते हैं तो आपके डेटा और ड्राइव के साथ असल में क्या होता है।

आप जल्दी में हैं। ड्राइव eject नहीं हो रही। आप फिर भी केबल खींच देते हैं। हम सबने यह किया है।

शायद कुछ नहीं हुआ। शायद आपको वह झुंझलाहट भरा “Disk Not Ejected Properly” नोटिफ़िकेशन मिला और उसके बाद भी सब ठीक लगा। तो आप सोचने लगते हैं कि क्या eject करना सचमुच ज़रूरी है, या यह बस उन सावधानी वाली आदतों में से एक है जिनसे व्यवहार में कोई फ़र्क नहीं पड़ता।

फ़र्क पड़ता है। पर हमेशा उस तरह नहीं जैसा आप सोचेंगे।

eject करने से असल में क्या होता है

जब आप macOS पर ड्राइव eject करते हैं, तो सिस्टम क्रम से तीन काम करता है।

पहला, यह write cache को flush करता है। macOS हाल में लिखे गए डेटा को ड्राइव पर सहेजने से पहले मेमोरी में रखता है। इससे परफ़ॉर्मेंस बेहतर होती है पर इसका मतलब है कि जो डेटा आपने “सेव” किया, वह शायद अभी डिस्क पर पहुँचा ही न हो। eject करना सारे cached डेटा को लिखने के लिए मजबूर करता है।

दूसरा, यह सभी file handles बंद करता है। ड्राइव पर जिस भी प्रोसेस की कोई फ़ाइल खुली होती है, उसे वह फ़ाइल छोड़ने का संदेश मिलता है। इससे एप्लिकेशन को अपना काम पूरा करने और फ़ाइलें साफ़-सुथरे ढंग से बंद करने का मौक़ा मिलता है।

तीसरा, यह volume को unmount करता है। ड्राइव को filesystem tree से हटा दिया जाता है, और ऑपरेटिंग सिस्टम उसके अस्तित्व को मानना बंद कर देता है। इस स्टेप के बाद ही उसे physically निकालना सुरक्षित होता है।

जब आप eject करना छोड़कर सीधे केबल खींच देते हैं, तो आप तीनों स्टेप एक साथ छोड़ देते हैं।

असली जोखिम: write caching

खतरा write cache में ही छिपा है। आधुनिक ऑपरेटिंग सिस्टम, जिनमें macOS भी शामिल है, external ड्राइव पर डेटा तुरंत नहीं लिखते। परफ़ॉर्मेंस की वजह से वे writes को एक साथ बैच करते हैं और समय-समय पर उन्हें flush करते हैं।

अगर आप कोई फ़ाइल कॉपी करते हैं और progress bar पूरा हो जाता है, तो इसकी गारंटी नहीं कि डेटा ड्राइव पर है। हो सकता है सिस्टम ने अपने cache से कॉपी की पुष्टि कर दी हो जबकि असली write अभी कतार में हो। उसी पल disconnect कर दें और ड्राइव पर मौजूद फ़ाइल अधूरी, ख़राब, या पूरी तरह गायब हो सकती है।

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

उन ड्राइव का क्या जिनसे आप सिर्फ़ पढ़ते हैं?

अगर आपने ड्राइव कनेक्ट की, कुछ फ़ाइलें खोलीं, और उस पर कुछ भी सेव नहीं किया, तो unplug करने का जोखिम काफ़ी कम हो जाता है। कोई write नहीं तो flush करने के लिए कोई write cache नहीं, और बीच ट्रांसफ़र में कोई फ़ाइल नहीं।

लेकिन “उस पर कुछ भी सेव नहीं किया” को सुनिश्चित करना उतना आसान नहीं जितना आप सोचते हैं। आप Finder में जो भी फ़ोल्डर ब्राउज़ करते हैं, macOS उसमें .DS_Store फ़ाइलें लिख देता है। Spotlight indexing डेटा लिखता है। कुछ एप्लिकेशन जिन volumes को एक्सेस करते हैं उन पर temporary फ़ाइलें या lock फ़ाइलें बना देते हैं।

हो सकता है आपने जान-बूझकर कुछ सेव न किया हो, पर macOS ने शायद कुछ न कुछ ज़रूर लिखा होगा।

Filesystem corruption

किसी एक फ़ाइल के नुकसान से आगे, filesystem corruption का बड़ा जोखिम भी है।

Filesystems अंदरूनी संरचनाएँ बनाए रखते हैं: directories, allocation tables, journal entries। ये संरचनाएँ बताती हैं कि हर फ़ाइल डिस्क पर कहाँ है और जगह कैसे आवंटित है। जब आप कोई फ़ाइल लिखते हैं, तो filesystem इन संरचनाओं को अपडेट करता है। अगर आप अपडेट के बीच में disconnect कर दें, तो ये संरचनाएँ असंगत (inconsistent) स्थिति में पहुँच सकती हैं।

HFS+ journaling का इस्तेमाल करता है, जो बदलाव करने से पहले उनकी योजना रिकॉर्ड कर लेता है। अगर disconnect प्रक्रिया को बीच में रोक दे, तो filesystem journal को दोबारा चलाकर एक संगत स्थिति में लौट सकता है। APFS बिल्कुल अलग तरीका अपनाता है, journaling के बजाय copy-on-write इस्तेमाल करता है। नया डेटा हमेशा पहले खाली जगह पर लिखा जाता है, और pointers तभी अपडेट होते हैं जब write पूरा हो जाता है। अगर disconnect प्रक्रिया को बीच में रोक दे, तो पुराना डेटा अपनी मूल जगह पर सुरक्षित रहता है। दोनों में से किसी भी filesystem के साथ, हो सकता है आप वह फ़ाइल खो दें जो लिखी जा रही थी, पर filesystem ख़ुद बरकरार रहता है।

exFAT और FAT32 में कोई journal नहीं होता। संरचना अपडेट के दौरान disconnect करने से पूरा filesystem टूटी हुई हालत में पहुँच सकता है। फ़ाइलें गायब हो सकती हैं, फ़ोल्डर पढ़े जाने लायक नहीं रहते, या ड्राइव mount होने से ही मना कर सकती है।

अगर आपकी ड्राइव exFAT में फ़ॉर्मैट है (Mac और Windows के बीच शेयर की जाने वाली ड्राइव में आम), तो ठीक से eject करना और भी ज़रूरी है।

ड्राइव को physical नुकसान

आधुनिक ड्राइव अचानक disconnect होने को हार्डवेयर स्तर पर ठीक-ठाक संभाल लेती हैं। SSDs में कोई चलने वाला हिस्सा नहीं होता, इसलिए head crash का जोखिम नहीं रहता। पावर जाने पर hard ड्राइव अपने read/write heads को ख़ुद-ब-ख़ुद park कर लेती हैं।

बड़ी physical चिंता connector है। बार-बार USB केबल खींचने से ड्राइव और आपके Mac, दोनों के port घिस सकते हैं। USB-C connectors पुराने USB-A से ज़्यादा टिकाऊ हैं, पर ये भी घिसाव से अछूते नहीं हैं।

बार-बार अप्रत्याशित disconnection SSD firmware को भी प्रभावित कर सकते हैं। हर बेढंगे शटडाउन के बाद ड्राइव के controller को recovery ऑपरेशन करने पड़ते हैं, जिससे write cycles और जटिलता बढ़ती है।

संचयी असर

अकेला एक अनियोजित disconnect किसी विनाशकारी नुकसान की वजह बने, इसकी संभावना कम है। आधुनिक filesystems की journaling इसे संभाल लेती है, और ड्राइव इसे सहने के लिए बनी होती हैं।

समस्या तब होती है जब यह आदत बन जाए। हर बार जब आप eject छोड़ते हैं, तो आप जुआ खेल रहे होते हैं कि write cache खाली है या नहीं, filesystem अपडेट हो रहा था या नहीं, और दोबारा कनेक्ट करने पर सब कुछ संगत रहेगा या नहीं।

दर्जनों या सैकड़ों बार के ग़लत disconnection में, कुछ गड़बड़ होने की संभावना बढ़ जाती है। छोटी-छोटी असंगतियाँ जमा होती जाती हैं। फ़ाइलों में सूक्ष्म corruption पनपती है जो तब तक सामने नहीं आती जब तक आप हफ़्तों बाद उन्हें खोलने की कोशिश न करें।

बस ड्राइव eject कर दीजिए

सुरक्षित रास्ता साफ़ है: हमेशा eject करें। पर लोग इसे छोड़ते हैं, इसकी वजह आलस नहीं है। वजह यह है कि macOS पर eject इतनी बार फ़ेल होता है। आप eject करने की कोशिश करते हैं, बताया जाता है कि डिस्क “in use” है, और आपको पता ही नहीं चलता कि क्यों या इसका क्या करें।

Ejecta वही वजह ख़त्म कर देता है जिसकी वजह से लोग सबसे पहले eject करना छोड़ देते हैं। जब आपकी ड्राइव eject नहीं होती, तो यह आपको ठीक-ठीक बताता है कि कौन-सा प्रोसेस इसे रोक रहा है और उस प्रोसेस को एक क्लिक में quit करने देता है। पूरा काम कुछ सेकंड में हो जाता है, किसी रिसर्च प्रोजेक्ट में नहीं बदलता।

ड्राइव को ठीक से eject करना उन छोटी आदतों में से एक है जो दुर्लभ पर तकलीफ़देह डेटा नुकसान को टालती है। सही काम करना आसान बना लीजिए, और आप इसे हर बार करेंगे।

अगर आप हर बार Terminal इस्तेमाल नहीं करना चाहते, तो Ejecta आपको ठीक-ठीक दिखाता है कि कौन सा process आपके drive को रोक रहा है — और सीधे आपके menu bar से एक क्लिक में उसे बंद कर देता है।

अभी खरीदें — $9.99