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

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

fsck مخفف FileSystem Check در زمان بوت شدن سیستم به بررسی سیستم که آیا مشکلی در سیستم فایل وجود دارد یا نه می پردازد یا اینکه مدیران دستور را زمانی که سیستم فایل به مشکل بر می خورد بصورت دستی آنرا برای بررسی و تعمیر سیستم فایل استفاده می کنند. البته باید دقت کنید که از fsck نباید در سیستم فایل های mount شده استفاده کنید زیرا باعث از دست رفتن اطلاعات و داده های سیستم فایل می شود پس لازم است سیستم فایل را Unmount کنید. دو گزینه برای اجرای fsck بصورت دستی وجود دارد 1 – اینکه به Single Mode رفته و سیستم فایل ها را Unmount کنید 2 – یا اینکه از یک CD/DVD Live استفاده کنید. برای تغییر Run Level ها می توانید این پست را مطالعه کنید و وقتی وارد Single Mode شدید سیستم فایل را Unmount کنید.

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

parted  -l

fdisk  -l

بطور مثال اگر بخواهیم پارتیشن دوم از هارد اول را بررسی کنیم دستور زیر را اجرا می کنیم. در صورت اجرا یک پیغام خطا که اگر سیستم mount باشد سیستم فایل ممکن است دچار مشکل شود.

fsck  /dev/sda2

در صورتی که فرایند بررسی سیستم فایل را انجام دهید و پس از تکمیل موفق/ناموفق فرایند وضعیت خروجی بصورت زیر است.

  • 0 : پایان موفق فرایند بررسی سیستم فایل.
  • 1 : خطاهای سیستم فایل درست شده اند.
  • 2 : سیستم باید reboot شود.
  • 4 : خطاهای سیستم فایل درست نشده است.
  • 8 : Operational error
  • 16 : Usage or syntax error
  • 32 : اجرای fsck با درخواست کاربر (سیگنال Ctrl+C) خاتمه یافت.
  • 128 : Shared-library error

البته می توانید بجای نوشتن نام پارتیشن نام دایرکتوری که پارتیشن روی آن mount شده را بنویسید.

fsck  /home

دستور fsck برای سیستم فایل های متفاوت مانند ext2,ext3,ext4 و … بصورت مجزا وجود دارد. دستور های زیر را اجرا کنید تا پشتیبانی fsck را از سیستم فایل ها روی سیستمتان بفهمید.

*cd  /sbin  &&  ls  fsck

خروجی :

fsck  fsck.cramfs  fsck.ext2  fsck.ext3  fsck.ext4  fsck.ext4dev  fsck.msdos  fsck.vfat

اجرای خالی دستور fsck بدون تعیین نوع سیستم فایل بسته به توزیعی که استفاده می کنید دارد. اگر از توزیع های بروز استفاده کنید سیستم فایل پیش فرض ext4 است اجرای fsck همان اجرای fsck.ext4 است و برای بررسی یک سیستم فایل ext3 یا غیره باید بصورت fsck.ext3 و … استفاده کنید. خروجی دستور های fdisk و parted بالا نوع سیستم فایل را نشان می دهد.

با استفاده از سوئیچ A- می توانید یکباره تمامی پارتیشن ها را بررسی کنید. در فایل etc/fstab/ آخرین ستون، ستونِ fs_passno است که اگر مقدارش برای یک پارتیشن 0 باشد، آن پارتیشن در بررسی یکباره یا زمان بوت شدن بررسی نمی شود و مقادیر بیشتر از صفر باعث چک شدن سیستم فایل می شود.

fsck  -A

البته پیشنهاد می شود که دایرکتوری root را در حالت یکباره مورد بررسی قرار نگیرد برای این منظور از دستور زیر استفاده کنید.

fsck  -AR  -y

و برای اینکه در بررسی یکباره کل سیستم فایل ها تنها نوع خاصی مانند ext3 مورد بررسی قرار گیرند از دستور زیر استفاده کنید.

fsck  -AR  -t  ext3  -y

یا اینکه اگر می خواهید تمامی سیستم فایل ها به جز نوع ext3 مورد بررسی قرار گیرند از دستور زیر استفاده کنید.

fsck -AR -t noext3 -y

با سوئیچ f- دستور fsck را مجبور به بررسی می کنید. (بدون در نظر گرفتن خطاهای احتمالی)

fsck  -f /dev/sda2

سوئیچ y- در دستور های بالا برای رفع مشکلات یافت شده بصورت خودکار توسط خود fsck استفاده می شود.

fsck  -y /dev/sda2

در خروجی زیر دو دایرکتوری Movie و test دچار مشکل شده اند (صفات آنها خراب شده است.)

سوئیچ y- باعث می شود زمانی که سوالی مبنی بر رفع مشکل inode های دایرکتوری test داده می شود، yes را بصورت خودکار پاس می دهد و نیازی به ورود دستی توسط شما نیست.

Entry ‘test’ in / (2) has deleted/unused inode 49059.  Clear? yes

با سوئیچ n- بجای رفع مشکلات لیستی از آنها به خروجی استاندارد فرستاده می شود. (چاپ روی ترمینال) و با این سوئچ فقط مشکل گزارش می شود و آنرا رفع نخواهد کرد.

fsck -n /dev/sda2

از دستور زیر به همراه سوئیچ a- برای تعمیر سیستم فایل ها استفاده کنید.

fsck -a -AR

یا اینکه برای یک پارتیشن خاص :

fsck -a /dev/sda2