مفهوم فایل سیستم دریونیکس و لینوکس (1):

اگر بخواهیم یک توصیف ساده در مورد سیستمهای یونیکس و مشابه آن یعنی لینوکس ارائه کنیم باید بگوئیم :

در یک سیستم مبتنی بر یونیکس هر چیزی یک فایل است یا یک فایل نماینده خود را دارد و اگر چیزی یک فایل نباشد حتما یک روند یا پروسه process است .

این توصیف براستی حقیقت دارد چرا که در یونیکس فایلهای مخصوصی وجود دارند که وظایفی بیشتر از یک فایل بر عهده دارند(برای مثال pipe ها و socket ها).

اما برای اینکه این مطلب را ساده تر بیان کنیم باید بگوئیم اینکه هر چیزی در یونیکس و لینوکس یک فایل متناظر با خود را دارد در همه جا عمومیت داشته و صدق میکند.

در یک سیستم گنو/لینوکس درست مثل یونیکس هیچ تفاوتی بین فایل و دایرکتوری وجود ندارد ، به این معنی که یک دایرکتوری هم خود یک فایل است که حاوی اسامی تعدادی فایل یا دایرکتوری دیگر است .

برنامه ها ، سرویسها ، متنها و تصاویر و سایر موارد مشابه و همچنین دستگاههای ورودی و خروجی input and output devices  و عموما همه ابزارهای سیستمی همگی با یک فایل به سیستم معرفی میشوند .

حال با این تفکر اگر بخواهیم همگی این فایلهای متنوع را در یک ساختار منطقی مرتب کرده و نگهداری کنیم باید به آنها بصورت یک ساختار درختی شکل نگاه کنیم که روی هارد دیسک استقرار یافته است (مثل سیستم عامل DOS).

این ساختار درختی از یک ریشه اصلی یا ROOT تشکیل شده و شاخه های بزرگتر منشعب شده از آن دارای زیر شاخه و شاخه های انتهائی دارای برگهائی هستند که همان فایلهای ما میباشند.

(این توصیف یک تصویر عمومی و نه کاملا حقیقی از فایل سیستم یونیکس است و در ادامه دلائل تفاوت اندکی که بین واقعیت موجود و این تصویر مجازی وجود دارد را بررسی میکنیم) .

انواع فایلها :

1 - فایلهای معمولی regular files:

·                     بیشتر فایلها فقط فایل معمولی هستند که حاوی اطلاعات معمولی مثل متن ، کدهای اجرائی برنامه ها ، خروجی و ورودی برنامه های کاربردی دیگر میباشند .

2 – فایلهای اختصاصی :

·                     دایرکتوری : فایلی حاوی اسامی دیگر فایلها

·                     فایلهای ویژه : حاوی مکانیزمهای چگونگی ورود و خروج اطلاعات به کامپیوتر (همه فایلهای موجود در مسیر /dev  از این دسته هستند .

·                     لینکها : سیستمی را فراهم میکنند که یک فایل یا دایرکتوری در نقاط مختلف ساختار درختی بدون نیاز به تکرار محتوی قابل مشاهده و در دسترس باشند .

·                     Domain یا sockets  : نوع بخصوصی از فایلها که همانند سوکتهای tcp/ip  روندهائی را که برای کنترل دسترسی به فایل سیستم در شبکه بصورت کنترل شده فراهم میکنند.

·                     Named piped : کمابیش عملی همانند سوکتها انجام میدهند ولی متفاوت با روالی که سوکتها در پیش میگیرند.

همانطوریکه میدانید از دستور ls  در محیط shell  برای مشاهده ساختار فایلها و پوشه های موجود در یک مسیر خاص استفاده میشود.

حال باید بدانید که افزودن گزینه  -l  به انتهای دستور ls  نتایجی کاملتر به شرح زیر در پی دارد:

taheri:~/Documents> ls –l

total 80

rw-rw-r--   1 meta   meta  31744 Feb 21 17:56 intro-

Linux.doc

rw-rw-r--   1 meta   meta   41472 Feb 21 17:56 Linux.doc-

drwxrwxr-x   2 meta   meta    4096 Feb 25 11:50 course

.

.

.

همانطوریکه ملاحظه میشود اولین کاراکتر سمت چپ آغازگر هر سطر از اطلاعات در مورد فایلهای معمولی علامت ( - ) و  اولین کاراکتر سمت چپ آغازگر هر سطر از اطلاعات مربوط به دایرکتوریها علامت ( d ) .

سایر کاراکتر های نشان دهنده نوع فایل به شرح زیر میباشد :

 

Meaning

Symbol

Regular file

-

Directory

d

Link

l

Special file

c

Socket

s

Named pipe

p

اکنون زمان آن فرا رسیده تا ضمن درک مفهوم پارتیشن و پارتیشن بندی به عمق مفهوم فایل سیستم لینوکس بر روی منابع متنوع ذخیره سازی اطلاعات بیندیشیم :

مفهوم پارتیشن :

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

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

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

بطور کلی در یونیکس و لینوکس دو نوع پارتیشن میتوان ایجاد کرد که عبارتند از : پارتیشنها اطلاعات data  و پارتیشنهای swap .

پارتیشنها اطلاعات یا data  برای ذخیره کردن دائمی اطلاعات و پارتیشنهای swap یا حافظه موقت برای شبیه سازی حافظه ram در مواقع ضروری برروی هارد دیسک ایجاد میشوند. ابزارهای پارتیشن بندی در یونیکس و لینوکس عبارتند از fdisk  و disk druid .

فرمت بندی پارتیشنهای ایجاد شده formatting :

پس از پارتیشن بندی برای ذخیره سازی اطلاعات بر روی پارتیشن و ایجاد ساختارهای فایل سیستم بر روی آنها میبایست نخست هر پارتیشن را بطور جداگانه و با فرمت خاص و مورد نظر قالب بندی یا فرمت نمود .

در محیط یونیکس و لینوکس فرمت کردن با قالبهای reiserFS  و EXT3  و EXT2 و ... امکان پذیر است و پس از فرمات کردن و نصب سیستم عامل بر روی هارد دیسک ساختار درختی فایل سیستم به شکل زیر ایجاد و همه پارتیشنها و حتی همه هارد دیسکها و سایر رسانه های ذخیره سازی اطلاعات جداگانه در زیر مجموعه یک فایل سیستم مدیریت خواهند شد .



file system