EXT4(5) فایلهای پیکربندی EXT4(5)

ext4 - سیستمفایل گسترشیافته چهارم لینوکس (fourth extended file system)

سیستمفایل ext4 نسل چهارم سیستمفایلهای گسترشیافته لینوکس با کارایی بالا و پشتیبانی از حجمهای بزرگ است.

سیستم‌فایل‌های گسترش‌یافته دوم، سوم و چهارم که معمولاً با نام‌های ext2، ext3 و ext4 شناخته می‌شوند، سیستم‌فایل‌های لینوکسی هستند که از گذشته سیستم‌فایل پیش‌فرض بسیاری از توزیع‌های لینوکس بوده‌اند. این سیستم‌فایل‌ها چندمنظوره بوده و با هدف توسعه‌پذیری و سازگاری با نسخه‌های پیشین طراحی شده‌اند. به‌ویژه، سیستم‌فایل‌هایی که قبلاً برای استفاده با سیستم‌فایل‌های ext2 و ext3 در نظر گرفته شده بودند را می‌توان با استفاده از درایور سیستم‌فایل ext4 سوار (mount) کرد؛ در حقیقت در بسیاری از توزیع‌های مدرن لینوکس، درایور سیستم‌فایل ext4 به گونه‌ای پیکربندی شده است که درخواست‌های سوار کردن سیستم‌فایل‌های ext2 و ext3 را نیز مدیریت کند.

یک سیستم‌فایل قالب‌بندی‌شده برای ext2، ext3 یا ext4 می‌تواند مجموعه‌ای از پرچم‌های ویژگی‌های سیستم‌فایل زیر را فعال داشته باشد. بسته به نگارش هسته لینوکس مورد استفاده، برخی از این ویژگی‌ها توسط تمام پیاده‌سازی‌های درایورهای سیستم‌فایل ext2، ext3 و ext4 پشتیبانی نمی‌شوند. در سایر سیستم‌عامل‌ها مانند GNU/HURD یا FreeBSD، تنها مجموعه بسیار محدودی از ویژگی‌های سیستم‌فایل ممکن است در پیاده‌سازی‌های ext2 آن‌ها پشتیبانی شود.

64bit

سیستم‌فایل را قادر می‌سازد تا بزرگ‌تر از ۲^۳۲ بلوک باشد. این ویژگی در صورت نیاز به‌طور خودکار تنظیم می‌شود، اما در صورتی که احتمال نیاز به تغییر اندازه سیستم‌فایل به بیشتر از ۲^۳۲ بلوک وجود داشته باشد، تعیین صریح آن می‌تواند مفید باشد؛ حتی اگر سیستم‌فایل در زمان ایجاد اولیه‌اش کوچک‌تر از این آستانه بوده باشد. توجه داشته باشید که برخی از هسته‌ها و نگارش‌های قدیمی‌تر e2fsprogs از سیستم‌فایل‌هایی که این ویژگی ext4 در آن‌ها فعال است پشتیبانی نمی‌کنند.

این ویژگی ext4 تخصیص بلوک خوشه‌ای را فعال می‌کند، به طوری که واحد تخصیص مضربی از توان ۲ از تعداد بلوک‌ها خواهد بود. بدین معنا که هر بیت در آنچه که پیش‌تر به عنوان بیت‌مپ تخصیص بلوک شناخته می‌شد، اکنون نشان می‌دهد که آیا یک خوشه در حال استفاده است یا خیر؛ در حالی که یک خوشه به طور پیش‌فرض از ۱۶ بلوک تشکیل شده است. این ویژگی می‌تواند زمان صرف‌شده برای تخصیص بلوک‌ها را کاهش دهد و تکه‌تکه‌شدگی (fragmentation) کمتری، به‌ویژه برای فایل‌های بزرگ، به همراه داشته باشد. اندازه را می‌توان با استفاده از گزینه -C در دستور mke2fs مشخص کرد.
هشدار: ویژگی bigalloc همچنان در دست توسعه است و ممکن است به طور کامل در هسته شما پشتیبانی نشود یا دارای اشکالات گوناگونی باشد. لطفاً برای جزئیات به صفحه وب http://ext4.wiki.kernel.org/index.php/Bigalloc مراجعه کنید. این ویژگی ممکن است با تخصیص تاخیری تداخل داشته باشد (گزینه سوار کردن nodelalloc را ببینید).
این ویژگی مستلزم فعال بودن ویژگی extent است.

این ویژگی ext4 پشتیبانی از کدگذاری نویسه‌ها در سطح سیستم‌فایل را برای پوشه‌هایی که پرچم casefold (+F) در آن‌ها فعال است فراهم می‌کند. این ویژگی نام فایل‌ها را روی دیسک به همان صورت اصلی حفظ می‌کند، اما به برنامه‌ها اجازه می‌دهد با استفاده از نگارش معادل کدگذاری‌شده نام فایل، آن را در سیستم‌فایل جستجو کنند (عدم حساسیت به بزرگی و کوچکی حروف).

استفاده از درخت‌های بی درهم‌سازی‌شده (hashed b-trees) برای سرعت بخشیدن به جستجوی نام‌ها در پوشه‌های بزرگ. این ویژگی توسط سیستم‌فایل‌های ext3 و ext4 پشتیبانی می‌شود و توسط سیستم‌فایل‌های ext2 نادیده گرفته می‌شود.

به‌طور معمول، ext4 به یک آی‌نود اجازه نمی‌دهد بیش از ۶۵,۰۰۰ پیوند سخت (hard link) داشته باشد. این محدودیت برای فایل‌های معمولی و همچنین پوشه‌ها اعمال می‌شود، به این معنی که نمی‌تواند بیش از ۶۴,۹۹۸ زیرپوشه در یک پوشه وجود داشته باشد (زیرا هر یک از ورودی‌های '.' و '..' و همچنین ورودی پوشه در پوشه والد به عنوان یک پیوند سخت به شمار می‌آیند). این ویژگی با وادار کردن ext4 به استفاده از شمارش پیوند ۱ برای نشان دادن نامشخص بودن تعداد پیوندهای سخت در زمانی که شمارش پیوند ممکن است از حد مجاز فراتر رود، این محدودیت را برمی‌دارد.

