এসএসডি-তে বিটিআরএসএফের সাহায্যে ট্রিম সমর্থন যাচাই করুন


21

আমরা এসএসডি ডিস্কের একটি অ্যারেতে বিটিআরএসএফ ব্যবহার করার বিষয়টি খতিয়ে দেখছি এবং আমাকে তা যাচাই করতে বলা হয়েছে যে কোনও ফাইল মুছে ফেলার পরে বিআরটিএফস আসলে ট্রিম অপারেশন করে? এখনও অবধি আমি যাচাই করতে অক্ষম হয়েছি যে ট্রিম কমান্ডটি ডিস্কগুলিতে প্রেরণ করা হয়েছে।

আমি জানি বিটিআরএসএফ উত্পাদন উত্পাদন হিসাবে বিবেচিত হয় না, তবে আমরা রক্তপাত প্রান্ত পছন্দ করি, তাই আমি এটি পরীক্ষা করছি। সার্ভারটি উবুন্টু 11.04 সার্ভারটি 64-বিট রিলিজ (mkfs.btrfs সংস্করণ 0.19)। আমি লিনাক্স 3.0.০.০ কার্নেলটি ইনস্টল করেছি কারণ বিটিআরএসএফ চেঞ্জলগ জানিয়েছে যে উবুন্টু ১১.০৪ (২.6.৩8) দিয়ে প্রবাহিত কার্নেলটিতে বাল্ক ট্রিম পাওয়া যায় না।

