|
فایلها یكی از بنیادیترین مفاهیم سیستمعامل هستند. هر سیستمعاملی برای ساخت یك فایل، نگهداری اطلاعات آن، دسترسی و بازیابی فایل، تغییر خصوصیات فایل و عملیات و مفاهیم مرتبط با فایل از ساختاری بهره میبرد كه از آن به سیستم فایل (File system) یاد میشود. FAT16 سیستم فایل معروفMS-DOS است، FAT32 وNTFS در ویندوز استفاده میشوند و یونیكس، سولاریس،BSD و OSL2 هر كدام سیستم فایل مرتبط با ساختار كرنل خود را دارند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 رقم خورد. برای شناخت بیشتر این سیستم فایلی، ابتدا لایه مجازی سیستم فایل استفاده شده در لینوكس را بررسی میكنیم.
Virtual File system) VFS)

|
شکل 1
|
برای مشاهده تصاویر مقاله در اندازه واقعی، روی آنها کلیک کنید
|
لینوكس از یك لایه مجازیVFS برای سیستم فایل خود استفاده میكند. این لایه مجازی میان سیستم فایل در كرنل و لایه فراخوانی فرایندهای كاربران لینوكس واقع شده است (شكل 1).
همانطور كه شكل نشان میدهد،VFS بر روی سیستم فایل قرار گرفته و با گرفتن توابع فراخوانی پروسسهای كاربران، اطلاعات تجزیه و تحلیل شده را به سمت یك بلوك سیستم فایل هدایت میكند. هر پروسس در وضعیت كاری كاربر با این لایه سیستم فایل در ارتباط است نه بهصورت مستقیم با رویههای سیستم فایل. هسته سیستمعامل با بهكارگیریVFS این توانایی را به كرنل میدهد كه بدون هیچ نگرانی از فرمتهای گوناگون پشتیبانی كند، مانند فرمت فایل یونیكس و ویندوز. همچنینVFS باعث تسریع در عملیاتهای سیستم فایل شده و در هر فراخوانی فقط نیاز به دسترسی به یك بلوك است.
مفاهیم اولیهext
Extendedfs از مفاهیم یونیكس برای ساختاربندی خود استفاده میكند. مهمترین این مفاهیمInode ،Directories وLink List ها میباشند.
Inode

|
شکل 2
|
برای هر فایل یك ساختار بلوك مانندInode وجود دارد و هر فایل در لایه فیزیكی سیستمعامل تبدیل به یكInode میشود. هرInode از بخشهای مختلفی تشكیل میشود كه هر بخش شامل یك سری اطلاعات است. نوع فایل، اندازه فایل،owner یا مالك فایل، مجوزها و خصوصیات فایل، تاریخهای ثبت شده برای فایل مانند تاریخ ایجاد، آخرین دسترسی، اصلاح و اشارهگرها، مهمترین اطلاعات هرInode را تشكیل میدهند. دادههای هر فایل درData Block ها ذخیره و نگهداری میشوند كه هر Inode تعدادی اشارهگر به این دیتابلوكها دارد. هر فرایندی در سطح سیستمعامل كه نیاز به فایلی مشخص دارد كافیست شماره آن فایل را به دست بیاورد و با رجوع بهInode فایل تمام اطلاعات لازم را در اختیار خواهد داشتInode .ها ساختاری همانند شكل 2 دارند.
Directories
دایركتوریها همان ساختار درختی آشنای سازماندهی فایلها هستند.
ساختار هر دایركتوری به صورت زیر میباشد:

