/dev/sda3
SSD ड्राइव पर मेरे विभाजन में कोई फ़ाइल सिस्टम नहीं है, लेकिन इसमें कचरा है। मैं पूरे विभाजन पर एक TRIM / DISCARD ऑपरेशन कैसे करूँ?
/dev/sda3
SSD ड्राइव पर मेरे विभाजन में कोई फ़ाइल सिस्टम नहीं है, लेकिन इसमें कचरा है। मैं पूरे विभाजन पर एक TRIM / DISCARD ऑपरेशन कैसे करूँ?
जवाबों:
यदि आपके उपयोग-लिनेक्स का संस्करण पर्याप्त नया है (सितंबर 2012), तो वास्तव में एक उद्देश्य-निर्मित उपकरण है blkdiscard
, जो ऐसा करने का सबसे अच्छा तरीका है:
sudo blkdiscard /dev/sda3
लेकिन अगर आपको पुराने लिनक्स डिस्ट्रो संस्करणों के लिए संगतता की आवश्यकता है, तो पढ़ें ... ऐसे मामले हैं जहां hdparm
/ wiper.sh
एक वॉल्यूम को छूने से इनकार करते हैं क्योंकि यह विभाजन नहीं है, इसलिए हमें इससे परे कुछ चाहिए।
मेरे द्वारा पाया गया सबसे समर्थित तरीका इस तथ्य का लाभ उठाना है कि जब वे सक्षम होते हैं, तो लिनक्स स्वैप वॉल्यूम DISCARD का समर्थन करता है। अंत में wipefs है, इसलिए वॉल्यूम को बाद में स्वैप के रूप में मान्यता नहीं दी गई है।
D=/dev/sda3 ; mkswap $D && swapon -d $D && swapoff $D && wipefs -o 0xff6 $D
यह डिवाइस के अधिकांश हिस्से पर DISCARD जारी करता है।
blkdiscard
। खतरनाक कमांड ... :)
WARNING: All data in the discarded region on the device will be lost!
मुझे पता है कि यह सवाल बहुत पुराना है, लेकिन ...
ऐसा करने का सबसे सरल तरीका यह है कि विभाजन पर एक ext4 फाइलसिस्टम बनाया जाए, जिसके हालिया संस्करण के साथ विभाजन हो mkfs.ext4
। इस उपकरण की पहली बात TRIM पूरे विभाजन है। एक बार जब आप ऐसा कर लेते हैं, तो आप उस डेटा को अधिलेखित कर सकते हैं जो आपके द्वारा बनाई गई किसी भी फाइल सिस्टम के साथ है।
(मैंने उदाहरण के लिए, एसडी कार्ड पर एक नया vfat विभाजन बनाने के लिए ऐसा किया है।)
mkfs.ext4 -J size=4 -N1 /dev/my/device
-E lazy_journal_init
करने की तुलना में थोड़ा कम लिखने में परिणाम प्रतीत होता -J size=4
है। (एक भौतिक SSD के बजाय विरल फ़ाइल का उपयोग करने के प्रयोगों के आधार पर और du
यह सत्यापित करने के लिए कि कितना लिखा गया था।)
hdparm --trim- सेक्टर-रेंज निम्न स्तर है, यह सीधे SSD से बात करने वाला है, इसलिए फाइल सिस्टम पर कोई निर्भरता नहीं है। Wiper.sh क्या करता है फाइलसिस्टम विशिष्ट प्रोग्रामों का उपयोग मुक्त (फाइलसिस्टम) क्षेत्रों को (हार्डवेयर) SSD क्षेत्रों में मैप करने के लिए करते हैं, वे उन को ट्रिम करने के लिए hdparm का उपयोग करते हैं।
प्रश्न का उत्तर देते हुए, आप उस विभाजन को ट्रिम करने के लिए hdparm का उपयोग कर सकते हैं, लेकिन आपको बहुत सावधान रहना चाहिए । इसे करने का तरीका विभाजन द्वारा उपयोग की जाने वाली सेक्टर रेंज प्राप्त करना है, फिर उस सेक्टर रेंज पर HDparm का उपयोग करें। संभवतः आपको कई सेक्टर रेंज पास करने की आवश्यकता होगी, क्योंकि प्रत्येक श्रेणी के लिए -trim-सेक्टर-रेंज अधिकतम 65535 सेक्टर हो सकते हैं।
fdisk -l आपको विभाजन की शुरुआत और आकार बता सकता है। Fdisk द्वारा उपयोग की जाने वाली इकाइयों पर और अपने SSD के सेक्टर आकार पर ध्यान दें।
उदाहरण (मेरा SSD):
Device Boot Start End Blocks Id System
/dev/sdb1 2048 39070079 19534016 83 Linux
इस विभाजन से पहले की जगह को छोड़ने के लिए, मैं 2047 (512 बाइट आकार, अपने SSD पर) सेक्टर 1 से शुरू कर सकता है hdparm --trim-sector-ranges 1:2047
। मैं सेक्टर 0 से शुरू नहीं कर सकता, क्योंकि यह एमबीआर है (यह कैसे GPT के लिए जाता है)।
विभाजन द्वारा उपयोग किए जाने वाले स्थान को छोड़ने के लिए, मैं करूँगा hdparm --trim-sector-ranges 2048:65535 67583:65535 133118:65535 ...
। यह स्क्रिप्टेड हो सकता है लेकिन मैं अब एक लिखने वाला नहीं हूं।
सिर्फ यह सुनिश्चित करने के लिए: मैं यहां कुछ भी गारंटी नहीं दे रहा हूं, मेरे पास गलत तरीके से काम करने वाले सेक्टर हो सकते हैं, प्रभावी रूप से -trim- सेक्टर-रेंज का उपयोग करने से पहले सब कुछ का बैकअप लें।
नोट : यदि आप पहले विभाजन से पहले "खाली" स्थान को ट्रिम करते हैं, जैसे मैंने दिखाया, तो रिबूट करने से पहले GRUB (या जो भी बूट लोडर आप उपयोग करते हैं) को पुनर्स्थापित करना सुनिश्चित करें, क्योंकि GRUB इसका पहला भाग "अप्रयुक्त" सेक्टरों पर रखता है। । अन्य बूटलोडर्स नहीं जानते, लेकिन मुझे लगता है कि यह मामला हो सकता है, इसलिए ध्यान रखें।
wiper.sh
fstrim
जिसके द्वारा अधिक सुरक्षित है, लेकिन इस विशिष्ट उपयोग के लिए blkdiscard
दोनों की धड़कन है। 2013 में, मैन्युअल रूप से कंप्यूटिंग रेंज को जोखिम में डालने की आवश्यकता नहीं है।
आप wiper.sh
hdparm पैकेज के साथ शामिल स्क्रिप्ट पर एक नज़र डाल सकते हैं । यह --trim-sector-ranges
एक विभाजन पर सभी खाली क्षेत्रों TRIM को HDparm कमांड का उपयोग करता है , कम से कम अगर इसमें ext3 / 4 फाइल सिस्टम शामिल है। यह सुनिश्चित नहीं है कि अगर यह बिना विभाजन के काम करता है, लेकिन आप हमेशा इसे ext4 के साथ अस्थायी रूप से प्रारूपित कर सकते हैं।
wiper.sh
करना ext4 मेटाडेटा को छोड़कर लगभग सभी विभाजन को ट्रिम कर देगा। लेकिन मैं पूरा विभाजन ट्रिम करना चाहूंगा।
blkdiscard
विभाजन पर काम कर सकते हैं, न केवल पूरे ड्राइव पर। मैंने इसे फ़ेडोरा 20 पर सफलतापूर्वक परीक्षण किया। मैंने इसके स्रोतों की जाँच की blkdiscard
- यह एक बहुत ही सरल कार्यक्रम है जो विभाजन के बारे में कुछ नहीं जानता है। मुझे लगता है कि कर्नेल अनुवाद करता है।
बहुत सावधान रहें, blkdiscard
कोई प्रश्न नहीं पूछता है और कोई प्रगति जानकारी नहीं दिखाता है।
यदि ब्लेकडिस्कर्ड उपलब्ध नहीं है, तो इस स्क्रिप्ट का उपयोग करें और इसके आउटपुट को hdparm को खिलाएं। पहला तर्क ट्रिम करने के लिए सेक्टरों की संख्या है, दूसरा ट्रिम करने वाला पहला सेक्टर है।
#! /bin/sh
# List ranges for hdparm --trim-sector-ranges-stdin
: ${MAXSECT=65535}
test $# = 2 || { echo "Usage: trimlist sectors offset" >&2; exit 1; }
sectors=$1
pos=$2
while test $sectors -gt 0; do
if test $sectors -gt $MAXSECT; then
size=$MAXSECT
else
size=$sectors
fi
echo $pos:$size
sectors=$(($sectors-$size))
pos=$(($pos+$size))
done
यहां एक दिलचस्प लेख है जो SSD की अंतर्निहित सुरक्षित मिटा सुविधा को लागू करने के लिए HDDErase का उपयोग करने के बारे में बात करता है, जो आपको चाहिए जो आपको चाहिए:
blkdiscard --secure
करता है।