به‌طور معمول، ویژگی‌های گسترش‌یافته یک فایل و فراداده‌های مربوط به آن باید درون آی‌نود یا بلوک ویژگی گسترش‌یافته مرتبط با آی‌نود جای گیرند. این ویژگی اجازه می‌دهد تا در صورت لزوم، مقدار هر ویژگی گسترش‌یافته در بلوک‌های داده یک آی‌نود جداگانه قرار گیرد، که بدین ترتیب محدودیت اندازه و تعداد ویژگی‌های گسترش‌یافته در هر فایل افزایش می‌یابد.

پشتیبانی از رمزنگاری در سطح سیستم‌فایل را برای بلوک‌های داده و نام فایل‌ها فعال می‌کند. فراداده‌های آی‌نود (مهر زمان، اندازه فایل، مالکیت کاربر/گروه و غیره) رمزنگاری نمی‌شوند.
این ویژگی بیشترین کاربرد را در سیستم‌فایل‌های چندکاربره دارد، یا در مواردی که نباید تمام فایل‌ها رمزنگاری شوند. در بسیاری از موارد، به‌ویژه در سیستم‌های تک‌کاربره، رمزنگاری در لایه دستگاه بلوکی با استفاده از dm-crypt می‌تواند امنیت بسیار بهتری را فراهم سازد.

این ویژگی امکان استفاده از ویژگی‌های گسترش‌یافته (extended attributes) را فعال می‌کند. این ویژگی توسط ext2، ext3 و ext4 پشتیبانی می‌شود.

این ویژگی ext4 اجازه می‌دهد تا نگاشت شماره بلوک‌های منطقی یک آی‌نود خاص به بلوک‌های فیزیکی روی دستگاه ذخیره‌سازی با استفاده از یک درخت اکستنت (extent tree) ذخیره شود، که ساختار داده‌ای بسیار کارآمدتر از طرح سنتی بلوک‌های غیرمستقیم مورد استفاده در سیستم‌فایل‌های ext2 و ext3 است. استفاده از درخت اکستنت، سربار بلوک‌های فراداده را کاهش داده، کارایی سیستم‌فایل را بهبود می‌بخشد و نیاز به اجرای e2fsck(8) روی سیستم‌فایل را کاهش می‌دهد. (توجه: هر دو نام extent و extents به دلایل تاریخی و سازگاری با گذشته به عنوان نام‌های معتبر برای این ویژگی پذیرفته می‌شوند.)

این ویژگی ext4 مقدار مشخصی فضا را در هر آی‌نود برای فراداده‌های گسترش‌یافته مانند مهرهای زمانی در مقیاس نانوثانیه و زمان ایجاد فایل رزرو می‌کند، حتی اگر هسته فعلی در حال حاضر نیازی به رزرو این مقدار فضا نداشته باشد. بدون این ویژگی، هسته فقط به اندازه‌ای فضا رزرو می‌کند که در حال حاضر برای ویژگی‌ها نیاز دارد، و باقی‌مانده فضا ممکن است توسط ویژگی‌های گسترش‌یافته مصرف شود.
برای اینکه این ویژگی مفید واقع شود، اندازه آی‌نود باید ۲۵۶ بایت یا بزرگ‌تر باشد.

این ویژگی امکان ذخیره اطلاعات نوع فایل را در ورودی‌های پوشه فراهم می‌کند. این ویژگی توسط ext2، ext3 و ext4 پشتیبانی می‌شود.

این ویژگی ext4 اجازه می‌دهد تا فراداده‌های مربوط به هر گروه بلوکی (بیت‌مپ‌های تخصیص و جداول آی‌نود) در هر جایی از رسانه ذخیره‌سازی قرار گیرند. علاوه بر این، mke2fs فراداده‌های مربوط به هر گروه بلوکی را به صورت مجتمع از اولین گروه بلوکی هر "گروه flex_bg" قرار می‌دهد. اندازه گروه flex_bg را می‌توان با استفاده از گزینه -G مشخص کرد.

یک ژورنال برای اطمینان از سازگاری سیستم‌فایل حتی در هنگام خاموش شدن‌های ناگهانی و غیرعادی ایجاد می‌کند. تنظیم این ویژگی سیستم‌فایل معادل استفاده از گزینه -j در دستورات mke2fs یا tune2fs است. این ویژگی توسط سیستم‌فایل‌های ext3 و ext4 پشتیبانی می‌شود و توسط درایور سیستم‌فایل ext2 نادیده گرفته می‌شود.

این ویژگی ext4 اجازه می‌دهد فایل‌ها بزرگ‌تر از ۲ ترابایت باشند.
امکان ذخیره داده‌ها در فضای آی‌نود و بخش ویژگی‌های گسترش‌یافته را فراهم می‌آورد.

این ویژگی در ابربلوک موجود روی دستگاه ژورنال خارجی فعال می‌شود. اندازه بلوک برای ژورنال خارجی باید همانند اندازه بلوک سیستم‌فایلی باشد که از آن استفاده می‌کند.
دستگاه ژورنال خارجی را می‌توان با تعیین گزینه -J device=<external-device> برای mke2fs(8) یا tune2fs(8) توسط سیستم‌فایل استفاده کرد.

این ویژگی با افزایش حداکثر اندازه پوشه‌ها و برای پوشه‌های مبتنی بر درخت بی درهم‌سازی‌شده (بخش dir_index را ببینید)، افزایش حداکثر ارتفاع درخت بی درهم‌سازی‌شده برای ذخیره ورودی‌های پوشه، محدودیت تعداد فایل‌ها در هر پوشه را افزایش می‌دهد.