এখানে আমার পরীক্ষার পদ্ধতিটি ( বিটিআরএফএসের সাথে কাজ করার পরিবর্তনের সাথে প্রথমে http://andyduffell.com/techblog/?p=852 থেকে গৃহীত হয়েছে ):

  • শুরুর আগে ডিস্কগুলিকে ম্যানুয়ালি ট্রিম করুন: for i in {0..10} ; do let A="$i * 65536" ; hdparm --trim-sector-ranges $A:65535 --please-destroy-my-drive /dev/sda ; done
  • ড্রাইভটি ট্রিম ছিল তা যাচাই করুন: ./sectors.pl |grep + | tee sectors-$(date +%s)
  • ড্রাইভ পার্টিশন: fdisk /dev/sda
  • ফাইল সিস্টেম তৈরি করুন: mkfs.btrfs /dev/sda1
  • মাউন্ট করুন: sudo mount -t btrfs -o ssd /dev/sda1 /mnt
  • একটি ফাইল তৈরি করুন: dd if=/dev/urandom of=/mnt/testfile bs=1k count=50000 oflag=direct
  • ফাইলটি ডিস্কে রয়েছে তা যাচাই করুন: ./sectors.pl | tee sectors-$(date +%s)
  • পরীক্ষার ফাইলটি মুছুন: rm /mnt/testfile
  • দেখুন পরীক্ষা ফাইলটি ডিস্ক থেকে ট্রিম হয়: ./sectors.pl | tee sectors-$(date +%s)
  • ট্রিম ব্লকগুলি যাচাই করুন: diffদুটি সাম্প্রতিকতম sectors-*ফাইল

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

আমি -o ssd,discardবিকল্পগুলি দিয়ে মাউন্ট করার চেষ্টা করেছি , তবে এটি মোটেই সহায়তা করবে বলে মনে হয় না।

পার্টিশন যা উপর থেকে তৈরি হয়েছিল fdisk(আমি পার্টিশনটি ছোট রাখি যাতে যাচাইকরণ আরও দ্রুত যেতে পারে):

root@ubuntu:~# fdisk -l -u /dev/sda

Disk /dev/sda: 512.1 GB, 512110190592 bytes
255 heads, 63 sectors/track, 62260 cylinders, total 1000215216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6bb7542b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63      546209      273073+  83  Linux

আমার sectors.plস্ক্রিপ্ট (আমি জানি এটি অদক্ষ, তবে এটি কাজটি সম্পন্ন করে):

#!/usr/bin/perl -w

use strict;

my $device = '/dev/sda';
my $start = 0;
my $limit = 655360;

foreach ($start..$limit) {
    printf "\n%6d ", $_ if !($_ % 50);
    my @sector = `/sbin/hdparm --read-sector $_ $device`;
    my $status = '.';
    foreach my $line (@sector) {
            chomp $line;
            next if $line eq '';
            next if $line =~ /$device/;
            next if $line =~ /^reading sector/;
            if ($line !~ /0000 0000 0000 0000 0000 0000 0000 0000/) {
                    $status = '+';
            }
    }
    print $status;
}
print "\n";

আমার পরীক্ষার পদ্ধতিটি কি ত্রুটিযুক্ত? আমি কি এখানে কিছু মিস করছি?

সাহায্যের জন্য ধন্যবাদ.


1
আমি সম্পূর্ণরূপে রক্তপাত প্রবাহের জিনিসগুলি পরীক্ষার পক্ষে সমর্থন করি, তবে ঠিক এখনই আপনি জানেন, বিটিআরএফএসের কাছে এমন একটি fsck নেই যা আসলে আপনি জানেন, জিনিসগুলি ঠিক করে দিয়েছেন: btrfs.wiki.kernel.org/index.php/Main_Page - সুতরাং শুধু এটি জন্য নজর রাখুন।
ম্যাট সিমনস

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

1
সম্ভবত কিছু পরিবর্তন করবে না, তবে আপনি syncফাইলটি আরএমএম করার পরে চালানোর চেষ্টা করতে পারেন ।
zebeiah49

আমি বলতে চাই যে আমি syncফাইলটি সরানোর পরে একটি চালনার চেষ্টা করেছি এবং ফলাফল এখনও একই ছিল। আমি দ্বিগুণ পরীক্ষা করে দেখব যদিও উইকএন্ড শেষ হওয়ার পরে আমি অফিসে ফিরে আসছি।
শেন মায়ার্স

যদি আপনার রক্তপাত প্রান্তটি আপত্তি না করে, আপনি zfsonlinux.org বিবেচনা করেছেন ? নেটিভ (যেমন কার্নেলের মধ্যে, ফিউজ নয়) লিনাক্সের জন্য জেডএফএস। তারা একটি অফিসিয়াল "রিলিজ" এর কাছাকাছি, এবং আরসি রয়েছে (উবুন্টুর জন্য পিপিএ সহ - ডেবিয়ানের জন্য পুনর্নির্মাণের পক্ষে যথেষ্ট সহজ)
কেস

উত্তর:


4

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

এই পরীক্ষার জন্য ব্যবহৃত হার্ডওয়্যার:

  • গুরুতর এম 4 এসএসডি 512 জিবি GB
  • এইচপি DL160se জি 6
  • LSI LSISAS9200-8e এইচবিএ
  • জেনেরিক এসএএস ঘের
  • ডেল এক্সপিএস এম 1210 ল্যাপটপ

সার্ভারে বিটিআরএফএস যাচাই করার জন্য অনেক ব্যর্থ চেষ্টার পরে, আমি পুরানো ল্যাপটপ ব্যবহার করে এই একই পরীক্ষার চেষ্টা করার সিদ্ধান্ত নিয়েছি (RAID কার্ড স্তরটি সরান)। এই পরীক্ষার প্রাথমিক প্রচেষ্টা ল্যাপটপে এক্সট 4 এবং বিটিআরএসএফ উভয়ই ব্যর্থ হয়েছে (ডেটা ট্রিম নয়)

তারপরে আমি এসএসডি ড্রাইভ ফার্মওয়্যারটি 10,0001 সংস্করণ (বাক্সের বাইরে প্রেরণ করা) থেকে সংস্করণ 10,0009 এ আপগ্রেড করেছি Ext পরীক্ষাগুলি এক্সট 4 এবং বিটিআরএফএস দিয়ে পুনরাবৃত্তি হয়েছিল এবং দুটি ফাইল সিস্টেমই সাফল্যের সাথে ডাটা ট্রিম করেছিল।

টিআরআইএম কমান্ডটি চালানোর সময় হয়েছে তা নিশ্চিত করতে, আমি rm /mnt/testfile && sync && sleep 120বৈধতা দেওয়ার আগে একটি কাজ করেছি।

আপনি যদি এই একই পরীক্ষার চেষ্টা করছেন তবে একটি বিষয় লক্ষণীয়: এসএসডিগুলিতে চালিত ব্লকগুলি মুছে ফেলা হয়েছে (ক্রুশিয়াল এম 4 মুছা ব্লকের আকার আমি জানি না)। ফাইল সিস্টেম যখন ড্রাইভে ট্রিম কমান্ড প্রেরণ করে, ড্রাইভটি কেবল একটি সম্পূর্ণ ব্লক মুছে ফেলবে; যদি TRIM কমান্ডটি কোনও ব্লকের অংশের জন্য নির্দিষ্ট করা থাকে, তবে মুছা ব্লকের মধ্যে থাকা অবশিষ্ট বৈধ ডেটার কারণে সেই ব্লকটি TRIM'd করা হবে না।

সুতরাং আমি যা বলছি তা প্রদর্শনের জন্য ( sectors.plউপরের স্ক্রিপ্টটির আউটপুট )। এটি এসএসডি পরীক্ষার ফাইলের সাথে। পিরিয়ডগুলি এমন খাত যা কেবল জিরো ধারণ করে। ফলগুলির এক বা একাধিক অ-শূন্য বাইট থাকে।

ড্রাইভে পরীক্ষা ফাইল:

24600 .......................................+++++++++++
24650 ++++++++++++++++++++++++++++++++++++++++++++++++++
24700 ++++++++++++++++++++++++++++++++++++++++++++++++++
    -- cut --
34750 ++++++++++++++++++++++++++++++++++++++++++++++++++
34800 ++++++++++++++++++++++++++++++++++++++++++++++++++
34850 +++++++++++++++++++++++++++++.....................

ড্রাইভ থেকে পরীক্ষার ফাইল মোছা হয়েছে (এর পরে sync && sleep 120):

24600 .......................................+..........
24650 ..................................................
24700 ..................................................
    -- cut --
34750 ..................................................
34800 ..................................................
34850 ......................+++++++.....................

এটি প্রদর্শিত হয় যে ফাইলটির প্রথম এবং শেষ সেক্টরগুলি ফাইলের বাকী অংশ থেকে আলাদা মুছে ফেলার মধ্যে রয়েছে। অতএব কিছু সেক্টর অপরিবর্তিত ছিল।

একটি গ্রহণযোগ্য রূপটি এই ফর্মটি: কিছু এক্সট 4 ট্রিম পরীক্ষার নির্দেশাবলী ব্যবহারকারীকে কেবল যাচাই করতে বলে যে ফাইলটি থেকে প্রথম সেক্টরটি ট্রিম ছিল। সত্যিই ট্রিম সফল হয়েছিল কিনা তা পরীক্ষা করার জন্য পরীক্ষককে টেস্ট ফাইলের একটি বৃহত অংশ দেখতে হবে।

এখনই কীভাবে ম্যানুয়ালি জারি করা টিআরআইএম কমান্ডগুলি এসআইডিকে র‌্যাড কার্ডের মাধ্যমে প্রেরণ করা হয়েছে তবে স্বয়ংক্রিয় ট্রিম কমান্ডগুলি না করার জন্য ...


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

4

আমি যা পড়েছি তার ভিত্তিতে, আপনার পদ্ধতিতে কোনও ত্রুটি থাকতে পারে।

আপনি ধরে নিচ্ছেন যে টিআরআইএম আপনার এসএসডি এর ফলে মুছে ফেলা ব্লকগুলি শূন্য করবে। তবে এটি প্রায়শই হয় না।

এসএসডি যদি টিআরআইএম প্রয়োগ করে তবে তা বাতিল হওয়া ব্লকগুলিকে শূন্য করে। ডিভাইসটি কমপক্ষে_তারা_দাতা রিপোর্ট করার জন্য কমপক্ষে যথেষ্ট জানেন কিনা তা আপনি পরীক্ষা করতে পারেন:

বিড়াল / সিএস / ব্লক / এসডিএ / সারি / বাতিল_আরোজ_ডেটা

এছাড়াও, এসএসডি শূন্য করলেও, বাতিল হওয়া শেষ হওয়ার পরে - এসএসডি আসলে ব্লকগুলিকে শূন্য করতে কিছুটা সময় নিতে পারে (এটি কিছু কম মানের এসএসডিগুলির ক্ষেত্রে সত্য)।

http://www.redhat.com/archives/linux-lvm/2011-April/msg00048.html

বিটিডাব্লু আমি ট্রিমকে যাচাই করার জন্য একটি নির্ভরযোগ্য উপায় খুঁজছিলাম এবং এখনও এটি খুঁজে পাইনি। আমি যদি কোন উপায় খুঁজে পায় তা জানতে চাই love


3

এখানে 10.10 এবং EXT4 এর জন্য পদ্ধতি পরীক্ষা করা হচ্ছে। সম্ভবত এটি সাহায্য করবে।

/ubuntu/18903/how-to-enable-trim

ওহ এবং আমার মনে হয় আপনার fstab মাউন্টে ফেলে দেওয়া প্যারামিটারটি দরকার। নিশ্চিত নয় যে এসএসডি পরমের প্রয়োজন হয় কারণ আমি মনে করি এটি এসএসডিকে স্বয়ংক্রিয়ভাবে সনাক্ত করা উচিত।


2
আমি এক্সট 4 এসএসডি যাচাইকরণের নির্দেশাবলী অনুসরণ করার চেষ্টা করেছি, তবে বিটিআরএফএস অন্যান্য ফাইল সিস্টেমের তুলনায় কীভাবে কাজ করে তার পার্থক্যের কারণে তারা কাজ করে না। কাজেই আমি কাজ নিয়ে এসেছি। আমি ssdমাউন্ট অপশনটি ব্যবহার করে তা নিশ্চিত করেছিলাম যে বিটিআরএফএস তার এসএসডি-নির্দিষ্ট কোডটি ব্যবহার করতে জানত যদিও এটি স্বয়ংক্রিয়ভাবে সনাক্ত করা উচিত। আমিও চেষ্টা করেছি discard(উপরে উল্লিখিত হিসাবে) এবং এটি কোনও উপকারে আসেনি।
শেন মায়ার্স

আচ্ছা ভালো. শটটি মূল্যবান :)
ডেভ ভেফার

