FSCK.EXT3(8) دستورهای مدیریتی و نگهداری FSCK.EXT3(8)

fsck.ext3 - بررسی و تعمیر سیستمفایل ژورنالدار ext3 لینوکس

fsck.ext3 [ -pacnydfvktDFV ] [ -b سوپربلاک ] [ -B اندازه_بلاک ] [ -l|-L فایل_بلاکهای_خراب ] [ -C توصیفگر ] [ -j دستگاه_ژورنال ] [ -E گزینههای_پیشرفته ] [ -z فایل_لغو ] دستگاه

دستور fsck.ext3 برای بررسی و تعمیر سیستمفایلهای لینوکسی ژورنالدار ext3 استفاده میشود. اگر سیستم بدون بروز هیچ خطایی به‌طور غیرعادی (unclean) خاموش شده باشد، معمولاً پس از بازپخش تراکنش‌های ثبت‌شده در ژورنال، سیستم‌فایل باید به‌عنوان تمیز (clean) علامت‌گذاری شود. بنابراین، برای سیستم‌فایل‌هایی که از ژورنال‌سازی استفاده می‌کنند، fsck.ext3 به‌طور معمول ژورنال را بازپخش کرده و خارج می‌شود، مگر اینکه سوپربلاک آن نشان دهد که بررسی‌های بیشتری مورد نیاز است.

دستگاه یک دستگاه بلاکی (مانند /dev/sdc1) یا فایلی حاوی سیستم‌فایل است.

توجه داشته باشید که به‌طور کلی اجرای fsck.ext3 روی سیستم‌فایل‌های مانت‌شده (سوارشده) امن نیست. تنها استثنا زمانی است که گزینه -n مشخص شده باشد و گزینه‌های -c، -l یا -L مشخص نشده باشند. با این حال، حتی در صورتی که انجام این کار امن باشد، نتایج نمایش‌داده‌شده توسط fsck.ext3 در صورت مانت بودن سیستم‌فایل معتبر نخواهند بود. اگر fsck.ext3 سؤال کند که آیا سیستم‌فایل مانت‌شده بررسی شود یا خیر، تنها پاسخ صحیح «no» (خیر) است. تنها متخصصانی که دقیقاً می‌دانند چه می‌کنند باید پاسخی غیر از این بدهند.

اگر fsck.ext3 در حالت تعاملی اجرا شود (به این معنی که هیچ‌یک از گزینه‌های -y، -n یا -p مشخص نشده باشند)، برنامه برای رفع هر مشکل یافت‌شده در سیستم‌فایل از کاربر سؤال خواهد کرد. پاسخ «y» خطا را برطرف می‌کند؛ «n» خطا را بدون تغییر رها می‌کند؛ و «a» مشکل فعلی و تمام مشکلات بعدی را برطرف خواهد کرد؛ فشردن کلید Enter با پاسخ پیش‌فرضی که پیش از علامت سؤال درج شده ادامه می‌دهد. فشردن Control-C بلافاصله fsck.ext3 را متوقف می‌کند.