این پرچم ویژگی در هسته‌های مدرن هنگام ایجاد فایلی بزرگ‌تر از ۲ گیگابایت به‌طور خودکار تنظیم می‌شود. هسته‌های بسیار قدیمی نمی‌توانستند فایل‌های بزرگ را مدیریت کنند، بنابراین این پرچم برای جلوگیری از سوار شدن چنین سیستم‌فایل‌هایی توسط آن هسته‌ها استفاده می‌شد.

این ویژگی ext4 محاسبه و اعتبارسنجی مجموع مقابله‌ای فراداده (metadata checksumming) را فعال می‌کند. این ویژگی، مجموع مقابله‌ای را برای تمام فراداده‌های سیستم‌فایل (ابربلوک، بلوک‌های توصیف‌کننده گروه، بیت‌مپ‌های آی‌نود و بلوک، پوشه‌ها و بلوک‌های درخت اکستنت) ذخیره می‌کند. الگوریتم مجموع مقابله‌ای استفاده‌شده برای بلوک‌های فراداده با الگوریتم توصیف‌کننده‌های گروه در ویژگی uninit_bg متفاوت است. این دو ویژگی ناسازگار هستند و ویژگی metadata_csum به‌طور ترجیحی به جای uninit_bg استفاده خواهد شد.

این ویژگی به سیستم‌فایل اجازه می‌دهد تا سید (seed) مجموع مقابله‌ای فراداده را در ابربلوک ذخیره کند، که به مدیر سیستم امکان می‌دهد شناسه یکتای سراسری (UUID) سیستم‌فایلی را که از ویژگی metadata_csum استفاده می‌کند، در حالی که سوار است تغییر دهد.

این ویژگی ext4 اجازه می‌دهد تا سیستم‌فایل‌ها بدون نیاز صریح به رزرو فضا برای رشد اندازه توصیف‌کننده‌های گروه بلوکی، به صورت برخط تغییر اندازه پیدا کنند. این طرح همچنین برای تغییر اندازه سیستم‌فایل‌های بزرگ‌تر از ۲^۳۲ بلوک به کار می‌رود. توصیه نمی‌شود که این ویژگی در زمان ایجاد سیستم‌فایل تنظیم شود، زیرا این روش متناوب ذخیره توصیف‌کننده‌های گروه بلوکی زمان لازم برای سوار کردن سیستم‌فایل را افزایش می‌دهد، و هسته‌های جدیدتر می‌توانند در صورت نیاز در زمان تغییر اندازه برخط و هنگامی که فضای رزروشده‌ای در resize inode باقی نمانده باشد، این ویژگی را به‌طور خودکار تنظیم کنند.

این ویژگی ext4 محافظت از سوار شدن چندگانه (Multiple Mount Protection یا MMP) را فراهم می‌کند. MMP به محافظت از سیستم‌فایل در برابر سوار شدن همزمان در چندین مکان کمک کرده و در محیط‌های ذخیره‌سازی اشتراکی بسیار مفید است.

این ویژگی ext4 گلوگاه بالقوه مقیاس‌پذیری را برای بارهای کاری که تعداد زیادی عملیات کوتاه کردن (truncate) یا گسترش فایل را به صورت موازی انجام می‌دهند، رفع می‌کند. این ویژگی از نگارش ۵.۱۵ هسته لینوکس و نگارش ۱.۴۷.۰ ابزار e2fsprogs پشتیبانی می‌شود.

این ویژگی ext4 پشتیبانی از سهمیه‌بندی پروژه (project quota) را فراهم می‌آورد. با این ویژگی، شناسه پروژه (project ID) آی‌نود در هنگام سوار شدن سیستم‌فایل مدیریت خواهد شد.

ایجاد آی‌نودهای سهمیه‌بندی (آی‌نود شماره ۳ برای userquota و آی‌نود شماره ۴ برای group quota) و تنظیم آن‌ها در ابربلوک. با این ویژگی، سهمیه‌بندی‌ها هنگام سوار شدن سیستم‌فایل به‌طور خودکار فعال می‌شوند.
این ویژگی باعث می‌شود فایل‌های سهمیه‌بندی (یعنی user.quota و group.quota که در طرح قدیمی سهمیه‌بندی وجود داشتند) به آی‌نودهای پنهان تبدیل شوند.

این ویژگی سیستم‌فایل نشان می‌دهد که فضایی رزرو شده است تا جدول توصیف‌کننده گروه بلوکی بتواند در حین تغییر اندازه یک سیستم‌فایل سوارشده گسترش یابد. عملیات تغییر اندازه برخط توسط هسته انجام شده و توسط دستور resize2fs(8) آغاز می‌شود. به‌طور پیش‌فرض، mke2fs تلاش می‌کند فضای کافی را رزرو کند تا سیستم‌فایل بتواند تا ۱۰۲۴ برابر اندازه اولیه‌اش رشد کند. این مقدار را می‌توان با استفاده از گزینه گسترش‌یافته resize تغییر داد.
این ویژگی مستلزم فعال بودن ویژگی sparse_super یا sparse_super2 است.

این ویژگی سیستم‌فایل در تمام سیستم‌فایل‌های مدرن ext2، ext3 و ext4 تنظیم شده است. این ویژگی نشان می‌دهد که نسخه‌های پشتیبان ابربلوک و توصیف‌کننده‌های گروه بلوکی تنها در چند گروه بلوکی وجود دارند، نه در همه آن‌ها.

این ویژگی نشان می‌دهد که حداکثر تنها دو ابربلوک و توصیف‌کننده گروه بلوکی پشتیبان وجود خواهد داشت. گروه‌های بلوکی مورد استفاده برای ذخیره ابربلوک(ها) و توصیف‌کننده(های) گروه بلوکی پشتیبان در ابربلوک ذخیره می‌شوند، اما معمولاً یکی در ابتدای گروه بلوکی شماره ۱ و دیگری در آخرین گروه بلوکی سیستم‌فایل قرار خواهد گرفت. این ویژگی در اصل نسخه پیشرفته‌تر و محدودتری از sparse_super است و به گونه‌ای طراحی شده که درصد بسیار بیشتری از دیسک دارای بلوک‌های پیوسته و آماده برای فایل‌های داده باشد.

