اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

نحوه استفاده از دستور fsck برای رفع Error های فایل سیستم در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه استفاده از دستور fsck برای رفع Error های فایل سیستم در لینوکس

    فایل سیستم ها مسئولیت سازماندهی نحوه ذخیره و ریکاوری دیتا را به عهده دارند. به هر شیوه ای با گذر زمان فایل سیستم ممکن است با مشکل روبه رو شود و بخش های خاصی از آن دیگر قابل دسترسی نباشند. اگر فایل سیستم این چنین ناپایداری هایی را از خود نشان داد توصیه میشود که صحت و درستی آنرا بررسی کنید.

    این کار را میتوان از طریق ابزار سیستمی fsck (مخفف file system consistency check)‌ انجام داد. این check را میتوان به صورت اتوماتیک در هنگام boot و یا به صورت دستی اجرا کرد.

    در این مقاله، قصد داریم که ابزار fsck و کاربردش را مرور کنیم و به شما در رفع خطاهای Disk کمک کنیم.



    چه زمانی در لینوکس از fsck استفاده کنیم

    سناریو های متفاوتی وجود دارد که شما بخواهید fsck را اجرا کنید. در اینجا به چندین مثال اشاره میکنیم.
    • سیستم boot نشود.
    • فایل های روی سیستم خراب شوند. (اغلب شما خطای input/output را مشاهده خواهید کرد)
    • درایو متصل شده به سیستم (شامل درایو فلش / کارت های SD) درست کار نمیکند.


    همچنین توصیه میشود مطالعه کنید.

    آموزش پیدا کردن Badsector در لینوکس

    آموزش Disk Defragment در لینوکس (تعمیر و Defrag پارتیشن ها و دایرکتوری ها)



    آپشن های موجود برای fsck

    برای اجرای دستور fsck نیاز به دسترسی سوپر یوزر یا root دارید. شما میتوانید آنرا با آپشن های متفاوتی استفاده کنید. کاربرد آنها به کیس خاص شما بستگی دارد. در زیر شما یکسری آپشن های مهمتر را مشاهده خواهید کرد.

    -A : برای بررسی همه فایل سیستم ها مورد استفاده قرار میگیرد. لیست مورد نظر از مسیر /etc/fstab دریافت میشود.
    -C : نمایش نوار پیشرفت دستور
    -l : دیوایس را برای گارانتی کردن این که هیچ برنامه دیگری برای استفاده از پارتیشن در طول check تلاش نکند، block میکند.
    -M : فایل سیستم های mount شده را چک نمیکند.
    -N : تنها عملیاتی که قرار است انجام شود را نمایش میدهد - تغییرات واقعی اتفاق نمی افتد.
    -P : درصورتی که بخواهید فایل سیستم ها را به صورت موازی شامل root چک کنید.
    -R : فایل سیستم root را چک نمیکند. این گزینه تنها در صورت استفاده از -A مفید است.
    -r : آمار مربوط به هر دیوایس را که باید چک شود فراهم میاورد.
    -T : عنوان (title) را نمایش نمیدهد.
    -t : انواع فایل سیستمی که باید چک شود را به صورت گسترده مشخص میکند که لیستی هستند که با کاما از هم جدا شده اند.
    -V : با استفاده از این آپشن میتوان توضیحاتی درباره مواردی که انجام میشود فراهم کرد.



    نحوه اجرا کردن fsck برای رفع خطاهای فایل سیستم لینوکس

    به منظور اجرا کردن fsck شما نیاز خواهید داشت، مطمئن شوید پارتیشنی که قصد بررسی آنرا دارید mount نباشد. به این منظور من از درایو دومم /dev/sdb که در /mnt مانت شده استفاده خواهم کرد.

    در زیر مشاهده میکنید که اگر تلاش برای اجرا کردن fsck روی پارتیشنی که mount باشد داشته باشید، چه اتفاقی خواهد افتاد.
    کد PHP:
    # fsck /dev/sdb1 
    دستور fsck در لینوکس



    برای جلوگیری از نمایش پیغام بالا، پارتیشن را با استفاده از دستور زیر unmount کنید.
    کد PHP:
    # umount /dev/sdb1 
    سپس fsck را با اطمینان میتوان با استفاده از دستور زیر اجرا کرد.
    کد PHP:
    # fsck /dev/sdb1 
    رفع خطاهای هارد در لینوکس





    درک exit code های fsck

    بعد از اجرا کردن fsck این دستور یک exit code برخواهد گرداند. این کدها در راهنمای fsck قابل مشاهده هستند.
    کد PHP:
    # man fsck

    0      No errors
    1      Filesystem errors corrected
    2      System should be rebooted
    4      Filesystem errors left uncorrected
    8      Operational error
    16     Usage 
    or syntax error
    32     Checking canceled by user request
    128    Shared
    -library error 


    رفع Error های فایل سیستم Linux

    گاهی اوقات بیشتر از یک error در فایل سیستم پیدا میشود. در این چنین مواقعی fsck به صورت اتوماتیک تلاش در اصلاح خطاها میکند. این مورد را میتوان با دستور زیر انجام داد.
    کد PHP:
    # fsck -y /dev/sdb 
    آپشن -y به صورت اتوماتیک به تمام درخواست های به منظور اصلاحیه error جواب yes میدهد.

    مشابها شما میتوانید آنرا روی همه فایل سیستم ها (بدون root) اجرا کنید.
    کد PHP:
    fsck -AR -


    نحوه اجرا کردن fsck روی پارتیشن root لینوکس

    در این چنین مواردی، شما ممکن است بخواهید fsck را روی پارتیشن root سیستم تان اجرا کنید. از آنجایی که شما نمیتوانید fsck را هنگامیکه پارتیشن mount است اجرا کنید، میتوان یکی از گزینه های زیر را امتحان کنید.
    • fsck را بهنگام boot سیستم force کنید.
    • fsck را در مد rescue اجرا کنید.
    ما هر دو روش را در اینجا تست میکنیم.



    Force کردن fsck در طول پروسه Boot سیستم

    این مورد نسبتا آسان است و تنها کاری که شما نیاز دارید انجام دهید ایجاد فایلی به نام forcefsck در پارتیشن root سیستم تان میباشد. از دستور زیر استفاده کنید.
    کد PHP:
    # touch /forcefsck 
    سپس شما میتوانید به آسانی سیستم تان را reboot کنید. در طول boot بعدی fsck اجرا خواهد شد. اگر down time ضروری باشد توصیه میشود که آنرا با دقت انجام دهید از آنجایی که ممکن است inode های مورد استفاده زیادی روی سیستم داشته باشید ممکن است زمان اضافه تری برای اجرای fsck طول بکشد.

    بعد از اینکه سیستم شما boot شد بررسی کنید که آیا هنوز فایل موجود است یا خیر.
    کد PHP:
    # ls /forcefsck 
    اگر وجود داشته باشد شما ممکن است بخواهید که آنرا به منظور جلوگیری از اینکه fsck روی هر بوت سیستم اجرا شود پاک کنید.



    اجرا کردن fsck در مد Rescue

    اجرای fsck در مد rescue نیاز به مراحل بیشتری دارد ابتدا سیستم تان را برای ریبوت آماده کنید. هر گونه سرویس حیاتی مانند MySQL/MariaDB و غیره را stop کنید و سپس دستور زیر را تایپ کنید.
    کد PHP:
    # reboot 

    وارد شدن به مد Rescue در Ubuntu

    در حین boot کلید shift را نگه دارید تا منوی گراب نمایش داده شود. Advanced options را انتخاب کنید.
    دستور fsck در لینوکس




    سپس Recovery mode را انتخاب کنید.
    تعمیر هارد در لینوکس




    در منوی بعدی fsck را انتخاب کنید.
    دستور fsck در لینوکس




    از شما پرسیده میشود که آیا میخواهید فایل سیستم "/" تان دوباره mount شود. yes را انتخاب کنید.
    fsck command in linux





    شما باید چیزی شبیه به زیر ببینید.
    دستور fsck در لینوکس





    سپس شما میتوانید با انتخاب Resume به boot نرمال بازگردید.
    دستور fsck در لینوکس



    دستور fsck در لینوکس





    وارد شدن به مد Rescue در CentOS

    در حین boot کلید shift را نگه دارید تا منوی گراب نمایش داده شود.
    دستور fsck در لینوکس






    سپس کلید "e" را فشار دهید و همانند تصویر کلمه rescue را به خط مارک شده اضافه کنید، سپس کلیدهای Ctrl+x را به جهت اعمال تغییرات فشار دهید.
    دستور fsck در لینوکس




    در این بخش پسورد root سیستم تان را وارد کنید که به محیط شل دسترسی پیدا کنید.
    دستور fsck در لینوکس





    نتیجه

    در این مقاله شما نحوه استفاده از fsck و بررسی روی فایل سیستم های متفاوت لینوکسی را آموزش دیدید. اگر هر سوالی درباره fsck داشتید لطفا آنرا در اینجا با ما مطرح کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-07-2021, 03:21 PM.

    #2
    سپاس از شما بدلیل مطرح کردن این موضوع این مهم روی هارد و دیوایس های متصل به دستگاه کار می کند اگر دستگاهی دارای فلش داخلی emmc باشد چطور می شود فایل های معیوب را بررسی و رفع عیب کرد ؟

    کامنت


    • amir
      amir نظر خود را بیان کرد
      Editing a comment
      سلام. اگر هر دیوایسی به دستگاه وصل بشه و پارتیشنش دیتکت بشه رو میشه با دستور fsck یا ابزارهای دیگه بررسی کرد.

    #3
    با سلام ممنون از اطلاعات مفیدتون .

    کامنت


      #4
      ممنون از داکیومنتی که گذاشتید. یه مشکل مشابه داشتم که موقع بوت سرور با خطای زیر مواجه میشدم :
      کد PHP:
      xfs (sda1): metadata I/O errorblock 0x7e628 ("xlog_bread_nalign"error 5 numblks see 'systemctl status boot.mount' for details.
      [
      DEPENDDependency failed for Local File Systems.
      [
      DEPENDDependency failed for Relable all filesystems, if necessary.
      [
      DEPENDDependency failed for Mark the need to relabel after reboot.
      systemd-fsck[749]: /sbin/fsck.xfsXFS file system.
      Welcome to emergency modeAfter loggin intype "journalctl -xb" to view system logs"systemctl reboot" to reboot"systemctl default" to try again to boot into default mode.
      Give root password for maintenance
      (or type Control-D to continue):​ 





      دایرکتوری boot مانت نشده بود. با استفاده از دستور زیر مشکل ام برطرف شد.
      کد PHP:
      sudo xfs_repair /dev/sdb1 







      آموزش کامل رو از این قسمت میتونید بببینید :
      کد:
      https://www.linuxtechi.com/repair-corrupted-xfs-filesystem-xfs-repair/

      کامنت

      درباره انجمن منطقه لینوکسی ها

      انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

      شبکه های اجتماعی
      در حال انجام ...
      X