.\" -*- nroff -*- .TH "E2FSCK.CONF" "5" "مه ۲۰۲۵" "e2fsprogs" "فایلهای پیکربندی" .SH "نام (NAME)" e2fsck.conf \- فایل پیکربندی برای ابزار بررسی سیستمفایل e2fsck .SH "توضیحات (DESCRIPTION)" فایل \fIe2fsck.conf\fR رفتارهای پیشفرض دستور \fBe2fsck\fR را هنگام بررسی یا تعمیر سیستمفایلهای خانواده ext تنظیم میکند. .PP فایل .I e2fsck.conf از قالبی شبیه به INI استفاده می‌کند. بخش‌ها یا بندهای سطح بالا (stanzas) با قلاب‌ها مشخص می‌شوند: [ ]. در داخل هر بخش، هر خط یک رابطه را تعریف می‌کند که برچسب‌ها را به مقادیر اختصاص می‌دهد، یا یک زیربخش را مشخص می‌کند که خود شامل روابط یا زیربخش‌های بیشتری است. .PP نمونه‌ای از قالب به سبک INI که در این فایل پیکربندی استفاده می‌شود در زیر آمده است: .P .nf [section1] tag1 = value_a tag1 = value_b tag2 = value_c [section 2] tag3 = { subtag1 = subtag_value_a subtag1 = subtag_value_b subtag2 = subtag_value_c } tag1 = value_d tag2 = value_e } .fi .P توضیحات (کامنت‌ها) با کاراکتر نقطه‌ویرگول (';') یا هش ('#') در ابتدای خط مشخص می‌شوند و با کاراکتر پایان خط خاتمه می‌یابند. .P برچسب‌ها و مقادیر در صورتی که حاوی فاصله باشند باید درون گیومه دوتایی قرار گیرند. در یک رشته درون گیومه، تفسیرهای استاندارد بک‌اسلش اعمال می‌شوند: "\en" (برای کاراکتر خط جدید)، "\et" (برای کاراکتر تب)، "\eb" (برای کاراکتر فاصله‌برگردان یا backspace) و "\e\e" (برای کاراکتر بک‌اسلش). .P بخش‌های زیر در فایل .I e2fsck.conf استفاده می‌شوند. این موارد با جزئیات بیشتر در بخش‌های بعدی این سند شرح داده خواهند شد: .TP .I [options] این بخش شامل پارامترهای پیکربندی عمومی برای رفتار .BR e2fsck است. .TP .I [defaults] شامل روابطی است که پارامترهای پیش‌فرض مورد استفاده توسط .BR e2fsck (8) را تعریف می‌کنند. به‌طور کلی، این پیش‌فرض‌ها را می‌توان توسط گزینه‌های خط فرمان ارائه‌شده توسط کاربر لغو کرد. .TP .I [problems] این بخش به مدیر سیستم اجازه می‌دهد نحوه مدیریت ناهمخوانی‌های مختلف سیستم‌فایل توسط e2fsck را دوباره پیکربندی کند. .TP .I [scratch_files] این بخش زمان تلاش e2fsck برای استفاده از فایل‌های موقت به منظور کاهش نیاز به حافظه را کنترل می‌کند. .SH "بخش [options] (THE [options] STANZA)" روابط زیر در بخش .I [options] تعریف شده‌اند: .TP .I allow_cancellation اگر این رابطه روی مقدار بولی true تنظیم شود، در صورتی که کاربر با کلیدهای ترکیبی ^C اجرای e2fsck را متوقف کند و سیستم‌فایل به صورت صریح حاوی خطا علامت‌گذاری نشده باشد، e2fsck با وضعیت خروج ۰ به‌جای ۳۲ خارج می‌شود. مقدار پیش‌فرض این تنظیم false است. .TP .I accept_time_fudge متأسفانه به دلیل تصمیم طراحی نادرست در ویندوز مبنی بر تنظیم ساعت سخت‌افزاری بر اساس ساعت محلی (localtime) به‌جای ساعت مناسب‌تر و کم‌خطاتر UTC، بسیاری از کاربران در شرایطی قرار می‌گیرند که ساعت سیستم هنگام اجرای e2fsck به نادرستی تنظیم شده است. .IP از نظر تاریخی، این موضوع معمولاً به دلیل وجود اسکریپت‌های راه‌اندازی (init) یا نصاب‌های دارای باگ در برخی توزیع‌ها رخ می‌داد که این وضعیت را به درستی شناسایی نکرده و تدابیر متقابل مناسب را اتخاذ نمی‌کردند. متأسفانه این مورد حتی امروزه نیز گهگاه رخ می‌دهد، معمولاً به دلیل یک مدیر مجازی‌سازی دارای نقص یا با پیکربندی نادرست، یا عدم دسترسی نصاب به سرور زمان شبکه در طول فرایند نصب. بنابراین، به‌طور پیش‌فرض، ما اجازه می‌دهیم زمان‌های ابربلوک (superblock) تا حداکثر ۲۴ ساعت نادیده گرفته و دستکاری (fudge) شوند. این رفتار را می‌توان با تنظیم .I accept_time_fudge روی مقدار بولی false غیرفعال کرد. مقدار پیش‌فرض این تنظیم true است. .TP .I broken_system_clock برنامه .BR e2fsck (8) دارای روش‌های اکتشافی است که فرض می‌کنند ساعت سیستم درست کار می‌کند. علاوه بر این، بسیاری از برنامه‌های سیستمی فرضیات مشابهی دارند. برای نمونه، کتابخانه UUID وابسته به این است که زمان به عقب برنگردد تا بتواند شناسه منحصربه‌فرد جهانی (UUID) تضمین‌شده صادر کند. سیستم‌های دارای ساعت خراب، مسلماً خراب کار می‌کنند! با این حال، ساعت‌های سیستمی خراب، به ویژه در سیستم‌های تعبیه‌شده (embedded)، وجود دارند. برنامه e2fsck تلاش می‌کند با استفاده از روش‌های اکتشافی تشخیص دهد که آیا زمان قابل اعتماد نیست یا خیر؛ و در صورت غیرقابل اعتماد بودن، از بررسی‌های مبتنی بر زمان صرف‌نظر کند. اگر این مقدار بولی روی true تنظیم شود، e2fsck همیشه فرض می‌کند که به ساعت سیستم نمی‌توان اعتماد کرد. .TP .I buggy_init_scripts این رابطه بولی نام مستعاری برای .I accept_time_fudge جهت سازگاری با نسخه‌های پیشین است؛ در گذشته رفتار تعریف‌شده توسط .I accept_time_fudge به‌طور پیش‌فرض false بود و .I buggy_init_scripts اجازه می‌داد فیلد زمان ابربلوک تا ۲۴ ساعت نادرست باشد. هنگامی که مقدار پیش‌فرض تغییر یافت، نام این رابطه بولی نیز به .IR accept_time_fudge تغییر پیدا کرد. .TP .I clear_test_fs_flag این رابطه بولی کنترل می‌کند که آیا .BR e2fsck (8) در صورت در دسترس بودن سیستم‌فایل ext4 روی سیستم، پیشنهاد پاک کردن پرچم test_fs را بدهد یا خیر. مقدار پیش‌فرض آن true است. .TP .I defer_check_on_battery این رابطه بولی کنترل می‌کند که در صورت کارکرد سیستم روی باتری، آیا بازه زمانی بین بررسی‌های سیستم‌فایل (چه بر اساس زمان و چه بر اساس تعداد سوار کردن‌ها) دو برابر شود یا خیر. مقدار پیش‌فرض این تنظیم true است. .TP .I indexed_dir_slack_percentage هنگامی که .BR e2fsck (8) یک دایرکتوری نمایه‌گذاری‌شده (indexed directory) را مجدداً بسته‌بندی (repack) می‌کند، درصد فضای خالی مشخص‌شده‌ای را در هر گره برگ (leaf node) رزرو می‌کند تا مدخل‌های جدید بدون نیاز به تقسیم شدن گره‌های برگ به دایرکتوری اضافه شوند، تا میانگین نسبت پر بودن دایرکتوری‌ها در سطح بالاتر و کارآمدتری حفظ شود. مقدار پیش‌فرض این رابطه ۲۰ درصد است. .TP .I inode_count_fullmap اگر این رابطه بولی روی true باشد، هنگام بررسی سیستم‌فایلی با تعداد زیادی فایل دارای پیوند سخت (hard-linked)، سرعت را در ازای مصرف حافظه بیشتر ترجیح می‌دهد. میزان حافظه مورد نیاز متناسب با تعداد آی‌نودها در سیستم‌فایل است. برای سیستم‌فایل‌های بزرگ، این مقدار می‌تواند چندین گیگابایت حافظه باشد. (برای نمونه، یک سیستم‌فایل ۴۰ ترابایتی با ۲٫۸ میلیارد آی‌نود در صورت فعال بودن این بهینه‌سازی، حدود ۵٫۷ گیگابایت حافظه اضافی مصرف خواهد کرد.) مقدار پیش‌فرض این تنظیم false است. .TP .I log_dir اگر روابط .I log_filename یا .I problem_log_filename حاوی یک مسیر نسبی باشند، فایل گزارش در دایرکتوری مشخص‌شده توسط رابطه .I log_dir قرار خواهد گرفت. .TP .I log_dir_fallback این رابطه حاوی دایرکتوری جایگزینی است که در صورت در دسترس نبودن یا غیرقابل نوشتن بودن دایرکتوری مشخص‌شده در .IR log_dir ، استفاده خواهد شد. .TP .I log_dir_wait اگر این رابطه بولی روی true تنظیم شود، در صورتی که دایرکتوری‌های مشخص‌شده توسط .I log_dir یا .I log_dir_fallback در دسترس نبوده یا هنوز قابل نوشتن نباشند، e2fsck خروجی را در یک بافر حافظه ذخیره می‌کند و یک فرایند فرزند به‌صورت دوره‌ای بررسی می‌کند تا ببیند آیا دایرکتوری گزارش پس از این‌که توالی بوت سیستم‌فایل مورد نظر را به‌صورت خواندن/نوشتن سوار کرد، در دسترس قرار گرفته است یا خیر. این قابلیت، رفتاری مشابه با عملکرد ارائه‌شده توسط .BR logsave (8) برای فایل‌های گزارش e2fsck را پیاده‌سازی می‌کند. .TP .I log_filename این رابطه نام فایلی را مشخص می‌کند که نسخه‌ای از خروجی e2fsck در آن نوشته می‌شود. اگر برخی از گزارش‌های مشکل با استفاده از رابطه .I max_count_problems (یا به‌ازای هر مشکل با رابطه .IR max_count ) سرکوب شده باشند، مجموعه کامل گزارش‌های مشکل در فایل گزارش نوشته خواهد شد. نام فایل می‌تواند حاوی عبارات درصدی گوناگون (%D, %T, %N و غیره) باشد که بسط می‌یابند تا نام فایل گزارش شامل مواردی مانند تاریخ، زمان، نام دستگاه و سایر پارامترهای زمان اجرا شود. برای جزئیات بیشتر به بخش .B "ثبت گزارش (LOGGING)" مراجعه کنید. .TP .I max_count_problems این رابطه حداکثر تعداد گزارش‌های مربوط به یک نوع مشکل خاص را مشخص می‌کند که پیش از متوقف شدن گزارش‌های بعدی آن نوع، در خروجی استاندارد (stdout) چاپ می‌شوند. این قابلیت زمانی مفید است که کنسول کند باشد (مثلاً به یک پورت سریال متصل باشد) و حجم بالای خروجی موجب تأخیر طولانی (حتی ساعت‌ها) در فرایند بوت شود. .TP .I no_optimize_extents اگر این رابطه بولی روی true باشد، پیشنهاد بهینه‌سازی درخت اکستنت (extent tree) از طریق کاهش عرض یا عمق درخت داده نخواهد شد. مقدار پیش‌فرض این تنظیم false است. .TP .I problem_log_filename این رابطه نام فایلی را مشخص می‌کند که گزارشی از کدهای مشکل یافت‌شده توسط e2fsck در آن نوشته می‌شود. نام فایل می‌تواند شامل عبارات درصدی گوناگون (%D, %T, %N و غیره) باشد که برای گنجاندن مواردی نظیر تاریخ، زمان، نام دستگاه و دیگر پارامترهای زمان اجرا بسط پیدا می‌کنند. برای اطلاعات بیشتر بخش .B "ثبت گزارش (LOGGING)" را ببینید. .TP .I readahead_mem_pct استفاده از این درصد حافظه برای خواندن پیش‌دستانه (readahead) بلوک‌های متادیتا جلوتر از ریسه اصلی e2fsck. این کار باید زمان اجرا را بسته به سرعت فضای ذخیره‌سازی زیرین و مقدار حافظه آزاد کاهش دهد. مقدار پیش‌فرضی ندارد، اما برای جزئیات بیشتر به .B readahead_kb مراجعه کنید. .TP .I readahead_kb استفاده از این مقدار حافظه برای خواندن بلوک‌های متادیتا جلوتر از ریسه اصلی بررسی. تنظیم این مقدار روی صفر، خواندن پیش‌دستانه را به‌طور کامل غیرفعال می‌کند. به‌طور پیش‌فرض، این مقدار برابر با اندازه جدول‌های آی‌نود دو گروه بلوک تنظیم شده است (معمولاً ۴ مگابایت در یک سیستم‌فایل معمولی ext4)؛ اگر این مقدار بیش از ۱/۵۰ کل حافظه فیزیکی باشد، خواندن پیش‌دستانه غیرفعال می‌شود. .TP .I report_features اگر این رابطه بولی true باشد، e2fsck ویژگی‌های سیستم‌فایل را به عنوان بخشی از گزارش پرجزئیات خود (یعنی اگر گزینه .B \-v مشخص شده باشد) چاپ خواهد کرد. .TP .I report_time اگر این رابطه بولی true باشد، e2fsck به گونه‌ای اجرا می‌شود که گویی گزینه‌های .B \-tt همیشه مشخص شده‌اند. این امر باعث می‌شود e2fsck در هر مرحله (pass) از بررسی کامل سیستم‌فایل، آمارهای زمانی را چاپ کند. .TP .I report_verbose اگر این رابطه بولی true باشد، e2fsck به گونه‌ای اجرا می‌شود که گویی گزینه .B \-v همیشه مشخص شده است. این امر سبب می‌شود e2fsck در پایان هر بررسی کامل سیستم‌فایل، اطلاعات اضافی چاپ کند. .SH "بخش [defaults] (THE [defaults] STANZA)" روابط زیر در بخش .I [defaults] تعریف شده‌اند: .TP .I undo_dir این رابطه دایرکتوری محل ذخیره فایل لغو (undo) را مشخص می‌کند. این مقدار را می‌توان از طریق متغیر محیطی .B E2FSPROGS_UNDO_DIR بازنویسی کرد. اگر مکان دایرکتوری روی مقدار .IR none تنظیم شود، .B e2fsck فایل لغو ایجاد نخواهد کرد. .SH "بخش [problems] (THE [problems] STANZA)" هر تگ در بخش .I [problems] یک کد مشکل را نام‌گذاری می‌کند که با پیشوند "0x" و به دنبال آن شش رقم هگزادسیمال مشخص می‌شود. مقدار تگ یک زیربخش (subsection) است که در آن، روابط تعریف‌شده رفتار پیش‌فرض مربوط به آن کد مشکل خاص را بازنویسی (override) می‌کنند. .P توجه داشته باشید که تنظیمات نامناسب در این بخش ممکن است باعث شود .B e2fsck رفتار نادرستی نشان دهد یا حتی دچار فروپاشی (crash) شود. اکثر مدیران سیستم نباید بدون مراجعه به کد منبع، تغییراتی در این بخش اعمال کنند. .P درون زیربخش هر کد مشکل، تگ‌های زیر می‌توانند استفاده شوند: .TP .I description این رابطه امکان بازنویسی پیامی را که هنگام تشخیص این ناهمخوانی در سیستم‌فایل چاپ می‌شود فراهم می‌کند. .TP .I preen_ok این رابطه بولی رفتار پیش‌فرضی را بازنویسی می‌کند که مشخص می‌سازد آیا هنگام اجرای .B e2fsck در حالت preen (تعمیر خودکار امن)، این مشکل سیستم‌فایل باید به‌طور خودکار رفع شود یا خیر. .TP .I max_count این رابطه عدد صحیح، پارامتر .I max_count_problems (تنظیم‌شده در بخش options) را برای این مشکل خاص بازنویسی می‌کند. .TP .I no_ok این رابطه بولی رفتار پیش‌فرضی را بازنویسی می‌کند که تعیین می‌نماید اگر کاربر از رفع مشکل گزارش‌شده صرف‌نظر کند، آیا سیستم‌فایل به عنوان ناهمخوان (inconsistent) علامت‌گذاری شود یا خیر. .TP .I no_default این رابطه بولی مشخص می‌کند که آیا پاسخ پیش‌فرض برای این مشکل (یا پرسش) باید "no" باشد یا خیر. .TP .I preen_nomessage این رابطه بولی رفتار پیش‌فرضی را بازنویسی می‌کند که مشخص می‌سازد هنگام اجرای .B e2fsck در حالت preen، آیا توضیحات مربوط به این مشکل سیستم‌فایل فرونشانده (مخفی) شود یا خیر. .TP .I no_nomsg این رابطه بولی رفتار پیش‌فرضی را بازنویسی می‌کند که تعیین می‌کند در شرایطی که مشکل وادار به عدم رفع شده باشد، آیا توضیحات مشکل سیستم‌فایل مخفی شود یا خیر؛ چه به این دلیل که .B e2fsck با گزینه .B \-n اجرا شده باشد و چه به این دلیل که پرچم .I force_no برای آن مشکل تنظیم شده باشد. .TP .I force_no این گزینه بولی، در صورت تنظیم روی true، یک مشکل را وادار می‌سازد که هرگز برطرف نشود. یعنی درست مثل این خواهد بود که کاربر در پاسخ به سؤال «آیا این مشکل رفع شود؟» پاسخ 'no' بدهد. گزینه .I force_no حتی گزینه .B \-y داده‌شده در خط فرمان را نیز (تنها برای همین مشکل خاص) بازنویسی و لغو می‌کند. .TP .I not_a_fix این گزینه بولی، در صورت تنظیم روی true، مشکل را به گونه‌ای علامت‌گذاری می‌کند که اگر کاربر اجازه اعمال تغییر درخواستی را بدهد، به این معنی نیست که سیستم‌فایل مشکلی داشته که اکنون برطرف شده است. این مورد برای درخواست‌های بهینه‌سازی ساختار داده‌های سیستم‌فایل استفاده می‌شود، مانند هرس کردن درخت اکستنت (pruning an extent tree). .SH "بخش [scratch_files] (THE [scratch_files] STANZA)" روابط زیر در بخش .I [scratch_files] تعریف شده‌اند: .TP .I directory اگر دایرکتوری نام‌برده‌شده در این رابطه وجود داشته و قابل نوشتن باشد، e2fsck تلاش خواهد کرد تا به‌جای استفاده از ساختارهای داده در حافظه، از این دایرکتوری برای ذخیره فایل‌های موقت (scratch files) استفاده کند. .TP .I numdirs_threshold اگر این رابطه تنظیم شود، در صورتی که تعداد دایرکتوری‌ها در سیستم‌فایل کمتر از مقدار مشخص‌شده باشد، از ساختارهای داده درون حافظه استفاده خواهد شد. .TP .I dirinfo این رابطه کنترل می‌کند که آیا برای اطلاعات دایرکتوری، از دایرکتوری فایل‌های موقت به‌جای ساختار داده درون حافظه استفاده شود یا خیر. مقدار پیش‌فرض آن true است. .TP .I icount این رابطه کنترل می‌کند که آیا هنگام ردیابی تعداد آی‌نودها، از دایرکتوری فایل‌های موقت به‌جای ساختار داده درون حافظه استفاده شود یا خیر. مقدار پیش‌فرض آن true است. .SH "ثبت گزارش (LOGGING)" برنامه e2fsck این امکان را دارد که اطلاعات مربوط به یک اجرای e2fsck را در یک دایرکتوری ذخیره کند تا مدیر سیستم بتواند خروجی آن را در فرصت مناسب بازبینی نماید. این کار اجازه می‌دهد اطلاعات ثبت‌شده در طول اجرای خودکار e2fsck در حالت preen، و همچنین اجرای دستی e2fsck، برای مراجعات بعدی نگهداری شود. این سازوکار توسط روابط .IR log_filename ، .IR log_dir ، .IR log_dir_fallback و .I log_dir_wait در بخش .I [options] کنترل می‌شود. .PP نام فایل در .I log_filename می‌تواند حاوی عبارات درصدی زیر باشد که به شرح زیر بسط می‌یابند: .TP .B %d روز جاری ماه .TP .B %D تاریخ جاری؛ معادل .B %Y%m%d .TP .B %h نام میزبان (hostname) سیستم. .TP .B %H ساعت جاری در قالب ۲۴ ساعته (00..23) .TP .B %m ماه جاری به‌صورت یک عدد دورقمی (01..12) .TP .B %M دقیقه جاری (00..59) .TP .B %N نام دستگاه بلوکی حاوی سیستم‌فایل، بدون مسیر دایرکتوری. .TP .B %p شناسه فرایند (PID) مربوط به e2fsck. .TP .B %s زمان جاری برحسب تعداد ثانیه‌های سپری‌شده از 00:00:00 UTC تاریخ 1970-01-01 .TP .B %S ثانیه جاری (00..59) .TP .B %T زمان جاری؛ معادل .B %H%M%S .TP .B %u نام کاربری که e2fsck را اجرا می‌کند. .TP .B %U این عبارت درصدی به چیزی بسط نمی‌یابد، اما مشخص می‌کند که هر عبارت تاریخ یا زمان بعدی باید به‌جای منطقه زمانی محلی، بر اساس زمان UTC بیان شود. .TP .B %y دو رقم آخر سال جاری (00..99) .TP .B %Y سال جاری به‌صورت چهار رقمی (مانند 2012). .SH "مثال‌ها (EXAMPLES)" دستورالعمل زیر مانع از متوقف شدن e2fsck در طول فرایند بوت در هنگام مواجهه با سیستم‌فایل حاوی فایل‌های رهاشده (orphaned files) می‌شود. (البته این کار همیشه ایده خوبی نیست، زیرا فایل‌های حیاتی مورد نیاز برای امنیت سیستم ممکن است به پوشه lost+found منتقل شوند و بالا آمدن سیستم بدون بررسی اولیه توسط مدیر سیستم می‌تواند خطرناک باشد.) .P .nf [problems] 0x040002 = { preen_ok = true description = "@u @i %i. " } .fi .P دستورالعمل زیر باعث می‌شود که فایل گزارش e2fsck در دایرکتوری /var/log/e2fsck با نام فایلی که حاوی نام دستگاه، نام میزبان سیستم، تاریخ و زمان است نوشته شود؛ مانند: "e2fsck-sda3.server.INFO.20120314-112142". اگر دایرکتوری حاوی /var/log روی سیستم‌فایل ریشه قرار داشته باشد که در ابتدا به‌صورت فقط‌خواندنی سوار می‌شود، خروجی در حافظه نگهداری شده و پس از این‌که سیستم‌فایل ریشه مجدداً به‌صورت خواندن/نوشتن سوار شد، در دیسک ذخیره می‌شود. برای جلوگیری از ارسال جزئیات بیش از حد به کنسول سریال (که ممکن است فرایند بوت را کند کند)، از هر نوع خرابی سیستم‌فایل بیش از ۱۶ مورد چاپ نمی‌شود: .P .nf [options] max_count_problems = 16 log_dir = /var/log/e2fsck log_filename = e2fsck-%N.%h.INFO.%D-%T log_dir_wait = true .fi .P .SH "فایل‌ها (FILES)" .TP .I /etc/e2fsck.conf فایل پیکربندی برای .BR e2fsck (8). .SH "همچنین ببینید (SEE ALSO)" .BR e2fsck (8)