স্বতন্ত্রভাবে যাচাই করুন যে ট্রিম সত্যই এসএসডি-তে কাজ করে


13

আমার একটি LUKSপার্টিশন রয়েছে /dev/sda1যা আমি খুব সহজেই খুলি --allow-discards:

cryptsetup --allow-discards luksOpen /dev/sda1 root

তারপরে আমি ext4ফাইল সিস্টেমটি discardবিকল্পের সাহায্যে মাউন্ট করব :

grep /dev/mapper/root /proc/mounts
/dev/mapper/root / ext4 ro,relatime,block_validity,discard,delalloc,barrier,user_xattr,acl 0 0

আমি তখন মাউন্ট করা পার্টিশনে মুক্ত স্থান ছাঁটাই:

fstrim -v /

সহ df, আমি দেখতে পাই /80% মুক্ত স্থান আছে। এর অর্থ এই যে /dev/sda1, 80% ডিস্ক বাইনারি শূন্য হয়।

আমি যদি ছবিটি ক্লোন করে থাকি cat

cat /dev/sda1 > sda1.img

এবং চিত্রটি দিয়ে সংকুচিত করে xz, আমি ডিস্কের সমস্ত শূন্যগুলি সংকুচিত হওয়ার আশা করব। যেহেতু ডিস্কের 20% ডেটা এনক্রিপ্ট করা থাকে তাই এটিকে এলোমেলো মনে হওয়া এবং সঙ্কোচনীয় হওয়া উচিত। সুতরাং, xz- সংকুচিত চিত্রটি aprox হওয়া উচিত। কাঁচা আকারের 20%।

যাইহোক, ফলস্বরূপ xz- সংকুচিত চিত্রটি কাঁচা মূলের মতো প্রায় একই আকার।

আমার যুক্তি কি সঠিক?

আমার তত্ত্বটি অনুশীলনে অনুবাদ হয় না কেন?


2
unix.stackexchange.com/a/85880/30851 এবং এছাড়াওdmsetup table | grep allow_discards
frostschutz

উত্তর:


8

আপনার যুক্তিটি ভুল নয়। তবে এটি কেবল বৈধ যদি কিছু শর্ত সন্তুষ্ট হয়।

TRIM কমান্ড , উল্লেখিত ATA কম্যান্ড সেট , অথবা খাতে এটি বিরুদ্ধে জারি করা হয় শূন্য নাও হতে পারে হতে পারে।
আসলে, কি ডেটার উপর মান দৃষ্টি নিবদ্ধ পর TRIM জারি করা হয়েছে ফেরত পাঠানো হয়েছে 1 :

নিম্নলিখিত আচরণগুলি ডিভাইসটি ছাঁটাই করে এমন সেক্টরগুলির জন্য এই মান দ্বারা নির্দিষ্ট করা হয়েছে (দেখুন 7.5.3.3):

ক) অ-নিরস্তক - ছাঁটা খাত থেকে একটি রিডের প্রতিক্রিয়া হিসাবে ডেটা প্রতিটি পড়ার জন্য হোস্ট দ্বারা লিখিত না হওয়া পর্যন্ত পরিবর্তিত হতে পারে;
খ) ট্রিম (ডিআরএটি) এর পরে নির্ধারিত পড়ুন - ছাঁটাই করা খাত পড়ার প্রতিক্রিয়ায় ফিরিয়ে দেওয়া ডেটা পরিবর্তিত হয় না, তবে পূর্বে ফিরে আসা ডেটার চেয়ে আলাদা হতে পারে; এবং
গ) ট্রিমের পরে জিরোগুলি পড়ুন (আরজেট) - ছাঁটাইযুক্ত খাতটির একটি রিডের প্রতিক্রিয়া হিসাবে ফিরে আসা ডেটা শূন্য।

[...] ডিআরএটি এবং অ-নিরোধক স্টোরেজ ডিভাইস উভয়ের জন্যই, একটি এলবিএতে একটি রিড কমান্ডের প্রতিক্রিয়া হিসাবে ডেটা ফিরে এসেছে যা সফলভাবে ছাঁটাই হয়েছে:

