আমি রিবুট করার সময় কি আমার সিস্টেমটি fsck করবে?


20

... এবং আমি কীভাবে এটি সন্ধান করব?

বলুন আমি একটি সার্ভার পুনরায় বুট করতে চলেছি। আমি ডাউনটাইম হ্রাস করতে চাই, সুতরাং একটি উপনামে রিবুট মোড়ানোর কথা চিন্তা করে যে বলছে "বন্ধুকে ঝুলিয়ে দিন, আপনি বুটের উপর একটি fsck মারতে চলেছেন"।

পরের প্রশ্ন .. বলার সেরা উপায় কি "পরের বার এটি করা যাক?" শেষ চেকের তারিখটি সেট করলেন?

আমি জানি tune2fs পরামিতিগুলির একগুচ্ছ সেট করতে পারে তবে আমি কীভাবে এম পাব?


আপনি কোন ওএস চালাচ্ছেন, এবং কোন ফাইল সিস্টেম?
অ্যালান এইচ

গুড পয়েন্ট - লিনাক্সের সংস্করণ (মূলত ডাব ও ডেরিভেটিভস) এবং এক্সট 2 বা এক্সট 3
টম নিউটন

উত্তর:


19

যদি আপনি যা করতে চান তা যদি কোনও এফএসকে এড়ানো হয় তবে শাটডাউন -f বিকল্পটি যুক্ত করা তার সাথে সহায়তা করবে। শাটডাউন -এফ জোর করে fsck করতে।

tune2fs -l /dev/foo আপনাকে আকর্ষণীয় তথ্যের বিট জানাবে।

আপনার যা প্রয়োজন ঠিক তা উত্তোলনের একটি সূচনা এখানে:

mount -l -t ext3,ext2 | cut -d' ' -f1 | xargs -n1 tune2fs -l | egrep -i 'state|mount|check'

যদি "পরবর্তী চেক পরে" তারিখটি অতীতে থাকে তবে একটি fsck থাকবে।

যদি ফাইল সিস্টেমের অবস্থাটি পরিষ্কার না হয় তবে একটি fsck থাকবে। (এটি পুনরায় বুট / শাটডাউন করার সময় সিস্টেমে কোনও সমস্যা থাকে যা একটি ক্লিন আনমাউন্ট বাধা দেয়) এটিও ঘটতে পারে

মাউন্ট গণনা সর্বাধিক মাউন্ট গণনা পৌঁছেছে, একটি fsck হবে।


ধন্যবাদ - যদি আমি শাটডাউন -ফ ব্যবহার করি, তবে পরবর্তী পুনরায় বুট করা কি fsck পরিবর্তে পাবে?
টম নিউটন

ধরে নিচ্ছি আপনার সিস্টেম বর্তমানে একটি fsck পাওয়ার জন্য একটি মানদণ্ড পূরণ করেছে, হ্যাঁ, পরবর্তী পুনরায় বুট করার পরিবর্তে fsck পাবেন। "শাটডাউন -f" একটি ফাইল তৈরি করে যা সিস্টেম স্টার্টআপকে fsck এড়ানোর জন্য বলে, তবে সিস্টেম স্টার্টআপ সেই ফাইলটিকে সরিয়ে দেয়।
ফ্রেইহাইট

10

ব্যবহার tune2fs -l /path/to/device:

  • "মাউন্ট কাউন্ট" যদি "সর্বাধিক মাউন্ট গণনা" এর চেয়ে বেশি হয় তবে -cসর্বোচ্চটি পরিবর্তন করতে বা -Cগণনা পরিবর্তন করতে ব্যবহার করুন
  • "শেষ পরীক্ষা করা" যদি ইন্টারভাল -iপরিবর্তন করতে বা -Tসর্বশেষ চেক করা পরিবর্তন করতে "চেক ইন্টারভাল" ব্যবহারের পক্ষে সাম্প্রতিক না হয়

