فایلها یکی از بنیادی ترین مفاهیم سیستم عامل هستند.
هر سیستم عاملی برای ساختن یک فایل، نگهداری اطلاعات آن، دسترسی و بازیابی فایل،تغییر خصوصیات فایل و عملیات و مفاهیم مرتبط با فایل از ساختاری بهره Ms-Dos سیستم فایل معروف FAT 16 ) یاد می شود.
File Systemمی بردکه از آن به سیستم فایل ( 
 هر کدام OSL2 وBSD در ویندوز استفاده می شوند.
و یونیکس، سولاریس، NTFS وFAT 32 است.
 هم سیستم فایل انحصاری سیستم عامل این سورس Ext سیستم فایل مرتبط با ساختار کرنل خود را دارند.
گنو/ لینوکس است که همزمان با توسعه این سیستم عامل خلق شد.
گنو/ لینوکس بخشی از پایداری و قدرتمندی خود را همراه ویژگی های منحصر به فردی مانند دادن مجوزها و مالکیت ها به هر فایل را مدیون سیستم فایل 
خود است.
در نوشتار زیر نگاهی اجمالی به این سیستم فایل داریم.
 تاریخچه:
 لینوکس توروالدز در طراحی سیستمعامل آزمایشی خود در سال 1991 از سیستم فایلMinix استفاده کرد.
سیستم فایلMinix جوابگوی نیازهای توروالدز بود و به خوبی در سیستمعامل جدید جا افتاد.
با بهوجود آمدن یک جنبش اینترنتی برای توسعه این سیستمعامل جدید و تبدیل آن به یک سیستمعامل اپنسورسِ قابل استفاده برای عامه مردم، نارسایی و مشکلات سیستم فایلMinix ظهور کرد و نیاز به طراحی یک سیستم فایل
جدید توسط مشتاقان لینوکس حِس شد.
دو مشکل عمده Minix در سیستم فایل عبارت بودند از کوچک بودن نام فایلها (حداکثر 14 کاراکتر) و فضای حافظه بسیار محدود (بلوک آدرسدهی فقط 16 بیتی بود یعنی 216=46مگابایت)
طراحی Virtual File System )VFS ) توسط <کریس پروون="" زنو=""> راه را برای خلق یک سیستم فایل جدید با توانایی و کارایی بهتر ازMinix هموار ساخت.
VFS یا همان لایه مجازی سیستم فایل توسط خود آقای توروالدز توسعه داده شد و به کرنل لینوکس اضافه گردید.
بلافاصله در آوریل 1992 سیستم فایل جدید،Extended File system، در نسخه 96/0 لینوکس بهجای سیستم فایلMinix استفاده شد.
در واقع بنیانگذارانEXT fs عبارتند از Remy Card از آزمایشگاه ماساچوست، Theodor Ts o از انجمن تکنولوژی ماسوچوست و Stephan Tweedie از دانشگاه رادینبرگ.
 ویژگی مهم EXT fs حافظه دو گیگا بایتی برای سیستم فایل و نامگذاری 255 کاراکتری فایلها است.