این گزینه همان عملکرد گزینه -p را دارد. این گزینه صرفاً برای سازگاری با نسخه‌های پیشین ارائه شده است و پیشنهاد می‌شود کاربران تا حد امکان از گزینه -p استفاده کنند.
به‌جای استفاده از سوپربلاک معمولی، از یک سوپربلاک جایگزین که توسط سوپربلاک مشخص شده است استفاده می‌کند. این گزینه معمولاً زمانی به کار می‌رود که سوپربلاک اصلی آسیب دیده باشد. مکان سوپربلاک‌های پشتیبان به اندازه بلاک سیستم‌فایل، تعداد بلاک‌ها در هر گروه، و ویژگی‌هایی مانند sparse_super بستگی دارد.
سوپربلاک‌های پشتیبان اضافی را می‌توان با استفاده از برنامه mke2fs و گزینه -n آن برای چاپ مکان قرارگیری سوپربلاک‌ها تعیین کرد، به شرطی که به mke2fs آرگومان‌هایی داده شود که با ساختار سیستم‌فایل سازگار باشند (مانند اندازه بلاک، بلاک‌ها در هر گروه، sparse_super و غیره).
اگر سوپربلاک جایگزینی مشخص شده باشد و سیستم‌فایل به‌صورت فقط‌خواندنی باز نشده باشد، fsck.ext3 اطمینان حاصل خواهد کرد که پس از اتمام بررسی سیستم‌فایل، سوپربلاک اصلی به شکل مناسب به‌روزرسانی شود.
به‌طور معمول، fsck.ext3 سوپربلاک را در اندازه‌های بلاک مختلف جستجو می‌کند تا اندازه بلاک مناسب را پیدا کند. این جستجو ممکن است در برخی موارد دچار اشتباه شود. این گزینه fsck.ext3 را مجبور می‌کند که فقط تلاش کند سوپربلاک را در اندازه بلاک مشخص‌شده پیدا کند. اگر سوپربلاک پیدا نشود، fsck.ext3 با یک خطای مهلک متوقف می‌شود.
این گزینه باعث می‌شود که fsck.ext3 از برنامه badblocks(8) برای انجام یک اسکن فقط‌خواندنی از دستگاه به‌منظور یافتن بلاک‌های خراب (bad blocks) استفاده کند. در صورت یافتن بلاک‌های خراب، آن‌ها به اینود بلاک‌های خراب اضافه می‌شوند تا از اختصاص داده شدن آن‌ها به فایل یا دایرکتوری جلوگیری شود. اگر این گزینه دو بار مشخص شود، اسکن بلاک‌های خراب با استفاده از یک آزمون خواندن/نوشتن غیرمخرب انجام خواهد شد.
این گزینه باعث می‌شود که fsck.ext3 اطلاعات پیشرفت کار را در توصیفگر فایل (file descriptor) مشخص‌شده بنویسد تا بتوان روند پیشرفت بررسی سیستم‌فایل را رصد کرد. این گزینه معمولاً توسط برنامه‌هایی استفاده می‌شود که fsck.ext3 را اجرا می‌کنند. اگر شماره توصیفگر فایل منفی باشد، از مقدار مطلق توصیفگر فایل استفاده می‌شود و ارسال اطلاعات پیشرفت در ابتدا متوقف می‌ماند؛ بعداً می‌توان با ارسال سیگنال SIGUSR1 به فرآیند fsck.ext3 آن را فعال کرد. اگر توصیفگر فایل برابر 0 باشد، fsck.ext3 در حین انجام کار یک نوار پیشرفت چاپ می‌کند. این کار مستلزم آن است که fsck.ext3 روی یک کنسول ویدیویی یا ترمینال اجرا شود.
چاپ خروجی اشکال‌زدایی (بدون استفاده مگر اینکه در حال اشکال‌زدایی fsck.ext3 باشید).
بهینه‌سازی دایرکتوری‌ها در سیستم‌فایل. این گزینه باعث می‌شود fsck.ext3 تلاش کند تمام دایرکتوری‌ها را بهینه‌سازی کند؛ چه از طریق نمایه‌سازی مجدد در صورتی که سیستم‌فایل از نمایه دایرکتوری پشتیبانی کند، و چه از طریق مرتب‌سازی و فشرده‌سازی دایرکتوری‌ها برای دایرکتوری‌های کوچک‌تر، یا برای سیستم‌فایل‌هایی که از دایرکتوری‌های خطی سنتی استفاده می‌کنند.
حتی بدون گزینه -D، دستور fsck.ext3 ممکن است گاهی برخی از دایرکتوری‌ها را بهینه‌سازی کند — برای مثال اگر نمایه‌سازی دایرکتوری فعال باشد و یک دایرکتوری نمایه‌سازی نشده باشد و نمایه‌سازی برای آن مفید باشد، یا اگر ساختارهای نمایه آسیب دیده باشند و نیاز به بازسازی داشته باشند. گزینه -D تمام دایرکتوری‌های سیستم‌فایل را وادار به بهینه‌سازی می‌کند. این کار گاهی اوقات می‌تواند آن‌ها را کمی کوچک‌تر کرده و جستجو در آن‌ها را اندکی سریع‌تر کند، اما در عمل به ندرت نیاز به استفاده از این گزینه خواهید داشت.
گزینه -D ورودی‌های دایرکتوری با نام‌های تکراری را در یک دایرکتوری واحد شناسایی می‌کند؛ چیزی که fsck.ext3 معمولاً به دلایل کارایی بررسی نمی‌کند.
تنظیم گزینه‌های پیشرفته fsck.ext3. گزینه‌های پیشرفته با کاما از هم جدا می‌شوند و ممکن است با استفاده از علامت مساوی ('=') آرگومان دریافت کنند. گزینه‌های زیر پشتیبانی می‌شوند:
تنظیم نسخه بلاک‌های ویژگی گسترش‌یافته (extended attribute) که fsck.ext3 هنگام بررسی سیستم‌فایل به آن نیاز خواهد داشت. شماره نسخه می‌تواند ۱ یا ۲ باشد. قالب پیش‌فرض نسخه ویژگی‌های گسترش‌یافته ۲ است.
تنها در صورت نیاز، ژورنال را بازپخش می‌کند، اما هیچ بررسی یا تعمیر دیگری را انجام نمی‌دهد.
در طول مرحله ۱ (pass 1)، یک گزارش دقیق از هرگونه بلاک ناپیوسته برای فایل‌های موجود در سیستم‌فایل چاپ می‌کند.
تلاش برای آزادسازی (discard / TRIM) بلاک‌های آزاد و بلاک‌های اینود استفاده‌نشده پس از اتمام کامل بررسی سیستم‌فایل (دور انداختن یا آزادسازی بلاک‌ها در حافظه‌های حالت جامد SSD و حافظه‌های کم‌پشت یا thin-provisioned سودمند است). توجه داشته باشید که آزادسازی در مرحله ۵ و پس از بررسی کامل سیستم‌فایل و تنها در صورتی انجام می‌شود که حاوی خطاهای قابل شناسایی نباشد. با این حال، ممکن است مواردی وجود داشته باشد که fsck.ext3 مشکل را به‌طور کامل شناسایی نکرده باشد و بنابراین در این حالت این گزینه ممکن است شما را از بازیابی دستی داده‌ها در مراحل بعدی باز دارد.
تلاش برای آزادسازی بلاک‌های آزاد و بلاک‌های اینود استفاده‌نشده را انجام نمی‌دهد. این گزینه دقیقاً برعکس گزینه discard است و به‌صورت پیش‌فرض تنظیم شده است.
پیشنهاد بهینه‌سازی درخت اکستنت (extent tree) از طریق حذف عرض یا عمق غیرضروری را ارائه نمی‌دهد. این مورد را می‌توان در بخش گزینه‌های فایل /etc/e2fsck.conf نیز فعال کرد.
پیشنهاد بهینه‌سازی درخت اکستنت را از طریق حذف عرض یا عمق غیرضروری ارائه می‌دهد. این حالت پیش‌فرض است مگر اینکه در /etc/e2fsck.conf به‌گونه دیگری مشخص شده باشد.
فدا کردن حافظه برای سرعت در هنگام بررسی یک سیستم‌فایل با تعداد زیادی فایل دارای پیوند سخت (hard-linked). مقدار حافظه مورد نیاز متناسب با تعداد اینودهای موجود در سیستم‌فایل است. برای سیستم‌فایل‌های بزرگ، این مقدار می‌تواند چندین گیگابایت حافظه باشد. (به‌عنوان مثال، یک سیستم‌فایل ۴۰ ترابایتی با ۲٫۸ میلیارد اینود در صورت فعال بودن این بهینه‌سازی، ۵٫۷ گیگابایت حافظه اضافی مصرف خواهد کرد.) این بهینه‌سازی را می‌توان در بخش گزینه‌های /etc/e2fsck.conf نیز فعال کرد.
غیرفعال کردن بهینه‌سازی inode_count_fullmap. این حالت پیش‌فرض است مگر اینکه در /etc/e2fsck.conf به‌گونه دیگری مشخص شده باشد.
استفاده از این مقدار حافظه (بر حسب کیلوبایت) برای پیش‌واکشی (pre-fetch) متادیتا به امید کاهش زمان اجرای fsck.ext3. به‌طور پیش‌فرض، این مقدار برابر با اندازه جدول‌های اینود دو گروه بلاک تنظیم شده است (معمولاً ۴ مگابایت در یک سیستم‌فایل معمولی ext4)؛ اگر این مقدار بیش از ۱/۵۰ کل حافظه فیزیکی باشد، پیش‌واکشی غیرفعال می‌شود. برای غیرفعال کردن کامل پیش‌واکشی، مقدار آن را صفر قرار دهید.
تبدیل فایل‌های دارای نقشه‌برداری بلاکی (block-mapped) به فایل‌های دارای نقشه‌برداری اکستنت (extent-mapped).
فقط متادیتای آسیب‌دیده را تعمیر می‌کند؛ دایرکتوری‌های htree را بهینه‌سازی نمی‌کند و درخت‌های اکستنت را فشرده نمی‌سازد. این گزینه با گزینه‌های -D و -E bmap2extent ناسازگار است.
اجبار به اعتبارسنجی نام‌های فایل کدگذاری‌شده در دایرکتوری‌های حساس نبودن به حروف کوچک و بزرگ (case-insensitive). اگر فلگ strict در سیستم‌فایل فعال باشد، این حالت پیش‌فرض است.
اگر سیستم‌فایل دارای بلاک‌های اشتراکی باشد و ویژگی فقط‌خواندنی بلاک‌های اشتراکی فعال باشد، تمام بلاک‌های اشتراکی را غیراشتراکی (unshare) کرده و بیت ویژگی فقط‌خواندنی را غیرفعال می‌کند. اگر فضای خالی کافی وجود نداشته باشد، عملیات با شکست مواجه خواهد شد. اگر سیستم‌فایل بیت ویژگی فقط‌خواندنی را نداشته باشد اما به هر حال دارای بلاک‌های اشتراکی باشد، این گزینه هیچ تاثیری نخواهد داشت. توجه داشته باشید هنگام استفاده از این گزینه، اگر فضای خالی برای شبیه‌سازی (clone) بلاک‌ها وجود نداشته باشد، اعلانی برای حذف فایل‌ها ارائه نمی‌شود و در عوض عملیات با شکست مواجه خواهد شد.
توجه داشته باشید که unshare_blocks به معنای اعمال گزینه -f نیز هست تا اطمینان حاصل شود که تمام مراحل بررسی اجرا می‌شوند. علاوه بر این، اگر -n نیز مشخص شده باشد، fsck.ext3 تلاش برای اختصاص فضای کافی جهت یکتا‌سازی داده‌ها (deduplicate) را شبیه‌سازی می‌کند. در صورت عدم موفقیت، کد خروجی غیرصفر خواهد بود.
اجبار به بررسی سیستم‌فایل حتی اگر به نظر برسد سیستم‌فایل تمیز (clean) است.
تخلیه حافظه‌های میانگیر (buffer caches) دستگاه سیستم‌فایل پیش از شروع. این گزینه تنها برای سنجش‌های زمانی و آزمون‌های سرعت fsck.ext3 کاربرد دارد.
تعیین مسیر فایلی که ژورنال خارجی (external-journal) برای این سیستم‌فایل در آن یافت می‌شود.
هنگامی که با گزینه -c ترکیب شود، هرگونه بلاک خراب موجود در لیست بلاک‌های خراب حفظ می‌شود و هر بلاک خراب جدیدی که با اجرای برنامه badblocks(8) یافت شود به لیست موجود بلاک‌های خراب اضافه خواهد شد.
شماره بلاک‌های فهرست‌شده در فایلی که توسط نام_فایل مشخص شده است را به لیست بلاک‌های خراب اضافه می‌کند. قالب این فایل همانند خروجی تولیدشده توسط برنامه badblocks(8) است. توجه داشته باشید که شماره بلاک‌ها بر اساس اندازه بلاک سیستم‌فایل هستند؛ بنابراین، برای به دست آوردن نتایج صحیح باید اندازه بلاک سیستم‌فایل به برنامه badblocks(8) داده شود. در نتیجه، استفاده از گزینه -c در fsck.ext3 بسیار ساده‌تر و ایمن‌تر است، زیرا اطمینان حاصل می‌کند که پارامترهای صحیح به برنامه badblocks ارسال می‌شوند.
تنظیم لیست بلاک‌های خراب بر اساس لیست بلاک‌های مشخص‌شده در نام_فایل. (این گزینه مشابه گزینه -l است، با این تفاوت که پیش از اضافه شدن بلاک‌های فهرست‌شده در فایل، لیست بلاک‌های خراب پاک می‌شود.)
سیستم‌فایل را به‌صورت فقط‌خواندنی باز می‌کند و برای تمام سؤالات پاسخ «no» (خیر) را در نظر می‌گیرد. این گزینه اجازه می‌دهد fsck.ext3 به‌صورت غیرتعاملی استفاده شود. این گزینه نمی‌تواند همزمان با گزینه‌های -p یا -y مشخص شود.
تعمیر خودکار («preen») سیستم‌فایل. این گزینه باعث می‌شود fsck.ext3 به‌طور خودکار هرگونه مشکل سیستم‌فایل را که می‌تواند بدون مداخله انسان به‌طور ایمن برطرف شود تعمیر کند. اگر fsck.ext3 مشکلی را کشف کند که ممکن است نیاز به اقدامات اصلاحی تکمیلی توسط مدیر سیستم داشته باشد، fsck.ext3 شرح مشکل را چاپ کرده و سپس با مقدار ۴ که با کد خروجی عملیات OR بیتی شده خارج می‌شود (بخش کدهای بازگشتی را ببینید). این گزینه معمولاً توسط اسکریپت‌های بوت سیستم استفاده می‌شود. این گزینه نمی‌تواند همزمان با گزینه‌های -n یا -y مشخص شود.
این گزینه اصلاً هیچ کاری انجام نمی‌دهد؛ این گزینه تنها برای سازگاری با نسخه‌های پیشین در نظر گرفته شده است.
چاپ آمار زمان‌بندی برای fsck.ext3. اگر این گزینه دو بار استفاده شود، آمار زمان‌بندی اضافی بر اساس هر مرحله (pass) چاپ می‌شود.
حالت پرحرف (verbose).
چاپ اطلاعات نگارش و خروج.
فرض پاسخ «yes» (بله) به تمام سؤالات؛ به fsck.ext3 اجازه می‌دهد به‌صورت غیرتعاملی استفاده شود. این گزینه نمی‌تواند همزمان با گزینه‌های -n یا -p مشخص شود.
پیش از رونویسی یک بلاک سیستم‌فایل، محتویات قدیمی بلاک را در یک فایل لغو (undo file) می‌نویسد. از این فایل لغو می‌توان با e2undo(8) استفاده کرد تا در صورت بروز مشکل، محتویات قدیمی سیستم‌فایل را بازیابی کند. اگر یک رشته خالی به‌عنوان آرگومان فایل_لغو ارسال شود، فایل لغو در فایلی به نام e2fsck-دستگاه.e2undo در دایرکتوری مشخص‌شده از طریق متغیر محیطی E2FSPROGS_UNDO_DIR نوشته خواهد شد.

