تمام دستگاههای ذخیرهسازی در کامپیوتر، از قبیل هاردیسک، CD-ROM و حافظهی فلش، نیاز به مدیریت اطلاعات ذخیرهشده دارند. فایلهای ذخیرهشده، در صورتیکه فاقد سازماندهی باشند، قابل بازیابی نخواهند بود و ابتدا و انتهای هر فایل نامعلوم خواهد بود. روش مدیریت ذخیره سازی و بازیابی دادهها، در سیستمهای ذخیره سازی را، فایل سیستم یا سیستم فایل میگویند. فایل سیستمهای گوناگونی، با ساختارهای متفاوت، از نظر سرعت، امنیت، پایداری و اندازه، وجود دارند. بعضی از فایل سیستمها، فقط برای یک کاربرد خاص ساخته شدهاند. مثلا فایل سیستم ISO 9660 ، مخصوص دیسکهای نوری، طراحی شده است. ما در این بخش به موضوع فایل سیستم در سیستم عامل لینوکس میپردازیم.
مفهوم فایل سیستم
دادههای مرتبط بهم، را میتوان به یک کتاب، تشبیه نمود. جلد هر کتاب در یک کتابخانه، ابتدا و انتهای هر کتاب را، مشخص میسازد. کتابهای بدون جلد، در یک کتابخانه، از یکدیگر قابل تشخیص نخواهند بود. دادههای مرتبط به هم، یک فایل را تشکیل میدهند. فایل سیستم، آدرس محلهای ذخیرهسازی هر فایل، از ابتدا تا انتهای فایل را در بانک اطلاعاتی خود ذخیره نموده است. همانطور که در یک کتابخانه، کتابهای مرتبط به هم را، در یک قفسه، کنار هم، قرار میدهند، در یک فایل سیستم، فایلهای مرتبط به هم، در یک پوشه(فولدر و یا دایرکتوری) قرار میگیرند.
فایل سیستم، یک بانک اطلاعاتی است که علاوه بر مدیریت اطلاعات ذخیره شدهی هر فایل، metadataها یا اطلاعات مربوط به خود فایلها، از قبیل تاریخ ایجاد، تاریخ تغییر، کاربر ایجادکننده، گروه و سطوح دسترسی را نیز، مدیریت مینماید. مدیریت فضای حافظهی دستگاه ذخیرهساز، امنیت و پایداری، از وظایف دیگر فایل سیستم میباشد.
معمولا، هر سیستم عامل، از چندین سیستم فایل، پشتیبانی میکند. مثلا ویندوز از سیستم فایل NTFS و FAT و FAT32 برای مدیریت فایلها، پشتیبانی مینماید. در سیستم عامل لینوکس از سیستم فایلهای Ext3, Ext2 ,Ext و Ext4 و همچنین JFS, XFS و Btrfs و همچنین FAT و FAT32 پشتیبانی میشود. در صورتی که یک دیسک را، به پارتیشنهای مختلف تقسیم کرده باشیم، میتوانیم برای هر پارتیشن، فایل سیستم جداگانهای را انتخاب نماییم.
نامگذاری فایلها در لینوکس
سیستم فایل در لینوکس، به حروف کوچک و بزرگ در نامگذاری فایلها، حساس است. مثلا شما میتوانید در یک فولدر، دو فایل با نامهای Myfile و myfile داشته باشید. فایل سیستم بین این دو نام تفاوت قائل میشود. همچنین در نامگذاری فایل در لینوکس میتوانید از حروف فارسی استفاده نمایید.
اندازهی بلاک فایل سیستم
اندازهی بلاک فایل سیستم، میزان حافظهای است که فایل سیستم موقع نوشتن و یا خواندن اطلاعات استفاده میکند. این بدین معنی است که اگر مثلا سایز بلاک فایل سیستم بر روی 4KByte یا 4096 بایت تنظیم شده باشد، در صورتی که یک فایل یک بایتی نیز ایجاد نماییم، اندازهی حافظهی اشغال شده، 4 کیلوبایت خواهد بود. در صورتی که با فایلهایی با اندازهی کوچک، زیاد سروکار دارید، انتخاب اندازهی بلاک 4096 بایت، باعث میشود، که فضای خالی بیشتری را از دست بدهید. بنابراین باید سایز بلاک فایل سیستم را کمتر نمایید. برای کاربرانی که با فایلهای بزرگ، بیشتر کار میکنند انتخاب سایز بلاک بزرگتر برای سیستم فایل، کارایی دیسک را بالاتر خواهد برد.
انواع فایل سیستم در لینوکس
در سیستم عامل لینوکس، از تعداد زیادی از فایل سیستمها، پشتیبانی میشود. بعضی از فایل سیستمها، برای مدیریت هاردیسک به کارمیروند و بعضی برای دیسکهای نوری و فلش طراحی شدهاند. دستهای از فایل سیستمها، برای مدیریت فایلهای محلی یا local بهکار میروند. گروه دیگری از فایل سیستمها برای مدیریت و بازیابی فایلها در شبکه استفاده میگردند. از فایل سیستمهای شبکه میتوان به NFS و SMB اشاره نمود. امروزه فایل سیستم Ext4، فایل سیستم پیشفرض، در بسیاری از توزیعهای لینوکس است. در ادامه، فایل سیستم Ext4 و ورژنهای قبلی آن را، مورد بررسی قرار میدهیم:
ورژنهای Extended File System یا Ext
فایل سیستم Minix
قبل از اینکه سیستم فایل Ext بوجود آید، سیستم فایل Minix، در این سیستم عامل کوچک و شبه یونیکس ، استفاده میگردید. این سیستم عامل، توسط آندرو تننباوم کدنویسی شده بود. Minix، سیستم عامل رایگان و آزاد نبود. نسخهی ابتدایی لینوکس، از سیستم فایل Minix، استفاده مینمود.
فایل سیستم Ext
Ext، یک فایل سیستم قدیمی است که در سال 1992، توسط Rèmy Card بهکار گرفته شد و برای غلبه بر محدودیتهای فایل سیستم Minix، استفاده میشد. Ext میتوانست تا میزان 2 گیگابایت، فضای حافظه را مدیریت نماید.
فایل سیستم Ext2
به فاصلهی یک سال، Rèmy Card، Ext2 filesystem، را ارائه داد. در Ext2 فایلها، از 16GiB-2TiB گیگابایت، میتوانستند افزایش حجم داشته باشند. و ظرفیت سازماندهی دیسک، از 2TiB-32TiB را پشتیبانی مینماید. این سیستم عامل، فاقد تحمل خطا در مقابل اطلاعات مخدوش میباشد. مثلا قطعی برق، قبل از ذخیره سازی کامل اطلاعات بر روی هارد، باعث مخدوش شدن صحت اطلاعات میگردد.
فایل سیستم Ext3
در سال 2001، Ext3 filesystem، با قابلیت journaling،عرضه گردید. در Ext3 فایلها، از 16GiB-2TiB گیگابایت، میتوانستند افزایش حجم داشته باشند. و ظرفیت سازماندهی دیسک، از 4TiB-32TiB را پشتیبانی مینماید. قابلیت Journaling در این سیستم فایل، باعث میشود که Ext3، دارای تحمل در مقابل خطا، باشد. در صورت قطعی برق، یا حادثهی غیرمترقبه، سیستم میتواند به آخرین حالت پایدار قبلی برگردد.
فایل سیستم Ext4
Ext4، به طور پیشفرض بر روی بسیاری از توزیعهای لینوکس، استفاده میشود و متداولترین سیستم فایل در لینوکس میباشد. این سیستم فایل از Ext3، سریعتر میباشد. برای بلوکهایی با اندازهی 4K، ماکزیمم حجم فایل تا 4TiB، و فضای حجم، تا 1EiB، اگزابایت افزایش یافت.
Everything is a file
در سیستم عامل لینوکس، همه چیز، حتی تجهیزات سختافزاری را، به صورت فایل در نظر گرفته میشود و کار کردن با سخت افزار شبیه کار کردن با یک فایل است. وقتی اطلاعاتی را در یک فایل سختافزاری مینویسیم، در اصل آن رابه ورودی دستگاه میدهیم. وقتی اطلاعاتی را از یک دستگاه میخوانیم، یعنی اطلاعات خروجی، توسط دستگاه را میخوانیم. در فایل سیستم لینوکس، دایرکتوریها نیز، مانند فایل هستند، که لیست فایلها را در خود ذخیره ساختهاند.
انواع فایلها در لینوکس
همانطور که گفته شد، در لینوکس همه چیز از جمله دیوایسهای کامپیوتر، به عنوان فایل در نظر گرفته میشود. رایجترین فایلها در لینوکس، همان فایلهای عادی است که به آنها Regular Files میگویند. فایلهای عادی ازقبیل فایلهای متنی، تصویر، فیلم و فایلهای اجرایی میباشند. انواع دیگر فایلها در لینوکس به شرح زیر میباشند.
- دایرکتوریها: دایرکتوری یا فولدر در لینوکس، مانند یک فایل در نظر گرفته میشود که لیستی از فایلهای دیگر را در خود ذخیره می سازد.
- فایلهای ویژه: این نوع فایلها برای تجهیزات سختافزاری که دارای ورودی و خروجی میباشند، به کار میرود. بیشتر فایلهای ویژه در dev/ قرار دارند.
- لینکها : مکانیزمی است که میتوان یک فایل را در مسیرهای مختلف مشاهده نمود، بدون اینکه آن فایل را به آن مسیرها کپی کرد.
سازماندهی فایلها
در لینوکس تمام فایلها به صورت درختی سازماندهی شدهاند. ریشهی این درخت از دایرکتوری root، اغاز میشود. کلمهی دایرکتوری(directory)، مشابه کلمهی پوشه(folder)، در ویندوز میباشد.
اشتباه رایج در کلمهی root
اشتباهی که شاید برای تازهکاران پدید آید کلمهی root در لینوکس میباشد. ما یک root دایرکتوری داریم، به معنای این که دایرکتوری اصلی در لینوکس است و قبل از آن دیگر دایرکتوری والدی وجود ندارد.
کاربر root، دارای معنای جداگانهای است، یعنی کاربری که دارای تمام اختیارات در سیستم فایل میباشد. و شبیه کاربر administrator، در ویندوز میباشد. و یک دایرکتوری هم به نام root/ داریم که دایرکتوری مربوط به کاربر root است.
سلسله مراتب در فایلها
همانطور که گفته شد، سیستم سازماندهی فایلها در لینوکس درختی است که از دایرکتوری / و یا ریشه شروع میشود.
در ریشه همان طور که ملاحظه مینمایید. دایرکتوریهایی به طور پیشفرض قرار دارند.
boot/
فایلهای مربوط به فرایند بوت شدن سیستم در این دایرکتوری قرار دارند.
bin/
فایلهای اجرایی سیستم عامل که نیاز به مجوز root ندارند در این دایرکتوری قرار دارند.
sbin/
فایلهای اجرایی سیستم عامل که نیاز به مجوز root برای اجرا شدن را دارند در این دایرکتوری قرار دارند.
etc/
فایلهای مربوط به تنظیمات سیستم عامل و نرم افزارهای نصبشده در این دایرکتوری قرار دارند.
dev/
فایلهای مربوط به device های نصب شده، در این دایرکتوری قرار دارند.
home/
دایرکتوری مربوط به هر کاربر ایجاد شده در سیستم، شامل فایلها و پروفایل کاربر، در این دایرکتوری قرار دارند.
tmp/
فایلهای موقتی که توسط برنامهها یا سیستم تولید میشود، در این دایرکتوری قرار دارند.
usr/
برنامههای مختلفی که توسط کاربر نصب میگردند، در این دایرکتوری قرار دارند.
var/
log فایلها و فایلهای برنامههایی که دارای فایل بانک اطلاعاتی مثل mysql هستند، در این دایرکتوری قرار دارند.
20