आपका तर्क गलत नहीं है। लेकिन यह केवल तभी मान्य है जब कुछ शर्तें पूरी हों।
TRIM आदेश , के रूप में विनिर्दिष्ट एटीए आदेश सेट , या क्षेत्रों इसके खिलाफ जारी किया जाता है शून्य नहीं हो सकता है।
वास्तव में, कौन-सा डेटा पर मानक केंद्रित के बाद TRIM जारी किया गया है लौटे हो गया है 1 :
निम्न व्यवहार इस मानक द्वारा निर्दिष्ट किए जाते हैं कि उपकरण ट्रिम होते हैं (देखें 7.5.3.3):
क) गैर-नियतात्मक - एक छंटनी क्षेत्र से पढ़ने के जवाब में डेटा प्रत्येक पढ़ने के लिए बदल सकता है जब तक कि मेजबान द्वारा लिखित क्षेत्र नहीं लिखा जाता है;
बी) ट्रिम (डीआरएटी) के बाद नियतात्मक पढ़ें - छंटनी वाले क्षेत्र के एक पढ़ने के जवाब में लौटाया गया डेटा नहीं बदलता है, लेकिन पहले से लौटाए गए डेटा से अलग हो सकता है; और
ग) ट्रिम (RZAT) के बाद जीरो पढ़ें - छंटनी किए गए क्षेत्र के एक पढ़ने के जवाब में लौटा डेटा शून्य है।
[...] दोनों डीआरएटी और गैर-नियतात्मक भंडारण उपकरणों के लिए, डेटा एक एलबीए को पढ़ी गई कमांड के जवाब में लौटा है जिसे सफलतापूर्वक ट्रिम किया गया है:
क) निर्दिष्ट एलबीए के लिए पहले लौटा डेटा हो सकता है;
बी) भंडारण उपकरण द्वारा उत्पन्न एक पैटर्न हो सकता है; और
सी) पहले से मेजबान द्वारा एक अलग एलबीए को लिखे गए डेटा नहीं है।
इस प्रकार, आपके डिवाइस के बाद जो वापसी fstrimकरता है वह उन सुविधाओं पर निर्भर करता है जो इसे लागू करता है। जब तक यह RZAT का समर्थन नहीं करता है, एक छंटनी डिवाइस से पढ़ा जाने वाला डेटा केवल शून्य नहीं होगा, यह धारणा।
आप इसके hdparmलिए जाँच कर सकते हैं :
sudo hdparm -I /dev/sdX | grep -i trim
मैंने दो एसएसडी का उपयोग करके कुछ परीक्षण किए, sdaऔर sdb। एक ही निर्माता, विभिन्न मॉडल, अलग एटीए अनुरूपता के साथ:
$ sudo hdparm -i /dev/sdb
...
Drive conforms to: Unspecified: ATA/ATAPI-3,4,5,6,7
...
$ sudo hdparm -i /dev/sda
...
Drive conforms to: unknown: ATA/ATAPI-2,3,4,5,6,7
...
दो SSD को TRIM के लिए अलग समर्थन प्राप्त है:
$ sudo hdparm -I /dev/sda | grep -i trim
* Data Set Management TRIM supported (limit 1 block)
$ sudo hdparm -I /dev/sdb | grep -i trim
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM
मैं यह पुष्टि कर सकता हूं कि जारी करने के बाद fstrim, "TRIM के बाद निर्धारक पढ़ा हुआ शून्य" (RZAT) का समर्थन करने वाला ड्राइव वास्तव में संबंधित विभाजन को लगभग पूरी तरह से शून्य कर चुका है। इसके विपरीत, दूसरी ड्राइव शून्य (या अन्यथा कुछ अत्यधिक संकुचित पैटर्न के साथ प्रतिस्थापित) लगता है कि मुक्त स्थान का केवल एक मामूली हिस्सा है।
1 ऑनलाइन स्रोत: INCITS 529: सूचना प्रौद्योगिकी - ATA / ATAPI कमांड सेट - 4 (ACS-4)
परीक्षण पर ध्यान दें:
जैसा कि टिप्पणियों में फ्रॉस्ट्सचुट्ज़ द्वारा बताया गया है , एक पढ़ने के बाद fstrimऑपरेटिंग सिस्टम कैश से डेटा वापस आ सकता है, और छंटनी की गई डिवाइस से नहीं। मिसाल के तौर पर, इस तबाही में क्या हुआ ।
(मैं TRIM परीक्षण के लिए एक वैकल्पिक विधि के लिए इसी प्रश्न का उत्तर भी दूंगा )।
fstrimबाद में पढ़ने के बीच आपको कैश गिराने की आवश्यकता हो सकती है, जैसे:
echo 3 | sudo tee /proc/sys/vm/drop_caches
आपके द्वारा चलाए जा रहे विभाजन के आकार के आधार पर, कैश को न गिराना आपके परीक्षणों के विफल होने के लिए पर्याप्त हो सकता है।
अपने सेटअप पर ध्यान दें:
discardमाउंट विकल्प निरंतर TRIM, यानी किसी भी समय फ़ाइलें नष्ट हो जाती हैं सक्षम बनाता है। इसकी आवश्यकता नहीं है fstrim। वास्तव में, ऑन-डिमांड टीआरआईएम और निरंतर टीआरआईएम टीआरआईएम संचालन के लिए दो अलग-अलग तरीके हैं। अधिक जानकारी के लिए मैं आर्क लिनक्स विकी पर सॉलिड स्टेट ड्राइव की ओर इशारा करता हूं , जिसमें इस मामले की विस्तृत कवरेज है।
dmsetup table | grep allow_discards