هشدار: فایل لغو نمی‌تواند برای بازیابی پس از قطع برق یا خرابی ناگهانی سیستم (system crash) استفاده شود.

کد خروجی بازگردانده‌شده توسط fsck.ext3 مجموع شرایط زیر است:
0 - بدون خطا
1 - خطاهای سیستم‌فایل تصحیح شدند
2 - خطاهای سیستم‌فایل تصحیح شدند، سیستم باید
  راه‌اندازی مجدد (reboot) شود
4 - خطاهای سیستم‌فایل بدون تصحیح رها شدند
8 - خطای عملیاتی
16 - خطای نحوی یا خطای استفاده از دستور
32 - اجرای fsck.ext3 با درخواست کاربر لغو شد
128 - خطای کتابخانه اشتراکی

سیگنال‌های زیر هنگام ارسال به fsck.ext3 تأثیرات زیر را دارند:

این سیگنال باعث می‌شود fsck.ext3 شروع به نمایش نوار پیشرفت یا انتشار اطلاعات پیشرفت کند (توضیحات گزینه -C را ببینید).
این سیگنال باعث می‌شود fsck.ext3 نمایش نوار پیشرفت یا انتشار اطلاعات پیشرفت را متوقف کند.

تقریباً هر نرم‌افزاری ممکن است دارای باگ باشد. اگر سیستم‌فایلی پیدا کردید که باعث کرش کردن fsck.ext3 می‌شود، یا fsck.ext3 قادر به تعمیر آن نیست، لطفاً آن را به نویسنده گزارش دهید.