এটি ext2 বা ext3 ধরে নেয় তবে এটি মোটামুটি ভাল অনুমান।
ডেভিড প্যাশলে

ডেভিড: প্রশ্নটি tune2fs উল্লেখ করেছে ...
21 শে 21 21

6

অন্য বিকল্পটি হ'ল আপনি নিজের / etc / fstab এর 6th ষ্ঠ ক্ষেত্রটি আপডেট করে ম্যানুয়ালি এটিকে বুট-এ fsck চেকগুলি এড়িয়ে যেতে পারেন:

/dev/sda2  /  ext3  defaults,errors=remount-ro 0       1

এটি বেশিরভাগ fstabs এর অনুরূপ 1 এর অর্থ এটি পরীক্ষা করা উচিত এবং এটি একটি রুট ফাইল সিস্টেম, 2 এর অর্থ এটি পরীক্ষা করা উচিত তবে অন্যান্য ফাইল সিস্টেমের সাথে সমান্তরালে করা হবে এবং 0 এর অর্থ চেক এড়িয়ে যাওয়া

ফাইল সিস্টেমের ক্ষেত্রে এটি সত্য


1

আপনি যদি অনুমান করতে না চান - এটি করুন:

টাচ / ফাস্টবুট

এবং আপনি ধীর চেকগুলি এড়ানোর বিষয়ে নিশ্চিত (বা আরও খারাপ - যদি চেক ব্যর্থ হয় এবং পুনরায় বুট বন্ধ হয় তবে মোট ব্যর্থতা)


1

পরের fsck কখন ঘটবে তা পরীক্ষা করতে আমি নীচের পার্ল স্ক্রিপ্টটি ব্যবহার করি:

#!/usr/bin/perl -w

use strict;

my $mountcount = 0;
my $maxmount = 0;
my $dev;
my $mountpoint;
my $fstype;
my $debug = 0;

my $cmd = "mount";

open MOUNT, sprintf ( "%s |", $cmd ) or die sprintf ( "ERROR: Cannot execute %s - %s\n", $cmd, $! );
while ( <MOUNT> ) {
    chomp;
    ( $dev, undef, $mountpoint, undef, $fstype, undef ) = split;
    printf "Found device %s\n", $dev if ( $debug > 0 );

    if ( $fstype =~ /^ext/i ) {
        $cmd = sprintf "dumpe2fs -h %s 2>&1", $dev;
        open DUMPE2FS, sprintf ( "%s |", $cmd ) or die sprintf ( "ERROR: Unable to execute %s - %s\n", $cmd, $! );
        while ( <DUMPE2FS> ) {
            chomp;
            if ( /^Mount count:/ ) {
                ( undef, $mountcount ) = split /:/;
                $mountcount =~ s/\s*//g;
                printf "Mount count = %s\n", $mountcount if ( $debug > 0 );
            }
            if ( /^Maximum mount count:/ ) {
                ( undef, $maxmount ) = split /:/;
                $maxmount =~ s/\s*//g;
                printf "Maximum mount count = %s\n", $maxmount if ( $debug > 0 );
            }
        }
        close DUMPE2FS;

        printf "Filesystem %s, mounted on %s will be checked in %s mounts\n", $dev, $mountpoint, $maxmount - $mountcount;
    }
}
close MOUNT;

আমার এটি আমার ~ / .bashrc এ চালিত হয়েছে তাই আমি সর্বদা জানি যে আমার ফাইল সিস্টেমগুলি কখন পরীক্ষা করা হবে, যদিও আমি এখন ext4 ব্যবহার করি যা প্রসারিত fsck সময়ে ভোগ করে না, এটি এখনও জেনে রাখা ভাল।

টিপিক্যাল আউটপুট হ'ল কিছু:

Filesystem /dev/sda1, mounted on / will be checked in 5 mounts
user@localhost ~ $

