SSD खाली करने का अनुशंसित तरीका क्या है?


53

मैंने अभी अपना नया एसएसडी प्राप्त किया है क्योंकि पुराने की मृत्यु हो गई है। यह इंटेल 320 SSD TRIM को सपोर्ट करता है। परीक्षण के प्रयोजनों के लिए, मेरे डीलर ने इस पर विंडोज रखा, लेकिन मैं इससे छुटकारा चाहता हूं और कुबंटु को इस पर स्थापित करना चाहता हूं।

इसके लिए "सिक्योर वाइप" होना जरूरी नहीं है, मुझे सबसे स्वस्थ तरीके से डिस्क को खाली करने की आवश्यकता है। मेरा मानना ​​है कि dd if=/dev/zero of=/dev/sdaबस जीरो से ब्लॉक भरता है और इस तरह एक और लिख लेता है (अगर मैं गलत हूं तो मुझे सही करो)।

मैंने उत्तर देखा है कि TRIM को कैसे सक्षम किया जाए , लेकिन ऐसा लगता है कि यह खाली ब्लॉकों को साफ़ करने के लिए अनुकूल है, न कि डिस्क को पोंछने के लिए।

hdparmऐसा करने के लिए कार्यक्रम लगता है, लेकिन मुझे यकीन नहीं है कि यह डिस्क को साफ करता है या खाली ब्लॉकों को साफ करता है। इसके मैनुअल पेज से:

  --trim-sector-ranges
          For  Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO NOT
          USE THIS OPTION!!  Tells the drive firmware to discard  unneeded
          data  sectors,  destroying  any  data that may have been present
          within them.  This makes those sectors available  for  immediate
          use  by  the firmware's garbage collection mechanism, to improve
          scheduling for wear-leveling of the flash  media.   This  option
          expects  one  or  more  sector range pairs immediately after the
          option: an LBA starting address, a colon, and  a  sector  count,
          with no intervening spaces.  EXCEPTIONALLY DANGEROUS. DO NOT USE
          THIS OPTION!!
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

टीआरआईएम का उपयोग करके मैं सभी ब्लॉकों को कैसे खाली कर सकता हूं?


अच्छा सवाल, शायद यह NTFS फाइलसिस्टम को हटाने के लिए पर्याप्त है?
htorque

1
इसलिए यह सिर्फ एक टिप्पणी है। ;) हालांकि, आप पहले उस विभाजन पर कुछ क्षेत्रों की जांच कर सकते हैं sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, फिर हाल ही में Gparted संस्करण का उपयोग करके NTFS विभाजन को हटा सकते हैं और उसी कमांड के साथ फिर से जांच कर सकते हैं - यदि डेटा मिटाया गया है, तो आप सिर्फ शून्य देखेंगे।
htorque

1
@htorque: मैंने अभी इसका परीक्षण किया है, लेकिन यह काम नहीं कर रहा है, मैंने इसका उपयोग किया है hexdump -C /sda1और hexdump -C /sda1शुरुआती ब्लॉक का निर्धारण किया है। हालांकि अच्छा विचार है।
लेकेनस्टाइन

1
@ Lekensteyn - मेरा मतलब था कि यह गाल में थोड़ी सी जीभ थी और नीचे आपके लिए एक उचित जवाब दिया। जेफ के लेख के प्रदर्शन पर भी थोड़ा सा असर है, यही कारण है कि वह असफलता दर के बावजूद उनका उपयोग करता है :-)
रोरी अलसोप

3
मुझे अभी भी यह नहीं दिखाई देता है कि आपको इसे मिटाने की आवश्यकता क्यों है ... आप एक्सटे 4 या जो भी हो, उसके साथ सुधार क्यों नहीं कर सकते?
नाथन उस्मान

जवाबों:


52

एटीए सुरक्षित मिटाएँ

आपको ड्राइव के सुरक्षा मिटा सुविधा का उपयोग करना चाहिए ।

  1. सुनिश्चित करें कि ड्राइव सुरक्षा जमी नहीं है । यदि ऐसा है, तो यह कंप्यूटर को निलंबित करने और फिर से शुरू करने में मदद कर सकता है।

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    

    (फ़िल्टर्ड) कमांड आउटपुट का मतलब है कि यह ड्राइव "जमी नहीं है" और आप जारी रख सकते हैं।

  2. उपयोगकर्ता पासवर्ड सेट करें (यह पासवर्ड भी साफ़ हो जाता है, सटीक विकल्प कोई फर्क नहीं पड़ता)।

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. ATA Secure Erase कमांड जारी करें

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    

ध्यान दें:

  • /dev/sdX एक ब्लॉक डिवाइस के रूप में SSD है जिसे आप मिटाना चाहते हैं।
  • Eins इस उदाहरण में चुना गया पासवर्ड है।

समस्या निवारण सहित संपूर्ण निर्देशों के लिए लिनक्स कर्नेल विकी में ATA सिक्योर इरेज़ लेख देखें ।


