سامانه فایلبندی
سامانه فایلبندی یا سامانه فایل یا سامانهٔ پرونده (به انگلیسی: file system) روشی برای ذخیره و سازماندهی پروندههای رایانهای و دادههایشان است تا یافتن و دسترسی به آنها را آسان کند.
در رایانش، سامانه فایلبندی برای کنترل نحوهٔ ذخیره و بازیابی اطلاعات استفاده میشود. بدون سامانه فایلبندی، اطلاعاتِ قرارگرفته در فضای ذخیرهسازی، یک بدنهٔ کلی و بزرگ از اطلاعات خواهد بود که نمیتوان تشخیص داد یک تکه از اطلاعات به کجا ختم میشود و تکهٔ بعدی از کجا شروع میشود.
با جداسازی اطلاعات به قطعههای منحصربهفرد و نامگذاری هر قطعه، اطلاعات بهراحتی از هم جدا و تشخیص داده میشوند. هر قطعه از اطلاعات، فایل نامیده میشود.
ساختار و قوانین منطقیای که برای مدیریت دستهای از اطلاعات و نام آنها استفاده میشود «سامانه فایل» نامیده میشود. انواع مختلفی از سامانه فایلبندی وجود دارد که هریک ساختار و منطق متفاوتی دارند. هریک دارای خواص مختلفی از سرعت، انعطافپذیری، امنیت، اندازه و ...هستند. بعضی از سامانه فایلبندیها برای کاربردهای خاصی طراحی شدهاند. برای مثال، سامانه فایلبندی ایزو ۹۶۶۰ مخصوص دیسکهای نوری طراحی شدهاست.
سامانههای پرونده میتوانند از یک وسیلهٔ ذخیرهٔ اطلاعات مانند دیسک سخت یا سیدیرام بهره ببرند و مکان فیزیکیِ پروندهها را نگهداری کنند و میتوانند دسترسی به دادههای یک پروندهٔ کارساز (یا سِروِر) را با رفتار بهعنوان کارخواه (کلاینت) برای یک پروتکل شبکه (مانند کلاینتهای SMB، NFS یا 9P) فراهم کنند، یا ممکن است مجازی باشند و تنها بهعنوان روشی برای دسترسی به دادههای مجازی (مانند procfs) وجود داشته باشند. این با خدمات دایرکتوری و رجیستری متفاوت است.
در شکل رسمیتر، یک سامانه پرونده یک پایگاه دادهٔ تککاره برای انباشت، سازماندهی، دستکاری و بازیابی دادهها است.
جنبههای سامانه پروندهای
مدیریت فضا
توجه: این موضوع فقط به سامانههای پروندهای استفادهشده در دستگاههای ذخیرهگاه اعمال میشود.
سامانههای پروندهای فضا را به شکل تکهتکهای اختصاص میدهند که معمولاً بهصورت چندین واحد فیزیکی در دستگاه است. سامانه پروندهای عهدهدار سازماندهی پروندهها و فهرستهای راهنما و پیگیری اینکه کدام نواحی رسانه، متعلق به کدام پرونده است و کدام بخشها استفاده نمیشوند. برای مثال، در اپل داس (Apple DOS) در اوایل دههٔ ۱۹۸۰، بخشهای ۲۵۶ بایتی در فلاپی دیسکهای ۱۴۰ کیلوبایتی از روش نقشهٔ مسیر/بخش (track/sector map) استفاده میکردند.
این موضوع باعث ایجاد فضاهای استفادهنشده میشود. وقتی که یک پرونده دقیقاً چندین واحد تخصیص را شامل نمیشود، گاهی اوقات به نام فضای سست معرفی میشود. برای یک تخصیص ۵۱۲ بایتی، میانگین فضای استفادهنشده ۲۵۶ بایت است. برای خوشههای ۶۴ کیلوبایتی، میانگین فضای استفادهنشده ۳۲ کیلوبایت است. اندازهٔ واحد تخصیص وقتی انتخاب میشود که سامانه پروندهای ایجاد گردد. انتخاب واحد تخصیص بر اساس میانگین اندازهٔ پروندههایی که انتظار میرود در سامانه پروندهای باشد، میتواند مقدار فضای غیرقابل استفاده را به حداقل برساند. غالباً تخصیص پیشفرض میتواند کاربرد مناسبی فراهم کند. انتخاب یک واحدِ یک اندازهٔ تخصیص که بسیار کوچک است، باعث هزینهٔ بیش از حد میشود. اگر سامانه پروندهای غالباً متشکل از پروندههای بسیار بزرگ باشد، ممکن است سامانههای پروندهای تکهتکه شوند.
تکهتکه شدن سامانه پروندهای (File system fragmentation) وقتی رخ میدهد که فضای استفادهنشده یا تکپروندهها پیوسته نباشند. هنگامی که یک سامانه پروندهای استفاده میشود، پروندهها ساخته، اصلاح یا پاک میشوند. وقتی که یک پرونده ایجاد میشود، سامانه پروندهای فضایی برای داده اختصاص میدهد. بعضی از سامانههای پروندهای نیاز به تعیین یک تخصیص فضای اولیه دارند و تخصیصهای افزایشی بعدی هنگامی که پروندهها بزرگ میشوند، امکانپذیر است. زمانی که پروندهها پاک میشوند، فرض میشود فضایی که در نهایت به آنها اختصاص داده شد، برای استفاده توسط پروندههای دیگر موجود است. این موضوع ناحیههایی با اندازههای مختلف را که متناوباً استفاده شده یا استفاده نشدهاست، میسازد. این موضوع «تکهتکه شدن فضای خالی» نامیده میشود. وقتی یک پرونده ساخته میشود و ناحیهای از فضای پیوسته برای تخصیص اولیهٔ آن موجود نباشد، این فضا باید به تکهتکه شدن اختصاص داده شود. وقتی یک پرونده اصلاح میگردد، ممکن است آن پرونده بزرگتر شود و از فضایی که در ابتدا به آن اختصاص داده شده بود، تجاوز کند. در این صورت، باید یک تخصیص دیگر در جای دیگر معین شود و پرونده تکهتکه شود.
نام پرونده
یک نام پرونده برای شناسایی مکان ذخیرهگاه در سامانه پروندهای استفاده میشود. بسیاری از سامانههای پروندهای محدودیتهایی برای طول نام پروندهها دارند. در بعضی از سامانههای پروندهای، نامهای پرونده به بزرگی یا کوچکی حروف حساس نیستند؛ یعنی نامهای پرونده مانند FOO
و foo
به یک پرونده ارجاع داده میشوند. در بقیهٔ سامانههای پروندهای، نامهای پرونده به بزرگی یا کوچکی حروف حساسند؛ یعنی نامهای Foo
،FOO
و foo
به سه پروندهٔ مختلف ارجاع داده میشوند.
بسیاری از سامانههای پروندهای پیشرفته، اجازهٔ میدهند نام پروندهها شامل محدودهای گسترده از نویسههای یونیکد شوند. اگرچه آنها ممکن است محدودیتهایی برای استفاده از بعضی نویسههای خاص، آنها را در داخل نام پروندهها غیرمجاز کند، آن نویسهها ممکن است برای نشان دادن یک دستگاه، نوع دستگاه، پیشوند فهرست راهنما، جداکنندهٔ مسیر پرونده یا نوع پرونده استفاده شوند.
فهرستهای راهنما
سامانههای پروندهای معمولاً دارای فهرستهای راهنما هستند — که پوشه نیز گفته میشوند — و کاربر را برای گروهبندی کردن پرونده در مجموعههای جداگانه مجاز میسازد. این موضوع ممکن است با ارتباط نام پرونده با یک نمایه در یک جدول محتوا یا یک گروه اطلاعاتی در سامانه پروندهٔ مشابه یونیکس (Unix-like) اجرا شود. ساختارهای فهرست راهنما ممکن است مسطح (خطی) باشند، یا سلسله مراتبها را جایی که فهرستهای راهنما امکان دارد شامل زیرفهرستها شوند، مجاز سازد. اولین سامانه پروندهای برای پشتیبانی سلسلهمراتب دلخواه در سامانهعامل مولتیکس (Multics) استفاده شد.سامانههای پروندهای محلی سامانههای شبیه یونیکس نیز سلسلهمراتب فهرست راهنمای دلخواه را پشتیبانی میکنند؛ برای مثال، سامانه پروندهای سلسلهمراتبی اپل (Apple) و HFS+ بعدی در سامانهعامل کلاسیک مک (HFS+ هنوز در سامانهعامل مک استفاده میشود)، سامانه پروندهای FAT در سامانهعامل داس (MS-DOS 2.0) و نگارشهای بعدی MS-DOS و در ویندوز، سامانه پروندهای NTFS در ویندوز NT خانوادهٔ سامانهعاملها، و ODS-2 و مراحل بالاتر سامانه پروندهای Files-11 در OpenVMS.
فراداده
بقیهٔ اطلاعات مربوط به هر پرونده در داخل یک سامانه پروندهای معمولاً ساماندهی میشوند. طول دادهای که شامل یک پرونده میشود ممکن است مانند تعداد بلوکهای تخصیصدادهشده برای پرونده یا مانند شمارش یک بایت باشد. زمانی که پرونده آخرینبار اصلاح شده، ممکن است مانند برچسب زمان پرونده ذخیره شود. سامانههای پروندهای ممکن است زمان ایجاد شدن پرونده را ذخیره کند؛ زمانی که آخرینبار دیده شده، زمانی که فرادادهٔ پرونده تغییر داده شدهاست، یا زمانی که پرونده برای آخرینبار پشتیبانگیری شدهاست. بقیهٔ اطلاعات میتوانند نوع دستگاه پرونده (برای مثال بلوک، نویسه، سوکت، زیرفهرست و…)، مالک شمارهٔ شناسه کاربر و شمارهٔ شناسه گروه، اجازههای دسترسی و بقیهٔ صفات پرونده (مانند اینکه پرونده فقط خواندنی، قابل اجرا و… باشد) را شامل شوند.
یک سامانه پروندهای همهٔ فرادادههای تخصیصدادهشده به پرونده را ذخیره میکند – شامل نام پرونده، طول محتوایات یک پرونده و مکان پرونده در سلسلهمراتب پوشه – که از محتویات پرونده متمایز میسازد.
بسیاری از سامانههای پروندهای نامهای همهٔ پروندهها را در فهرست راهنما در یک مکان ذخیره میکند – جدول فهرست راهنما برای آن فهرست راهنما – که غالباً مانند بقیه پروندهها ذخیره میشود. بسیاری از سامانههای پروندهای فقط تعدادی از فرادادهها را برای یک پرونده در جدول فهرست راهنما قرار میدهند و باقی ماندهٔ فرادادهها برای آن پرونده در یک ساختار کاملاً مجزا قرار دارند، مانند گروه اطلاعاتی.
بسیاری از سامانههای پروندهای نیز فرادادههای تخصیص داده نشده با هر یک از پروندههای خاص را ذخیره میکنند. اینگونه فرادادهها شامل اطلاعاتی دربارهٔ مناطق استفاده نشده میشود – نگاشت بیت فضای خالی، نقشه دسترسی بلوک – و اطلاعاتی دربارهٔ بخشهای خراب. غالباً اینگونه اطلاعات دربارهٔ یک گروه تخصیص در داخل گروه تخصیص خودش ذخیره میشود.
صفات اضافی میتوانند به سامانههای پروندهای تخصیص داده شوند، مانند NTFS, XFS, ex2، ex3، بعضی از نگارشهای UFS، و HFS+، که از صفات پروندههای قابل تعمیم استفاده میکنند. بعضی از سامانههای پروندهای برای صفات تعرف شده توسط کاربر تهیه شدهاند، مانند نویسنده اسناد، کدبندی نویسههای یک سند یا اندازه یک تصویر.
بعضی سامانههای پروندهای اجازه میدهند که مجموعههای دادهای مختلف به یک نام پرونده تخصیص داده شوند. این مجموعههای جدا ممکن است به عنوان جریانهایی یا محلهای انشعاب، ارجاع داده شوند. شرکت اپل مدت طولانی از سامانه انشعاب در مکینتاش استفاده میکرد، و همچنین شرکت مایکروسافت نیز در NTFS جریانها را پشتیبانی میکند. بعضی از سامانههای پروندهای چندین تجدید نظر از یک پرونده را در یک نام پرونده حفظ میکنند. خود نام پرونده بیشتر نسخه اخیر را بازیابی میکند، این در حالی است که نسخههای قدیمی تر تنها با یک نامگذاری خاص قابل دسترسی هستند، همانند “filename;4” یا “filename(-4)” که برای دسترسی به چهار نسخهٔ قبل نگه داشته شد.
برای بدست آوردن اطلاعات بیشتر روی دربارهٔ اینکه کدام سامانههای پروندهای کدام یک از انواع فرا داده را پشتیبانی میکنند، مقایسهٔ سامانههای پروندهای و فرا دادهها را ببینید.
سامانه پروندهای به عنوان خلاصهای از واسط کاربری
در بعضی موارد، یک سامانه پروندهای ممکن است از یک دستگاه ذخیره گاه استفاده نکند اما میتواند برای سازماندهی و نشان دادن دسترسی به هر دادهای استفاده شود، اگرچه ذخیره میشود یا به صورت پویا تولید میگردد (مانند procfs).
سودمندیها
سامانههای پروندهای شامل سودمندیهایی برای مقدار دهی اولیه میشوند، تغییر دادن پارامترها و حذف یک نمونه از سامانه پروندهای. بعضی شامل توانایی گسترش یا کوتاه کردن فضای تخصیص داده شده به سامانه پروندهای میشوند.
سودمندیهای فهرست راهنما ممکن است برای ایجاد، تغییر نام و حذف مدخلهای فهرست راهنما استفاده شوند که به عنوان dentries نیز شناخته میشوند (مفرد: dentry), و برای تغییر دادن فرا دادهای که به یک فهرست راهنما تخصیص داده شدهاست. سودمندیهای فهرست راهنما ممکن است شامل قابلیتهایی برای ایجاد پیوندهای اضافی به یک فهرست راهنما شوند (پیوندهای سخت در یونیکس)، برای تغییر نام پیوندهای پدر (در سامانه عاملهای شبیه یونیکس)، و برای ایجاد پیوندهای دوسویه به پروندهها.
سودمندیهای پرونده برای ایجاد، فهرست، رونوشت، حرکت و حذف پروندهها و تغییر فرا دادهها است. آنها ممکن است قابلیت کوتاه کردن دادهها، کوتاه کردن یا گسترش تخصیص فضا، افزودن به، حرکت و تغییر پروندهها درجا را داشته باشند. بسته به ساختار اساسی سامانه پروندهای، آنها ممکن است یک سازوکار برای اضافه کردن، کوتاه کردن از، ابتدای یک پرونده، درج مدخلها به وسط یک پرونده یا حذف مدخلها از یک پرونده تهیه کنند.
سودمندیهای آزاد کردن فضا برای پروندههای حذف شده، اگر سامانه پروندهای یه تابع احیا تهیه کند، به این دسته نیز تعلق پیدا میکند.
بعضی از سامانههای پروندهای عملیاتی مانند سازماندهی مجدد فضای آزاد، حذف امن فضای آزاد و بازسازی ساختارهای سلسله مراتبی با فراهم کردن سودمندیهایی برای انجام دادن این توابع در زمانهای حداقل فعالیت، به تعویق میاندازند. برای مثال سودمندیهای یکپارچه سازی سامانه پروندهای.
بعضی از مهمترین ویژگیهای سودمندیهای سامانه پروندهای، شامل فعالیتهای نظارتی میشود که ممکن است شامل دور زدن مالکیت یا دسترسی مستقیم به دستگاه اساسی شود. اینها شامل پشتیبان با عملکرد بالا و بازیافت، تکرار داده و سازماندهی مجدد ساختارهای دادهٔ متفاوت و جدولهای تخصیص در داخل سامانه پروندهای میشوند.
محدود کردن دسترسی
در سامانه پروندهای چندین مکانیزم برای کنترل دسترسی به دادهها استفاده میشود. معمولاً هدف اینست که از خواندن یا دستکاری پروندهها، توسط هر کاربری، یا گروهی از کاربران، جلوگیری به عمل آید. دلیل دیگر اینست که مطمئن باشیم که دادهها به صورت کنترل شدهای دست کاری میشوند، پس دسترسی به آنها ممکن است محدود به یک برنامهٔ خاص باشد. به عنوان مثال، پسوردهای ذخیره شده در فرا دادهٔ یک پرونده یا ذخیره شده در جای دیگر، اجازههای پرونده در قالب بیتهای اجازه (permission bits)، لیستهای کنترل دسترسی، یا تواناییها. نیاز ما به سودمندی سامانه پروندهای برای داشتن دسترسی به دادهها در سطح رسانه برای شناخت ساختار و ایجاد یک پشتیبان مؤثر، به این معنی است که اینها فقط برای کاربران مؤدب مؤثر هستند و در برابر مزاحمان اثری ندارد.
در بعضی از مواقع، متدها برای رمزگذاری دادههای پرونده در خود سامانه پروندهای شامل میشوند. این روش بسیار مؤثر است چراکه دیگر نیازی به سودمندیهای سامانه پروندهای برای دانستن هر قسمت از رمزگذاری برای مدیریت مؤثر داده، نیست. ریسکهای موجود در رمزگذاری شامل این حقیقت است که یک مهاجم میتواند دادهها را کپی و با استفاده از ابزاری آن را رمزگشایی کند از دست دادن هر جخش از رمزها به معنی از دست دادن دادهها میباشد.
نگهداری یکپارچگی
یک مسیولیت قابل توجه سامانه پروندهای اطمینان حاصل کردن است از اینکه صرف نظر از عملیاتی که برنامهها به داده دسترسی پیدا میکنند، ساختار آن سازگار باقی بماند. این شامل عملیات گرفته شدهاست اگر یک برنامه در حال تغییر داده، غیرطبیعی پایان داده شود یا بیتوجهی به اطلاع دادن از سامانه روندهای که فعالیتهایش را به پایان رساندهاست. این ممکن است شامل به روز کردن فرا داده، مدخل فهرست راهنما و ادارهٔ هر داده که میانگیری شدهاست اما تاکنون در ذخیره گاه فیزیکی رسانهها به روزرسانی نشدهاست.
بقیه خرابیها که سامانه پروندهای باید سر و کار داشته باشند عبارتند از خرابیهای رسانهها یا کمبود ارتباطات سامانههای از راه دور.
به هنگام خرابی یک سامانه عامل یا خرابی باتری، روالهای مخصوص در سامانه پروندهای باید شبیه به وقتی که یک برنامه شخصی خراب میشود، احضار شوند.
سامانه پروندهای همچنان باید توانایی تصحیح ساختارهای خراب شده را نیز داشته باشد. این ممکن است به عنوان یک نتیجه از خرابی سامانه عامل، در حالتی که سامانه عامل نتواند سامانه پروندهای را آگاه کند، در اثر خرابی باتری یا بازنشانی، رخ دهد.
سامانه پروندهای همچنین باید رخدادها را ضبط کند تا موضوعات آنالیزهای سامانهای و همچنین مسایلی با پروندههای خاص یا فهرستهای راهنما را مجاز سازند.
دادههای کاربر
مهمترین هدف یک سامانه پروندهای، مدیریت دادههای کاربر میباشد. این موضوع شامل ذخیرهسازی، بازیابی و به روز کردن داده میباشد.
بعضی از سامانههای پروندهای داده را برای ذخیره گاه مانند یک جریانی از بایتها میپذیرند که در یک روش مؤثر برای رسانه جمعآوری و ذخیره شدهاند. هنگامیکه یک برنامه داده را بازیابی میکند، اندازه یک میانگیر حافظه را مشخص میکند و سامانه پروندهای داده را از رسانه به میانگیر انتقال میدهد. روال کتابخانه در حین اجرا ممکن است گاهی اوقات کاربر برنامه را برای تعریف یک ضبط بر اساس یک فراخوانی کتابخانه که طول را مشخص میکند، مجاز میسازد. وقتی کاربر برنامه داده را میخواند، کتابخانه داده را توسط سامانه پروندهای بازیابی میکند و یک ضبط بازمیگرداند.
بعضی از سامانههای پروندهای مشخصهٔ یک طول ضبط ثابت که برای همه نوشتهها و خواندهها استفاده میشود را میپذیرد. این موضوع محل یابی n امین ضبط و همچنین به روزرسانی آنها را آسان میسازد.
یک شناسایی برای هر ضبط که به عنوان یک کلید نیز شناخته میشود، برای یک سامانه پروندهای پیچیدهتر ساخته میشود. کاربر برنامه میتواند بخواند، بنویسد و ضبطها را بدون توجه به محل آنها به روزرسانی کند. این موضوع نیازمند مدیریت پیچیدهٔ بلوکهای رسانه که معمولاً بلوکهای کلید و بلوکهای داده را جدا میسازد، خواهد بود. الگوریتمهای بسیار کارآمد میتوانند با ساختار هرمی برای محل یابی ضبطها توسعه یابند.
استفاده از یک سامانه پروندهای
سودمندیها، زبان مخصوص برای کتابخانههای در حین اجرا و کاربر برنامه از API سامانه پروندهای برای ساخت درخواستهای سامانه پروندهای استفاده میکنند. این موضوعها شامل انتقال داده، موقعیتیابی، به روز کردن فراداده، مدیریت کردن فهرستهای راهنما، مدیریت کردن مشخصههای دسترسی و رفع آنها.
طراحی محدودیتها
همهٔ سامانههای پروندهای تعدادی حد تابعی دارند که حداکثر گنجایش داده قابل ذخیره در داخل همان سامانه تعریف میشود. این حدود تابعی یک تلاش بهترین حدس توسط طراح براساس این است که هماکنون سامانههای ذخیره گاه چه قدر بزرگ هستند و سامانههای ذخیره گاه در آینده احتمال دارند چه قدر بزرگ شوند. ذخیره گاه دیسک ادامه داشت که نزدیک به نرخهای نمایی رشد پیدا کند (قانون مور را ملاحظه نمایید)، به همین دلیل بعد از چند سال، سامانههای پروندهای رسیدن به طراحی محدودیتها را نگه داشتهاند که نیازمند این است که کاربران رایانه مکرراً به یک سامانه جدیدتر با گنجایش هر چه بیشتر نقل مکان کنند.
پیچیدگی سامانه پروندهای معمولاً به تناسب با گنجایش ذخیره گاه موجود تغییر میکند. سامانه پروندهای اوایل دهه ۱۹۸۰ رایانههای خانگی با ۵۰ کیلوبایت تا ۵۱۲ کیلوبایت از ذخیره گاه ممکن است انتخاب معقولی برای سامانههای ذخیره گاه پیشرفته با صدها گیگابات گنجایش نباشد. به همین ترتیب، سامانههای پروندهای پیشرفته ممکن است انتخاب معقولی برای این سامانههای اولیه نباشد، از آنجا که پیچیدگی ساختارهای سامانه پروندهای پیشرفته ممکن است به سرعت تحلیل روند یا حتی از گنجایش بسیار محدود سامانههای ذخیره گاه اولیه تجاوز کنند.
انواع سامانههای پروندهای
انواع سامانههای پروندهای میتواند به دستههای: سامانههای پروندهای از نوع دیسک/ نواری، سامانههای پروندهای از نوع شبکهای و سامانههای پروندهای با اهداف خاص تقسیم شوند.
سامانههای پروندهای از نوع دیسک
یک سامانه پروندهای از نوع دیسک از تواناییهای رسانههای (media) ذخیرهگاه دیسک (disk storage) استفاده میکند تا در مدت کوتاهی، به صورت تصادفی دادهها را آدرسدهی کند. از دیگر ملاحظاتی که انجام میشوند، میتوان به سرعت دسترسی به دادهها اشاره کرد، که ابتدا باید درخواست شود و پیشبینی شود که داده مورد نظر نیز ممکن است درخواست شده باشد. این موضوع به چندین کاربر یا پردازه اجازه میدهد، تا به دادههای متفاوتی روی دیسک، بدون توجه به توالی مکان قرارگیری داده، دسترسی داشته باشند. به عنوان مثال: جدول تخصیص پرونده (FAT) (فت ۱۲ (FAT12)، فت ۱۶ (FAT16)، فت ۳۲ (FAT32))، اکس فت (exFAT), NTFS, HFSو HFS+, HPFS, APFS, UFS, ext2، ext3، ext4، XFS, btrfs، ایزو ۹۹۶۰ (ISO 9960)، Files-11، سامانه پروندهای وریتاس (Veritas File System), VMFS, Zfs, ReiserFS و UDF. بعضی از سامانههای پروندهای از نوع دیسک عبارتند از سامانه پروندهای ژورنالینگ (journaling file system) با سامانه پروندهای ورژنینگ (versioning file system).
دیسکهای نوری
ایزو 9660 (ISO 9660) و قالب عمومی دیسک (Universal Disk Format) 2 قالب عمومی هستند که هدفشان دیسکهای فشرده، دی وی دی (DVD) و دیسکهای بلو-ری(blu-ray disks) است. مونت رینیر (Mount Rainier) یک توسعه برای UFD از سریهای۲٫۶ هستهٔ لینوکس (linux kernel 2.6) و ویندوز ویستا (windows vista) است که تسهیل بازنویسی در دی وی دیها را پشتیبانی میکند.
سامانه پروندهای از نوع فلش
مقالهٔ اصلی: سامانه پروندهای فلش
سامانه پروندهای فلش تواناییهای خاص، کارایی و محدودیتهای دستگاههای با حافظهٔ فلش را در نظر میگیرد. بهطور مداوم یک سامانه پروندهای از نوع دیسک میتواند از دستگاه با حافظهٔ فلش، به عنوان یک رسانه ذخیره گاه پایه، استفاده کند، ولی بهتر است از سامانه پروندهایی که بهطور اختصاصی برای دستگاههای فلش ساخته شدهاست، استفاده شود.
سامانه پروندهای از نوع نوار
سامانه پروندهای از نوع نوار، نوعی از سامانه پروندهای است. در این نوع، قالب نوار، که برای ذخیره کردن پروندهها روی نوار است، به صورت خود توصیفکننده، طراحی شدهاست. نوارهای مغناطیسی در واقع، رسانههای ذخیره گاه متوالی با زمان دسترسی به دادههای تصادفی بسیار بالاتری از دیسکها هستند که چالشهایی برای ساخت و مؤثر نمودن مدیریت سامانههای پروندهای عام منظوره، ایجاد کردهاند.
در سامانه پروندهای از نوع دیسک، معمولاً یک فهرست راهنمای اصلی (master directory) و همچنین یک نقشه از نواحی دادههای استفاده شده و آزاد (used and free data regions)، وجود دارد. هر پروندهای که میخواهد اضافه، عوض، یا حذف شود، نیازمند به روزرسانی فهرست راهنما و نقشهٔ استفاده/آزاد شدهاست. دسترسی تصادفی به نواحی دادهها در واحد میلیثانیه اندازهگیری میشوند. در نتیجه این سامانه به خوبی بر روی دیسکها کار میکند.
نوار نیاز به حرکت خطی، برای بستن و باز کردن قرقرههای عموماً بسیار بلند رسانهها دارد. این حرکت نوار برای جابهجا کردن سر (head) خواندن/ نوشتن از انتهای یک نوار به نواری دیگر، ممکن است از چند ثانیه تا چند دقیقه طول بکشد.
به تبع آن در نوار، یک پروندهٔ فهرست راهنمای اصلی (master file directory) و نقشهٔ استفاده، میتواند بسیار کند و ناکارآمد باشد.
نوشتن معمولاً با اعمال زیر همراه است:
- خواندن نقشهٔ بلوک استفاده (block usage map)، برای پیدا کردن بلوکهای خالی به منظور نوشتن.
- به روزرسانی نقشهٔ استفاده و فهرست راهنما برای اضافه کردن داده.
- و در نهایت پیش برد نوار برای نوشتن داده در مکان صحیح.
در عوض سامانههای پروندهای از نوع نوار معمولاً اجازه میدهند تا فهرست راهنمای پرونده در نوار بخش و با دادهها ترکیب شود، که استریمینگ (streaming) معرفی شدهاست، به این ترتیب حرکات زمان بر و تکراری نوار دیگر نیازی به نوشته شدن ندارند.
در هر حال، یکی از معایب این طراحی اینست که، خواندن پروندهٔ فهرست راهنمای نوار عموماً نیاز به پیمایش (scan) سراسر نوار برای خواندن همهٔ فهرست راهنماهای ورودی پراکنده(scattered directory entries) دارد. بیشتر نرمافزارهای آرشیو داده، که با ذخیره گاه نوار کار میکنند، یک کپی محلی از کاتالوگ نوار را در یک سامانه پروندهای از نوع دیسک نگهداری میکنند، تا عمل اضافه کردن پروندهها به نوار با سرعت بیشتری و بدون نیاز به پیمایش دوبارهٔ نوار برای رسانهها، انجام شود. کپی محلی از کاتالوگ نوار، عموماً برای مدت زمان معینی کاربرد دارد و در صورت نیاز در آینده مجدداً باید یک پیمایش در نوار صورت بگیرد.
IBM یک سامانه پروندهای برای نوار، به نام سامانه پروندهای خطی از نوع نوار (Linear Tape File System) ایجاد کردهاست. پیادهسازی IBM از این سامانه پروندهای به صورت سامانه پروندهای از نوع نوار خطی آی بی ام--- تک گرداننده ویرایش (LTFS-SDE) متن باز(open-source IBM Linear Tape File System — Single Drive Edition (LTFS-SDE) product) است. سامانه پروندهای از نوع نوار خطی از یک بخش جدا در نوار، برای ذخیرهٔ شاخص فرا داده (meta-data) استفاده میکند. به همین دلیل، مشکلات مربوط به فهرست راهنماهای ورودی پراکنده در سراسر نوار از بین میروند.
قالب بندی نوار (tape formatting)
نوشتن داده روی نوار، پاک کردن آن، یا قالب بندی نوار عموماً یک فرایند زمان بر است و در نوارهای بزرگ میتواند تا چندین ساعت طول بکشد. با توجه به تکنولوژیهای بسیار زیاد نوار داده (data tape) ضروری نیست که قبل از نوشتن مجدد دادهها روی نوار، آن را قالب بندی کنیم. این به دلیل ماهیت مخرب بازنویسی دادهها بر روی رسانههای متوالی میباشد (sequential media).
به خاطر اینکه قالب بندی نوارها میتواند زمان بر باشد، عموماً نوارها از قبل قالب بندی میشوند، تا کاربران نوار نیازی به صرف زمان برای آمادهسازی هر نوار قبل از استفاده، نداشته باشند. تنها چیزی که عموماً ضروری است این است که قبل از استفاده، یک برچسب قابل تشخیص برای رسانه روی نوار نوشته شود. حتی این نیز میتواند به صورت خودکار وقتی یک نوار جدید برای اولین بار استفاده میشود، توسط نرمافزار نوشته شود.
سامانه پروندهای از نوع پایگاه داده
یک جنبهٔ دیگر از مدیریت پرونده، ایدهٔ سامانه پروندهای بر پایهٔ پایگاه دادهاست. به جای یا علاوه بر ساختار وراثتی در مدیریت، پروندهها به کمک مشخصاتشان مانند: نوع پرونده، اسم پرونده، نویسندهٔ پرونده یا فرا دادههای غنی مشابه، شناخته میشوند.
DB2 برای i (شناخته شده به DB2/400 و DB2 for i5/OS) یک سامانه پروندهای از نوع پایگاه دادهاست که، به عنوان بخشی از یک شی بر اساس سامانه عامل IBM i (شناخته شده به OS/400 و i5/OS) است، در ترکیب با یک فروشکاه یک طبقهای و اجرا شده بر روی سامانه IBM Power (شناخته شده به AS/400 و iSeries)است که آقای فرنک ج. سولتیس (Frank G. Soltis)، دانشمند ارشد سابق IBM i، آن را طراحی کردهاست. در سالهای ۱۹۷۸ تا ۱۹۸۸ آقای سولتیس و تیمش در IBM Rochester تکنولوژیهایی مانند سامانه پروندهای از نوع پایگاه داده را به صورت موفقیتآمیز طراحی و پیادهسازی کردند. در حالی که بقیه همانند Microsoft نتوانستند این موفقیت را بدست آورند. این تکنولوژیها به ‘Fortess Rochester’ شناخته شدهاند و بعدها در چندین جنبهٔ اساسی کوچک گسترش یافت ولی در واقع از دیدگاه فناوری، بسیار پیشرفته تر شد.
در زیر به بعضی از پروژههایی که بخشی از جنبههای سامانه پروندهای از نوع پایگاه داده را در خود داشتهاند، پرداخته میشود:
- بسیاری از سامانههای مدیریت محتوای وب از یک سامانه مدیریت پایگاه داده رابطهای (relational DBMS)، برای ذخیره و بازیابی پروندهها استفاده میکنند. به عنوان مثال، پروندههای XHTML، به عنوان XML یا فیلدهای متنی ذخیره میشوند، در حالی که پروندههای تصویری به صورت فیلدهای حبابی ذخیره میشوند: SQL SELECT (به همراه XPath به صورت اختیاری) توضیحات پروندهها را بازیابی میکنند، و استفاده از منطق پیچیده را ممکن میسازند و با اطلاعات با ارزش تری در مقایسه با سامانههای پروندهای معمول در ارتباط هستند. بسیاری از سامانههای مدیریت محتوا نیز از توانایی ذخیره کردن فقط فرا داده در پایگاه داده، با یک سامانه پروندهای استاندارد مورد استفاده در ذخیره کردن محتوای پروندهها، برخوردار هستند.
- سامانههای پروندهای بسیار بزرگ، با نرمافزارهایی مانند Apache Hadoop و Google File System، با استفاده از برخی از جنبههای سامانه پروندهای از نوع پایگاه داده، مجسم میشود.
سامانه پروندهای از نوع تراکنشی(Transactional file system)
در بعضی از برنامهها نیاز است که چندین پرونده به صورت همزمان به روزرسانی شوند. به عنوان مثال، نصب نرمافزار ممکن است باعث نوشتن پروندههای باینری، کتابخانهها، و تأیید پروندههای برنامه شود. اگر نصب نرمافزار موفقیتآمیز نباشد، احتمال میرود که برنامه قابل استفاده کردن نباشد. اگر فرایند نصب در حال به روزرسانی یک بخش اصلی از سامانه باشد، همانند پوستهٔ فرمان (command shell)، احتمال میرود که کل سامانه به حالت غیرقابل بهرهوری، وارد شود.
فرایند تراکنش، انزوا را ضمانت میکند، که این به این معنی است که عملیاتی که روی آنها تراکنش انجام میشود از دیگر ریسههای درون سامانه، تا زمانی که عمل تراکنش به پایان برسد، پنهان میشوند و عملیات متداخل درون سامانه در هر تراکنش، به صورت مناسبی، پشت سر هم مرتب میشوند. همچنین تراکنشها ظرفیت اتمی را ضمانت میکنند، به این معنی که عملیات داخل یک تراکنش یا همگی متعهدند یا تراکنش میتواند به بعد موکول شود و سامانه تمامی نتایج بدست آمده تا آن زمان از تراکنش را پاک میسازد. یعنی، در صورتی که یک حادثه رخ دهد یا باتری تمام شود، بعد از عملیات ترمیم وضعیت ذخیره شده ثبت شده باقی میماند. در نهایت، عملیات نصب نرمافزار یا موفقیتآمیز است یا ناموفق. اگر عملیات ناموفق باشد در این صورت، پس از برگشت به حالت اولیه دیگر هیچ اثری از نرمافزار معیوب در سامانه نمیماند.
شرکت مایکروسافت اولین بار درVista Windows، یک تراکنش با ویژگی Transactional NTFS، برای پشتیبانی ان تی اف اس (NTFS) اضافه کرد، ولی در حال حاضر دیگر استفادهای ندارد. یکسری نمونههای اولیه از سامانههای پروندهای از نوع تراکنشی برای سامانه عامل لینوکس، در دست آزمایش هستند. از جمله این سامانهها میتوان به سامانه پروندهای ولور (Valor file system)، آمینو (Amino)، ال اف اس (LFS)، سامانه پروندهای ext3 در هستهٔ TxOS، که از نوع تراکنشی است، و همچنین سامانه پروندهایهایی که هدفشان سامانههای نهفته (embedded systems) است، همانند TFFها.
اطمینان از سازگاری در سراسر چندین سامانه پروندهای دشوار، ولی بدون تراکنشهای سامانه پروندهای قابل اجرا است. قفل کردن پروندهها میتواند به عنوان یک مکانیزم برای کنترل همروندی برای پروندههای مستقل استفاده شود، ولی در حالت کلی از ساختار فهرست راهنما یا پروندهٔ فرا داده حفاظت نمیکند. به عنوان مثال، با قفل کردن پرونده نمیتوان از مسابقهای که در شرایط زمان بررسی تا زمان استفاده (time of check to time of use (TOCTTOU)) در لینکهای نمادین به وجود میآید، جلوگیری به عمل آورد. همچنین با قفل کردن پرونده نمیتواند به صورت خودکار یک عملیات ناموفق را پاکسازی کرد، همانند عملیات ارتقای یک نرمافزار، که نیاز دارد به صورت خودکار انجام شود.
سامانههای پروندهای ژورنالی یک روش برای معرفی تراکنشها با سازگاری درجه یک در ساختار سامانههای پروندهای هستند. تراکنشهای ژورنالی به عنوان بخشهایی از API (Application Program Interface)های سامانه عامل در معرض دید برنامهها نیستند. آنها فقط برای مصارف داخلی برای حفظ سازگاری در یک سامانه کال واحد استفاده دارند.
سامانه پشتیبان داده بهطور معمول، دادههای ذخیره شده به صورت تراکنشی را مستقیماً پشتیبانی نمیکنند، این موجب میشود که عملیات بازیابی مجموعه دادههای قابل اعتماد و سازگار، سخت شود. بیشتر نرمافزارهای پشتیبانی داده، بدون توجه به حالت تراکنشی مشترک موجود بین چند پرونده در یک مجموعه پایگاه داده، فقط اعلان میکنند که آیا دادهها بعد از مدت زمان معینی تغییر کردهاند، یا نه. در بعضی از پایگاه دادهها، راه حل بدست آمده برای این مشکل اینست که، یک آرشیو از وضعیت هر پرونده، شامل تمام دادههای بدست آمده تا آن زمان و ذخیرهسازی این دادهها در نرمافزار پشتیبان، به صورتی که مستقیماً با پایگاه دادههای تراکنشی فعال در ارتباط نباشد، است. بازیابی نیازمند جداسازی بازسازی پایگاه داده از وضعیت پرونده، بعد از اینکه پرونده در نرمافزار پشتیبان ذخیره شد، میباشد.
سامانه پروندهای از نوع شبکه
سامانه پروندهای از نوع شبکه، نوعی از سامانه پروندهای است که، به شکل یک مشتری برای پروتکل دسترسی از راه دور پرونده، برای دسترسی پیدا کردن به پروندهها در سرور، عمل میکند. برنامههایی که از رابطهای محلی استفاده میکنند، میتوانند به صورت پنهانی، فهرستهای راهنمای درختی و پروندههای درون کامپیوترهای کنترل از راه دور را ایجاد، مدیریت یا به آنها دسترسی پیدا کنند. مثالهایی از سامانه پروندهای شبکهای: مشتریهای پروتکلهای سامانه پروندهای از نوع شبکهای(NFS)، سامانه پروندهای از نوع اندرو (AFS)، بلوک پیام سرور (SMB) و همچنین شبه مشتریهای سامانههای پروندهای از جمله: پروتکل انتقال پرونده (FTP) و WebDAV.
سامانه پروندهایهای از نوع دیسک مشترک
سامانه پروندهای از نوع دیسک اشتراکی نوعی از سامانه پروندهای است که در آن تعدادی از ماشینها (معمولاً سرورها) همگی دسترسی به یک زیرسامانه دیسک خارجی یکسان (معمولا یک SAN)) دارند. صفات سامانه پروندهای به زیر سامانه دسترسی پیدا میکنند تا از نوشتن برخورد جلوگیری کنند. از مثالهای سامانه پروندهای از نوع دیسک مشترک میتوان به جی اف اس 2(GFS2)در کلاه قرمز (red hat)، جی پی اف اس (GPFS) در آی بی ام (IBM)، اس اف اس (SFS) در پلو داده (DataPlow)، سی اکس اف اس (CXFS) در اس جی آی (SGI) و StorNext در Quantum Corporation.
سامانه پروندهایهای ویژه
سامانه پروندهای ویژه، یک عنصر غیر پروندهای از پروندههای سامانه عامل را ارائه میدهد. تا آنها بتوانند به صورت APIهایی برای سامانه پروندهای عمل کنند. این کار بیشتر روی سامانه عاملهایی شبیه یونیکس انجام میشود، ولی در یکسری سامانه عاملهایی که شبیهٔ ونیکس هم نیستند، به دستگاهها نام داده میشود.
سامانه پروندهای از نوع دستگاهی
سامانه پروندهای از نوع دستگاه، دستگاههای ورودی/خروجی (I/O devices) و دستگاههای سودو (pseudo-devices) را به عنوان پروندههایی به نام پروندههای دستگاه، نشان میدهد. مثالهای این سامانه پروندهای در سامانه عاملهای شبه یونیکس عبارت اند از: devfs و لینوکس ۲٫۶، udev. و در سامانه عاملهای دیگر عبارت اند از: TOPS-10 و دیگر سامانه عاملهای مشابه این، که نام کامل پرونده یا نام مسیر آن در پیشوند دستگاه میآید. دیگر دستگاههای شامل سامانه پروندهای به کمک پیشوند یک دستگاه، که نمایانگر آن دستگاه است، بدون اینکه چیزی در انتهایش بیاید، ارجاع داده میشوند.
دیگر سامانههای پروندهای خاص
- در هستهٔ لینوکس، configfs و sysfs پروندههایی، برای پرس و جو در هستهٔ kernel برای بدست آوردن اطلاعات و پیکربندی موجودیتها در kernel ایجاد میکنند.
- Procfs پردازهها و دیگر ساختارهای سامانه عامل را در فضای یک پرونده، روی لینوکس، نگاشت میکند.
سامانه پروندهای از نوع حداقلی / ذخیره گاه نوار-صوتی
در اواخر دههٔ ۱۹۷۰ میلادی، پیشرفت تکنولوژی میکرو کامپیوترها آغاز شد. دیسکها و نوارهای دیجیتالی برای عموم مردم گران بودند. در آن زمان، یک سامانه ذخیره گاه ارزان پایهای، پیشنهاد میشد، که نوارهای صوتی را استفاده میکرد.
وقتی نیاز بود در سامانه دادهای نوشته شود، به کاربر پیام داده میشد که دکمهٔ ضبط (Record) روی نوار را فشار دهد، و سپس دکمهٔ (Return) را که روی کیبورد است فشار دهد تا سامانه متوجه شود که نوار در حال ضبط کردن میباشد. سامانه خود، یک صدا را برای ایجاد یک هماهنگی در زمان، مینویسد، و سپس صداهایی برای کدگذاری یک پیشوند هستند، خود داده، یک سرجمع (check sum) و یک پسوند را مدلسازی میکند. وقتی سامانه نیاز داشت که دادهای را بخواند، به کاربر گفته میشد که دکمهٔ شروع (Play) را از روی نوار بزند و سامانه در این صورت به صداهای روی نوار گوش میداد، تا زمانی که مجموعهای از صداهای پشت سر هم قابل، به عنوان یک هماهنگ ساز، شناسایی بودند. در این صورت سامانه شروع به تفسیر صداهای بعدی که دادهها هستند، میکند. وقتی کار خواندن دادهها تمام میشود، سامانه به کاربر میگوید که دکمهٔ توقف (Stop) روی نوار را بزند. این روش، در حالی که بسیار ابتدایی بود، ولی در بیشتر مواقع به درستی کار میکرد. در این سامانهها عموماً دادهها معمولاً در قالب بدون نامی، پشت سر هم ذخیره میشدند، البته در بعضی از سامانهها (مانند سری کامپیوترهای کامادور پی ای تی (Commodore PET)) اجازهٔ نامگذاری پروندهها را داده میشد. چندین سری داده به کمک گزینهٔ سریعتر جلو رفتن (fast-forwarding) در نوار، میتوانستند نوشته و در نوار قرار گیرند. همچنین با نظارت برشمارندهٔ نوار (tape counter) میتوانستند ناحیهٔ بعدی که داده در نوار نوشته میشود را بیابند. ممکن بود کاربر مجبور باشد به صداها گوش دهد تا ناحیه مناسب بعدی برای شروع دادهها را پیدا کند. بعضی از پیادهسازیها که حتی شامل صداهای قابل شنیدن هم بودند با دادهها درمیآمیختند.
سامانه پروندهای از نوع تخت
با سامانه پایگاه داده تخت اشتباه گرفته نشود.
در سامانه پروندهای از نوع تخت، هیچ زیر فهرست راهنمایی وجود ندارد، برای همهٔ پروندهها، مداخل فهرست راهنما، در یک فهرست راهنمای یگانه ذخیره میشود.
وقتی برای اولین بار رسانهٔ فلاپی دیسک در دسترس عموم قرار گرفت، این مدل از سامانه پروندهای به خاطر حجم کوچک موجود در فلاپی دیسکها، کافی بود. ماشینهای CP/M، شامل سامانه پروندهای تخت بودند که، پروندهها میتوانستند بهٔ کی از ۱۶ نواحی کاربری (user areas) اختصاص داده شوند و عملیات پروندههای عمومی، به جای کار کردن روی تمامی نواحی، فقط روی یکی از این نواحی کار میکرد. در اصل این نواحی کاربری همان صفتها و ویژگیهای در ارتباط با پروندهها هستند، بنابراین دیگر نیازی به تعریف هیچ تعرفهٔ خاصی برای هر یک از این نواحی نیست و پروندهها میتوانند تا وقتی که فضای خالی در ذخیره گاه موجود است، گروهبندی شوند. در اولین دستگاههای اپل مکینتاش (Apple Macintosh) نیز از سامانه پروندهای تخت استفاده میشد (سامانه پروندهای مکینتاش (Macintash File System)). در این دستگاه برنامه مدیریت پرونده (Macintash Finder) در بالای EMFS، خود یک توهم از سامانه بایگانی تا حدی سلسله مراتبی (partially hierarical filing system) میساخت، که این فرایند عجیبی بود. در این ساختار نیاز بود که هر پرونده اسم منحصر به فردی داشته باشد، حتی اگر دو پرونده در دو پوشهٔ متفاوت باشند. در IBM DOS/360 و OS/360 مدخلهای تمامی پروندهها بر روی یک بستهٔ دیسک (volume) در یک فهرست راهنمای روی همان بسته به نام جدول ظرفیت مطالب (Volume Table of Content (VTOC)) ذخیره میشوند.
با رشد تعداد پروندهها استفاده از سامانه پروندهای تخت دشوار و توانایی سازماندهی دادهها در گروههای مرتبط با پروندهها سخت شد.
اخیراً S3 از شرکت Amazon نیز به خانوادهٔ سامانه پروندهایهای تخت، اضافه شدهاست. S3 یک سرویس ذخیرهسازی کنترل از راه دور است، که به سادگی به کاربران توانایی شخصیسازی طریقهٔ ذخیره شدن دادهها را میدهد. تنها سازهها همان به اصطلاح سطلها (تصور کنید یک گردانندهٔ دیسک با ظرفیت بینهایت دارید) و اشیاء (مشابه آنچه توضیح داده شد، ولی قابل شناسایی برای استاندارد جنبههای پرونده نیستند)، هستند. مدیریت پروندهٔ پیشرفته، تنها در صورتی قابل استفاده است که، بشود از هر کاراکتری (حتی "/") در نامگذاری اشیاء استفاده کرد و همچنین اینکه بتوان از سطل محتوا، یک زیرمجموعهای را بر اساس پیشوندهای قابل شناسایی انتخاب کرد.
یادداشت
منابع
- ↑ https://en.wikipedia.org/wiki/File_system
- ↑
- ↑ Mohan, I. Chandra (2013). Operating Systems. Delhi: PHI Learning Pvt. Ltd. p. 166. ISBN 9788120347267. Retrieved 2014-07-27.
The word dentry is short for 'directory entry'. A dentry is nothing but a specific component in the path from the root. They (directory name or file name) provide for accessing files or directories[.]
- ↑ "KSAM: A B + -tree-based keyed sequential-access method". ResearchGate. Retrieved 29 April 2016.