1

বিটিআরএফ-এর জন্য আপনার discardট্রিম সমর্থন সক্ষম করার জন্য বিকল্পের প্রয়োজন ।

ক্রিয়ামূলক TRIM জন্য একটি খুব সহজ কিন্তু কাজ পরীক্ষা এখানে: http://techgage.com/article/enabling_and_testing_ssd_trim_support_under_linux/2


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

hdparm --fibmapএফএস অজিনোস্টিক। প্রদত্ত এলবিএ ঠিকানার ব্লকটি হয় শূন্য, বা না, এটি এক্সএনএন, বিটিআরএফ, এক্সএফএস, জেফএস ... ssdবিকল্পটি ছাঁটাইয়ের জন্য অপ্রাসঙ্গিক , উদাহরণস্বরূপ বিটিআরএফএস মেলিং তালিকায় এই আলোচনাটি দেখুন: বিটিআরএফএস মেইল-আর্কাইভ লিনাক্স-বিটিআরএফএস @ vger.kernel.org / msg10932.html
পাউয়ে ব্রোডাকি

আমি ব্যবহার করার চেষ্টা করেছি hdparm --fibmapকিন্তু এটি বিটিআরএসএফ-এ কাজ করে না। আপনি যদি wiper.sh README (hdparm পাশাপাশি বিতরণ করা) দেখুন তবে তারা স্পষ্টতই বলে যে "বিআইটিএফএস ফাইল সিস্টেমে ব্যবহৃত হলে" FIEMAP / FIBMAP ioctl () কলগুলি সম্পূর্ণ অনিরাপদ। " এইচডিপিআরএম আউট, যা খুব খারাপ কারণ এটি পরীক্ষাকে অনেক সহজ করে তোলে। আমি জানতাম না যেssd বিকল্পটির কার্যকারিতা সম্পর্কে ডকস খুব পরিষ্কার নয় বলে বিকল্পটির ট্রিমের সাথে কোনও সম্পর্ক নেই।
শেন মায়ার্স