लिंक के लिए धन्यवाद, यह उन लोगों के लिए अच्छा है जिनके पास एक BIOS है जो इसका समर्थन करता है, लेकिन मेरा इसे समर्थन करने के लिए प्रकट नहीं होता है। (जमे हुए)
लेकेनस्टाइन

हुर्रे! लेख को फिर से पढ़ने के बाद, मैंने "मेरे सिस्टम को" स्लीप "(क्लोवो एम 865 टीयू नोटबुक) में पढ़ा है, ने भी बहुत काम किया --- और यह अन्य ड्राइव्स को" फ्रीज नहीं "करने के लिए रीसेट कर सकता है। और यह कोशिश की है क्योंकि खान मूल रूप से क्लीवो से है (लेकिन बीटीओ इसे बनाते हैं)। यह काम करता है, मैं अब "नहीं जमे हुए" देखता हूं। ... लेकिन चरण 3 "ERASE_PREPARE: खराब पता" के साथ विफल हो गया, क्योंकि मैंने कमांड को प्रस्तुत करने के बजाय समय से सूडो को बदल दिया !
लेकेनस्टाइन

1
OMG यह काम किया और केवल 19 सेकंड लिया! बहुत बहुत धन्यवाद! मेरी इच्छा है कि मैं आपको दस बार
उत्थान करूं

मैं सिर्फ यह रिपोर्ट करना चाहता था कि ऊपर दिए गए स्वीकृत उत्तर में एक टूटी हुई कड़ी है। यह कहा लिंक के बिना बहुत बेकार है, किसी को भी उस लिंक का सारांश पोस्ट करने के लिए परवाह है?
आशिमा

@ अशीमा: लिंक वर्तमान में टूट गया है क्योंकि kernel.org हैक हो गया है और इसलिए रखरखाव के लिए नीचे है। Google कैश खाली है, लेकिन इस ब्लॉग ने इसे कॉपी किया: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

उपयोग-लाइनक्स 2.23 प्रदान करता है blkdiscardजो डेटा को सुरक्षित-मिटाए बिना मिटा देता है। मैंने परीक्षण किया: SATA और mmcblk पर काम करता है, लेकिन USB पर नहीं।

के मैनुअल पृष्ठ का एक अंश blkdiscard(8):

नाम

blkdiscard - एक डिवाइस पर सेक्टरों को छोड़ दें

SYNOPSIS

blkdiscard [-o offset] [-l length] [-s] [-v] device

विवरण

blkdiscard का उपयोग डिवाइस क्षेत्रों को छोड़ने के लिए किया जाता है। यह सॉलिड-स्टेट ड्राइवर्स (SSDs) और पतले-प्रोविजन किए गए स्टोरेज के लिए उपयोगी है। फ्रॉस्टिम (8) के विपरीत इस कमांड का उपयोग सीधे ब्लॉक डिवाइस पर किया जाता है।

डिफ़ॉल्ट रूप से, blkdiscard डिवाइस पर सभी ब्लॉक को छोड़ देगा। विकल्पों को सीमा या आकार के आधार पर इस व्यवहार को संशोधित करने के लिए इस्तेमाल किया जा सकता है, जैसा कि नीचे बताया गया है।

डिवाइस तर्क ब्लॉक डिवाइस का पथनाम है।

चेतावनी: डिवाइस पर छोड़ दिए गए क्षेत्र में सभी डेटा खो जाएगा!

आदेश उबंटू 15.04 और OpenSUSE 13.1 के बाद से है (हाँ OpenSUSE के पास उबंटू से 2 साल आगे है)।


इस पुरानी पोस्ट में जानकारी जोड़ने के लिए thx और Askubuntu में आपका स्वागत है।
मोंडगंज

आर्क लिनक्स पहले से ही इस पैकेज के रूप में util-linux 2.23 25 अप्रैल 2013 को जारी किया गया
Lekensteyn

4
स्वागत के लिए धन्यवाद। आउटडेटेड पोस्ट? पुराना है, लेकिन पुराना नहीं है, जब तक यह Google खोज परिणाम के 1 पृष्ठ में पॉप अप होता है, हमेशा नए लोग यहां एक ही उत्तर की तलाश में रहते हैं। मेरे लिए यह केवल पुराना है जब बेहतर पृष्ठ इसे 1 Google परिणाम पृष्ठ से बाहर धकेल देते हैं।
टैंकमैन

3
यदि आप blkdiscardऔर hdparmकमांड के बीच के अंतर को सोच रहे हैं , तो इसका उत्तर यहां दिया गया है : "जब आप ब्लेकडिस्कार्ड का उपयोग करते हैं, तो SSD (SATA SSD मानकर) एक ATA TRIM कमांड प्राप्त करेगा, जबकि hdparm - सेक्योरिटी-इरेज़ एक ATA सुरक्षा त्रुटि जारी करेगा UNIT कमांड। फिर ड्राइव वास्तव में क्या करता है यह उस विशेष SSD के फर्मवेयर के कार्यान्वयन विवरण पर निर्भर करता है। "
लेकेनस्टाइन

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

5

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