شماره‌های آی‌نود و شناسه یکتای سراسری (UUID) سیستم‌فایل را به عنوان پایدار علامت‌گذاری می‌کند. دستور resize2fs(8) اجازه کوچک کردن سیستم‌فایلی با این ویژگی را نمی‌دهد، و همچنین tune2fs(8) اجازه تغییر UUID آن را نخواهد داد. این ویژگی امکان استفاده از تنظیمات تخصصی رمزنگاری را فراهم می‌کند که از شماره‌های آی‌نود و UUID بهره می‌برند. توجه داشته باشید که ویژگی encrypt همچنان باید به‌طور جداگانه فعال شود. stable_inodes یک ویژگی "سازگار" (compat) است، بنابراین هسته‌های قدیمی‌تر اجازه استفاده از آن را خواهند داد.

این ویژگی سیستم‌فایل ext4 نشان می‌دهد که توصیف‌کننده‌های گروه بلوکی با استفاده از چکسام‌ها محافظت می‌شوند، که این امر باعث می‌شود اجرای mke2fs(8) برای ایجاد سیستم‌فایل بدون مقداردهی اولیه تمام گروه‌های بلوکی ایمن باشد. هسته، حد بالایی از آی‌نودهای استفاده‌نشده را حفظ می‌کند و جداول آی‌نود و بلوک‌ها را به صورت تنبلانه (lazily) مقداردهی اولیه می‌کند. این ویژگی زمان لازم برای بررسی سیستم‌فایل با استفاده از e2fsck(8) را تسریع می‌کند و همچنین زمان مورد نیاز برای ایجاد سیستم‌فایل توسط mke2fs(8) را کاهش می‌دهد.

پشتیبانی از فایل‌های محافظت‌شده با verity را فعال می‌کند. فایل‌های verity فقط‌خواندنی هستند و داده‌های آن‌ها به‌طور شفاف در برابر یک درخت مرکل (Merkle tree) پنهان در انتهای فایل اعتبارسنجی می‌شود. با استفاده از هش ریشه درخت مرکل، یک فایل verity را می‌توان به‌طور کارآمد و مستقل از اندازه فایل احراز هویت کرد.
این ویژگی بیشترین کاربرد را برای احراز هویت فایل‌های فقط‌خواندنی مهم روی سیستم‌فایل‌های خواندنی-نوشتنی دارد. اگر خود سیستم‌فایل فقط‌خواندنی است، استفاده از dm-verity برای احراز هویت کل دستگاه بلوکی می‌تواند امنیت بسیار بهتری فراهم آورد.

این بخش گزینه‌های سوار کردنی را تشریح می‌کند که مختص ext2، ext3 و ext4 هستند. سایر گزینه‌های عمومی سوار کردن نیز ممکن است استفاده شوند؛ برای جزئیات به mount(8) مراجعه کنید.

سیستم‌فایل `ext2` سیستم‌فایل استاندارد لینوکس است. از نگارش ۲.۵.۴۶ هسته لینوکس به بعد، مقدار پیش‌فرض بیشتر گزینه‌های سوار کردن توسط ابربلوک سیستم‌فایل تعیین می‌شود. این موارد را می‌توان با tune2fs(8) تنظیم کرد.

پشتیبانی از فهرست‌های کنترل دسترسی پوزیکس (POSIX Access Control Lists) یا عدم پشتیبانی از آن. به صفحه راهنمای acl(5) مراجعه کنید.
تعیین رفتار فراخوانی سیستمی statfs. رفتار minixdf این است که در فیلد f_blocks تعداد کل بلوک‌های سیستم‌فایل را برمی‌گرداند، در حالی که رفتار bsddf (که پیش‌فرض است) بلوک‌های سربار استفاده‌شده توسط سیستم‌فایل ext2 را که برای ذخیره‌سازی فایل در دسترس نیستند کسر می‌کند. بنابراین:

% mount /k -o minixdf; df /k; umount /k

File System 1024-blocks Used Available Capacity Mounted on
/dev/sda6 2630655 86954 2412169 3% /k

% mount /k -o bsddf; df /k; umount /k

File System 1024-blocks Used Available Capacity Mounted on
/dev/sda6 2543714 13 2412169 0% /k

(توجه داشته باشید که این مثال نشان می‌دهد می‌توان گزینه‌های خط فرمان را به گزینه‌های داده‌شده در /etc/fstab اضافه کرد.)

