मैं किसी SATA डिस्क को रनिंग सिस्टम से सुरक्षित रूप से कैसे निकाल सकता हूं?


64

मुझे कभी-कभी एक डिस्क को डिस्क बे में प्लग करने की आवश्यकता होती है। अन्य समय में, मेरे पास डेस्कटॉप से ​​बिजली खींचने के दौरान अपने लैपटॉप पर SATA-eSATA केबल का उपयोग करके SSD को जोड़ने का बहुत ही अजीब सेटअप है।

मैं सिस्टम से SATA डिस्क को सुरक्षित रूप से कैसे निकाल सकता हूं? इस Phoronix फोरम थ्रेड में कुछ सुझाव हैं:

justsumdood ने लिखा है:

एक (noymous) droid ने लिखा:
अनप्लगिंग से पहले आप सॉफ्टवेयर की तरफ क्या करते हैं? क्या यह एक सरल "umount / dev / sd" [ड्राइव अक्षर] है? डिवाइस को अनमाउंट करने के बाद, यूनिट को "पावर ऑफ" (या स्लीप) करने के लिए:

hdparm -Y /dev/sdX

(जहाँ X उस उपकरण का प्रतिनिधित्व करता है जिसे आप बंद करना चाहते हैं। उदाहरण के लिए: / dev / sdb)

यह ड्राइव को शक्ति देगा जिससे कि वोल्टेज की वृद्धि का w / o जोखिम दूर हो सके।

क्या इसका मतलब यह है कि डिस्क कैश को ठीक से फ्लश किया जाता है और उसके बाद संचालित किया जाता है?

उसी सूत्र से एक और सुझाव:

chithanh ने लिखा है:
सभी SATA और eSATA हार्डवेयर भौतिक रूप से हॉटप्लग किए जा सकते हैं (यानी प्लग डालने या खींचने पर क्षतिग्रस्त नहीं होते)।

चिपसेट और ड्राइवर कैसे संभालते हैं यह एक और सवाल है। कुछ ड्राइवर / चिपसेट संयोजन ठीक से हॉटप्लगिंग को नहीं संभालते हैं और निम्न के रूप में वार्मप्लग कमांड की आवश्यकता होती है:

echo 0 - 0 > /sys/class/scsi_host/hostX/scan

X को अपने SATA / eSATA पोर्ट के लिए उपयुक्त संख्या से बदलें।

मुझे संदेह है कि क्या ऐसा करने का सही तरीका है, लेकिन मुझे इसके खिलाफ कोई सबूत नहीं मिल रहा है।

तो, सिस्टम से अटैच डिस्क को हटाने का सही तरीका क्या है? मान लें कि मैंने डिस्क पर हर विभाजन को पहले ही अनमाउंट कर दिया है और चला गया है sync। कृपया कुछ आधिकारिक दस्तावेज़ीकरण को इंगित करें यदि संभव हो तो, मुझे लिनक्स प्रलेखन पेड़ में कुछ भी नहीं मिला, न ही लिनक्स एटीए विकी

जवाबों:


82
  1. डिस्क पर किसी भी फाइल सिस्टम को अनमाउंट करें। ( umount ...)
  2. किसी भी LVM समूहों को निष्क्रिय करें। ( vgchange -an)
  3. सुनिश्चित करें कि कुछ भी कुछ भी डिस्क के लिए उपयोग नहीं कर रहा है।
  4. एक बार जब आप ऐसा कर लेते हैं, तो इसे अनप्लग करना सुरक्षित होना चाहिए।

यदि आप अतिरिक्त सतर्क रहना चाहते हैं, तो echo 1 > /sys/block/(whatever)/device/deleteपहले करें। यह डिवाइस को कर्नेल से अनरजिस्टर्ड कर देगा, इसलिए जब आप इसे अनप्लग करते हैं तो आपको इसका उपयोग करने में कुछ भी नहीं पता है। जब मैं एक eSATA बाड़े में एक ड्राइव के साथ ऐसा करता हूं, तो मैं खुद ड्राइव के प्रमुखों को सुन सकता हूं, इसलिए कर्नेल स्पष्ट रूप से ड्राइव को पावर-डाउन के लिए तैयार करने के लिए कहता है।

