ای‌ایکس‌تی۴

ای‌ایکس‌تی۴ یا (به انگلیسی: fourth extended filesystem) (به اختصار ext4) یک سیستم پرونده مبتنی بر ژورنال است که به عنوان نسخهٔ جدید برای سیستم پرونده ext3 معرفی شده‌است. ext4 سیستم پرونده کنونی پیش‌فرض هسته لینوکس است.

تاریخچه

این سیستم فایل در ابتدا به عنوان یک سری افزونه سازگار برای سیستم فایل پیشین یعنی ext3 متولد شد که تعداد زیادی از این افرونه‌ها توسط شرکت Cluster File Systems برای استفاده در سیستم فایل Lustre که یک سیستم فایل برای کامپیوترهای خوشه‌ای (کلاستر) بین سال‌های ۲۰۰۳ تا ۲۰۰۶ توسعه داده شد که هدف اصلی آن کم کردن محدودیت‌های ذخیره‌سازی و افزودن به سرعت و کارایی سیستم فایل قبلی بود.
توسعه دهندگان لینوکس از قبول کردن افزونه‌های نوشته شده به عنوان بخشی از سیستم فایل ext3 با توجیه اینکه افزونه‌های جدید موجب ناپایداری سیستم فایل می‌شود خود داری کردند و در عوض تصمیم گرفتند که یک انشعاب از کد ext3 به وجود آوردند و تمامی تغییرات داده شده را به همراه سایر قابلیت‌های اضافی در کد جدید اعمال کردند و سیستم فایل جدید به وجود آمده را ext4 نامیدند.
نسخهٔ مقدماتی سیستم فایل ext4 در ۱۱ اکتبر سال ۲۰۰۸ به کدهای لینوکس در نسخه ۲.۶.۱۹ اضافه شد اما کدهای نهایی که این سیستم فایل را به عنوان یک سیستم فایل پایدار معرفی کرد در نسخهٔ ۲.۶.۲۸ لینوکس گنجانده شد. نسخه ۲.۶.۲۸ به همراه سیستم فایل جدید ext4 در دسامبر سال ۲۰۰۸ انتشار یافت که در نسخه جدید سیستم فایل ext4 به عنوان سیستم فایل پیشنهادی لینوکس معرفی شد. در سال ۲۰۱۰ گوگل اعلام کرد که ساختار ذخیره‌سازی اطلاعات در سرورهایش را به ext4 تغییر خواهد داد همچنین این شرکت سیستم فایل ext4 را جایگزین سیستم فایل YAFFS در سیستم عامل اندروید کرد.

سیستم فایل بزرگ

سیستم فایل ext4 می‌تواند پارتیشن‌هایی تا اندازهٔ ۱ اکزبی‌بایت (EiB) و فایل‌هایی تا اندازه ۱۶ تبی‌بایت (TiB) داشته باشد.

اکستندها (Extends)

اکستندها جایگزین روش سنتی تخصیص بلوک‌ها (block mapping) شدند که در سیستم فایل‌های ext2 و ext3 مورد استفاده قرار می‌گرفتند. یک اکستند شامل یک رنج از بلوک‌های فیزیکی پشت سر هم است که موجب بهبود کارایی هنگام کار با فایل‌های بزرگ می‌شود و همچنین نیاز به چیدمان مجدد داده‌ها (defragmentation) را کاهش می‌دهد.

سازگاری با نسخه‌های پیشین

سازگاری رو به عقب با نسخه‌های ext3 و ext2 این امکان را فراهم میاورد تا پارتیشن‌هایی که از سیستم فایل‌های ext2 و ext3 استفاده می‌کنند را بدون تغییر ساختار به عنوان سیستم فایل ext4 به سیستم عامل معرفی کنیم که در این صورت شاهد بهبود بالای کارایی در سیستم فایل‌های گذشته خواهیم بود به این خاطر که بسیاری از قابلیت‌های جدید ext4 مانند الگوریتم جدید تخصیص بلوک‌ها می‌توانند درون سیستم فایل‌های ext2 و ext3 هم استفاده شوند.
همچنین سیستم فایل ext3 تا حدودی با نسخه بعدی خود یعنی ext4 سازگار است به این معنا که پارتیشن که دارای سیستم فایل ext4 باشد را می‌توان به عنوان ext3 به سیستم عامل معرفی کرد که این کار استفاده از پارتیشن‌های با ساختار ext4 را در نسخه‌های قدیمی تر لینوکس بدون تغییر ساختار میسر می‌کند هر چند اگر پارتیشن ext4 از اکستندها (یکی از نقاط قوت بزرگ ext4) استفاده کند قابلیت معرفی پارتیشن به عنوان ext3 را از دست خواهیم داد.

