লিনাক্সে কীভাবে একটি সম্পূর্ণ এসএসডি পার্টিশন ট্রিম / ডিসকার্ড করবেন?


28

/dev/sda3এসএসডি ড্রাইভে আমার বিভাজনে কোনও ফাইল সিস্টেম থাকে না, তবে এতে আবর্জনা রয়েছে। পুরো পার্টিশনে আমি কীভাবে একটি ট্রিম / ডিসকার্ড অপারেশন করব?


7
আমি মনে করি যে বক্তব্যটি হ'ল তিনি কোনও ডেটা লিখতে চান না, তিনি এসএসডি চাইছেন ফ্ল্যাশ ব্লকটি মুছে ফেলতে কিন্তু খালি রেখে দিন যাতে এটি লেখার জন্য উপলভ্য হয়, এটি একটি এসএসডি ড্রাইভ সতেজকরণ হিসাবে পরিচিত।
ক্রিস থম্পসন

1
এটিএ সিকিউর ইরেজ উইকি ata.wiki.kernel.org/index.php/ATA_Secure_Erase
জো

@ জো: আপনার এটিএ সিকিউর ইরেজ লিঙ্কটি এমনকি পার্টিশনের কথা উল্লেখ করে না। আমি পুরো ড্রাইভটি মুছতে চাই না, কেবল একটি পার্টিশন। এবং আমি ঘটনাক্রমে পুরো ড্রাইভটি মুছে ফেলার ঝুঁকি নিতে চাই না।
পিটিএস

11
@ ডক: আবর্জনা তথ্য দিয়ে পার্টিশনটি পূরণ করা পিটিএসের অভিপ্রায়ের সম্পূর্ণ বিপরীত: এটি এসএসডিকে বলবে যে পার্টিশনটি পুরোপুরি ব্যবহারে পূর্ণ হয়েছে। এটি এসএসডির কর্মক্ষমতা এবং জীবনকাল হ্রাস পাবে।
কালো

উত্তর:


40

যদি আপনার ব্যবহার-লিনাক্সের সংস্করণটি যথেষ্ট পরিমাণে নতুন (সেপ্টেম্বর ২০১২) হয় তবে প্রকৃতপক্ষে একটি উদ্দেশ্য-নির্মিত সরঞ্জাম রয়েছে, blkdiscardএটি করার সর্বোত্তম উপায়:

sudo blkdiscard /dev/sda3

তবে আপনার যদি পুরানো লিনাক্স ডিস্ট্রো সংস্করণগুলির সাথে সামঞ্জস্যতা প্রয়োজন, পড়ুন ... এমন কিছু ঘটনা রয়েছে যেখানে hdparm/ wiper.shকোনও ভলিউম স্পর্শ করতে অস্বীকৃতি জানায় কারণ এটি কোনও বিভাজন নয়, সুতরাং এর বাইরে আমাদের কিছু প্রয়োজন।

আমি সর্বাধিক সমর্থিত উপায়টি হ'ল লিনাক্স সোয়াপ ভলিউমগুলি যখন সক্ষম করা হয় তখন তারা DISCARD সমর্থন করে। শেষের ওয়াইফসগুলি সেখানে রয়েছে যাতে পরে ভলিউমটি অদলবদল হিসাবে স্বীকৃত হয় না।

D=/dev/sda3 ; mkswap $D && swapon -d $D && swapoff $D && wipefs -o 0xff6 $D

এটি বেশিরভাগ ডিভাইসে ডিসকার্ড ইস্যু করে।


1
ধন্যবাদ, সম্পর্কে জানতাম না blkdiscard। বিপজ্জনক কমান্ড ... :)
frostschutz

কেন? আমি কেবল এটি ম্যানুয়ালটিতে সন্ধান করেছি:WARNING: All data in the discarded region on the device will be lost!
মিঃ ক্যালভিন

9

আমি জানি এই প্রশ্নটি বেশ পুরানো তবে ...

এটি করার সহজতম উপায় হ'ল পার্টিশনে একটি সাম্প্রতিক সংস্করণের সামান্য সংস্করণ সহ একটি এক্সট 4 ফাইল সিস্টেম তৈরি করা mkfs.ext4। এই সরঞ্জামটি প্রথম কাজটি করে পুরো পার্টিশনটি ট্রিম। এটি করা হয়ে গেলে আপনি যে ফাইলটি চান তা দিয়ে এটি তৈরি করা ডেটা ওভাররাইট করতে পারেন।

(উদাহরণস্বরূপ, আমি একটি এসডি কার্ডে একটি নতুন ভিফ্যাট পার্টিশন তৈরি করতে এটি করেছি))