इस तरह से आप फ़ाइल आवंटन तालिका को खोदते हैं और ओवरराइटिंग के लिए ड्राइव को प्रभावी ढंग से खाली कर दिया जाता है। आपको वास्तव में इसे खाली करने की आवश्यकता नहीं है।


2
देखें anandtech.com/show/2865/2 । ब्लॉक को हटाना उसे मिटाने और खाली के रूप में चिह्नित करने के समान नहीं है।
लेकेनस्टाइन

@Lekensteyn हटाने से ब्लॉक डिवाइस के लिए कुछ भी मतलब नहीं है। इंस्टॉलर mkfs.ext4 को कॉल करेगा और पूरे डिवाइस को त्याग देगा; यह "सुरक्षित मिटा" के रूप में सुरक्षित है, इस अर्थ में कि दोनों ही मामलों में आप एसएसडी फर्मवेयर पर भरोसा कर रहे हैं।
तोबू

1
@ टोबू राइट, कि कुछ बिंदु पर बदल गया है। mkfs.ext4(8)कहते हैं: त्यागें - mkfs समय पर ब्लॉकों को छोड़ने का प्रयास करें (ब्लॉक को शुरू में ठोस राज्य उपकरणों और विरल / पतले-प्रावधान वाले भंडारण पर उपयोगी है)। जब डिवाइस विज्ञापित करता है कि डिस्क्राइब भी डेटा को शून्य कर देता है (किसी भी बाद में पढ़ने के बाद और रिटर्न लिखने से पहले शून्य), तो सभी अभी तक-शून्य इनोड टेबल को शून्य के रूप में चिह्नित करें। यह महत्वपूर्ण रूप से फाइलसिस्टम इनिशियलाइज़ेशन को गति देता है। इसे डिफ़ॉल्ट के रूप में सेट किया गया है।
लेकेनस्टाइन सिप

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

1

यदि ड्राइव पर लिनक्स फाइलस्टेम है, तो आप उपयोग कर सकते हैं fstrimfstrimनिम्नलिखित विक्रेताओं के ड्राइव पर डिफ़ॉल्ट रूप से उबंटू हाल ही में चलता है :

    if [ -z "$NO_MODEL_CHECK" ]; then
        if ! contains "$HDPARM" "Intel" && \
           ! contains "$HDPARM" "INTEL" && \
           ! contains "$HDPARM" "Samsung" && \
           ! contains "$HDPARM" "SAMSUNG" && \
           ! contains "$HDPARM" "OCZ" && \
           ! contains "$HDPARM" "SanDisk" && \
           ! contains "$HDPARM" "Patriot"; then
            #echo "device $DEV is not a drive that is known-safe for trimming"
            continue

सप्ताह मेँ एक बार।

तो आपके प्रश्न का एक उत्तर सिस्टम को बूट करना है और एक सप्ताह इंतजार करना है!


1
fstrim का उल्लेख इस blkdiscard पोस्ट में किया गया है , आप इसे मैन्युअल रूप से भी आमंत्रित कर सकते हैं sudo fstrim /(जहाँ विकल्प /का समर्थन करने वाले फ़ाइल सिस्टम का एक माउंटपॉइंट है discard)।
लेकेन्स्टाइन

-4

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

TRIM को सक्षम करने के लिए:

gksudo gedit /etc/fstab

"Ext4 त्रुटियाँ = remount-ro 0" को "ext4 त्याग, त्रुटियों = remount-ro 0" में बदलें। (जोड़ें जोड़ें)

सहेजें और रीबूट करें, TRIM अब सक्षम होना चाहिए।

जांचें कि क्या TRIM सक्षम है:

sudo -i
dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
hdparm --fibmap tempfile

पहले start_LBA पते का उपयोग करें।

hdparm --read-sector [begin_LBA] /dev/sda

अब इसे संख्या और वर्ण वापस करना चाहिए। फ़ाइल निकालें और सिंक करें।

rm tempfile
sync

अब, निम्न कमांड फिर से चलाएँ। यदि यह शून्य शून्य TRIM सक्षम है।

hdparm --read-sector [begin_LBA] /dev/sda

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

ज़रूर, इसे कई लिखने की आवश्यकता है, लेकिन यह डिस्क को नुकसान नहीं पहुंचाता है। मैंने अब 10-11 महीने के लिए एक Corsair F120 का उपयोग किया है और इसे अक्सर शून्य से भर दिया है। (हर बेंचमार्क से पहले ऐसा करना) इसलिए, 30-35 बार के बाद भी प्रदर्शन समान है। (~ 285MB पढ़ें, 275MB / लिखना) SMART कहते हैं: डिस्क स्वस्थ है
एलेक्स

9
एलेक्स, हर एक SSD को लिखने वाला इसे थोड़ा नुकसान पहुँचाता है। हर एक मिटा ब्लॉक को लिखने से उन सभी को उपयोग में चिह्नित किया जाता है, जो ड्राइव के GC को ठीक से काम करने से रोकेगा और प्रदर्शन को नुकसान होगा। आप इसे संपूर्ण ड्राइव unTRIM के रूप में सोच सकते हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.