Ioctls সম্পর্কে অতিরিক্ত তথ্যের জন্য আপনাকে ধন্যবাদ, আমি এটি জানি না। আমি মনে করি অতিরিক্ত তথ্য জিজ্ঞাসা করার সেরা জায়গাটি বিটিআরএফএস মেলিং তালিকা হতে পারে। আপনি সেখান থেকে প্রথম হাতের তথ্য পাবেন।
পাউয়ে ব্রোডাকি

1

কিছু ভাবার বিষয় (আপনার "আমি কি কিছু মিস করছি?" প্রশ্নের উত্তর দেওয়ার জন্য):

  • / দেব / এসডিএ ঠিক কী? একক এসএসডি? বা এসএসডিগুলির একটি (হার্ডওয়্যার?) রেড অ্যারে?

  • যদি পরে থাকে তবে কোন ধরণের RAID কন্ট্রোলার?

  • এবং আপনার অভিযান নিয়ন্ত্রক কি ট্রিমকে সমর্থন করে?

এবং পরিশেষে,

  • আপনার পরীক্ষার পদ্ধতিটি যদি আপনি বিটিআরএফএস ব্যতীত অন্য কোনও কিছু দিয়ে / ডিভ / এসডিএ ফর্ম্যাট করে তবে আপনি প্রত্যাশিত ফলাফলগুলি দিয়ে থাকেন?