यदि आप एएचसीआई नियंत्रक का उपयोग कर रहे हैं, तो इसे अनप्लग किए जाने वाले उपकरणों के साथ सामना करना चाहिए। यदि आप SATA नियंत्रक के कुछ अन्य प्रकार का उपयोग कर रहे हैं, तो ड्राइवर हॉटप्लगिंग द्वारा भ्रमित हो सकता है।

मेरे अनुभव में, SATA हॉटप्लगिंग (AHCI के साथ) लिनक्स में बहुत अच्छा काम करता है। मैंने एक ऑप्टिकल ड्राइव को अनप्लग कर दिया है, एक हार्ड ड्राइव में प्लग किया है, इसे त्रुटियों के लिए स्कैन किया है, एक फाइलसिस्टम बनाया है और डेटा को कॉपी किया है, इसे अनमाउंट किया गया है और इसे अनप्लग किया है, एक अलग डीवीडी ड्राइव में प्लग किया गया है, और मशीन के साथ एक डिस्क को जला दिया है। और चल रहा है।


मुझे एक एचडीडी को अनप्लग करने की आवश्यकता थी जिसे मैं पूरी तरह से मिटा देना चाहता था। बे से डिस्क को खींचने के बाद, / dev / sdXY अभी भी दिखा। इसे गायब 1करने के लिए लेखन deleteऔर मैं डिस्क को कताई नीचे सुन सकता था। बस hdparm -Yपर्याप्त नहीं था क्योंकि /dev/प्रविष्टियाँ अभी भी मौजूद होंगी। धन्यवाद!
लेकेन्स्टाइन

16
मैं हमेशाecho 1 > /sys/block/(whatever)/device/delete आदेश जारी करने की दृढ़ता से सलाह देता हूं क्योंकि ड्राइव सिर को पार्क करेगा, डिस्क को पूरी तरह से बंद कर देगा और बस पर बिजली को निष्क्रिय कर देगा। यदि एक गैर-पार्क किया गया सिर एक कताई प्लेट को छूता है, तो ड्राइव स्थायी रूप से नष्ट हो सकती है।
ढोल

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

1
उल्लेख के लायक सिर्फ एक नोट , के echo 1 > /sys/block/(whatever)/device/deleteतहत काम नहीं करेगा sudo, "अनुमति से इनकार" त्रुटि फेंक दी जाएगी। आपको एक वास्तविक रूट बनना होगा, इसलिए suइसके बजाय सादे पुराने का उपयोग करें।
ट्रांसलूसेंटक्लाउड

11
@TranslucentCloud आप इसे sudo teeमूल के रूप में एक पुनर्निर्देशन का अनुकरण करने के लिए पाइप कर सकते हैं :echo 1 | sudo tee /sys/block/(whatever)/device/delete
Oli

5

वे दो खंड अलग-अलग चीजों के लिए हैं।

पहला अनप्लगिंग के लिए है । दूसरा प्लगिंग के लिए है

अनप्लगिंग के लिए, ओएस अनमाउंट ऑपरेशन के दौरान डेटा को सिंक करेगा। इस प्रकार, यदि डिस्क अनमाउंट है (वास्तव में आपको पूर्ण हार्डवेयर समर्थन है) तो आप डिस्क को बंद कर सकते हैं फिर डेटा हानि या भ्रष्टाचार के जोखिम के बिना इसे अनप्लग कर सकते हैं।

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

और मुझे यह कहकर धोखा दिया कि मैंने केवल USB ड्राइव के साथ इस तरह का काम किया है।


आपके उत्तर के लिए धन्यवाद, लेकिन मैं अभी भी आश्वस्त नहीं हूं कि सही कार्रवाई क्या होगी। SSDs में "Unsafe Shutdown Count" SMART फ़ील्ड है, बस इसे अनप्लग करने के बिना कुछ भी मेरे लिए सुरक्षित नहीं है।
लेकेनस्टीन

