| FSCK.EXT2(8) | دستورهای مدیریتی و نگهداری | FSCK.EXT2(8) |
نام (NAME)
fsck.ext2 - بررسی و تعمیر سیستمفایل ext2 لینوکس
خلاصه دستور (SYNOPSIS)
fsck.ext2 [ -pacnydfvktDFV ] [ -b سوپربلاک ] [ -B اندازه_بلاک ] [ -l|-L فایل_بلاکهای_خراب ] [ -C توصیفگر ] [ -E گزینههای_پیشرفته ] [ -z فایل_لغو ] دستگاه
توضیحات (DESCRIPTION)
دستور fsck.ext2 برای بررسی و تعمیر سیستمفایلهای لینوکسی ext2 استفاده میشود. این دستور پیوندی به e2fsck است.
دستگاه یک دستگاه بلاکی (مانند /dev/sdc1) یا فایلی حاوی سیستمفایل است.
توجه داشته باشید که بهطور کلی اجرای fsck.ext2 روی سیستمفایلهای مانتشده (سوارشده) امن نیست. تنها استثنا زمانی است که گزینه -n مشخص شده باشد و گزینههای -c، -l یا -L مشخص نشده باشند. با این حال، حتی در صورتی که انجام این کار امن باشد، نتایج نمایشدادهشده توسط fsck.ext2 در صورت مانت بودن سیستمفایل معتبر نخواهند بود. اگر fsck.ext2 سؤال کند که آیا سیستمفایل مانتشده بررسی شود یا خیر، تنها پاسخ صحیح «no» (خیر) است. تنها متخصصانی که دقیقاً میدانند چه میکنند باید پاسخی غیر از این بدهند.
اگر fsck.ext2 در حالت تعاملی اجرا شود (به این معنی که هیچیک از گزینههای -y، -n یا -p مشخص نشده باشند)، برنامه برای رفع هر مشکل یافتشده در سیستمفایل از کاربر سؤال خواهد کرد. پاسخ «y» خطا را برطرف میکند؛ «n» خطا را بدون تغییر رها میکند؛ و «a» مشکل فعلی و تمام مشکلات بعدی را برطرف خواهد کرد؛ فشردن کلید Enter با پاسخ پیشفرضی که پیش از علامت سؤال درج شده ادامه میدهد. فشردن Control-C بلافاصله fsck.ext2 را متوقف میکند.
گزینهها (OPTIONS)
- -a
- این گزینه همان عملکرد گزینه -p را دارد. این گزینه صرفاً برای سازگاری با نسخههای پیشین ارائه شده است و پیشنهاد میشود کاربران تا حد امکان از گزینه -p استفاده کنند.
- -b سوپربلاک
- بهجای استفاده از سوپربلاک معمولی، از یک سوپربلاک جایگزین که توسط سوپربلاک مشخص شده است استفاده میکند. این گزینه معمولاً زمانی به کار میرود که سوپربلاک اصلی آسیب دیده باشد. مکان سوپربلاکهای پشتیبان به اندازه بلاک سیستمفایل، تعداد بلاکها در هر گروه، و ویژگیهایی مانند sparse_super بستگی دارد.
- سوپربلاکهای پشتیبان اضافی را میتوان با استفاده از برنامه mke2fs و گزینه -n آن برای چاپ مکان قرارگیری سوپربلاکها تعیین کرد، به شرطی که به mke2fs آرگومانهایی داده شود که با ساختار سیستمفایل سازگار باشند (مانند اندازه بلاک، بلاکها در هر گروه، sparse_super و غیره).
- اگر سوپربلاک جایگزینی مشخص شده باشد و سیستمفایل بهصورت فقطخواندنی باز نشده باشد، fsck.ext2 اطمینان حاصل خواهد کرد که پس از اتمام بررسی سیستمفایل، سوپربلاک اصلی به شکل مناسب بهروزرسانی شود.
- -B اندازه_بلاک
- بهطور معمول، fsck.ext2 سوپربلاک را در اندازههای بلاک مختلف جستجو میکند تا اندازه بلاک مناسب را پیدا کند. این جستجو ممکن است در برخی موارد دچار اشتباه شود. این گزینه fsck.ext2 را مجبور میکند که فقط تلاش کند سوپربلاک را در اندازه بلاک مشخصشده پیدا کند. اگر سوپربلاک پیدا نشود، fsck.ext2 با یک خطای مهلک متوقف میشود.
- -c
- این گزینه باعث میشود که fsck.ext2 از برنامه badblocks(8) برای انجام یک اسکن فقطخواندنی از دستگاه بهمنظور یافتن بلاکهای خراب (bad blocks) استفاده کند. در صورت یافتن بلاکهای خراب، آنها به اینود بلاکهای خراب اضافه میشوند تا از اختصاص داده شدن آنها به فایل یا دایرکتوری جلوگیری شود. اگر این گزینه دو بار مشخص شود، اسکن بلاکهای خراب با استفاده از یک آزمون خواندن/نوشتن غیرمخرب انجام خواهد شد.
- -C توصیفگر
- این گزینه باعث میشود که fsck.ext2 اطلاعات پیشرفت کار را در توصیفگر فایل (file descriptor) مشخصشده بنویسد تا بتوان روند پیشرفت بررسی سیستمفایل را رصد کرد. این گزینه معمولاً توسط برنامههایی استفاده میشود که fsck.ext2 را اجرا میکنند. اگر شماره توصیفگر فایل منفی باشد، از مقدار مطلق توصیفگر فایل استفاده میشود و ارسال اطلاعات پیشرفت در ابتدا متوقف میماند؛ بعداً میتوان با ارسال سیگنال SIGUSR1 به فرآیند fsck.ext2 آن را فعال کرد. اگر توصیفگر فایل برابر 0 باشد، fsck.ext2 در حین انجام کار یک نوار پیشرفت چاپ میکند. این کار مستلزم آن است که fsck.ext2 روی یک کنسول ویدیویی یا ترمینال اجرا شود.
- -d
- چاپ خروجی اشکالزدایی (بدون استفاده مگر اینکه در حال اشکالزدایی fsck.ext2 باشید).
- -D
- بهینهسازی دایرکتوریها در سیستمفایل. این گزینه باعث میشود fsck.ext2 تلاش کند تمام دایرکتوریها را بهینهسازی کند؛ چه از طریق نمایهسازی مجدد در صورتی که سیستمفایل از نمایه دایرکتوری پشتیبانی کند، و چه از طریق مرتبسازی و فشردهسازی دایرکتوریها برای دایرکتوریهای کوچکتر، یا برای سیستمفایلهایی که از دایرکتوریهای خطی سنتی استفاده میکنند.
- حتی بدون گزینه -D، دستور fsck.ext2 ممکن است گاهی برخی از دایرکتوریها را بهینهسازی کند — برای مثال اگر نمایهسازی دایرکتوری فعال باشد و یک دایرکتوری نمایهسازی نشده باشد و نمایهسازی برای آن مفید باشد، یا اگر ساختارهای نمایه آسیب دیده باشند و نیاز به بازسازی داشته باشند. گزینه -D تمام دایرکتوریهای سیستمفایل را وادار به بهینهسازی میکند. این کار گاهی اوقات میتواند آنها را کمی کوچکتر کرده و جستجو در آنها را اندکی سریعتر کند، اما در عمل به ندرت نیاز به استفاده از این گزینه خواهید داشت.
- گزینه -D ورودیهای دایرکتوری با نامهای تکراری را در یک دایرکتوری واحد شناسایی میکند؛ چیزی که fsck.ext2 معمولاً به دلایل کارایی بررسی نمیکند.
- -E گزینههای_پیشرفته
- تنظیم گزینههای پیشرفته fsck.ext2. گزینههای پیشرفته با کاما از هم جدا میشوند و ممکن است با استفاده از علامت مساوی ('=') آرگومان دریافت کنند. گزینههای زیر پشتیبانی میشوند:
- ea_ver=نسخه_ویژگی_گسترشیافته
- تنظیم نسخه بلاکهای ویژگی گسترشیافته (extended attribute) که fsck.ext2 هنگام بررسی سیستمفایل به آن نیاز خواهد داشت. شماره نسخه میتواند ۱ یا ۲ باشد. قالب پیشفرض نسخه ویژگیهای گسترشیافته ۲ است.
- journal_only
- تنها در صورت نیاز، ژورنال را بازپخش میکند، اما هیچ بررسی یا تعمیر دیگری را انجام نمیدهد.
- fragcheck
- در طول مرحله ۱ (pass 1)، یک گزارش دقیق از هرگونه بلاک ناپیوسته برای فایلهای موجود در سیستمفایل چاپ میکند.
- discard
- تلاش برای آزادسازی (discard / TRIM) بلاکهای آزاد و بلاکهای اینود استفادهنشده پس از اتمام کامل بررسی سیستمفایل (دور انداختن یا آزادسازی بلاکها در حافظههای حالت جامد SSD و حافظههای کمپشت یا thin-provisioned سودمند است). توجه داشته باشید که آزادسازی در مرحله ۵ و پس از بررسی کامل سیستمفایل و تنها در صورتی انجام میشود که حاوی خطاهای قابل شناسایی نباشد. با این حال، ممکن است مواردی وجود داشته باشد که fsck.ext2 مشکل را بهطور کامل شناسایی نکرده باشد و بنابراین در این حالت این گزینه ممکن است شما را از بازیابی دستی دادهها در مراحل بعدی باز دارد.
- nodiscard
- تلاش برای آزادسازی بلاکهای آزاد و بلاکهای اینود استفادهنشده را انجام نمیدهد. این گزینه دقیقاً برعکس گزینه discard است و بهصورت پیشفرض تنظیم شده است.
- no_optimize_extents
- پیشنهاد بهینهسازی درخت اکستنت (extent tree) از طریق حذف عرض یا عمق غیرضروری را ارائه نمیدهد. این مورد را میتوان در بخش گزینههای فایل /etc/e2fsck.conf نیز فعال کرد.
- optimize_extents
- پیشنهاد بهینهسازی درخت اکستنت را از طریق حذف عرض یا عمق غیرضروری ارائه میدهد. این حالت پیشفرض است مگر اینکه در /etc/e2fsck.conf بهگونه دیگری مشخص شده باشد.
- inode_count_fullmap
- فدا کردن حافظه برای سرعت در هنگام بررسی یک سیستمفایل با تعداد زیادی فایل دارای پیوند سخت (hard-linked). مقدار حافظه مورد نیاز متناسب با تعداد اینودهای موجود در سیستمفایل است. برای سیستمفایلهای بزرگ، این مقدار میتواند چندین گیگابایت حافظه باشد. (بهعنوان مثال، یک سیستمفایل ۴۰ ترابایتی با ۲٫۸ میلیارد اینود در صورت فعال بودن این بهینهسازی، ۵٫۷ گیگابایت حافظه اضافی مصرف خواهد کرد.) این بهینهسازی را میتوان در بخش گزینههای /etc/e2fsck.conf نیز فعال کرد.
- no_inode_count_fullmap
- غیرفعال کردن بهینهسازی inode_count_fullmap. این حالت پیشفرض است مگر اینکه در /etc/e2fsck.conf بهگونه دیگری مشخص شده باشد.
- readahead_kb
- استفاده از این مقدار حافظه (بر حسب کیلوبایت) برای پیشواکشی (pre-fetch) متادیتا به امید کاهش زمان اجرای fsck.ext2. بهطور پیشفرض، این مقدار برابر با اندازه جدولهای اینود دو گروه بلاک تنظیم شده است (معمولاً ۴ مگابایت در یک سیستمفایل معمولی ext4)؛ اگر این مقدار بیش از ۱/۵۰ کل حافظه فیزیکی باشد، پیشواکشی غیرفعال میشود. برای غیرفعال کردن کامل پیشواکشی، مقدار آن را صفر قرار دهید.
- bmap2extent
- تبدیل فایلهای دارای نقشهبرداری بلاکی (block-mapped) به فایلهای دارای نقشهبرداری اکستنت (extent-mapped).
- fixes_only
- فقط متادیتای آسیبدیده را تعمیر میکند؛ دایرکتوریهای htree را بهینهسازی نمیکند و درختهای اکستنت را فشرده نمیسازد. این گزینه با گزینههای -D و -E bmap2extent ناسازگار است.
- check_encoding
- اجبار به اعتبارسنجی نامهای فایل کدگذاریشده در دایرکتوریهای حساس نبودن به حروف کوچک و بزرگ (case-insensitive). اگر فلگ strict در سیستمفایل فعال باشد، این حالت پیشفرض است.
- اگر سیستمفایل دارای بلاکهای اشتراکی باشد و ویژگی فقطخواندنی بلاکهای اشتراکی فعال باشد، تمام بلاکهای اشتراکی را غیراشتراکی (unshare) کرده و بیت ویژگی فقطخواندنی را غیرفعال میکند. اگر فضای خالی کافی وجود نداشته باشد، عملیات با شکست مواجه خواهد شد. اگر سیستمفایل بیت ویژگی فقطخواندنی را نداشته باشد اما به هر حال دارای بلاکهای اشتراکی باشد، این گزینه هیچ تاثیری نخواهد داشت. توجه داشته باشید هنگام استفاده از این گزینه، اگر فضای خالی برای شبیهسازی (clone) بلاکها وجود نداشته باشد، اعلانی برای حذف فایلها ارائه نمیشود و در عوض عملیات با شکست مواجه خواهد شد.
- توجه داشته باشید که unshare_blocks به معنای اعمال گزینه -f نیز هست تا اطمینان حاصل شود که تمام مراحل بررسی اجرا میشوند. علاوه بر این، اگر -n نیز مشخص شده باشد، fsck.ext2 تلاش برای اختصاص فضای کافی جهت یکتاسازی دادهها (deduplicate) را شبیهسازی میکند. در صورت عدم موفقیت، کد خروجی غیرصفر خواهد بود.
- -f
- اجبار به بررسی سیستمفایل حتی اگر به نظر برسد سیستمفایل تمیز (clean) است.
- -F
- تخلیه حافظههای میانگیر (buffer caches) دستگاه سیستمفایل پیش از شروع. این گزینه تنها برای سنجشهای زمانی و آزمونهای سرعت fsck.ext2 کاربرد دارد.
- -j دستگاه_ژورنال
- تعیین مسیر فایلی که ژورنال خارجی (external-journal) برای این سیستمفایل در آن یافت میشود.
- -k
- هنگامی که با گزینه -c ترکیب شود، هرگونه بلاک خراب موجود در لیست بلاکهای خراب حفظ میشود و هر بلاک خراب جدیدی که با اجرای برنامه badblocks(8) یافت شود به لیست موجود بلاکهای خراب اضافه خواهد شد.
- -l نام_فایل
- شماره بلاکهای فهرستشده در فایلی که توسط نام_فایل مشخص شده است را به لیست بلاکهای خراب اضافه میکند. قالب این فایل همانند خروجی تولیدشده توسط برنامه badblocks(8) است. توجه داشته باشید که شماره بلاکها بر اساس اندازه بلاک سیستمفایل هستند؛ بنابراین، برای به دست آوردن نتایج صحیح باید اندازه بلاک سیستمفایل به برنامه badblocks(8) داده شود. در نتیجه، استفاده از گزینه -c در fsck.ext2 بسیار سادهتر و ایمنتر است، زیرا اطمینان حاصل میکند که پارامترهای صحیح به برنامه badblocks ارسال میشوند.
- -L نام_فایل
- تنظیم لیست بلاکهای خراب بر اساس لیست بلاکهای مشخصشده در نام_فایل. (این گزینه مشابه گزینه -l است، با این تفاوت که پیش از اضافه شدن بلاکهای فهرستشده در فایل، لیست بلاکهای خراب پاک میشود.)
- -n
- سیستمفایل را بهصورت فقطخواندنی باز میکند و برای تمام سؤالات پاسخ «no» (خیر) را در نظر میگیرد. این گزینه اجازه میدهد fsck.ext2 بهصورت غیرتعاملی استفاده شود. این گزینه نمیتواند همزمان با گزینههای -p یا -y مشخص شود.
- -p
- تعمیر خودکار («preen») سیستمفایل. این گزینه باعث میشود fsck.ext2 بهطور خودکار هرگونه مشکل سیستمفایل را که میتواند بدون مداخله انسان بهطور ایمن برطرف شود تعمیر کند. اگر fsck.ext2 مشکلی را کشف کند که ممکن است نیاز به اقدامات اصلاحی تکمیلی توسط مدیر سیستم داشته باشد، fsck.ext2 شرح مشکل را چاپ کرده و سپس با مقدار ۴ که با کد خروجی عملیات OR بیتی شده خارج میشود (بخش کدهای بازگشتی را ببینید). این گزینه معمولاً توسط اسکریپتهای بوت سیستم استفاده میشود. این گزینه نمیتواند همزمان با گزینههای -n یا -y مشخص شود.
- -r
- این گزینه اصلاً هیچ کاری انجام نمیدهد؛ این گزینه تنها برای سازگاری با نسخههای پیشین در نظر گرفته شده است.
- -t
- چاپ آمار زمانبندی برای fsck.ext2. اگر این گزینه دو بار استفاده شود، آمار زمانبندی اضافی بر اساس هر مرحله (pass) چاپ میشود.
- -v
- حالت پرحرف (verbose).
- -V
- چاپ اطلاعات نگارش و خروج.
- -y
- فرض پاسخ «yes» (بله) به تمام سؤالات؛ به fsck.ext2 اجازه میدهد بهصورت غیرتعاملی استفاده شود. این گزینه نمیتواند همزمان با گزینههای -n یا -p مشخص شود.
- -z فایل_لغو
- پیش از رونویسی یک بلاک سیستمفایل، محتویات قدیمی بلاک را در یک فایل لغو (undo file) مینویسد. از این فایل لغو میتوان با e2undo(8) استفاده کرد تا در صورت بروز مشکل، محتویات قدیمی سیستمفایل را بازیابی کند. اگر یک رشته خالی بهعنوان آرگومان فایل_لغو ارسال شود، فایل لغو در فایلی به نام fsck.ext2-دستگاه.e2undo در دایرکتوری مشخصشده از طریق متغیر محیطی E2FSPROGS_UNDO_DIR نوشته خواهد شد.
هشدار: فایل لغو نمیتواند برای بازیابی پس از قطع برق یا خرابی ناگهانی سیستم (system crash) استفاده شود.
کدهای بازگشتی (EXIT CODE)
کد خروجی
بازگرداندهشده
توسط fsck.ext2
مجموع
شرایط زیر
است:
0 - بدون خطا
1 - خطاهای
سیستمفایل
تصحیح شدند
2 - خطاهای
سیستمفایل
تصحیح
شدند،
سیستم باید
راهاندازی
مجدد (reboot) شود
4 - خطاهای
سیستمفایل
بدون تصحیح
رها شدند
8 - خطای
عملیاتی
16 - خطای نحوی
یا خطای
استفاده از
دستور
32 - اجرای fsck.ext2
با درخواست
کاربر لغو
شد
128 - خطای
کتابخانه
اشتراکی
سیگنالها (SIGNALS)
سیگنالهای زیر هنگام ارسال به fsck.ext2 تأثیرات زیر را دارند:
گزارش باگها (REPORTING BUGS)
تقریباً هر نرمافزاری ممکن است دارای باگ باشد. اگر سیستمفایلی پیدا کردید که باعث کرش کردن fsck.ext2 میشود، یا fsck.ext2 قادر به تعمیر آن نیست، لطفاً آن را به نویسنده گزارش دهید.
لطفاً تا حد امکان اطلاعات کاملی را در گزارش باگ خود قرار دهید. در حالت ایدهآل، یک رونوشت کامل از اجرای fsck.ext2 را ضمیمه کنید تا نویسنده بتواند دقیقاً ببیند چه پیامهای خطایی نمایش داده شدهاند. (اطمینان حاصل کنید پیامهای چاپشده توسط fsck.ext2 به زبان انگلیسی باشند؛ اگر سیستم شما طوری تنظیم شده است که پیامهای fsck.ext2 به زبان دیگری ترجمه شدهاند، لطفاً متغیر محیطی LC_ALL را روی C تنظیم کنید تا رونوشت خروجی fsck.ext2 برای من مفید باشد.) اگر سیستمفایلی با قابلیت نوشتن دارید که رونوشت میتواند در آن ذخیره شود، برنامه script(1) روشی سودمند برای ذخیره خروجی fsck.ext2 در یک فایل است.
ارسال خروجی dumpe2fs(8) نیز مفید است. اگر به نظر میرسد یک اینود خاص یا اینودهایی برای fsck.ext2 مشکل ایجاد کردهاند، دستور debugfs(8) را اجرا کنید و خروجی دستور stat(1u) را که بر روی اینود(های) مربوطه اجرا شده ارسال نمایید. اگر اینود یک دایرکتوری است، دستور dump در debugfs به شما اجازه میدهد محتویات اینود دایرکتوری را استخراج کنید که میتوان آن را پس از تبدیل با uuencode(1) ارسال کرد. مفیدترین دادهای که میتوانید برای کمک به بازتولید باگ ارسال کنید، یک ایمیج خام فشردهشده از سیستمفایل است که با استفاده از e2image(8) تولید شده باشد. برای جزئیات بیشتر صفحه راهنمای e2image(8) را ببینید.
همیشه رشته کامل نگارش (version) را که fsck.ext2 هنگام اجرا نمایش میدهد ضمیمه کنید تا مشخص باشد از کدام نسخه استفاده میکنید.
متغیرهای محیطی (ENVIRONMENT)
- E2FSCK_CONFIG
- محل فایل پیکربندی را تعیین میکند (صفحه راهنمای e2fsck.conf(5) را ببینید).
نویسنده (AUTHOR)
این نسخه از fsck.ext2 توسط Theodore Ts'o <tytso@mit.edu> نوشته شده است.
همچنین ببینید (SEE ALSO)
e2fsck(8), e2fsck.conf(5), badblocks(8), dumpe2fs(8), debugfs(8), e2image(8), mke2fs(8), tune2fs(8)
| مه ۲۰۲۵ | e2fsprogs |