লিনাক্সে, আপনি কীভাবে পরীক্ষা করবেন যে কোনও ডিস্ক খণ্ডিত হয়েছে কিনা?


28

বুট করার সময়, fsck কখনও কখনও ডিস্কের জন্য খণ্ডন রিপোর্ট করে: "5.3% অ-সঙ্গত"।

আমি কীভাবে এই তথ্যটি পেতে পারি? একটি নির্দিষ্ট fsck অনুরোধ আছে?

উত্তর:


27

আপনি ext2 ext3 বা ext4 ফাইল সিস্টেমে নিরাপদে fsck.ext2 চালাতে পারেন এমনকি এটি যেমন মাউন্ট করা থাকলেও

sudo fsck.ext2 -fn /dev/sdXY

যদি ড্রাইভটি মাউন্ট করা থাকে তবে এটি অনেকগুলি ত্রুটি আউটপুট দেয় তবে -আন আর্গুমেন্ট এটিকে ড্রাইভটি স্পর্শ না করার কথা বলে।

$ sudo fsck.ext2 -fn /dev/sda1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Ubuntu_Rescue: 291595/1222992 files (0.2% non-contiguous), 1927790/4882432 blocks

ধন্যবাদ! fsck.ext2 আমার হোম পার্টিশনে বেশ কয়েকটি ত্রুটি খুঁজে পেয়েছে। এখন আমি এটি মেরামত করতে চাই। এটি প্রশ্নটি জাগায়: আমি আমার হোম পার্টিশনটি কীভাবে মেরামত করব, যা আমাকে লগইন করার জন্য মাউন্ট করে রাখা দরকার?
মাইকেল 21

3
@ মিশেল যদি আপনার ড্রাইভটি মাউন্ট করা থাকে তবে এটিতে একটি চেক চালানো সর্বদা ত্রুটির প্রতিবেদন করবে। যাইহোক, আপনি যদি পরবর্তী পুনরায় বুট করতে ফাইল সিস্টেমে চেক করতে চান তবে এটি চালিয়ে পুনরায় sudo tune2fs -C 16000 /dev/sda1বুট করুন।
রুসেন্ট88

1
fsck ডিস্ক / স্টোরেজটিতে কী আছে তা যাচাই করে তবে মাউন্ট করা থাকলে প্রক্রিয়াধীন জিনিস থাকবে (অর্ধেক লিখিত)। এজন্য আপনি ত্রুটিগুলি দেখতে পাবেন, এগুলি প্রকৃত ত্রুটি নয়, এগুলি ভ্রান্ত ত্রুটি। তাদের উপেক্ষা.
ctrl-alt-delor

8

ফাইলগুলি বরাদ্দকালে আধুনিক সিস্টেমের ফাইল সিস্টেমগুলি ভারসাম্য এবং সান্নিধ্য বিবেচনা করে। Ext3 এবং ext4 মধ্যে ব্যালেন্সিং সাধারণত জার্নাল এন্ট্রিগুলি ক্রমে প্রয়োগ করে এবং বিশেষত এক্সট 4-তে সামঞ্জস্যকর ব্লকগুলি বাড়ানোর জন্য ফাইল-সিস্টেমের পূর্ব-বরাদ্দকরণের মাধ্যমে যত্ন নেওয়া হয়। 20% এর চেয়ে কম ভগ্নাংশ স্তরের তাড়া করা আপনার সময়ের জন্য উপযুক্ত নাও হতে পারে, বিশেষত যদি আপনার সিস্টেমটি কয়েকটি ফাইল বারবার অ্যাক্সেস করে। আমি একক ডিস্ক সিস্টেমের পড়ার গতি বাড়ানোর জন্য এই কৌশলগুলি অনুসরণ করার পরামর্শ দিচ্ছি:

  • র‌্যাম বাড়ান: এটি ফাইল সিস্টেমের ক্যাশে বাড়ায়

  • ব্লকের আকার বাড়ান: 1 কে থেকে 4 কে ব্লকের আকারের দিকে এগিয়ে যাওয়ার দ্বারা আপনি আপনার ব্লকের আকারের চেয়ে কাছের বা বড় ফাইলগুলির জন্য পঠন করতে আরও ভাল পারফরম্যান্স পাবেন

  • আপনি যদি পেডেন্টিক হন, আপনি বড় ফাইল এবং ছোট ফাইলগুলি তাদের ব্লকের আকার অনুসারে পার্টিশনে ভাগ করতে পারেন, আপনি যদি কেবল ফটো, ভিডিও এবং উত্স কোডটি পৃথক ডিরেক্টরিতে সঞ্চিত করেন তবে আপনি এটি করতে চাইবেন

  • এইচডিপর্ম এবং / অথবা ল্যাপটপ-মোড ইউটিলিটি ব্যবহার করে আপনার পঠন-সামনের সেটিংটি বাড়িয়ে দিন

  • ট্যারের সাথে লিনিয়ার ফ্যাশনে আপনার ফাইল সিস্টেমটিকে ব্যাকআপ এবং পুনরুদ্ধার করুন

আপনার যদি একাধিক ডিস্ক থাকে এবং রাইড স্ট্রাইপিং এবং / অথবা এলভিএম ব্যবহার করে থাকেন তবে আপনি অন্যান্য বিষয়গুলি বিবেচনা করতে পারেন যেমন স্ট্রাইপের আকার।