স্পষ্টতই, আপনার স্ক্রিপ্টটি "পরবর্তী চেক পরে:" বৈশিষ্ট্যগুলি মূল্যায়ন করে না!
xebeche

0

Fsck প্রতিরোধের জন্য আমি মিড-ডে রিবুট করার আগে বুট সংখ্যা এবং সময় পুনরায় সেট করতে নিয়মিত টিউনফ ব্যবহার করি। বুট সময় পার্থক্য অত্যাশ্চর্য। ওয়ার্ডপ্রেস পরের বুটটি fsck এ যাওয়ার জন্য আমি সেগুলি পুনরায় সেট করেছি।


0

আমি আরও স্বাচ্ছন্দ্যে ফাইল সিস্টেমের একটি তালিকা কীভাবে পাবেন সে সম্পর্কে ভেবেছিলাম:

for D in $(mount -l -t ext3,ext2 | cut -d' ' -f1 ) ; do \
echo --- $D; tune2fs -l $D | egrep -i 'mount (count|time)|check' ; done \
| awk '
  /^--- / { mydev=$2; checked=0 }
  /^Mount count:/ { mycnt=$3 }
  /^Maximum mount count:/ { if (mycnt >= $3) checked=1 }
  /^Next check after:/ {
    cmd=("date +%s -d\"" $4 FS $5 FS $6 FS $7 FS $8"\"");
    cmd | getline mydate; close(cmd);
    if ((mydate <= (systime()+120)) || (checked == 1)) print mydev;
  }
'

আমার ধারণা এটি আরও মার্জিতভাবে করা যেতে পারে তবে যাইহোক এটি এখানে। যদি এটির মধ্যে একটি পাইপগুলি xargs -r df -hদ্রুত দেখতে পায় যে ফাইল সিস্টেমগুলি কত বড়।

নোট করুন যে "নেক্সট চেক" এর সময়ের উপরের কোডটিতে (এখন + 120 সেকেন্ড) তুলনা করা হয়েছে ধরে নেওয়া হয়েছে যে আপনার সিস্টেমটি আবার না উঠা পর্যন্ত এটি কিছুটা সময় নেয়।

আছে HTH


0

এখানে একটি স্ক্রিপ্ট রয়েছে যা fsck ( উত্স ) এর জন্য আপনার ফাইল সিস্টেমগুলি পরীক্ষা করে :

for x in $(df -t ext4 -t ext3 -t ext2 | tr -s ' ' | cut -d " " -f1 | grep -v "^$" | tail -n +2); do mmc=$(tune2fs -l $x | grep 'mount count' | tr -s ' ' | cut -d ' ' -f4) ; mc=$(tune2fs -l $x | grep 'Mount count' | tr -s ' ' | cut -d ' ' -f3) ; if [ `expr $mmc - $mc` -le 0 ] ; then fsck="0" ; else fsck="1"; fi ; CT=`date +%s` ; LCT=`date -d "\`tune2fs -l $x | grep "Last checked" | tr -s ' '| cut -d" " -f3-\`" +%s` ; CI=`tune2fs -l $x | grep "Check interval"| tr -s ' '| cut -d" " -f3` ; if [ `let $CT-$LCT` -gt `let $CI*3600*24` ] && [ $CI -gt 0 ] || [ $fsck -eq 1 ];  then echo "There will be forced fsck for $x"; else echo "There will be no fsck for $x" ; fi ; done
# Alternative script from friend with sed
# mount -t ext2,ext3,ext4|while read i j; do tune2fs -l $i|sed -n '/[Mm]ount count/{s/.*: *//;p}'|(read c; read m; [ $m -gt 0 -a $m -le $c ] && echofsck,count,$i); c="$(tune2fs -l $i|sed -n '/Next check/{s/.*r: *//;p}')"; [ -z "$c" ] || ([ `date +%s` -ge `date -d"$c" +%s` ] && echo fsck,time,$i); done

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