فایل سیستم لینوکس یک ساختار فایل سلسله مراتبی است که نحوه ذخیره و دسترسی به فایلها در یک سیستم عامل لینوکس را تعریف میکند. این ساختار منطقی در سیستم تعبیه شده و فرایند مدیریت فایل که شامل ذخیره سازی سیستماتیک، دسترسی و تغییر فایلها در دایرکتوریها و زیردایرکتوریها (sub-directories) است را بر عهده دارد.
فایل سیستم لینوکس ویژگیهایی مانند نام فایل، اندازه، inodes (ساختمان داده ای است که متا دیتا مربوط به فایل ها را ذخیره می کند)، کاربر و گروه مالک، تاریخ ایجاد و غیره را مدیریت میکند. ذخیره سازی سیستماتیک دادهها امکان دسترسی آسانتر و سریعتر به فایلها را فراهم خواهد کرد که منجر به عملکرد بدون وقفه میشود. در ادامه به بررسی مهمترین فایل سیستم های مورد استفاده در لینوکس و همچنین نحوه ایجاد و تبدیل فایل سیستمها پرداخته می شود.
فایل سیستم لینوکس Ext2
تصویر(1)
فایل سیستم Ext2 به عنوان Second Extended File System نیز شناخته میشود که در زمان عرضه نسخههای اولیه لینوکس در سال ۱۹۹۳ معرفی شد. این فایل سیستم جانشین Ext FS گردید که اولین فایل سیستم طراحی شده برای هسته لینوکس بود. به دلیل مشکلات عملکردی و معایب دیگر در Ext، فایل سیستم Ext2 ارائه و جایگزین نسخه قبلی شد. این فایل سیستم قدرتمندتر بود و عملکرد بهتری ارائه میداد.
فایل سیستم Ext2 قابل حمل است و فاقد ویژگی ژورنالینگ بود. ویژگی ژورنالینگ نیازمند منابع اضافی پردازشی، حافظه رم و دیسک می باشد. به همین دلیل، فایل سیستم لینوکس Ext2 برای دستگاههای ذخیرهسازی مبتنی بر حافظه فلش (flash-based) از جمله فلش مموری ها و کارتهای SD بسیار ایدهآل است.
فایل سیستم لینوکس Ext3
تصویر(2)
فایل سیستم Ext3 که به عنوان Third Extended File System نیز شناخته میشود، در نوامبر ۲۰۰۱ برای کرنل لینوکس نسخه ۲.۴.۱۵ منتشر شد. سیستم فایل Ext3 بهبود قابل توجهی نسبت به Ext2 داشت و هنوز در برخی از توزیعهای لینوکس استفاده میشود.
مشابه Ext2، حداکثر حجم فایل که در فایل سیستم لینوکس Ext3 پشتیبانی می شود 2 ترابایت است. همچنین محدودیت طول نام فایل 255 بایت می باشد. برخلاف نسخه Ext2، فایل سیستم Ext3 از ژورنالینگ پشتیبانی میکند که بزرگترین بهبود آن به شمار می رود.
ژورنالینگ قابلیت های قابل توجهی را فراهم می کند از جمله:
- کاهش احتمال از دست رفتن یا خراب شدن دادهها ناشی از قطع برق یا کرش سیستم.
- پیگیری تغییرات صورت گرفته و ثبت آنها در فایلها.
- بازیابی فایل سیستم لینوکس پس از کرش سیستم.
فایل سیستم لینوکس Ext4
تصویر(3)
ext4 یک فایل سیستم ژورنالینگ دیگر است که جانشین فایل سیستم ext3 می باشد. ext4 در دسامبر ۲۰۰۸ منتشر گردید و فایل سیستم پرکاربردی به ویژه در سیستمهای Debian و Ubuntu است. حداکثر حجم فایلی که در این فایل سیستم لینوکس پشتیبانی می شود ۱۶ ترابایت بوده و حداکثر طول نام فایل به ۲۵۵ بایت محدود می باشد.
برخی از ویژگیهای کلیدی فایل سیستم ext4 عبارتند از:
- بهبود تخصیص - قبل از نوشتن دیتا روی دیسک، فایل سیستم ext4 با اختصاص کارآمد و بهینه بلوکهای فضای ذخیره سازی، عملکرد خواندن و نوشتن را بهبود میبخشد.
- بهبود برچسب زمانی (timestamp) - برچسب زمانی، یک متادیتا مربوط به فایل یا دایرکتوری است که اطلاعات مربوط به زمان را ثبت می کند. به عنوان مثال زمان ایجاد، ویرایش و آخرین دسترسی به فایل، از جمله رویدادهایی هستند که در برچسب زمانی ثبت می شوند. محدودیت هایی در خصوص بازه زمانی قابل استفاده در timestamp وجود داشت که در فایل سیستم لینوکس ext4 به مدت ۴۰۸ سال افزایش یافت و تا تاریخ ۱۰ می ۲۴۴۶ قابل استفاده است.
- سرعت بالاتر در بررسی فایل های سیستمی - در فایل سیستم ext4، آی نودها (inodes) و گروه بلوکهایی که هنوز اختصاص نیافته اند، از پیش علامت گذاری شدهاند. به همین دلیل، زمان اجرای دستورات e2fsck و fsck، تعداد فایل هایی که باید بررسی شوند به شدت کاهش یافته و بررسی فایل سیستم سریعتر انجام میشود.
- یکپارچه سازی دیسک بدون نیاز به unmount فایل سیستم - یکی از نقاط ضعف فایل سیستمهای Ext2 و Ext3، یکپارچه سازی دیسک است که بدون شک عملکرد دیسک را تحت تأثیر قرار میدهد. فایل سیستم ext4 دارای ابزار e4defrag است که یک ابزار خط فرمان جهت یکپارچه سازی فایل سیستم های Ext4 می باشد و موجب بهینه سازی عملکرد می شود.
- چکسام ژورنال - همانطور که بالاتر بیان شد، از مزایای ژورنالینگ شامل امکان بازیابی فایل های آسیب دیده ناشی از مشکلات سختافزاری می باشد. چک سام (checksum)، مقدار محاسبه شده از دیتا می باشد که جهت تشخیص ارور و یکپارچگی فایل به کار می رود. قابلیت چکسام ژورنال در فایل سیستم لینوکس ext4 موجب بهبود عملکرد و کاهش زمان لازم برای انجام ژورنالینگ می گردد.
تصویر(4)
تشخیص نوع فایل سیستم لینوکس
برای تشخیص نوع فایل سیستم لینوکس، دستور زیر را با کاربر روت اجرا نمایید.
# df -hT | awk '{print $1,$2,$NF}' | grep "^/dev"
نمونه خروجی:
/dev/sda1 ext4 /
/dev/sda2 vfat /boot/efi
/dev/sdb3 ext4 /media/example/Personal_Sites
/dev/sdb1 ext4 /media/example/Personal_Data
/dev/sdb2 ext4 /media/example/Linux_Data
هشدار: پیش از اجرای دستورات زیر، از اطلاعات مهم خود بکاپ گیری نمایید.
ایجاد فایل سیستم لینوکس Ext2 یا Ext3 یا Ext4
بعد از ایجاد یک پارتیشن با استفاده از دستور fdisk یا parted، از دستور mke2fs برای ایجاد هر یک از فایل سیستم ها استفاده نمایید. اطمینان حاصل کنید که sdX را با نام دستگاه خود جایگزین نمایید.
ایجاد فایل سیستم Ext2
برای ایجاد فایل سیستم Ext2، دستور زیر را با یوزر روت اجرا کنید.
# mke2fs /dev/sdX
ایجاد فایل سیستم Ext3
جهت ایجاد فایل سیستم Ext3 دستور زیر را اجرا نمایید
# mkfs.ext3 /dev/sdX
یا
# mke2fs –j /dev/sdX
در دستور بالا، آپشن -j برای journaling استفاده می شود.
ایجاد فایل سیستم Ext4
برای ایجاد یک فایل سیستم Ext4، بلوک فایل سیستم را به صورتی که نشان داده شده است، فرمت نمایید.
# mkfs.ext4 /dev/sdX
یا
# mke2fs -t ext4 /dev/sdX
در دستور فوق، گزینه -t برای مشخص کردن نوع فایل سیستم استفاده میشود.
تبدیل سیستمهای فایل Ext2، یا Ext3، یا Ext4
تبدیل یک فایل سیستم به فایل سیستم دیگر به راحتی قابل انجام است. فرض کنید یک پارتیشن Ext2 با اسم /dev/sdb1 دارید که به مسیر /data مانت (mount) شده است. شما میتوانید آن را در فایل /etc/fstab به شکل زیر مشاهده نمایید.
/dev/sdb1 /data ext2 defaults 0 0
برای ادامه، ابتدا نیاز است پارتیشن را unmount کنید.
# umount /dev/sdb1
تبدیل Ext2 به Ext3
برای تبدیل Ext2 به Ext3، از دستور tune2fs استفاده کنید و آپشن -j را جهت فعال سازی ژورنالینگ (journaling) وارد نمایید.
# tune2fs /dev/sdb1
سپس، فایل /etc/fstab را ویرایش کنید و نوع فایل سیستم لینوکس را به ext3 تغییر دهید. بنابراین، ورودی باید به این شکل باشد.
/dev/sdb1 /data extd3 defaults 0 0
سپس با استفاده از دستور mount، پارتیشن را مانت کنید.
# mount /dev/sdb1 /data
سرانجام، سیستم را راهاندازی مجدد نمایید.
# reboot
تبدیل Ext2 به Ext4
همانند قبل، پارتیشن مربوطه را unmount کنید.
# umount /dev/sdb1
سپس، از دستور tune2fs به همراه آپشن "-O extents,uninit_bg,dir_index" جهت فعالسازی ژورنالینگ استفاده کنید.
# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
همانند قبل فایل سیستم را مانت نموده و سیستم را ریبوت دهید.
# mount /dev/sdb1 /data
# reboot
تبدیل Ext3 به Ext4
روند تبدیل از Ext3 به Ext4 مشابه تبدیل از Ext2 به Ext4 است.
بنابراین، ابتدا پارتیشن را unmount کنید.
# umount /dev/sdb1
سپس، از دستور tune2fs به همراه آپشن "-O extents,uninit_bg,dir_index" استفاده کنید تا ژورنالینگ فعال گردد.
# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
حالا دستور fsck را اجرا کنید تا ساختارهایی که در دیسک تغییر کردهاند را ترمیم کنید.
# fsck -pf /dev/sdb1
# e2fsck -f /dev/sdb1
سرانجام، فایل سیستم را مانت کنید و سیستم را ریبوت نمایید.
# mount /dev/sdb1 /data
# reboot
نتیجهگیری
فایل سیستم های لینوکسی Ext2، Ext3 و Ext4، دارای ویژگیهای مختلفی می باشند. Ext4 پیشرفتهترین آنها است و به علت سازگاری و عملکرد بهتر پیشنهاد می شود. درک انواع فایل سیستم لینوکس جهت بهینهسازی فرایند ذخیره سازی و افزایش قابلیت اعتماد سیستم بسیار مهم می باشد.