4

হ্যাঁ, একটি নির্দিষ্ট fsckপ্রার্থনা রয়েছে (মূল হিসাবে, বা সুডো হিসাবে):

$ fsck /dev/sdXY

আপনার কেসের জন্য সঠিক পরামিতিগুলির সাথে এক্স এবং ওয়াই প্রতিস্থাপন করুন (যেমন /dev/sda1)।

এই একটি পার্টিশন পার্টিশন চালাবেন না! এটি আপনার ফাইল সিস্টেমকে মারাত্মকভাবে ক্ষতি করতে পারে।

লিনাক্স এবং ডিফ্র্যাগমেন্টিং সম্পর্কিত আরও কিছু তথ্যের জন্য, আমার উত্তরটি এখানে দেখুন


আপনার যদি বিশেষভাবে fsck চালানোর প্রয়োজন না হয় তবে কেবল আপনার ড্রাইভের খণ্ড পরীক্ষা করতে চান তবে নিম্নলিখিত স্ক্রিপ্টটি ( এখান থেকে নেওয়া ) কৌশলটি করা উচিত:

#!/usr/bin/perl -w

#this script search for frag on a fs
use strict;

#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;

#search fs for all file
open (FILES, '-|', "find '$ARGV[0]' -xdev -type f -print0");

$/ = "\0";

while (defined (my $file = <FILES>)) {
        open (FRAG, "-|", "filefrag", $file);
        my $res = <FRAG>;
        if ($res =~ m/.*:\s+(\d+) extents? found/) {
                my $fragment = $1;
                $fragments += $fragment;
                if ($fragment > 1) {
                        $fragfiles++;
                }
                $files++;
        } else {
                print ("$res : not understand for $file.\n");
        }
        close (FRAG);
}
close (FILES);

print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n"); 

তারপরে আপনি এটিকে প্রশ্নে থাকা ডিরেক্টরিতে (বা মাউন্ট পয়েন্ট) চালাতে পারেন:

$ frag_check.pl $HOME/
  1.32410691664555% non contiguous files, 1.05380668862427 average fragments.

এটি কেবল পার্টিশনে fsck কল করছে এবং আমরা উভয়েই জানি, এটি একটি মাউন্ট করা পার্টিশনটিকে ধ্বংস করবে। কেবল পঠনযোগ্য, আমাকে কীভাবে খণ্ডিত-আমার-ডিস্ক-উপায় বলে তা fsck ব্যবহার করার কোনও উপায় আছে?
পেলটিয়ার

আমি যতদূর জানি না, @ পেল্টিয়ার আমি ভাবছিলাম আপনি একটি নিম্ন রানলেভলে বুট করতে পারবেন, প্রাসঙ্গিক ডিস্কটি আনমাউন্ট করতে এবং fsck চালাতে পারেন। যাইহোক, গুরুতরভাবে, আপনি প্রায় অবশ্যই বেশিরভাগ লিনাক্স সিস্টেমে টুকরো টুকরোগুলি উপেক্ষা করতে পারেন।
টেরডন

@ পেলেটিয়ার, আমার আপডেট হওয়া উত্তরটি দেখুন।
টেরডন

1
হ্যাঁ, এটা ধীর। মনে হচ্ছে এটি আমার 500 গিগাবাইট / হোম / পার্টিশনে ~ 2-3 মিনিট সময় নিয়েছে। আবার আমি জোর দিয়েছি, ড্রাইভ বিভাজন আসলে আর কোনও সমস্যা নয়। বিশেষত যদি আপনি একটি EXT3-4 ফাইল সিস্টেম ব্যবহার করেন।
টেরডন

1
পুনঃটুইট হ্যাঁ, সত্যিই। আমি এখন আপনি কি বলতে চাইছেন। আমি সেই অনুযায়ী সম্পাদনা করেছি, ধন্যবাদ। বিশৃঙ্খলা অপসারণ করতে মন্তব্যগুলি মুছুন।
টেরডন

0

এই তথ্যটি পেতে আপনি e2defrag এর মতো একটি সরঞ্জাম ব্যবহার করতে পারেন।

মনে রাখবেন যে লিনাক্স ফাইল সিস্টেমগুলির প্রকৃতির কারণে, ডিফ্র্যাগিং সাধারণত অপ্রয়োজনীয়।


আপনি আপনার উত্তর বিস্তারিত মনে করতে চান? আমি তথ্যটি দিয়ে পাওয়ার চেষ্টা করেছি e4defrag -c, তবে এটি কার্যকর হয়নি।
পেলটিয়ার

@ পেলেটিয়ারটি -cশেষ যুক্তি হিসাবে বিকল্পের পরে এটি একটি এক্সট্রোন 3 বা এক্সট 4 পয়েন্ট পয়েন্টে দেখায় । এবং ... "কাজ করে না"? ত্রুটিটি কী পেয়েছেন?
gertvdijk

এটি "সম্পন্ন" বলে। আমি তবে এটি সরাসরি ডিভাইসে দেখিনি, তবে মাউন্ট পয়েন্টে দেখিয়েছি। আমি ডিভাইসটি দিয়ে আবার চেষ্টা করছি।
পেলটিয়ার

মনে রাখবেন যে এটি অনেক সময় নেয়, অন্যদিকে fsck খুব দ্রুত।
পেলটিয়ার

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