تخصیص فضای از پیش تعیین شده

سیستم فایل ext4 اجازهٔ تخصیص فضای بیش از اندازهٔ محتوای فایل را می‌دهد. روشی که هم‌اکنون توسط سایر سیستم‌های فایل برای اینکار استفاده می‌شود پر کردن مابقی فضای رزرو شده برای فایل با صفر هنگام ایجاد فایل است. در سیستم فایل ext4 دیگر نیازی به این روش نیست بلکه با استفاده از تابع جدید سیستمی به نام fallocate که در لینوکس برای فایل سیستم‌های دارای این قابلیت پیش‌بینی شده می‌توان وجود فضای اضافی رزرو شده برای یک فایل را در دیسک تضمین کرد به صورتی که فضای رزرو شده به صورت فیزیکی در ادامهٔ محتوای اولیهٔ فایل قرار داشته باشد. این قابلیت دارای کاربردهایی در پخش فایل‌های چند رسانه‌ای به شکل جریان دار (مانند رادیوهای اینترنتی) و همچنین پایگاه‌های داده‌است.

فضادهی با تأخیر

سیستم فایل ext4 از یک سیستم پیشرفته برای بهبود کارایی به تحت عنوان allocate-on-flash یا همان delayed allocation استفاده می‌کند.
روش کار به این شکل است که بر خلاف سایر سیستم فایل‌ها که بلوک‌های مورد نیاز را قبل از اینکه داده آماده نوشته شدن بر روی دیسک باشد به آن داده تخصیص می‌دهند سیستم فایل ext4 بلوک‌ها را درست در لحظه‌ای که تمام داده آماده نوشته شدن بر روی دیسک باشد به آن داده تخصیص می‌دهد که موجب بهبود کارایی و کم شدن نیاز به مرتب سازی مجدد داده‌ها (defragmentation) با توجه به بهبود تصمیم گیری جهت تخصیص بلوک‌ها بر پایهٔ اندازهٔ واقعی فایل می‌شود.

محدودیت کمتر در تعداد شاخه‌ها

در سیستم فایل ext3 حداکثر تعداد زیر شاخه‌های موجود در یک شاخه برابر با ۳۲۰۰۰ بود که این محدودیت در ext4 برابر با ۶۴۰۰۰ زیر شاخه‌است که با فعال کردن قابلیت dir_nlink می‌تواند از این فراتر هم برود.

استفاده از ژورنال (Journaling)

استفاده از ژورنال بدین معناست که سیستم فایل تمام عملیاتی که قرار است در آینده در دیسک انجام شوند را قبل از اینکه به‌طور حقیقی در دیسک اعمال شود ابتدا در ژورنال (قسمتی که در دیسک به‌طور اختصاصی برای اینکار در نظر گرفته شده) می‌نویسد.
در هنگام قطعی برق یا عدم پاسخ دهی سیستم (Crash) فایل سیستم‌هایی که از این قابلیت استفاده می‌کنند سریع‌تر به حالت آماده به کار بر می‌گردند و احتمال از دست دادن اطلاعات در آن‌ها بسیار کمتر از سایر سیستم فایل هاست.

زمان کمتر بررسی

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

سازگاری با ویندوز و مک

سیستم فایل ext4 هنوز به شکلی که ext3 و ext2 در ویندوز و مک پشتیبانی می‌شوند پشتیبانی نمی‌شود.
راه اندازهای پایدار موجود برای نسخه‌های قبلی مانند Ext2IFS هنوز برای پشتیبانی از ext4 آماده نیستند اگر چه با قابلیت سازگاری رو به جلوی ext3 و حذف extendها در ext4 می‌توان به این قابلیت دست یافت حتی با استفاده از Ext2Read در ویندوز می‌توان پارتیشن‌هایی با ساختار ext4 که extendها در آن فعال باشند را به درستی خواند و اطلاعات موجود در آن را کپی کرد اما قابلیت نوشتن در اینگونه پارتیشن‌ها همچنان به درستی در ویندوز وجود ندارد. راه اندازهای کنونی سیستم عامل مکینتاش اپل نیز تنها قادر به خواندن این نوع سیستم فایل هستند.