هیچ بررسی‌ای در زمان سوار کردن انجام نمی‌شود. این حالت پیش‌فرض و سریع است. توصیه می‌شود هر از چند گاهی، مثلاً در زمان بوت سیستم، دستور e2fsck(8) را اجرا کنید. رفتارهای غیرپیش‌فرض پشتیبانی نمی‌شوند (گزینه‌های check=normal و check=strict حذف شده‌اند). توجه داشته باشید در صورتی که از درایور هسته ext4 برای سیستم‌فایل‌های ext2 و ext3 استفاده شود، نیازی به پشتیبانی از این گزینه‌های سوار کردن نیست.
چاپ اطلاعات اشکال‌زدایی در هر بار سوار کردن (یا سوار کردن مجدد).
رفتار سیستم هنگام مواجهه با خطا را تعریف می‌کند. (نادیده گرفتن خطاها و صرفاً علامت‌گذاری سیستم‌فایل به عنوان معیوب و ادامه دادن، یا سوار کردن مجدد سیستم‌فایل به صورت فقط‌خواندنی، یا حالت وحشت هسته و متوقف کردن سیستم.) مقدار پیش‌فرض در ابربلوک سیستم‌فایل تنظیم می‌شود و با استفاده از tune2fs(8) قابل تغییر است.
این گزینه‌ها تعیین می‌کنند فایلی که به تازگی ایجاد شده چه شناسه گروهی دریافت کند. هنگامی که grpid تنظیم شده باشد، فایل شناسه گروه پوشه‌ای را که در آن ایجاد شده می‌گیرد؛ در غیر این صورت (حالت پیش‌فرض) شناسه fsgid فرایند جاری را دریافت می‌کند، مگر اینکه پوشه والد بیت setgid فعال داشته باشد که در این حالت، شناسه گروه را از پوشه والد به ارث می‌برد و در صورتی که خودش نیز پوشه باشد، بیت setgid آن نیز تنظیم می‌شود.
گزینه سوار کردن usrquota (مشابه quota) پشتیبانی از سهمیه‌بندی کاربر را در سیستم‌فایل فعال می‌کند. grpquota پشتیبانی از سهمیه‌بندی گروه را فعال می‌سازد. برای فعال‌سازی واقعی و مدیریت سامانه سهمیه‌بندی به ابزارهای سهمیه‌بندی نیاز دارید.
شناسه‌های کاربری (UID) و گروهی (GID) ۳۲بیتی را غیرفعال می‌کند. این گزینه برای سازگاری با هسته‌های قدیمی‌تری است که تنها مقادیر ۱۶بیتی را ذخیره کرده و انتظار دارند.
استفاده از تخصیص‌دهنده قدیمی یا تخصیص‌دهنده اورلوف (Orlov) برای آی‌نودهای جدید. تخصیص‌دهنده Orlov پیش‌فرض است.
سیستم‌فایل ext2 درصد مشخصی از فضای در دسترس را رزرو می‌کند (به طور پیش‌فرض ۵٪، دستورات mke2fs(8) و tune2fs(8) را ببینید). این گزینه‌ها تعیین می‌کنند چه کسی می‌تواند از بلوک‌های رزروشده استفاده کند (به‌طور خلاصه: هر کاربری که دارای UID مشخص‌شده باشد، یا به گروه مشخص‌شده تعلق داشته باشد).
به جای استفاده از ابربلوک معمولی، از یک ابربلوک جایگزین استفاده شود. این گزینه معمولاً هنگامی کاربرد دارد که ابربلوک اصلی آسیب دیده باشد. مکان ابربلوک‌های پشتیبان به اندازه بلوک سیستم‌فایل، تعداد بلوک‌ها در هر گروه و ویژگی‌هایی نظیر sparse_super بستگی دارد.
ابربلوک‌های پشتیبان تکمیلی را می‌توان با اجرای برنامه mke2fs همراه با گزینه -n به دست آورد تا محل قرارگیری ابربلوک‌ها چاپ شود، به شرط آنکه به mke2fs آرگومان‌هایی منطبق با ساختار سیستم‌فایل داده شود (مانند اندازه بلوک، تعداد بلوک‌ها در هر گروه، sparse_super و غیره).
شماره بلوک در اینجا بر حسب واحدهای ۱ کیلوبایتی است. بنابراین، اگر می‌خواهید از بلوک منطقی ۳۲۷۶۸ در سیستم‌فایلی با بلوک‌های ۴ کیلوبایتی استفاده کنید، باید مقدار "sb=131072" را به کار ببرید.
پشتیبانی (یا عدم پشتیبانی) از ویژگی‌های گسترش‌یافته با پیشوند "user.".

سیستم‌فایل ext3 نگارشی از سیستم‌فایل ext2 است که با قابلیت ژورنالینگ بهبود یافته است. این سیستم‌فایل علاوه بر گزینه‌های ext2 از گزینه‌های تکمیلی زیر نیز پشتیبانی می‌کند:

هنگامی که شماره‌های عمده/جزئی (major/minor) دستگاه ژورنال خارجی تغییر کرده باشد، این گزینه‌ها به کاربر اجازه می‌دهند مکان جدید ژورنال را مشخص کند. دستگاه ژورنال یا از طریق شماره‌های major/minor جدید کدگذاری‌شده در devnum یا از طریق یک مسیر به دستگاه شناسایی می‌شود.
در هنگام سوار کردن، ژورنال بارگذاری نشود. توجه داشته باشید که اگر سیستم‌فایل به درستی پیاده‌سازی (unmount) نشده باشد، صرف‌نظر کردن از بازپخش ژورنال باعث ناهمخوانی‌هایی در سیستم‌فایل خواهد شد که می‌تواند مشکلات متعددی را به همراه داشته باشد.
حالت ژورنالینگ را برای داده‌های فایل مشخص می‌کند. فراداده‌ها همیشه ژورنال می‌شوند. برای استفاده از حالت‌هایی غیر از ordered روی سیستم‌فایل ریشه، حالت را به عنوان پارامتر بوت به هسته ارسال کنید؛ مانند rootflags=data=journal.
تمامی داده‌ها قبل از نوشته شدن در سیستم‌فایل اصلی، در ژورنال ثبت می‌شوند.
این حالت پیش‌فرض است. تمامی داده‌ها پیش از آنکه فراداده‌های آن‌ها در ژورنال ثبت شوند، مستقیماً در سیستم‌فایل اصلی نوشته می‌شوند.
ترتیب نوشتن داده‌ها حفظ نمی‌شود – داده‌ها ممکن است پس از ثبت فراداده‌های آن‌ها در ژورنال، در سیستم‌فایل اصلی نوشته شوند. این گزینه بالاترین توان عملیاتی را ارائه می‌دهد. این حالت یکپارچگی درونی سیستم‌فایل را تضمین می‌کند، اما ممکن است پس از توقف ناگهانی سیستم و بازیابی ژورنال، داده‌های قدیمی در فایل‌ها ظاهر شوند.
در صورت بروز خطا در بافر داده‌های فایل در حالت ordered، صرفاً یک پیام خطا چاپ شود.
در صورت بروز خطا در بافر داده‌های فایل در حالت ordered، عملیات ژورنال متوقف (abort) شود.
استفاده از موانع نوشتن (write barriers) را در کد jbd غیرفعال/فعال می‌کند. مقدار barrier=0 غیرفعال و barrier=1 فعال می‌کند (پیش‌فرض). این ویژگی به پشته ورودی/خروجی (I/O) نیازمند است که بتواند از موانع پشتیبانی کند، و اگر jbd در حین نوشتن یک مانع با خطا مواجه شود، موانع را مجدداً با یک هشدار غیرفعال خواهد کرد. موانع نوشتن، ترتیب مناسب ثبت ژورنال روی دیسک را اعمال می‌کنند و استفاده از حافظه‌های موقت فرار نوشتن دیسک را با اندکی هزینه بر کارایی ایمن می‌سازند. اگر دیسک‌های شما دارای پشتیبان باتری هستند، غیرفعال کردن موانع می‌تواند با حفظ ایمنی باعث بهبود کارایی شود.
هر nrsec ثانیه یک ثبت ژورنال آغاز شود. مقدار پیش‌فرض ۵ ثانیه است. عدد صفر بیانگر مقدار پیش‌فرض است.
فعال کردن ویژگی‌های گسترش‌یافته کاربر. به صفحه راهنمای attr(5) مراجعه کنید.
جدا از سامانه سهمیه‌بندی قدیمی (مانند ext2 با jqfmt=vfsold موسوم به سهمیه‌بندی نگارش ۱)، ext3 از سهمیه‌بندی‌های ژورنال‌دار (سهمیه‌بندی نگارش ۲) نیز پشتیبانی می‌کند. مقدار jqfmt=vfsv0 یا jqfmt=vfsv1 سهمیه‌بندی‌های ژورنال‌دار را فعال می‌سازد. سهمیه‌بندی‌های ژورنال‌دار این مزیت را دارند که حتی پس از یک توقف ناگهانی سیستم، نیازی به بررسی سهمیه نیست. هنگامی که ویژگی سیستم‌فایل quota فعال باشد، سهمیه‌بندی‌های ژورنال‌دار به‌طور خودکار استفاده می‌شوند و این گزینه سوار کردن نادیده گرفته می‌شود.
برای سهمیه‌بندی‌های ژورنال‌دار (jqfmt=vfsv0 یا jqfmt=vfsv1)، گزینه‌های سوار کردن usrjquota=aquota.user و grpjquota=aquota.group لازم هستند تا به سامانه سهمیه‌بندی بگویند از کدام فایل‌های پایگاه‌داده سهمیه استفاده کند. هنگامی که ویژگی سیستم‌فایل quota فعال باشد، سهمیه‌بندی‌های ژورنال‌دار به‌طور خودکار استفاده می‌شوند و این گزینه سوار کردن نادیده گرفته می‌شود.

سیستم‌فایل ext4 نگارش پیشرفته‌ای از سیستم‌فایل ext3 است که بهبودهای مقیاس‌پذیری و قابلیت اطمینان را برای پشتیبانی از سیستم‌فایل‌های بزرگ شامل می‌شود.

گزینه‌های journal_dev، journal_path، norecovery، noload، data، commit، orlov، oldalloc، [no]user_xattr، [no]acl، bsddf، minixdf، debug، errors، data_err، grpid، bsdgroups، nogrpid، sysvgroups، resgid، resuid، sb، quota، noquota، nouid32، grpquota، usrquota، usrjquota، grpjquota و jqfmt با ext3 و ext2 سازگار با گذشته هستند.