বখশিষের জন্য ধন্যবাদ! এফওয়াইআই ট্রাইমিংয়ের পরে, একটি ফাঁকা ext4 ফাইল সিস্টেমের জন্য মেটাডেটা সহ কয়েকটি ব্লক লিখেছেন, সুতরাং পার্টিশনের কয়েক শতাংশ অবিচ্ছিন্ন থাকে।
pts

4
@pts আপনি জার্নালের আকার এবং ইনোডের সংখ্যা হ্রাস করে মেটাডেটার আকার হ্রাস করতে পারেন:mkfs.ext4 -J size=4 -N1 /dev/my/device
আরেহ লাইব তুরোগ

2
অ্যারিলেবট্যুরোগ ব্যবহারের -E lazy_journal_initফলে লেখার চেয়ে কিছুটা কম লেখার ফলস্বরূপ -J size=4। (কোনও শারীরিক এসএসডি এর চেয়ে স্পার ফাইল ব্যবহার করে এবং duকতটা লেখা হয়েছিল তা যাচাই করতে পরীক্ষার উপর ভিত্তি করে )
ক্যাস্পারড

@ ক্যাস্পারড আকর্ষণীয় ফলাফল সহ একটি চতুর পরীক্ষা! ধন্যবাদ।
আরেহ লাইব বৃষ

8

hdparm --trim- সেক্টর-রেঞ্জগুলি নিম্ন স্তরের, এটি সরাসরি এসএসডির সাথে কথা বলার কথা, সুতরাং ফাইল সিস্টেমের উপর কোনও নির্ভরতা নেই। উইপার.এসএস যা করে তা হ'ল এসএসডি সেক্টরে ফ্রি (ফাইল সিস্টেম) অঞ্চলগুলি ম্যাপ করার জন্য ফাইল সিস্টেম নির্দিষ্ট প্রোগ্রামগুলি ব্যবহার করে, সেগুলি ছাঁটাতে এইচডিপিআরএম ব্যবহার করে।

প্রশ্নের উত্তরে, আপনি এই বিভাজনটি ছাঁটাতে এইচডিপারম ব্যবহার করতে পারেন, তবে আপনার খুব যত্নবান হওয়া উচিত । এটি করার উপায়টি হ'ল পার্টিশন দ্বারা ব্যবহৃত সেক্টর ব্যাপ্তি অর্জন করা, তারপরে সেই সেক্টরের ব্যাপ্তিতে hdparm ব্যবহার করুন। সম্ভবত - একাধিক খাত রেঞ্জগুলি আপনাকে পাস করতে হবে, কারণ প্রতিটি স্তরের সেক্টর-সেক্টর রেঞ্জের সর্বাধিক 65535 টি সেক্টর থাকতে পারে।

fdisk -l পার্টিশনের শুরু এবং আকার বলতে পারে। Fdisk দ্বারা ব্যবহৃত ইউনিটগুলিতে মনোযোগ দিন এবং আপনার এসএসডি-র সেক্টর আকারে।

উদাহরণ (আমার এসএসডি):

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    39070079    19534016   83  Linux

এই পার্টিশনের আগে স্থানটি ফেলে দেওয়ার জন্য, আমি সেক্টর 1: থেকে শুরু করে 2047 (512 বাইট আকারের, আমার এসএসডিতে) সেক্টরগুলি ট্রিম করতে পারি hdparm --trim-sector-ranges 1:2047। আমি 0 সেক্টর থেকে শুরু করে ট্রিম করতে পারি না কারণ এটি এমবিআর (এটি জিপিটির জন্য কীভাবে যায়)।

পার্টিশনের দ্বারা ব্যবহৃত স্থানটি বাতিল করতে, আমি করব hdparm --trim-sector-ranges 2048:65535 67583:65535 133118:65535 ...। এটি স্ক্রিপ্ট করা যেতে পারে তবে আমি এখন একটি লিখতে যাচ্ছি না।

এছাড়াও কেবল নিশ্চিত করার জন্য: আমি এখানে কোনও কিছুর গ্যারান্টি দিচ্ছি না, আমার ভুল উপায়ে সেক্টর থাকতে পারে - কার্যকরভাবে - ট্রিম-সেক্টর-রেঞ্জ ব্যবহার করার আগে সবকিছুর ব্যাকআপ করুন।