ক) নির্দিষ্ট এলবিএর জন্য পূর্ববর্তী ডেটা হতে পারে;
খ) স্টোরেজ ডিভাইস দ্বারা উত্পাদিত একটি প্যাটার্ন হতে পারে; এবং
গ) হোস্ট দ্বারা কোনও আলাদা এলবিএতে পূর্বে লিখিত ডেটা নয়।

সুতরাং, পরে আপনার ডিভাইস কী ফিরিয়ে দেয় fstrimতা প্রয়োগ করে এমন বৈশিষ্ট্যগুলির উপর নির্ভর করে। এটি আরজেডএটি সমর্থন না করলে, ছাঁটাই করা ডিভাইস থেকে পড়া ডেটা কেবল জিরোই থাকবে না এমন ধারণা।

আপনি এটি 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
 ...

দুটি এসএসডি-র ট্রিমের জন্য আলাদা সমর্থন রয়েছে:

$ 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, "ট্রাইম-এর পরে ডিট্রিমেন্টিক রিড জেরো" (আরজেট) সমর্থন করে এমন ড্রাইভটি সম্ভবত সংশ্লিষ্ট পার্টিশনটি প্রায় পুরোপুরি শূন্য করেছে। বিপরীতভাবে, অন্য ড্রাইভটি শূন্য হয়েছে বলে মনে হয়েছে (বা অন্যথায় কিছুটা অত্যন্ত সংকোচযোগ্য প্যাটার্ন দ্বারা প্রতিস্থাপন করা হয়েছে) খালি জায়গাটির সামান্য অংশ।

1 অনলাইন উত্স: INCITS 529: তথ্য প্রযুক্তি - এটিএ / এটিপিআই কমান্ড সেট - 4 (এসিএস -4)


পরীক্ষার উপর নোট:

মন্তব্যগুলিতে ফ্রয়েস্টচুটজ দ্বারা চিহ্নিত হিসাবে , একটি পঠন পরে fstrimঅপারেটিং সিস্টেম ক্যাশে থেকে ডেটা ফিরে আসতে পারে, ছাঁটা ডিভাইস থেকে না। উদাহরণস্বরূপ, এই প্রশ্নে কী ঘটেছিল ।
( ট্রিম পরীক্ষার বিকল্প পদ্ধতির জন্য আমি একই প্রশ্নের এই উত্তরটির দিকেও নির্দেশ করব )।

মধ্যে fstrimএবং পরবর্তী পঠিত আপনি কি ক্যাশে, যেমন সঙ্গে ড্রপ করার প্রয়োজন হতে পারে:

echo 3 | sudo tee /proc/sys/vm/drop_caches

আপনি যে পার্টিশনটি নিয়ে খেলছেন তার উপর নির্ভর করে আপনার পরীক্ষাগুলি ব্যর্থ হওয়ার জন্য ক্যাশে না ফেলে রাখা যথেষ্ট।


আপনার সেটআপে নোট:

discardমাউন্ট বিকল্প একটানা ছাঁটা, অর্থাত যে কোনো সময় ফাইল মুছে ফেলা হয় সক্ষম করে। এটি দ্বারা প্রয়োজন হয় না fstrim। প্রকৃতপক্ষে, অন ডিমান্ড ট্রিম এবং ক্রমাগত ট্রিম টিআরএম অপারেশন পরিচালনার দুটি স্বতন্ত্র উপায়। আরও তথ্যের জন্য আমি আর্চ লিনাক্স উইকির সলিড স্টেট ড্রাইভের দিকে ইঙ্গিত করব , যার এই বিষয়ে বিস্তারিত কভারেজ রয়েছে coverage