گزینه journal_checksum اعتبارسنجی مجموع مقابله‌ای (checksumming) تراکنش‌های ژورنال را فعال می‌کند. این امر به کد بازیابی در e2fsck و هسته اجازه می‌دهد تا خرابی در هسته را تشخیص دهند. این یک تغییر سازگار با گذشته است و توسط هسته‌های قدیمی‌تر نادیده گرفته می‌شود.
بلوک ثبت می‌تواند بدون انتظار برای بلوک‌های توصیف‌کننده روی دیسک نوشته شود. در صورت فعال بودن، هسته‌های قدیمی‌تر نمی‌توانند دستگاه را سوار کنند. این گزینه به طور داخلی 'journal_checksum' را نیز فعال می‌کند.
این گزینه‌های سوار کردن همان اثر موجود در ext3 را دارند. گزینه‌های سوار کردن "barrier" و "nobarrier" برای سازگاری و هماهنگی با سایر گزینه‌های سوار کردن ext4 اضافه شده‌اند.
سیستم‌فایل ext4 موانع نوشتن را به طور پیش‌فرض فعال می‌کند.
این پارامتر تنظیمی، حداکثر تعداد بلوک‌های جدول آی‌نود را کنترل می‌کند که الگوریتم خواندن رو به جلوی جدول آی‌نود در ext4 از پیش در حافظه موقت بافر می‌خواند. مقدار باید توانی از ۲ باشد. مقدار پیش‌فرض ۳۲ بلوک است.
تعداد بلوک‌های سیستم‌فایل که mballoc تلاش می‌کند برای اندازه و تراز تخصیص استفاده کند. برای سامانه‌های RAID5/6 این مقدار باید برابر با تعداد دیسک‌های داده ضرب‌در اندازه تکه (chunk size) آرایه RAID بر حسب بلوک‌های سیستم‌فایل باشد.
به تعویق انداختن تخصیص بلوک تا زمان نوشتن نهایی روی دیسک (write-out time).
غیرفعال کردن تخصیص تاخیری. بلوک‌ها زمانی تخصیص می‌یابند که داده‌ها از فضای کاربر به حافظه موقت صفحه (page cache) کپی می‌شوند.
حداکثر زمانی (بر حسب میکروثانیه) که ext4 باید منتظر بماند تا عملیات اضافی سیستم‌فایل همراه با یک عملیات نوشتن همگام به صورت دسته‌ای جمع شوند. از آنجا که یک عملیات نوشتن همگام یک ثبت ژورنال را اجباری کرده و سپس منتظر تکمیل I/O می‌ماند، هزینه زیادی ندارد و می‌تواند بهره‌وری گذردهی بزرگی به همراه داشته باشد؛ زمان کوتاهی منتظر می‌مانیم تا ببینیم آیا تراکنش‌های دیگری می‌توانند به این نوشتن همگام ملحق شوند یا خیر. الگوریتم مورد استفاده به گونه‌ای طراحی شده که با اندازه‌گیری میانگین زمان مورد نیاز برای پایان ثبت یک تراکنش، به طور خودکار سرعت دیسک را بسنجد. به این زمان "زمان ثبت" (commit time) می‌گویند. اگر زمانی که تراکنش در حال اجرا بوده کمتر از زمان ثبت باشد، ext4 تلاش می‌کند به اندازه زمان ثبت به خواب برود تا ببیند آیا سایر عملیات به تراکنش خواهند پیوست یا خیر. زمان ثبت توسط max_batch_time محدود می‌شود که پیش‌فرض آن ۱۵۰۰۰ میکروثانیه (۱۵ میلی‌ثانیه) است. این بهینه‌سازی را می‌توان با تنظیم max_batch_time روی ۰ کاملاً غیرفعال کرد.
این پارامتر زمان ثبت (همان‌طور که در بالا توضیح داده شد) را حداقل برابر با min_batch_time قرار می‌دهد. مقدار پیش‌فرض آن صفر میکروثانیه است. افزایش این پارامتر ممکن است گذردهی بارهای کاری همگام و چندنخی را روی دیسک‌های بسیار سریع افزایش دهد، به قیمت افزایش تاخیر (latency).
اولویت I/O (از ۰ تا ۷، که در آن ۰ بالاترین اولویت است) که باید برای عملیات I/O ارسال‌شده توسط kjournald2 در طول یک عملیات ثبت استفاده شود. مقدار پیش‌فرض ۳ است که اولویتی کمی بالاتر از اولویت پیش‌فرض I/O است.
شبیه‌سازی اثرات فراخوانی ext4_abort() برای اهداف اشکال‌زدایی. این گزینه معمولاً هنگام سوار کردن مجدد یک سیستم‌فایل که قبلاً سوار شده است به کار می‌رود.
بسیاری از برنامه‌های دارای نقص، هنگام جایگزینی فایل‌های موجود با استفاده از الگوهایی نظیر
fd = open("foo.new")/write(fd,...)/close(fd)/ rename("foo.new", "foo")
یا حتی بدتر:
fd = open("foo", O_TRUNC)/write(fd,...)/close(fd)
از ()fsync استفاده نمی‌کنند.
اگر auto_da_alloc فعال باشد، ext4 الگوهای جایگزینی از طریق rename و جایگزینی از طریق truncate را تشخیص داده و تحمیل می‌کند که هرگونه بلوک‌های تخصیص تاخیری به گونه‌ای تخصیص یابند که در ثبت بعدی ژورنال، در حالت پیش‌فرض data=ordered، بلوک‌های داده فایل جدید پیش از ثبت عملیات rename() روی دیسک نوشته شوند. این کار تقریباً همان سطح از ضمانت‌های ext3 را فراهم می‌کند و از مشکل "طول صفر" (zero-length) که می‌تواند در زمان سقوط سیستم پیش از ثبت بلوک‌های تخصیص تاخیری روی دیسک رخ دهد جلوگیری می‌نماید.
هیچ‌یک از بلوک‌های مقداردهی‌نشده جدول آی‌نود را در پس‌زمینه مقداردهی اولیه نکند. این ویژگی ممکن است توسط دیسک‌های فشرده نصب استفاده شود تا فرآیند نصب بتواند تا حد ممکن سریع تکمیل گردد؛ سپس فرآیند مقداردهی اولیه جدول آی‌نود تا سوار شدن بعدی سیستم‌فایل به تعویق خواهد افتاد.
کد مقداردهی تنبلانه itable به اندازه n برابر مدت زمانی (به میلی‌ثانیه) که صرف صفر کردن جدول آی‌نود گروه بلوکی قبلی شده است، منتظر می‌ماند. این کار اثر بر کارایی سیستم را در حین مقداردهی اولیه جدول آی‌نود سیستم‌فایل به حداقل می‌رساند.
کنترل می‌کند که آیا ext4 در هنگام آزاد شدن بلوک‌ها باید دستورات discard/TRIM را به دستگاه بلوکی زیرین صادر کند یا خیر. این گزینه برای دستگاه‌های SSD و LUNهای دارای تخصیص تنک مفید است، اما تا زمان انجام آزمایش‌های کافی به‌طور پیش‌فرض غیرفعال است.
این گزینه امکانات درون هسته را برای ردیابی بلوک‌های فراداده سیستم‌فایل در ساختارهای داده داخلی فعال یا غیرفعال می‌کند. این کار به تخصیص‌دهنده چندبلوکی و سایر روال‌ها اجازه می‌دهد تا به سرعت اکستنت‌هایی را که ممکن است با بلوک‌های فراداده سیستم‌فایل هم‌پوشانی داشته باشند شناسایی کنند. این گزینه برای اهداف اشکال‌زدایی در نظر گرفته شده است و از آنجا که تأثیر منفی بر کارایی دارد، به‌طور پیش‌فرض غیرفعال است.
کنترل می‌کند که آیا ext4 باید از قفل‌گذاری خواندن DIO استفاده کند یا خیر. اگر گزینه dioread_nolock مشخص شده باشد، ext4 اکستنت مقداردهی‌نشده را قبل از نوشتن بافر تخصیص می‌دهد و پس از تکمیل IO، اکستنت را به مقداردهی‌شده تبدیل می‌کند. این رویکرد به کد ext4 اجازه می‌دهد از استفاده از قفل دوطرفه (mutex) آی‌نود اجتناب کند، که این امر مقیاس‌پذیری را در حافظه‌های ذخیره‌سازی پرسرعت بهبود می‌بخشد. با این حال، این ویژگی با ژورنالینگ داده کار نمی‌کند و گزینه dioread_nolock با یک هشدار هسته نادیده گرفته خواهد شد. توجه داشته باشید که مسیر کد dioread_nolock فقط برای فایل‌های مبتنی بر اکستنت استفاده می‌شود. به دلیل محدودیت‌هایی که این گزینه دارد، به‌طور پیش‌فرض غیرفعال است (یعنی dioread_lock فعال است).
این گزینه اندازه پوشه‌ها را محدود می‌کند، به طوری که هرگونه تلاش برای گسترش آن‌ها فراتر از حد تعیین‌شده بر حسب کیلوبایت باعث بروز خطای ENOSPC می‌شود. این گزینه در محیط‌های با محدودیت حافظه مفید است، جایی که یک پوشه بسیار بزرگ می‌تواند باعث مشکلات شدید کارایی یا حتی تحریک فرایندکش کمبود حافظه (Out Of Memory killer) شود. (به عنوان مثال، اگر فقط ۵۱۲ مگابایت حافظه در دسترس باشد، یک پوشه ۱۷۶ مگابایتی ممکن است عملکرد سیستم را به شدت مختل کند.)
پشتیبانی از نگارش ۶۴بیتی آی‌نود را فعال می‌کند. این گزینه به‌طور پیش‌فرض خاموش است.
این گزینه استفاده از mbcache را برای یکتا‌سازی ویژگی‌های گسترش‌یافته (extended attribute deduplication) غیرفعال می‌کند. در سیستم‌هایی که ویژگی‌های گسترش‌یافته به ندرت یا هرگز بین فایل‌ها به اشتراک گذاشته نمی‌شوند، استفاده از mbcache برای یکتا‌سازی سربار محاسباتی غیرضروری ایجاد می‌کند.
گزینه سوار کردن prjquota پشتیبانی از سهمیه‌بندی پروژه را روی سیستم‌فایل فعال می‌کند. برای فعال‌سازی و مدیریت واقعی سامانه سهمیه‌بندی به ابزارهای سهمیه‌بندی نیاز دارید. این گزینه سوار کردن نیازمند ویژگی سیستم‌فایل project است.

