سیستم فایل (File System) چیست؟
سیستم فایل (File System) الگویی است که برای ذخیره، بازیابی و سازماندهی فایلها و دادهها بر روی حافظهها مورد استفاده قرار میگیرد.
سیستم فایل چیست؟
سیستم فایل (File System) یا فایل سیستم الگویی است که برای ذخیره، بازیابی و سازماندهی فایلها و دادهها بر روی حافظهها مورد استفاده قرار میگیرد. میدانیم که مجموعهای از دادهها یک فایل را بوجود میآورند. فایل چیزی است که توسط سیستم فایل ایجاد میشود؛ یعنی دادههای مشخص توسط سیستم فایل به بخش یا بخشهای مجزایی تبدیل میشوند که این بخشها درواقع همان فایلهایی هستند که ما میشناسیم. تمامی الگویی که برای این سازماندهی مورد استفاده قرار میگیرد سیستم فایل نامیده میشود.
سیستم عاملها در فرایند ذخیره سازی، بازیابی یا سازماندهی فایلها و دادهها از یک سیستم فایل استفاده میکنند. درواقع سیستم فایل مانند یک کتاب داری است که صفحات بدون نام و نشان (دادهها) را در جلدهای مخصوص خود قرار داده و کتابها (فایلها) را بوجود میآورد. سپس این کتابها را در قفسههای (پوشهها) مخصوص خود در کتابخانه (حافظه) قرار میدهد.
چرا وجود یک سیستم فایل ضروری است؟
تصاویر، ویدئوها، اسناد و درکل تمامی فایلهایی که بر روی حافظه کامپیوتر خود دارید توسط یک فایل سیستم اداره میشوند. برای این که به اهمیت وجود یک فایل سیستم در فرایند ابتدایی ذخیره سازی و بازیابی پی ببرید دو حالت زیر را در نظر بگیرید. به علاوه سه فایل با نام و محتوای زیر داریم:
نام فایل | محتوی فایل |
Text1 | VsyB2GI |
Text2 | ۷s2Ullu |
Text3 | ay53e8yH |
-
ذخیره و بازیابی بدون فایل سیستم
بدون یک سیستم فایل، دادهها فقط بر روی حافظه ذخیره میشوند. در این حالت چیزی به نام فایل وجود نخواهد داشت چون تمامی دادهها به صورت پشت سرهم قرار خواهند گرفت که هیچ اطلاعاتی از بیت شروعی یا بیت پایانی فایل وجود نخواهد داشت؛ یعنی یکی از اصول پایهای بازیابی فایل در دست نخواهد بود. برای مثال فرض کنید همان کتاب دارمان فقط صفحات را درون قفسه نگه داری میکند درحالی که هیچ نشانهای وجود نخواهد داشت که اولین و آخرین صفحه کتاب در کجا قرار دارند.
برای درک بهتر فرض کنید سه فایل بالا را ذخیره میکنیم. به یاد داشته باشید که در این فرایند از هیچ سیستم فایلی استفاده نشده است؛ بنابراین ابتدا و انتهای فایلها مشخص نمیشوند:
همانطور که میبینید دادههای ما به خوبی بر روی حافظه ذخیره شده اند. حال اگر بخواهید فایل Text2 را بازیابی کنیم چه؟ درحالی که از محل قرارگیری اولین داده این فایل (یعنی عدد ۷، در مکان شماره ۸) و آخرین آن (یعنی حرف u کوچک، در مکان شماره ۱۴) یا طول دادهها (۷ کاراکتر) اطلاعی نداریم، غیر ممکن است که بتوانیم فایل مورد نظر را به درستی بازیابی کنیم؛ بنابراین حتی اسم فایلها نیز مشخص نخواهند بود.
-
ذخیره و بازیابی توسط فایل سیستم
حال فرض کنید که همان فایلها را با استفاده از یک فایل سیستم ذخیره میکنیم؛ بنابراین ابتدا و انتهای فایل مشخص شده است. (البته درصورت ناپیوسته بودن دادههای فایل مکان دادههای جدا نیز مشخص میشود):
همانطور که میبینید دادههای ما به خوبی بر روی حافظه ذخیره شده اند و با توجه به مشخص بودم محل ابتدا، انتها و طول مجموعه دادهها، فایلها به صورت کامل و صحیح در دسترسی خواهند بود. به همین دلیل متادیتای فایل در دسترس بوده و نام و کلیه خصوصیات آن نیز قابل مشاهده خواهند بود. برای مثال در فایل Text2 به توجه به مشخص بودن ابتدا (مکان شماره ۸) و طول آن (۷ کاراکتر)، محتوای آن به درستی بازیابی خواهد شد؛ یعنی عبارت “۷s2Ullu” را خواهیم داشت.
مدیریت حافظه در سیستم فایل:
یکی از وظایف اصلی سیستم فایل یا فایل سیستم مدیریت و سازماندهی فضا (Space Management) و حافظه ذخیره سازی است. برای عملکرد بهینه تر (از نظر سرعت و کارایی)، دادههای مربوط به هر فایل در سیستم فایلها در بلوکهای (Clusters) اختصاص داده شده با اندازههای معین (Allocation Size) که سکتورهای فیزیک را شامل میشوند، ذخیره میشوند. این بلوکها هنگام ساخته شدن سیستم فایل (وقتی که حافظهای را فرمت میکنیم) پاک شده، سپس طبق اندازه تعیین شده ساخته میشوند. برای مثال ما حافظهای با حجم ۶۱۴۴ بایت داریم که میخواهیم بلوکهای ۲۰۴۸ بایتی بسازیم بنابراین ۶۱۴۴/۲۰۴۸ = ۳ بلوک خالی خواهیم داشت که تمامی حجم حافظه را شامل میشوند:
هنگام ذخیره سازی، ممکن است سایز فایل مورد نظر از اندازه بلوک کمتر باشد (برای مثال فایل Picture.jpg با حجم ۱۲۰۰ بایت)، در این حالت به صورت انفرادی در بلوک اختصاصی خود ذخیره میشود و در همان بلوک ۸۴۸ بایت فضای غیرقابل استفاده باقی خواهد ماند:
اما درصورتی که بیشتر یا برابر اندازه بلوکها باشند (برای مثال فایل Doc.txt با حجم ۳۰۰۰ بایت)، به قسمتهای مختلف، دقیقاً به اندازه بلوکها، تقسیم شده و در آن ذخیره میشوند؛ یعنی یک بلوک کامل و یک بلوک شامل ۹۵۲ بایت که ۱۰۹۶ بایت آن غیرقابل استفاده خواهد شد:
فضاهای خالی درون بلوکهایی که به صورت کامل خالی نیستند، غیرقابل استفاده است. یعنی آن بلوک فرقی با یک بلوک کاملاً پرشده ندارد و همان حجم (۲۰۴۸ بایت) را از حافظه خواهد گرفت. برای مثال درصورتی که هر دو فایل بالا (فایل Picture.jpg با حجم ۱۲۰۰ بایت و فایل Doc.txt با حجم ۳۰۰۰ بایت) را بر روی حافظه ذخیره کنیم وضعیت بلوکها به این ترتیب خواهد بود:
با این حال حجم ظرفیت کامل این حافظه ۶۱۴۴ بایتی کامل شده درحالی که فقط ۴۲۰۰ بایت آن را استفاده کرده ایم و ۱۹۴۴ بایت آن به صورت غیرقابل استفاده درآمده است. بر روی سیستم عامل ویندوز، ۶۱۴۴ سایز روی دیسک (Size on disk) و ۴۲۰۰ سایز (Size) نام گذاری شده است.
برای درک بهتر Allocation size، فرض کنید شما یک کامیون باری (همان حافظه مورد نظر) دارید که محل نگه داری بار (ظرفیت حافظه) آن به صورت ثابت، ۳۲ مترمربع است. شما اجازه دارید تا بارتان (فایلها) را با جعبههایی (بلوکها) با اندازههایی (Allocation size) که به صورت کامل محل بار را پوشش دهد، حمل کنید. درحالی که بار شما انواع مایعات (فایلهای مختلف) است، فقط میتوانید در یک جعبه یک نوع مایع را بریزید که ممکن است یکی تا نصف پر شود و یک مایع دیگر یک جعبه و نیم نیاز داشته باشد.
به این ترتیب باید در انتخاب اندازه بلوکها (Allocation unit size یا Cluster Size) در حافظه مورد نظرتان دقت کنید تا فضای حافظه بیهوده تلف نشود. برای فایلهای بزرگ اندازههای بیشتر و برای فایلهای کوچگ اندازههای کوچکتری در نظر بگیرید. شاید به نظر بیاید که هرچه اندازه این بلوکها کوچک تر باشند، فضای بهینه تری برای ذخیره سازی در اختیار دارید. این حرف درست است اما انتخاب اندازه کوچک میتواند مشکلاتی از جمله سرریزی Overhead را همراه داشته باشد که در این صورت نگه داشتن فایلها ریسک بالایی است.
برای نشان دادن اهمیت Allocation unit size، آزمایشی انجام دادیم که در آن ۱۰۰۰۰ فایل ۱۰۲۴ بایتی ساخته و درون یک حافظه ۸ گیگابایتی با اندازه بلوکها ۶۴کیلوبایتی توسط فایل سیستم FAT32 ذخیره کردیم:
با توجه به این که در هر بلوک فقط یک کیلوبایت ذخیره میشود درحالی که ظرفیت هر یک از آنها ۶۴ کیلوبایت است، در نتیجه از هر بلوک ۶۳ کیلوبایت غیرقابل استفاده باقی میماند. که در مجموع بیش از ۶۱۵ مگابایت فضای غیرقابل استفاده و درواقع “پوچ” بر روی حافظه ذخیره میشود. درحالی که حجم کل فایلها فقط حدود ۱۰ مگابایت است. یعنی حدود ۱.۵% حجم کل ذخیره شده!
مدیریت فضاهای ناپیوسته در سیستم فایل:
دادههای مربوط به یک فایل یا فضاهای خالی روی حافظه ممکن است به صورت پیوسته در کنار یکدیگر قرار نداشته باشند در این صورت نحوه قرارگیری آنها بر روی حافظه، ناپیوسته (Fragment) باشد. این گونه قرارگیری در حافظههای الکتریکی مانند SSDهاممکن است مشکل چندانی بوجود نیاورد اما بر روی حافظههای مکانیکی مانند هارد دیسکها، سرعت خواندن و نوشتن را به صورت قابل توجهی پایین میآورد. دلیل آن هم این است که مثلاً در هارد دیسکها، قسمت بازوی مکانیکی هارد باید Head را به قسمتهای مختلف Platter هدایت کند و در نتیجه زمان بیشتری لازم است تا یک فایل به صورت کامل خوانده یا نوشته شود.
به همین دلیل فایل سیستمها قابلیت پیوسته کردن فایلها و فضاهای خالی را دارند که به این عمل Defragment (دیفراگمنت) گفته میشود که سکتورهای فایل را به صورت ترتیبی مرتب کرده یا فضاهای خالی را پشت سر هم قرار میدهد.. ناپیوسته شدن فایلها یا فضاهای خالی ممکن است به دلایلی مانند حذف شدن، گسترده یا فشرده شدن، اضافه شدن فایل و … انجام گیرد.
خصوصیات مهم فایل سیستم:
سیستم فایل برای شناسایی آسان تر فایل و خصوصیات و ویژگیهای آن امکاناتی را در اختیار میگذارد که از مهمترین آنها عبارت اند از:
-
Filename
به زبان ساده، نام و مسیر فایل. طول رشتههای مربوط به نام و پسوند در فایل سیستمهای گوناگون دارای محدودیتهای مختلفی هستند. {نام گذاری استاندارد مسیر فایلها}
-
Directory
به زبان ساده، پوشههایی که همگی با آنها آشنا هستیم. فایل سیستمها معمولاً برای دسته بندی فایلها دارای پوشه هستند. به این ترتیب امکان گروهی کردن فایلها را به کاربران میدهند.
-
Metadata
سیستم فایلها امکان دسترسی به سایر ویژگیها فایل مانند حجم، زمان ایجاد و تغییر و … را توسط Metadataهای فایل به سیستم عامل و کاربران میدهند.
در تصویر زیر که توسط نرم افزار متن باز WinDirStat تهیه شده است، به صورت مجازی نحوه آرایش فایلها و فولدرها (خطوط مستطیلی) را میتوانید ببینید:
انواع فایل سیستمها:
فایل سیستمها بسته به نوع کاربرد انواع مختلفی دارند که عبارت اند از:
- (File Allocation Table (FAT (عمومی ترین و تقریباً رایج ترین فایل سیستم که دارای نسخههای مختلفی است)
- (New Technology File System (NTFS (فایل سیستم مورد استفاده در ویندوزهای خانواده NT به بعد)
- (Extended filesystem (EXT (فایل سیستم رایج در سیستم عامل لینوکس که نسخههای مختلفی دارد)
- (Extended File Allocation Table (exFAT
- (Resilient File System (ReFS
و… .
نکته: فایل سیستمهای رایج در پستهای بعدی به صورت کامل توضیح داده خواهند شد.