|
شکل 3
|
Lengthها مدخلهای اشارهكننده به Link ها هستند.
هر دایركتوری میتواند شامل فایل یا زیردایركتوری باشد. دایركتوریها نام هر فایل همراه شمارهInode آن را در خود ذخیره میكنند. هسته سیستمعامل برای یافتن یك فایل ابتدا دایركتوریها را اسكن میكند و با پیدا كردن شمارهInode فایل آدرس فیزیكی فایل در دیسك تولید میشود (شكل 3). از دیگر وظایف دایركتوریها مدیریتLink List ها است.
Link
همانند یونیكس، مفهوم لینك هم درext مطرح و به كار برده شده استLink List . میتواند یك اشارهكننده به فایل یا دایركتوری یا بلوكهایی از دادهها باشد. شما با ایجاد یك لینك میتوانید دسترسی سریع به فایل یا دایركتوری داشته باشید. خود هسته سیستمعامل هم برای دستهبندی اطلاعات ازLink List ها استفاده میكندLink .ها در سطح كاربر هم قابل تعریف و بهكارگیری هستند و به لینكهای سختافزاری و نرمافزاری تقسیمبندی میشوند.
ساختار فیزیكی Ext Fs
سیستم فایلext لینوكس ساختار فیزیكی همانند سیستم فایلBSD دارد. بدینصورت كه حافظه سیستم فایل تماماً بهBlock Group ها تقسیم میشود. این بلوكها در اندازههای 1K، 2K،4K قرار میگیرند و هر بلوك برای یك سری اطلاعات با كاربردی خاص استفاده میشود. ساختار حافظه فیزیكی سیستم فایلext به این شكل است:
Boot Sector
|
Block Group 1
|
Block Group 2
|
...
|
Block Group N
|
هر یك از اینBlock Group ها هم ساختاری این چنین دارند:
Super Block
|
FS Description
|
Block Bitmap
|
Inode Table
|
Data Block
|
همانطور كه مشاهده میشود هرBlock Group در ابتدا شامل یكSuper Block است كه اطلاعات مدیر سیستم(Root) به همراه اطلاعات كلی مربوط به بلوك در آن قرار میگیرد. بخش بعدی اطلاعات مربوط به سیستم فایل است و در ادامه جدولInode ها، دادههای هر بلوك و بیتهای كنترلی بلوك وInode قرار میگیرند.
در این شیوه از ساختاربندی فایل، چون جدولInode ها فاصلهای بسیار نزدیك با بلوك دادهها دارد كارایی سیستم چندین برابر میشود و سرعت دستیابی به اطلاعات هر بلوك از فایلها افزایش مییابد. همچنین با ایجاد یك ساختار بلوكبندی شده فضای آدرسدهی منطقی كمتری مصرف میشود.
Ext2 fs سیستم فایل استاندارد گنو / لینوكس
پس از به كار گرفته شدن سیستم فایلExt fs در هسته گنو/ لینوكس برخی نواقص و نارساییهای آن ظاهر شد و بنابراین به سیستم فایل Second Extended fs ارتقاء داده شد. قریب یك دههExt2 fs پیشفرض سیستم فایل لینوكس در كرنل و توزیعهای تجاری بود.
شاید بتوان مهمترین شاخصههایExt2 fs كه باعث متمایز شدن آن از تمامی سیستم فایلهای قبل از خود شد را بهصورت زیر لیست كرد:
Ext2 fs توانایی كار و پشتیبانی با فایلهایی با فرمتی غیر ازExt را هم داراست. به راحتی با داشتن یكVFS فایلهای ویندوز و یونیكس و دیگر سیستمعاملهای تجاری همانندBSD و فرمتV را شناخته و از این فرمتها در كنارExt استفاده میكند.
Ext2 fs قابلیت نامگذاری فایلها تا 255 كاراكتر را میسر میكند و حتی در صورت تعریف بلوكهای بزرگتر باز هم این اندازه قابل افزایش است.
بهصورت پیشفرض، حافظه فیزیكی 2Ext برابر2 گیگا بایت است. این اندازه از سیستم فایل همراهVFS امكان ایجاد یك پارتیشن بزرگ تا اندازه4 گیگا بایت را میسر میكند و دیگر نیازی به تقسیم یك پارتیشن بزرگ به اندازههای كوچكتر به وجود نمیآید.
Ext fs با تخصیص پنجاه درصد بلوكهای حافظه به حساب ریشه (Root) تواناییهای بالقوهای در اختیار مدیر سیستم قرار میدهد. با استفاده از این بلوكها امكان پیگیری فرایندهای كاربران به آسانی میسر میشود.
از خصوصیات ویژهExt2 fs امكاندهی به كاربر درset كردن خصوصیات یك فایل در زمان ساخت یا بعد از آن است. حتی یك كاربر میتواند برخی رفتارهای سیستم فایل را هم به تناسب خود تغییر دهد. این اعمال تغییرات بهوسیله ارایه ابزارهای بسیار سادهای كه از طرف جامعه اپنسورس به كاربران هدیه میشود، به آسانی صورت میگیرد.
اجازه تعریف اندازه بلوكهای فیزیكی سیستم فایل به مدیر سیستم دیگر مزیتExt2 fs است. مدیر سیستم میتواند برحسب نیاز بلوكها را به صورت دستی سایزبندی كند. این امر موجب كارایی هر چه بیشتر سیستم در مواجه با فرایندهای بلوكه شده میشود.
استفاده ازLink ها درExt2 fs به راحتی امكانپذیر است و با یك دستور <>Ln در پوسته فرمان میتوانید برای فایلها و دایركتوریها، یكLink درست كنید.
در سیستم فایلExt2 fs ،State های سیستم فایل قابل ثبت و نگهداری است. فیلدSuper Block در هر بلوك سیستم فایل وظیفهای برای نگهداری این اطلاعات دارد كه قابل بازخوانی هستند.
و مزیت آخرExt2 fs در دسترس و همگانی بودن توابع كتابخانهای سیستم فایل است كه این امكان را میدهد، هر كاربری با بهكارگیری این توابع توانایی هرگونه تغییر، اصلاح و بهوجود آوردن و ساخت را در 2Ext بهدست آورد. به همین خاطر ابزارهای بسیاری برای كار باExt2 fs موجود و قابل تهیه هستند. از ابزار پیكربندی سیستم فایل تا ابزار اشكالزدایی آن. مهمترین این ابزارها عبارتند ازDebugfs :،dump2 fs ،tune fs ،e2fsck ،Mk2 fs .
Ext3 fs نسل جدید سیستم فایل گنو / لینوكس
در كرنلی كه ازExt2 fs استفاده میكند اگر عملیاتshut down به درستی انجام نشود، به عنوان مثال قطع برق یاCrash كردن سیستم، شاهد بروز دو مشكل عمده هستیم: امكان خرابی و از بین رفتن دادهها و دوم اینكه سیستم برای بوت مجدد نیازمند به استفاده از ابزار اسكن دادهها برای شناسایی و تشخیص داده جهت سازگاری آنها با سیستم فایل است. گاهی در این موارد مدت زمان زیادی باید صبر كنید تا چند گیگابایت اطلاعات توسط سیستم خوانده شوند كه این بسیار نامطلوب استthree Extended fs . نسل جدیدExt2 fs مشكل را برطرف كرده استExt3 fs . با بهرهگیری از تكنولوژی <>journaling یا <سیستم ثبت وقایع فایلها>، امنیت دادهها و سازگاری و انسجام اطلاعات را در هنگام وقوع خطاهای سختافزاری تظمین میكند.
Ext3 fs توسط آقای Tweedie (از بنیانگذاران سیستم فایل (Ext fs توسعه یافته و از هسته 15.4.2 به بعد قابل استفاده است.
Journaling از روشی در ذخیره و نگهداری دادهها بر روی دیسك استفاده میكند كه دیگر نیازی به سازماندهی اطلاعات بلوكهای سیستم فایل و تنظیم كردن آدرسهای منطقی نیست و هیچ زمانی در فرایند بوت برای شناخت دادهها و انسجام آنها با سیستم فایل صرف نمیشود. در ضمن امنیت دادهها هم تأمین میشود. در زمان وقوع یك خطای سختافزاری، ژورنالینگ از اطلاعات دادهها پشتیبانی میكند و باعث میشود هیچگونه اطلاعات جدیدی بر روی دادهها نوشته نشود.
سرعت و بهره توان عملیاتیExt3 fs به مراتب بیشتر ازExt2 fs استExt3 fs . از سه روش برای بالا بردن سرعت استفاده میكند. در روشData = write back ، پس ازCrash كردن سیستم، دادههای قدیمی استفاده میشود. در این روش اطمینان صحت دادهها پایین میآید ولی سرعت بالا میرود. در روش Data = ordered (پیشفرض) از هر گونه اضافه شدن اطلاعات به دادههای بلوكهای سیستم فایلInode ها جلوگیری میشود. این مد بهترین كارایی را دارد. در سومین روشData= journal ، سیستم از یك فایل بزرگjournal برای نگهداری اطلاعات سیستمی ضروری برای ذخیره و بازیابی دادههای دیسك استفاده میكند. میشود گفت كه فایل journal در واقع فایلBackup سیستم است.
Ext3 fs باExt2 fs سازگاری كامل دارد و تبدیل و ارتقاء به آسانی و با چند خط فرماننویسی درshell سیستم صورت میپذیرد. و این كار بدون هیچگونه نیاز به فرمت كردن یا پارتیشنبندی یا اختلال در بلوكهای دادههای سیستم فایل صورت میپذیرد. یعنی شما فقط فایلjournal را به سیستم فایلExt2 fs اضافه میكنید.
بهكارگیری تكنولوژیjournaling در سیستم فایل علاوه بر مزایای گفته شده، باعث ایجاد یك تاریخچه از هر فایل در سیستم شده و عملیات پیگیری وقایع هر فایل به آسانی امكانپذیر میشود. گذشته از این ژورنالینگ در دیگر امكانات هسته هم استفاده میكند.
همه این ویژگیها باعث شدهاند كه بسیاری از شركتهای تجاری سیستم فایل 3Ext را به عنوان پیشفرض توزیع گنو/ لینوكس خود انتخاب كنندRed Hat . از نسخه 2/7،Ext3 fs را در نسخه لینوكس خود بهكار برد.
منابع:
1) www.Technotux.com
2) www.tldp.org/Howto/filesystemhowto.html
3) http://web.mit.edu/tytso/www/linux/ext2intro/html
4) http://web.mit.edu/tytso/www/linux:ext2.html
5) www.linuxtoday/redhatext3information.html
|