3
अगर यह मदद करता है, तो मैं अपनी नौकरी के हिस्से के रूप में नियमित रूप से हॉट-प्लग और हॉट-अनप्लग एसएटीए हार्ड ड्राइव करता हूं, यह सुनिश्चित करने से अधिक नहीं है कि यह पहले अनमाउंट है, और मैं कभी भी समस्या में नहीं चला। यह महत्वपूर्ण है, इसलिए इसे सुसमाचार के रूप में न लें, लेकिन यह कम से कम कुछ सबूत है कि यह सुरक्षित होने की संभावना है। किसी भी मामले में, मैं इसे एक कर्नेल बग मानूंगा यदि ओएस यह सुनिश्चित नहीं करता है कि डेटा पूरी तरह से एक अनमाउंट ऑपरेशन के अंत में लिखा गया है, खासकर एक हॉटप्लग दुनिया में।
जेंडर

1
@Lekensteyn, इस hdparm -Yबात का ध्यान रखेगा। यह मूल रूप से वह प्रणाली है जो हर बार जब आप निलंबित या बंद करते हैं।
Psusi

5

किस बारे में eject /dev/sdX? मेरे सेटअप पर, यह ड्राइव को umounts, syncs और शक्तियां कमांड करता है।


4
मैंने eSATA से जुड़ी एक डिस्क के साथ यह कोशिश की, लेकिन कमांड "हॉटप्लेगेबल नहीं" या कुछ और के साथ विफल रही।
लेकेनस्टेयिन

1
Afikik प्लग करने योग्य डिस्क को प्लग करता है और डिवाइस को नहीं। यह निर्भर करता है कि ब्लॉक डिवाइस ड्राइवर टूल ioctl()द्वारा उपयोग किए जाने वाले ऑपरेशन का समर्थन ejectकरता है। एसाटा हार्ड डिस्क ड्राइव इसका समर्थन नहीं करते हैं, लेकिन ऑप्टिकल डिवाइस, फ्लॉपी और शायद फ्लैश ड्राइव, हां।
user259412

2

मेरे पास स्क्रिप्ट की एक जोड़ी है जो वाइज़र्ड के जवाब पर बनती है । पहला, scsi-dropएक डिस्क को सुरक्षित रूप से अलग करना है:

#!/bin/sh

if test -h "$1"
then
    disk=$(chase "$1")
else
    disk="$1"
fi

if test -b "$disk"
then
    echo 1 >/sys/block/$(basename "$disk")/device/delete
else
    echo "$0: not a block device: $1" >&2
    exit 1
fi

इसका मुख्य लाभ यह है कि आप इसे एक सिमलिंक पास कर सकते हैं, जैसे कि इसमें पाया गया है /dev/disk/by-id/और यह वास्तविक डिवाइस को हल करेगा। इसे chaseस्थापित करने की आवश्यकता है; आप उसी परिणाम का उपयोग करने में सक्षम हो सकते हैं readlink -e

scsi-rescanएक नई डिवाइस को हॉटप्लग करने के बाद दूसरी स्क्रिप्ट का उपयोग किया जाता है:

#!/bin/bash

exec tee /sys/class/scsi_host/host*/scan <<<'- - -' >/dev/null

यह सभी एडेप्टर उपकरणों के लिए फिर से स्कैन करता है। यह एकमात्र तरीका था जिसे मैं पढ़ने की नई क्षमता और विभाजन तालिका प्राप्त करने में कामयाब रहा।


0

दरअसल, SATA ड्राइव स्वचालित रूप से सिर खो देता है जब बिजली खो जाती है। ड्राइव करते हुए खींचना, जबकि यह अभी भी घूम रहा है, मुद्दों में परिणाम नहीं होना चाहिए। हालांकि, कताई डिस्क को टक्कर लगने पर डंसने का खतरा होता है। आप इसे सुन सकते हैं जब आपके पास परतदार शक्ति या सौर flares होते हैं।

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

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