MKE2FS.CONF(5) فایلهای پیکربندی MKE2FS.CONF(5)

mke2fs.conf - فایل پیکربندی برای سازنده سیستمفایل mke2fs

فایل mke2fs.conf تنظیمات پیشفرض ابزار mke2fs را هنگام ایجاد سیستمفایلهای ext2/ext3/ext4 مشخص میکند.

فایل mke2fs.conf از قالبی شبیه به INI استفاده می‌کند. بخش‌ها یا بندهای سطح بالا (stanzas) با قلاب‌ها مشخص می‌شوند: [ ]. در داخل هر بخش، هر خط یک رابطه را تعریف می‌کند که برچسب‌ها را به مقادیر اختصاص می‌دهد، یا یک زیربخش را مشخص می‌کند که خود شامل روابط یا زیربخش‌های بیشتری است. نمونه‌ای از قالب به سبک INI که در این فایل پیکربندی استفاده می‌شود در زیر آمده است:

[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
}

توضیحات (کامنت‌ها) با کاراکتر نقطه‌ویرگول (';') یا هش ('#') در ابتدای خط مشخص می‌شوند و با کاراکتر پایان خط خاتمه می‌یابند.

برچسب‌ها و مقادیر در صورتی که حاوی فاصله باشند باید درون گیومه دوتایی قرار گیرند. در یک رشته درون گیومه، تفسیرهای استاندارد بک‌اسلش اعمال می‌شوند: "\n" (برای کاراکتر خط جدید)، "\t" (برای کاراکتر تب)، "\b" (برای کاراکتر فاصله‌برگردان یا backspace) و "\\" (برای کاراکتر بک‌اسلش).

برخی روابط انتظار یک مقدار بولی دارند. تجزیه‌کننده در شناسایی مقادیر مختلف بسیار انعطاف‌پذیر است و مقادیر ``yes''، ``y''، ``true''، ``t''، ``1''، ``on'' و موارد مشابه را به عنوان مقدار بولی درستی (true)، و مقادیر ``no''، ``n''، ``false''، ``nil''، ``0''، ``off'' را به عنوان مقدار بولی نادرستی (false) تشخیص می‌دهد.

بخش‌های زیر در فایل mke2fs.conf استفاده می‌شوند. این بخش‌ها با جزئیات بیشتر در قسمت‌های بعدی این سند شرح داده خواهند شد:

[options]
شامل روابطی است که بر نحوه رفتار mke2fs تأثیر می‌گذارند.
[defaults]
شامل روابطی است که پارامترهای پیش‌فرض مورد استفاده توسط mke2fs(8) را تعیین می‌کنند. به‌طور کلی، این پیش‌فرض‌ها ممکن است توسط تعریفی در بخش fs_types یا توسط گزینه‌های خط فرمان ارائه‌شده توسط کاربر لغو شوند.
[fs_types]
شامل روابطی است که پیش‌فرض‌های مربوط به نوع سیستم‌فایل و نوع کاربرد خاص را مشخص می‌کنند. نوع سیستم‌فایل و نوع کاربرد را می‌توان به‌ترتیب با گزینه‌های -t و -T در mke2fs(8) به صورت صریح تعیین کرد.
[devices]
شامل روابطی است که پیش‌فرض‌ها را برای دستگاه‌های ذخیره‌سازی خاص مشخص می‌کنند.

روابط زیر در بخش [options] تعریف شده‌اند:

اگر این رابطه روی یک عدد صحیح مثبت تنظیم شود، mke2fs پس از درخواست تایید از کاربر برای ادامه عملیات، به مدت proceed_delay ثانیه منتظر می‌ماند و سپس به کار خود ادامه می‌دهد، حتی اگر کاربر به پرسش پاسخی نداده باشد. مقدار پیش‌فرض آن ۰ است، به این معنی که تا زمانی که کاربر پاسخی ندهد منتظر می‌ماند.
اگر این رابطه روی یک عدد صحیح مثبت تنظیم شود، هنگام نوشتن جدول اینود، mke2fs از سیستم‌عامل درخواست می‌کند که هر sync_kludge گروه بلوک، داده‌های در انتظار نوشتن برای مقداردهی اولیه جدول اینود را به دیسک ارسال (flush) کند. این کار برای دور زدن مشکل هسته‌های دارای نقصی است که کنترل پس‌نویسی (writeback throttling) را به درستی مدیریت نمی‌کنند.