দ্রষ্টব্য : যদি আপনি প্রথম পার্টিশনের আগে "ফাঁকা" স্থানটি ট্রিম করেন তবে যেমন আমি দেখিয়েছি, রিবুট করার আগে GRUB (অথবা আপনি যে কোনও বুট লোডার ব্যবহার করেন) পুনরায় ইনস্টল করতে ভুলবেন না, কারণ GRUB প্রথম পার্টিশনের আগে "অব্যবহৃত" সেক্টরে এর কিছু অংশ সংরক্ষণ করে । অন্যান্য বুটলোডারগুলি জানেন না তবে আমার ধারণা এটি কেস হতে পারে তাই যত্ন নিন।


7
wiper.shfstrimযেটি দ্বারা নিরাপদ এটি অপ্রচলিত , তবে এই নির্দিষ্ট ব্যবহারের জন্য blkdiscardউভয়কেই মারধর করে। 2013 সালে, ম্যানুয়ালি কম্পিউটিং রেঞ্জের ঝুঁকি নেওয়ার দরকার নেই।
গ্যাব্রিয়েল

6

আপনি wiper.shএইচডিপর্ম প্যাকেজ সহ অন্তর্ভুক্ত স্ক্রিপ্টটি একবার দেখতে পারেন । এটি hdparm কমান্ডটি --trim-sector-rangesএকটি পার্টিশনের সমস্ত খালি সেক্টর ট্রিম করতে ব্যবহার করে , কমপক্ষে যদি এতে একটি ext3 / 4 ফাইল সিস্টেম থাকে। এটি অপরঠিত পার্টিশনগুলির সাথে কাজ করে কিনা তা নিশ্চিত নন তবে আপনি সর্বদা এটি অস্থায়ীভাবে ext4 দিয়ে ফর্ম্যাট করতে পারেন।


এটিকে ext4 দিয়ে ফর্ম্যাট করা এবং তারপরে চালানো wiper.shext4 মেটাডেটা বাদে পার্টিশনের প্রায় সমস্ত অংশ ছাঁটাই করে। তবে আমি পুরো পার্টিশনটি ছাঁটাই করতে চাই।
পিটিএস

2
@ পিটিএস: আমি আপনাকে ওয়াইপার.এস কোডটি দেখে পরামর্শ দিচ্ছি যে এটি কীভাবে ট্রিম রেঞ্জগুলি হ্রাস করে। তারপরে আপনি পুরো পার্টিশনটি টিআরআইএম এ hdparm এ ম্যানুয়ালি ট্রিম রেঞ্জ পাঠাতে পারেন।
জাপ এল্ডারিং

4

blkdiscardকেবলমাত্র পুরো ড্রাইভে নয় পার্টিশনে কাজ করতে পারে। আমি ফেডোরা ২০-তে এটি সফলভাবে পরীক্ষা করেছি I আমি উত্সগুলি পরীক্ষা করেছিলাম blkdiscard- এটি একটি খুব সাধারণ প্রোগ্রাম যা পার্টিশন সম্পর্কে কিছুই জানে না। আমি ধরে নিলাম কার্নেলটি অনুবাদটি করে।

খুব সাবধান থাকুন, blkdiscardকোনও প্রশ্ন জিজ্ঞাসা করবেন না এবং কোনও অগ্রগতির তথ্য দেখায় না shows

যদি ব্লকডিসকার্ড উপলভ্য না থাকে তবে এই স্ক্রিপ্টটি ব্যবহার করুন এবং এর আউটপুট এইচডিপর্মে ফিড করুন। প্রথম যুক্তি হ'ল ছাঁটাই করার ক্ষেত্রগুলির সংখ্যা, দ্বিতীয়টি ছাঁটাই করার প্রথম সেক্টর।

#! /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

-1

এখানে একটি আকর্ষণীয় নিবন্ধ যা এসএসডি-র অন্তর্নির্মিত সুরক্ষিত মুছে ফেলা বৈশিষ্ট্যটি আহ্বান করতে এইচডিডিআরেজ ব্যবহার করার বিষয়ে কথা বলেছে, যা আপনার চাইলে তা পাওয়া উচিত:

http://www.windowsitpro.com/article/file-systems/q-how-can-i-reset-a-solid-state-disk-ssd-to-a-fully-erased-clean-state-


আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, তবে এটি কার্যকর হয় না, যেহেতু 1) এটি পুরো ড্রাইভটি মুছে ফেলে 2) এর জন্য মাইক্রোসফ্ট উইন্ডোজ প্রয়োজন, এবং আমি একটি লিনাক্স সমাধান খুঁজছিলাম।
পিটিএস

2
এটিও নোট করুন যে এটি মূলত একই blkdiscard --secure
ntninja
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.