لطفاً تا حد امکان اطلاعات کاملی را در گزارش باگ خود قرار دهید. در حالت ایده‌آل، یک رونوشت کامل از اجرای fsck.ext3 را ضمیمه کنید تا نویسنده بتواند دقیقاً ببیند چه پیام‌های خطایی نمایش داده شده‌اند. (اطمینان حاصل کنید پیام‌های چاپ‌شده توسط fsck.ext3 به زبان انگلیسی باشند؛ اگر سیستم شما طوری تنظیم شده است که پیام‌های fsck.ext3 به زبان دیگری ترجمه شده‌اند، لطفاً متغیر محیطی LC_ALL را روی C تنظیم کنید تا رونوشت خروجی fsck.ext3 برای من مفید باشد.) اگر سیستم‌فایلی با قابلیت نوشتن دارید که رونوشت می‌تواند در آن ذخیره شود، برنامه script(1) روشی سودمند برای ذخیره خروجی fsck.ext3 در یک فایل است.

ارسال خروجی dumpe2fs(8) نیز مفید است. اگر به نظر می‌رسد یک اینود خاص یا اینودهایی برای fsck.ext3 مشکل ایجاد کرده‌اند، دستور debugfs(8) را اجرا کنید و خروجی دستور stat(1u) را که بر روی اینود(های) مربوطه اجرا شده ارسال نمایید. اگر اینود یک دایرکتوری است، دستور dump در debugfs به شما اجازه می‌دهد محتویات اینود دایرکتوری را استخراج کنید که می‌توان آن را پس از تبدیل با uuencode(1) ارسال کرد. مفیدترین داده‌ای که می‌توانید برای کمک به بازتولید باگ ارسال کنید، یک ایمیج خام فشرده‌شده از سیستم‌فایل است که با استفاده از e2image(8) تولید شده باشد. برای جزئیات بیشتر صفحه راهنمای e2image(8) را ببینید.

همیشه رشته کامل نگارش (version) را که fsck.ext3 هنگام اجرا نمایش می‌دهد ضمیمه کنید تا مشخص باشد از کدام نسخه استفاده می‌کنید.

محل فایل پیکربندی را تعیین می‌کند (صفحه راهنمای e2fsck.conf(5) را ببینید).

این نسخه از fsck.ext3 توسط Theodore Ts'o <tytso@mit.edu> نوشته شده است.

e2fsck(8), fsck(8), e2fsck.conf(5), badblocks(8), dumpe2fs(8), debugfs(8), e2image(8), mke2fs(8), tune2fs(8)

مه ۲۰۲۵ e2fsprogs