লিনাক্স টিআরআইএম-এর পরেও তার ক্যাশে থেকে শূন্য-উপাত্ত ফিরিয়ে আনতে পারে, যদিও এসএসডি এটিকে শূন্য হিসাবে পুনরায় পড়বে। এটি আমার ইউনিক্স.স্ট্যাকেক্সেঞ্জঞ্জ.com/a/85880/30851 এর হ্যাঁ-ট্রিম-পরীক্ষায় সমস্যা ছিল তবে এটি ট্রিমের আগে এবং পরে কাঁচা তথ্য পড়ার সাথেও সম্পর্কিত হতে পারে। সুতরাং আপনি যদি প্রত্যাশার পরে শূন্য না পান তবে কেবল ক্যাশে বাদ দিন।
frostschutz

নিবন্ধন করুন আমি একরকম ধরেই ধরেছিলাম যে, যেহেতু অপি একটি "মূল" ভলিউম উল্লেখ করেছে, এটির একটি উল্লেখযোগ্য অংশের স্মৃতিতে ফিট করার জন্য এটি খুব বড় হত। তবে অবশ্যই পরীক্ষার সময় ক্যাশে আমার পথে চলেছিল - যা আমি এটিকে বাদ দেওয়া পর্যন্ত খারাপভাবে ব্যর্থ হয়েছিল। আমি আমার উত্তর আপডেট করব।
ফ্রে-সান

2

এসএসডি-তে কি বিল্ট-ইন হার্ডওয়্যার এনক্রিপশন স্তর থাকে? যদি এটির একটি থাকে, তবে কাঁচা হার্ডওয়্যার স্তরে ট্রিমড ব্লকগুলি অল-জিরো (বা সম্ভবত সমস্তগুলি) হতে পারে তবে কম্পিউটার যেহেতু এনক্রিপশন স্তরটির মাধ্যমে তাদের দেখায়, সেগুলি সমস্ত পাস করার পরে সিউডো-এলোমেলো গীব্রিশ হিসাবে উপস্থিত হবে - ডিক্রিপশন প্রক্রিয়াটির মাধ্যমে কাঁচা ব্লক তৈরি করে।

এই জাতীয় হার্ডওয়্যার এনক্রিপশন স্তরটির কিছু সুবিধা রয়েছে:

  • এটি খুব দ্রুত সুরক্ষা মুছে ফাংশনটির অনুমতি দেয়: কেবলমাত্র ড্রাইভটি হার্ডওয়্যার এনক্রিপশন স্তরটিতে ব্যবহৃত মূল কীটি ধ্বংস করে এটিকে একটি নতুন সাথে প্রতিস্থাপন করবে এবং বেশিরভাগ ব্যবহারিক উদ্দেশ্যে সমস্ত ডেটা তাত্ক্ষণিকভাবে অপরিবর্তনযোগ্য হবে।
  • যেহেতু কাঁচা হার্ডওয়্যার স্তরের সাথে সংযুক্ত সমস্ত ডেটা এনক্রিপ্ট করা হবে তাই এটি ছদ্ম-এলোমেলোভাবে দেখানোর গ্যারান্টিযুক্ত হবে এবং এটি মূলত একজাতীয় হবে। এটি গরম / ঠান্ডা দাগ এড়াতে এবং পরিধানের অনুমানকে অনেক সহজ করতে সহায়তা করতে পারে।

0

বাতিল করা জিরোর মতো নয়।

আপনি যদি ক্রিপ্টসেটআপ দিয়ে শূন্য করতে চান তবে আপনি fs সঙ্কুচিত করতে পারেন তবে ক্রিপ্ট ব্লক তার পরে অব্যবহৃত ভলিউম স্পেস ডিডি করুন।

আপনি যদি জানতে চান যে ট্রিমটি গতির পরীক্ষা করে কাজ করেছে কিনা তা ভারী ব্যবহারের পরে একটি সূচক হওয়া উচিত।

https://linux.die.net/man/8/fstrim https://en.m.wikedia.org/wiki/Trim_( কমপিউটিং)


0

df মুক্ত স্থানের প্রতিবেদন করা শূন্য স্থান বোঝায় না।

trimস্টোরেজ ডিভাইসটিকে বলুন যে ব্লকগুলি অ-ব্যবহৃত। আমি মনে করি না যে এটি তাদের শূন্য করে।

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