همراه سایر بخشهای لینوکس که روح توسعه در آنها جریان داشت، در ژانویه 1993،EXT fs به Second Extended File system ارتقاء داده شد.
EXT مشکلاتی داشت که میبایست برطرف میشدند.
مانند عدم کارایی مناسب Inode ها وLink List ها و عدم امکان استفاده از Time stamps (ثبت زمانهای مربوط به هر فایل) EXT2 fs نسبت به نگارش قبلی خود بسیار بهتر و مطمئنتر بود و مشکلات و باگهای موجود برطرف شده بودند.
ولی از پایداری لازم برخوردار نبود.
همزمان باEXT2 fs ، سیستم فایلی هم براساس ساختارMinix به نام Xia طراحی شد که یک سیستم فایل مطمئن و پایدار بود.
در نسخههای بعدیEXT2 fs ، پایداری آن هم به حد مناسب رسید و به عنوان سیستم فایل مخصوص لینوکس معرفی و عرضه شد.
پس از مدت زیادی که از زمان عرضه و استفاده EXT3 fs گذشت، نسل جدیدEXT به نام EXT3 fs طراحی شد.
پررنگترین ویژگی 3EXT استفاده از فناوری journaling است.
Journaling روشی برای ثبت وقایع هر فایل است تا انسجام و سازگاری دادهها با سیستم برای همیشه تضمین شود.Vfs این توانایی را هم ایجاد کرده است که لینوکس بتواند با دیگر سیستم فایلهای موجود نیز در تعامل باشدوسیستمفایلهای دیگری هم برای عملیاتخودتعریف کند.
همانطور که در تاریخچه گفته شد، اولین نسخههای لینوکس همراه با سیستم فایلMinix عرضه شدند که یک سیستم فایل مناسب و کارا مینمود ولی پیشرفت پروژه گنو و طراحی یک سیستمعامل اپنسورس فراگیر، نیازمند سیستم فایل جدیدتری بود.
کلید سیستم فایلext به وسیله طراحی ساختارVFS رقم خورد.
برای شناخت بیشتر این سیستم فایل، ابتدا لایه مجازی سیستم فایل استفاده شده در لینوکس را بررسی میکنیم.
کریس> همانطور که در تاریخچه گفته شد، اولین نسخههای لینوکس همراه با سیستم فایلMinix عرضه شدند که یک سیستم فایل مناسب و کارا مینمود ولی پیشرفت پروژه گنو و طراحی یک سیستمعامل اپنسورس فراگیر، نیازمند سیستم فایل جدیدتری بود.
برای شناخت بیشتر این سیستم فایل، ابتدا لایه مجازی سیستم فایل استفاده شده در لینوکس را بررسی میکنیم.
Virtual File system) VFS ( لینوکس از یک لایه مجازیVFS برای سیستم فایل خود استفاده میکند.
این لایه مجازی میان سیستم فایل در کرنل و لایه فراخوانی فرایندهای کاربران لینوکس واقع شده است (شکل 1).همانطور که شکل نشان میدهد،VFS بر روی سیستم فایل قرار گرفته و با گرفتن توابع فراخوانی پروسسهای شکل (1) کاربران، اطلاعات تجزیه و تحلیل شده را به سمت یک بلوک سیستم فایل هدایت میکند.
هر پروسس در وضعیت کاری کاربر با این لایه سیستم فایل در ارتباط است نه بهصورت مستقیم با رویههای سیستم فایل.
هسته سیستمعامل با بهکارگیری VFS این توانایی را به کرنل میدهد که بدون هیچ نگرانی از فرمتهای گوناگون پشتیبانی کند، مانند فرمت فایل یونیکس و ویندوز.
همچنینVFS باعث تسریع در عملیاتهای سیستم فایل شده و در هر فراخوانی فقط نیاز به دسترسی به یک بلوک است.
مفاهیم اولیهext Extendedfs از مفاهیم یونیکس برای ساختاربندی خود استفاده میکند.
مهمترین این مفاهیم Directories Inode وLink List ها میباشند.
Inode شکل (2) برای هر فایل یک ساختار بلوک مانندInode وجود دارد و هر فایل در لایه فیزیکی سیستمعامل تبدیل به یکInode میشود.
هرInode از بخشهای مختلفی تشکیل میشود که هر بخش شامل یک سری اطلاعات است.
نوع فایل، اندازه فایل،ownerیا مالک فایل، مجوزها و خصوصیات فایل، تاریخهای ثبت شده برای فایل مانند تاریخ ایجاد، آخرین دسترسی، اصلاح و اشارهگرها، مهمترین اطلاعات هرInode را تشکیل میدهند.
دادههای هر فایل درData Block ها ذخیره و نگهداری میشوند که هر Inode تعدادی اشارهگر به این دیتابلوکها دارد.
هر فرایندی در سطح سیستمعامل که نیاز به فایلی مشخص دارد کافیست شماره آن فایل را به دست بیاورد و با رجوع بهInode فایل تمام اطلاعات لازم را در اختیار خواهد داشتInode.ها ساختاری همانند شکل 2 دارند.
Directories دایرکتوریها همان ساختار درختی آشنای سازماندهی فایلها هستند.ساختار هر دایرکتوری به صورت زیر میباشد: Length ها مدخلهای اشارهکننده به Link ها هستند.هر دایرکتوری میتواند شامل فایل یا زیردایرکتوری باشد.
دایرکتوریها نام هر فایل همراه شمارهInode آن را در خود ذخیره میکنند.
هسته سیستمعامل برای یافتن یک فایل ابتدا دایرکتوریها را اسکن میکند و با پیدا کردن شماره Inode فایل آدرس فیزیکی فایل در دیسک تولید میشود (شکل 3).
از دیگر وظایف دایرکتوریها مدیریتLink List ها است.
Link همانند یونیکس، مفهوم لینک هم درext مطرح و به کار برده شده استLink List.
میتواند یک اشارهکننده به فایل یا دایرکتوری یا بلوکهایی از دادهها باشد.
شما با ایجاد یک لینک میتوانید دسترسی سریع به فایل یا دایرکتوری داشته باشید.
خود هسته سیستمعامل هم برای دستهبندی اطلاعات ازLink List ها استفاده میکندLink.ها در سطح کاربر هم قابل تعریف و بهکارگیری هستند و به لینکهای سختافزاری و نرمافزاری تقسیمبندی میشوند.
ساختار فیزیکیExt Fs سیستم فایلext لینوکس ساختار فیزیکی همانند سیستم فایلBSD دارد.
بدینصورت که حافظه سیستم فایل تماماً بهBlock Group ها تقسیم میشود.
این بلوکها در اندازههای 1K، 2K،4K قرار میگیرند و هر بلوک برای یک سری اطلاعات با کاربردی خاص استفاده میشود.
ساختار حافظه فیزیکی سیستم فایلext به این شکل است: هر یک از اینBlock Group ها هم ساختاری این چنین دارند: همانطور که مشاهده میشود هرBlock Group در ابتدا شامل یکSuper Block است که اطلاعات مدیر سیستم (Root) به همراه اطلاعات کلی مربوط به بلوک در آن قرار میگیرد.
بخش بعدی اطلاعات مربوط به سیستم فایل است و در ادامه جدولInode ها، دادههای هر بلوک و بیتهای کنترلی بلوک وInode قرار میگیرند.
در این شیوه از ساختاربندی فایل، چون جدولInode ها فاصلهای بسیار نزدیک با بلوک دادهها دارد کارایی سیستم چندین برابر میشود و سرعت دستیابی به اطلاعات هر بلوک از فایلها افزایش مییابد.
همچنین با ایجاد یک ساختار بلوکبندی شده فضای آدرسدهی منطقی کمتری مصرف میشود.
مروری کلی بر سیستم فایل در لینوکس یک توصیف ساده از سیستم یونیکس که برای لینوکس نیز به کار می رود عبارت است از: "درسیستم یونیکس همه چیز فایل است و اگر فایل نباشد یک فرایند خواهد بود.
" عبارت فوق صحیح است زیرا تعدادی فایل خاص وجود دارد که تنها فایل محسوب نمی شوند اما برای سادگی گفته می شود که همه چیز فایل است.
سیستم لینوکس نیز درست همانند یونیکس، هیچ تفاوتی بین فایل و دایرکتوری قائل نمی شود، زیرا دایرکتوری همان فایل است که شامل اسامی سایر فایل هاست.
برنامه ها، خدمات، متن ها، عکس ها همگی فایل هستند.دستگاه های ورودی و خروجی و سایردستگاه های دیگر نیز با توجه به سیستم، فایل درنظرگرفته میشوند.
برای مدیریت تمام این فایل ها به شیوه ای منظم، ترجیح می دهیم که به انها همانند درختی مرتب نگاه کنیم.به عنوان مثال همانند ساختار هارد دیسک درMS_DOS شاخه های بزرگتر شاخه های بیشتری دارندو شاخه های انتهایی شامل برگ های درخت یا فایل های معمولی هستند.از حالا از این تصویر درختی استفاده خواهیم کرد، اما در اینده خواهیم دید که این تصویر کاملا صحیح نمی باشد.
مرتب سازی فایل ها گفته می شوداین(Regular files) اغلب فایل ها تنها فایلهایی هستند که آنها شامل داده های معمولی هستند مانند فایل های متنی، فایل ها یا برنامه های اجرایی، ورودی یا خروجی برنامه ها و....
در سیستم لینوکس به طور معمول فرض می شود که با هر چه که مواجه می شوید فایل است اما موارد استثنایی نیز وجود دارد: دایرکتوریها، فایل ها و لیست سایر فایل ها، نماد مفهوم، فایل عادی، پیوندL، فایل های خاص c، s socket، p Named paipe.
فایل های خاص: مکانیزمی که برای ورودی و خروجی به کار می رود.اکثر فایل های خاص در /dev قرار دارند.در اینده دراین باره بیشتر بحث خواهیم کرد.
پیوندها: سیستمی است که سبب می شود فایل یا دایرکتوری در چندین قسمت از درخت فایل سیستم قابل مشاهده باشد.در این باره جزئیات بیشتر را خواهیم گفت.
دامنه) sockets :یکی از انواع فایل های خاص که شبیه socket های (TCP/IP است و به وسیله کنترل دسترسی به سیستم فایل، امنیت فرایند های داخلی شبکه را تامین می کند.
Named pipes : کمابیش عملکردی شبیه socket ها دارد و راهی برای ارتباط فرایند ها با یکدیگر بدون استفاده از معنای socket شبکه را شکل می دهد.
برای اینکه همیشه مجبور نباشیم برای یافتن نوع فایل در یک لیست طولانی جستجو کنیم، بیشتر سیستم ها به دنبال نام فایل، پسوندی را شامل یکی از کارکتر های “/=*|@” اضافه می کنند که نشان دهنده نوع فایل می باشد.
شما به عنوان یک کاربر تنها با فایل های ساده، فایل های اجرایی،دایرکتوری ها و پیوندها سر و کار خواهید داشت.فایل های خاص برای ایجاد سیستم به نوع دلخواه است و تنها مدیران سیستم و برنامه نویسان با انها سر و کار خواهند داشت.
حال قبل از اینکه به فایل ها و دایرکتوری های مهم نگاهی بیندازیم بد نیست کمی بیشتر در مورد پارتیشن ها بدانیم.
چراپارتیشن؟
اغلب مردم دانش مبهمی راجع به پارتیشن ها دارند، زیرا تمامی سیستم های عامل توانایی ایجاد و یا پاک کردن انها را دارند.
به نظر عجیب می رسد که لینوکس حتی زمانی که از مراحل نصب استاندارد استفاده می کند، نیاز به بیش از یک پارتیشن روی یک دیسک دارد.
و این نیاز به شرح و تفصیل بیشتر دارد.
هدف داشتن پارتیشن های مختلف در واقع دست یابی به امنیت داده ای بالاتر در هنگام بروز حادثه است.با تقسیم کردن هارد دیسک به چندین پارتیشن داده ها می توانند به صورت گروهبندی شده و جداگانه باشند.
زمانی که حادثه ای در پارتیشنی رخ دهد، تنها داده های همان پارتیشن اسیب می بینند در حالیکه سایر داده ها در دیگر پارتیشن ها اسیبی نمی بینند.
به دلایل امنیتی و قدرت عمل سیستم، از پارتیشن ها استفاده می شود،و بنا براین نفوذ در بخشی از سیستم به این معنی نیست که کل کامپیوتر در خطر است.و این مهمترین دلیل استفاده از پارتیشن بندی است.
به خاطر داشته باشید که چنین سیستم فایلی تنها امنیت داده ها را در هنگام بروز اشکال و یا قطع ناگهانی ابزارهای حافظه تامین می کند.و داده های شما را در مقابل ساختار نادرست و یا اشکالات منطقی در سیستم فایل حفاظت نمی کند.دراین مواقع لازم است که از راه حل های RAID (Redundant Array Of Inexpensive Disks) استفاده کنید.
ابزارهای مدیریت لینوکس نیاز به ابزارهای جدید اداره و مدیریت لینوکس هم توسط شرکتها و هم توسط انجمن لینوکس مد نظر قرار گرفته است.
در میان شرکتهایی که به این مساله پرداختهاند برجستهترین آنها Novell و Red Hat است، دو فراهمکننده بزرگ توزیعهای لینوکس.
این شرکتها ابزارهایی را عرضه میکنند که بسیاری از کارهای دستی، که حتی برای یک مدیر باتجربه لینوکس/یونیکس میتوانند وقتگیر و مستعد خطا باشند، را خودکار مینمایند.
کارهایی از قبیل اصلاح و بهروزرسانی توزیع، تدارک قالب bulk، و کنترل وابستگی.
چیزی که برای مدیر باتجربه POSIX وقتگیر است برای مدیر ویندوز که با ابزارهایی همچون SMS و HFNetChk خو گرفته میتواند کاملا بیگانه باشد.
از انجمن لینوکس، پروژه Webmin که دارای مجوزی شبیه BSD است یک ابزار قدرتمند برای مدیریت