روابط زیر در بخش [defaults] تعریف شده‌اند:

این رابطه «سیستم‌عامل سازنده» را برای سیستم‌فایل مشخص می‌کند، مگر اینکه در خط فرمان لغو شود. مقدار پیش‌فرض، سیستم‌عاملی است که فایل اجرایی mke2fs برای آن کامپایل شده است.
این رابطه نوع سیستم‌فایل پیش‌فرض را در صورتی که کاربر آن را با گزینه -t مشخص نکرده باشد، یا mke2fs با نام برنامه‌ای به شکل mkfs.fs-type اجرا نشده باشد، تعیین می‌کند. اگر هم کاربر و هم فایل mke2fs.conf نوع سیستم‌فایل پیش‌فرضی را مشخص نکرده باشند، mke2fs در صورتی که ژورنال از طریق گزینه خط فرمان درخواست شده باشد از نوع پیش‌فرض ext3 و در غیر این صورت از ext2 استفاده خواهد کرد.
این رابطه دایرکتوری محل ذخیره فایل لغو عملیات (undo file) را مشخص می‌کند. این مقدار را می‌توان با متغیر محیطی E2FSPROGS_UNDO_DIR لغو کرد. اگر مسیر دایرکتوری روی مقدار none تنظیم شود، mke2fs فایل لغو عملیات ایجاد نخواهد کرد.

علاوه بر این، هر برچسبی که بتوان در زیربخش برچسب‌های ویژه سیستم‌فایل (مطابق آنچه در ادامه شرح داده شده است، مانند blocksize، hash_alg، inode_ratio، inode_size، reserved_ratio و غیره) مشخص کرد، می‌تواند در بخش defaults نیز تعیین شود تا در صورت عدم تعیین آن توسط کاربر در خط فرمان و عدم وجود مقداری در بخش مربوط به نوع سیستم‌فایل، به عنوان مقدار پیش‌فرض به کار رود.

هر برچسب در بخش [fs_types] نام یک نوع سیستم‌فایل یا نوع کاربرد را مشخص می‌کند که می‌تواند به‌ترتیب از طریق گزینه‌های -t یا -T در mke2fs(8) تعیین شود.

برنامه mke2fs با پیوند دادن نوع سیستم‌فایل (یعنی ext2، ext3 و غیره) با فهرست انواع کاربرد، فهرستی از fs_types می‌سازد. برای بیشتر گزینه‌های پیکربندی، mke2fs به دنبال زیربخشی در بخش [fs_types] می‌گردد که با هر مدخل در فهرست ساخته‌شده مطابقت داشته باشد؛ به این ترتیب که مدخل‌های بعدی، تنظیمات انواع سیستم‌فایل یا کاربرد قبلی را بازنویسی (override) می‌کنند. برای نمونه، قطعه‌کد زیر از فایل mke2fs.conf را در نظر بگیرید:

[defaults]
	base_features = sparse_super,filetype,resize_inode,dir_index
	blocksize = 4096
	inode_size = 256
	inode_ratio = 16384
[fs_types]
	ext3 = {
		features = has_journal
	}
	ext4 = {
		features = extents,flex_bg
		inode_size = 256
	}
	small = {
		blocksize = 1024
		inode_ratio = 4096
	}
	floppy = {
		features = ^resize_inode
		blocksize = 1024
		inode_size = 128
	}