1

কার্যত সমস্ত এসএডিডি এসএটিএ ইন্টারফেস সহ কিছু প্রকারের লগ স্ট্রাকচার ফাইল সিস্টেম চালায় যা আপনার কাছ থেকে সম্পূর্ণ লুকানো থাকে। সাটা 'ট্রিম' কমান্ডটি ডিভাইসটিকে জানায় যে ব্লকটি আর ব্যবহারযোগ্য নয় এবং অন্তর্নিহিত লগ স্ট্রাকচার ফাইল সিস্টেম এটি ফ্ল্যাশ করতে পারে / যদি / সংশ্লিষ্ট মুছা ব্লক (যা যথেষ্ট বড় হতে পারে) / কেবল / ট্রিমযুক্ত চিহ্নিত ব্লক ধারণ করে।

আমি এখানে স্ট্যান্ডার্ড ডকসটি পড়ি নি: http://t13.org/ trim , তবে আমি নিশ্চিত নই যে এখানে কোনও মানক স্তরের গ্যারান্টি আছে কিনা তা আপনি নিশ্চিত করতে পারবেন কিনা একটি ট্রিম কমান্ডের ফলাফল দেখুন। যদি আপনি কিছু পরিবর্তন দেখতে পান, যেমন মুছা ব্লকের শুরুতে প্রথম কয়েক বাইট শূন্যের বাইরে এসেছিল, তবে আমি মনে করি না যে কোনও গ্যারান্টি রয়েছে এটি বিভিন্ন ডিভাইস বা সম্ভবত ফার্মওয়্যার সংস্করণে প্রযোজ্য।

আপনি যদি বিমূর্তিটি বাস্তবায়িত হতে পারে সে সম্পর্কে চিন্তাভাবনা করেন, কেবল পঠন / লেখার ব্লককে ট্রিম কমান্ডের ফলাফল সম্পূর্ণ অদৃশ্য করে তোলা সম্ভব হবে। একই সাথে মুছে ফেলা কোন ব্লক একই মুছে ফেলা হয়েছে তা বলা মুশকিল হতে পারে, কারণ কেবল ফ্ল্যাশ অনুবাদ স্তরটিই এটি জানতে পারে এবং সেগুলি যৌক্তিকভাবে পুনরায় সাজিয়েছে।

এসএসডি ফ্ল্যাশ অনুবাদ স্তর সম্পর্কিত মেটাডেটা আনার জন্য সম্ভবত কোনও সটা কমান্ড (OEM কমান্ড সম্ভবত?) রয়েছে?

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