سیستم‌فایل‌های ext2، ext3 و ext4 پشتیبانی از تنظیم ویژگی‌های فایل زیر را در سیستم‌های لینوکس با استفاده از ابزار chattr(1) ارائه می‌دهند:

a - فقط الحاق (append only)

A - بدون به‌روزرسانی زمان دسترسی (no atime updates)

d - بدون نسخه پشتیبان dump (no dump)

D - به‌روزرسانی همگام پوشه‌ها (synchronous directory updates)

i - غیرقابل تغییر (immutable)

S - به‌روزرسانی‌های همگام (synchronous updates)

u - غیرقابل حذف (undeletable)

علاوه بر این، سیستم‌فایل‌های ext3 و ext4 از پرچم زیر نیز پشتیبانی می‌کنند:

j - ژورنالینگ داده‌ها (data journaling)

در نهایت، سیستم‌فایل ext4 از پرچم زیر نیز پشتیبانی می‌کند:

e - قالب اکستنت‌ها (extents format)

برای شرح کامل این پرچم‌های ویژگی، لطفاً به صفحه راهنمای chattr(1) مراجعه فرمایید.

این بخش درایور سیستم‌فایل (مانند ext2، ext3، ext4) و نگارش بالادستی هسته لینوکس را که ویژگی خاصی از سیستم‌فایل از آن زمان پشتیبانی شده است، فهرست می‌کند. توجه داشته باشید که در برخی موارد، ویژگی در نگارش‌های پیشین هسته نیز وجود داشته اما با باگ‌های شناخته‌شده و جدی همراه بوده است. در موارد دیگر ممکن است ویژگی هنوز در وضعیت آزمایشی در نظر گرفته شود. در نهایت، توجه داشته باشید که برخی توزیع‌ها ممکن است ویژگی‌ها را به هسته‌های قدیمی‌تر بک‌پورت کرده باشند؛ به‌ویژه نگارش‌های هسته در برخی "توزیع‌های سازمانی" می‌توانند بسیار گمراه‌کننده باشند.

filetype
ext2, 2.2.0
sparse_super
ext2, 2.2.0
large_file
ext2, 2.2.0
has_journal
ext3, 2.4.15
ext_attr
ext2/ext3, 2.6.0
dir_index
ext3, 2.6.0
resize_inode
ext3, 2.6.10 (تغییر اندازه برخط)
64bit
ext4, 2.6.28
dir_nlink
ext4, 2.6.28
extent
ext4, 2.6.28
extra_isize
ext4, 2.6.28
flex_bg
ext4, 2.6.28
huge_file
ext4, 2.6.28
meta_bg
ext4, 2.6.28
uninit_bg
ext4, 2.6.28
mmp
ext4, 3.0
bigalloc
ext4, 3.2
quota
ext4, 3.6
inline_data
ext4, 3.8
sparse_super2
ext4, 3.16
metadata_csum
ext4, 3.18
encrypt
ext4, 4.1
metadata_csum_seed
ext4, 4.4
project
ext4, 4.5
ea_inode
ext4, 4.13
large_dir
ext4, 4.13
casefold
ext4, 5.2
verity
ext4, 5.4
stable_inodes
ext4, 5.5

mke2fs(8), mke2fs.conf(5), e2fsck(8), dumpe2fs(8), tune2fs(8), debugfs(8), mount(8), chattr(1)

مه ۲۰۲۵ e2fsprogs