اگر mke2fs با نام برنامه mke2fs.ext4 اجرا شود، نوع سیستم‌فایل ext4 استفاده خواهد شد. اگر حجم سیستم‌فایل کمتر از ۳ مگابایت باشد و هیچ نوع کاربردی مشخص نشده باشد، mke2fs از نوع کاربرد پیش‌فرض floppy استفاده می‌کند. این وضعیت منجر به ایجاد فهرست fs_types شامل "ext4, floppy" می‌شود. هر دو زیربخش ext4 و floppy رابطه inode_size را تعریف کرده‌اند، اما از آنجا که مدخل‌های بعدی در فهرست fs_types جایگزین مدخل‌های قبلی می‌شوند، پارامتر پیکربندی fs_types.floppy.inode_size اعمال خواهد شد و اندازه اینود سیستم‌فایل ۱۲۸ بایت در نظر گرفته می‌شود.

استثنای این قاعده، برچسب features است که مجموعه‌ای از تغییرات در ویژگی‌های مورد استفاده سیستم‌فایل را مشخص می‌کند و حالتی انباشته (تجمعی) دارد. بنابراین در مثال بالا، ابتدا رابطه پیکربندی defaults.base_features مجموعه اولیه‌ای از ویژگی‌ها را با فعال کردن ویژگی‌های sparse_super، filetype، resize_inode و dir_index فعال می‌سازد. سپس رابطه پیکربندی fs_types.ext4.features ویژگی‌های extents و flex_bg را فعال می‌کند، و در نهایت رابطه پیکربندی fs_types.floppy.features ویژگی resize_inode را حذف می‌کند؛ در نتیجه، مجموعه ویژگی‌های نهایی سیستم‌فایل شامل ویژگی‌های sparse_super، filetype، dir_index، extents و flex_bg خواهد بود.

برای هر نوع سیستم‌فایل، برچسب‌های زیر ممکن است در زیربخش مربوط به آن fs_type استفاده شوند. این برچسب‌ها همچنین می‌توانند در بخش default نیز به کار روند:

این رابطه ویژگی‌هایی را که در ابتدا برای این نوع سیستم‌فایل فعال هستند مشخص می‌کند. تنها یک base_features استفاده خواهد شد؛ بنابراین اگر چندین مدخل در فهرست fs_types وجود داشته باشد که زیربخش‌های آن‌ها رابطه base_features را تعریف کرده باشند، تنها آخرین مورد توسط mke2fs(8) اعمال می‌شود.
این رابطه بولی مشخص می‌کند که آیا بررسی‌های دوره‌ای سیستم‌فایل باید در زمان راه‌اندازی سیستم اجباری شوند یا خیر. اگر روی true تنظیم شود، بررسی‌ها هر ۱۸۰ روز یک‌بار یا پس از تعداد مشخصی اتصال تصادفی (mount) اجباری می‌شوند. این مقادیر را می‌توان بعداً با گزینه‌های خط فرمان -i و -c در tune2fs(8) تغییر داد.
رفتار کد هسته را هنگام تشخیص خطاها تغییر می‌دهد. در همه حالات، بروز خطای سیستم‌فایل موجب می‌شود که e2fsck(8) در راه‌اندازی بعدی سیستم، سیستم‌فایل را بررسی کند. errors می‌تواند یکی از موارد زیر باشد:
به اجرای عادی ادامه می‌دهد.
سیستم‌فایل را مجدداً به صورت فقط‌خواندنی سوار (remount) می‌کند.
باعث بروز وحشت هسته (kernel panic) می‌شود.
این رابطه فهرستی جداشده با کاما از درخواست‌های ویرایش ویژگی‌ها را مشخص می‌کند که مجموعه ویژگی‌های مورد استفاده سیستم‌فایل تازه ساخته‌شده را تغییر می‌دهند. نحو نگارش آن مشابه گزینه خط فرمان -O در mke2fs(8) است؛ بدین معنا که می‌توان یک نماد هشتک/توان ('^') را پیش از نام یک ویژگی قرار داد تا آن ویژگی غیرفعال شود. هر رابطه feature مشخص‌شده در فهرست fs_types به ترتیبی که در فهرست fs_types یافت می‌شود اعمال خواهد شد.
این رابطه بولی اگر روی مقدار true تنظیم شود، mke2fs را مجبور می‌کند همیشه برای ایجاد فایل لغو عملیات (undo file) تلاش کند؛ حتی اگر فایل لغو بسیار حجیم باشد و به دلیل مقداردهی اولیه غیراجمالی (غیرتنبلانه) جدول اینود، زمان ایجاد تصویر سیستم‌فایل طولانی‌تر شود.
این رابطه مجموعه‌ای از ویژگی‌ها را مشخص می‌کند که باید پس از اعمال ویژگی‌های ذکرشده در روابط base_features و features فعال یا غیرفعال شوند. این مقدار می‌تواند توسط گزینه خط فرمان -O در mke2fs(8) لغو شود.
این رابطه یک مقدار بولی است که مشخص می‌کند آیا mke2fs(8) در صورتی که تعداد بلوک‌های سیستم‌فایل نیازمند فعال بودن این ویژگی باشد، باید ویژگی 64bit را به صورت خودکار اضافه کند یا خیر. ویژگی resize_inode نیز به صورت خودکار غیرفعال می‌شود زیرا از شماره بلوک‌های ۶۴ بیتی پشتیبانی نمی‌کند.
این رابطه مجموعه‌ای از گزینه‌های سوار کردن را مشخص می‌کند که باید به طور پیش‌فرض فعال باشند. این گزینه‌ها بعداً با گزینه خط فرمان -o در tune2fs(8) قابل تغییر هستند.
این رابطه اندازه بلوک پیش‌فرض را در صورتی که کاربر اندازه‌ای در خط فرمان تعیین نکرده باشد مشخص می‌کند.
این رابطه بولی تعیین می‌کند که آیا جدول اینود باید به روش تنبلانه (lazy) مقداردهی اولیه شود یا خیر. این گزینه فقط زمانی معنا دارد که ویژگی uninit_bg فعال باشد. اگر lazy_itable_init برابر true باشد و ویژگی uninit_bg نیز فعال باشد، جدول اینود توسط mke2fs(8) به صورت کامل مقداردهی اولیه نخواهد شد. این کار سرعت راه‌اندازی اولیه سیستم‌فایل را به طور چشمگیری افزایش می‌دهد، اما مستلزم آن است که هسته هنگام اولین سوار شدن سیستم‌فایل، مقداردهی اولیه را در پس‌زمینه به پایان برساند.
این رابطه بولی تعیین می‌کند که آیا اینود ژورنال باید به صورت تنبلانه مقداردهی اولیه شود یا خیر. این گزینه فقط در صورت فعال بودن ویژگی has_journal معنا دارد. اگر lazy_journal_init برابر true باشد، اینود ژورنال توسط mke2fs به طور کامل با صفر پر نمی‌شود. این کار سرعت راه‌اندازی سیستم‌فایل را به طور چشمگیری افزایش می‌دهد، اما در صورت کرش سیستم پیش از بازنویسی کامل ژورنال برای یک‌بار، خطرات اندکی به همراه دارد.
این رابطه مکان ژورنال را مشخص می‌کند.
این رابطه مشخص می‌کند سیستم‌فایل‌هایی که ویژگی sparse_super2 در آن‌ها فعال است، باید با ۰، ۱ یا ۲ ابربلوک پشتیبان (backup superblock) ساخته شوند.
این رابطه بولی مشخص می‌کند که آیا بیت‌مپ‌های تخصیص، جدول اینود و ژورنال باید در ابتدای سیستم‌فایل قرار گیرند یا خیر.
این رابطه نسبت اینود پیش‌فرض را در صورتی که کاربر آن را در خط فرمان مشخص نکرده باشد تعیین می‌کند.
این رابطه اندازه اینود پیش‌فرض را در صورتی که کاربر آن را در خط فرمان مشخص نکرده باشد تعیین می‌کند.
این رابطه درصد پیش‌فرضی از بلوک‌های سیستم‌فایل را که برای کاربر ارشد (مدیر سیستم) رزرو می‌شود مشخص می‌کند، در صورتی که کاربر در خط فرمان مقداری تعیین نکرده باشد.
این رابطه الگوریتم درهم‌سازی (hash) پیش‌فرضی را که برای سیستم‌فایل‌های جدید دارای دایرکتوری‌های بی‌ترک درهم‌سازی‌شده (hashed b-tree) به کار می‌رود مشخص می‌کند. الگوریتم‌های معتبر عبارتند از: legacy، half_md4 و tea.
این رابطه تعداد گروه‌های بلوکی را که برای ایجاد یک گروه بلوک مجازی بزرگ در سیستم‌فایل ext4 با یکدیگر ادغام می‌شوند مشخص می‌کند. این کار مکان‌یابی فراداده‌ها (metadata locality) و کارایی را در بارهای کاری سنگین فراداده بهبود می‌بخشد. تعداد گروه‌ها باید توانی از ۲ باشد و تنها در صورت فعال بودن ویژگی flex_bg سیستم‌فایل قابل تعیین است.
این رابطه گزینه‌های گسترده بیشتری را مشخص می‌کند که باید توسط mke2fs(8) به گونه‌ای در نظر گرفته شوند که گویی در ابتدای آرگومان گزینه -E قرار گرفته‌اند. از این رابطه می‌توان برای پیکربندی گزینه‌های گسترده پیش‌فرض مورد استفاده mke2fs(8) بر اساس هر نوع سیستم‌فایل استفاده کرد.
این رابطه بولی مشخص می‌کند که آیا mke2fs(8) باید پیش از ایجاد سیستم‌فایل، تلاش کند دستگاه را دور بیندازد / پاکسازی کند (discard).
این رابطه اندازه کلاستر پیش‌فرض را در صورتی که ویژگی bigalloc در سیستم‌فایل فعال باشد مشخص می‌کند. این مقدار می‌تواند از طریق گزینه خط فرمان -C در mke2fs(8) لغو شود.
این رابطه بولی ایجاد فایل‌های از پیش تخصیص‌یافته (pre-allocated) را به عنوان بخشی از قالب‌بندی سیستم‌فایل فعال می‌کند. بلوک‌های درخت اکستنت (extent tree) برای این فایل‌های از پیش تخصیص‌یافته در نزدیکی ابتدای سیستم‌فایل قرار می‌گیرند، به طوری که اگر سایر بلوک‌های فراداده نیز طوری پیکربندی شده باشند که در نزدیکی ابتدای سیستم‌فایل قرار گیرند (با غیرفعال کردن ابربلوک‌های پشتیبان، استفاده از گزینه packed_meta_blocks و غیره)، بلوک‌های داده فایل‌های از پیش تخصیص‌یافته به صورت پیوسته (contiguous) خواهند بود.
این رابطه دایرکتوری محل ایجاد فایل‌های عظیم (huge files) را نسبت به ریشه سیستم‌فایل مشخص می‌کند.
این رابطه مالکیت کاربری را برای تمام فایل‌ها و دایرکتوری‌های ایجادشده توسط ویژگی make_hugefiles کنترل می‌کند.
این رابطه مالکیت گروهی را برای تمام فایل‌ها و دایرکتوری‌های ایجادشده توسط ویژگی make_hugefiles کنترل می‌کند.
این رابطه ماسک دسترسی (umask) مورد استفاده هنگام ایجاد فایل‌ها و دایرکتوری‌ها توسط ویژگی make_hugefiles را تعیین می‌کند.
این رابطه تعداد فایل‌های عظیمی را که باید ایجاد شوند مشخص می‌کند. اگر این رابطه تعیین نشود، یا روی صفر تنظیم گردد، و رابطه hugefiles_size غیرصفر باشد، ویژگی make_hugefiles تا جایی که سیستم‌فایل گنجایش داشته باشد فایل عظیم ایجاد می‌کند تا کل سیستم‌فایل پر شود.
این رابطه مشخص می‌کند که چه مقدار فضا باید برای سایر فایل‌ها رزرو شود.
این رابطه اندازه فایل‌های عظیم را مشخص می‌کند. اگر این رابطه تعیین نشود، پیش‌فرض پر کردن کل فضای سیستم‌فایل است.
این رابطه ترازسازی (alignment) را برای بلوک شروع فایل‌های عظیم مشخص می‌کند. همچنین اندازه فایل‌های عظیم را وادار می‌کند که مضربی از تراز درخواست‌شده باشند. اگر این رابطه مشخص نشود، هیچ الزامی برای ترازسازی به فایل‌های عظیم اعمال نخواهد شد.
این رابطه مشخص می‌کند که آیا ترازسازی باید نسبت به ابتدای دیسک سخت باشد یا خیر (با فرض اینکه آفست شروع پارتیشن در دسترس mke2fs باشد). مقدار پیش‌فرض false است که موجب می‌شود ترازسازی فایل‌های عظیم نسبت به ابتدای سیستم‌فایل انجام گیرد.
این رابطه نام پایه فایل را برای فایل‌های عظیم مشخص می‌کند.
این رابطه عرض فیلد شماره فایل عظیم را (با صفرهای پیشین / zero-padded) تعیین می‌کند.
این رابطه بولی مشخص می‌کند که آیا mke2fs هنگام ایجاد سیستم‌فایلی با اینودهای ۱۲۸ بایتی (که بنابراین از تاریخ‌های پس از ۱۹ ژانویه ۲۰۳۸ پشتیبانی نمی‌کند) هشداری صادر کند یا خیر. مقدار پیش‌فرض true است، مگر برای سیستم‌فایل‌هایی که برای GNU Hurd ساخته می‌شوند زیرا تنها از اینودهای ۱۲۸ بایتی پشتیبانی می‌کند.
این رابطه بولی مشخص می‌کند که آیا هنگام ایجاد فایل‌های عظیم توسط mke2fs(8) بلوک‌های صفر روی آن‌ها نوشته شود یا خیر. به‌طور پیش‌فرض، بلوک‌های صفر روی فایل‌های عظیم نوشته می‌شوند تا از در دسترس قرار گرفتن داده‌های قدیمی برای برنامه‌های کاربری بالقوه غیرقابل اعتماد جلوگیری شود؛ مگر اینکه دستگاه از عملیات discard/trim پشتیبانی کند که خود صفر کردن بلوک‌های دستگاه را مدیریت می‌کند. با تنظیم zero_hugefiles روی false، این مرحله همواره نادیده گرفته می‌شود که می‌تواند در صورتی مفید باشد که از قبل پاک شدن دیسک مشخص باشد، یا برنامه‌های کاربری که به فایل‌های عظیم دسترسی دارند، مورد اعتماد باشند تا داده‌های قدیمی را افشا نکنند.
این رابطه کدگذاری نام فایل را در صورت فعال بودن ویژگی casefold مشخص می‌کند. در حال حاضر تنها کدگذاری‌های معتبر utf8-12.1 یا utf8 هستند که جدیدترین نسخه یونیکد را درخواست می‌کنند؛ از آنجا که 12.1 تنها نسخه موجود یونیکد است، utf8 و utf8-12.1 نتیجه یکسانی دارند.
این رابطه پرچم‌های مختص کدگذاری را مشخص می‌کند. برای کدگذاری‌های utf8، تنها پرچم در دسترس strict است که موجب می‌شود تلاش‌ها برای ایجاد نام فایل‌های حاوی کاراکترهای نامعتبر یونیکد توسط هسته رد شود. حالت سخت‌گیرانه (strict) به طور پیش‌فرض فعال نیست.

هر برچسب در بخش [devices] نام یک دستگاه را تعیین می‌کند تا بتوان پیش‌فرض‌های مربوط به هر دستگاه را مشخص نمود.

این رابطه پارامتر پیش‌فرض را برای گزینه -t مشخص می‌کند، در صورتی که این گزینه در خط فرمان تعیین نشده باشد.
این رابطه پارامتر پیش‌فرض را برای گزینه -T مشخص می‌کند، در صورتی که این گزینه در خط فرمان تعیین نشده باشد.

/etc/mke2fs.conf
فایل پیکربندی برای mke2fs(8).

mke2fs(8)

مه ۲۰۲۵ e2fsprogs