img

سیستم فایل مجازی یا VFS در لینوکس

/
/
/

سیستم عامل لینوکس می‌تواند با انواع سیستم فایل‌ها کار کند. اینکار بدین صورت انجام می‌شود که لینوکس با استفاده از سیستم فایل مجازی (VFS) که مانند یک لایه مجزا میان نرم‌افزار و سیستم فایل روی دیسک عمل می‌کند اینکار را انجام می‌دهد.

در نسخه‌های بزرگ و سازمانی لینوکس، سیستم فایل ژورنالی(journaling) (سیتم فایلی که با ثبت رویدادها سرو کار دارد) بصورت یک استاندارد در آمده است. برنامه‌ها بجای اینکه با سخت‌افزار که فایلها در آنجا ذخیره شده‌اند کار کنند به این فایل سیستم مراجعه می‌کنند.
فایلها و اسامی شان یک لایه I/O فیزیکی مجزا و مخفی هستند. اینکه با نادیده گرفتن لایه سیستم فایل(FS) برنامه‌ای بطور مستقیم روی دیسک بنویسد، کار بسیار خطرناکی است و تنها توسط نرم افزار سطح پایین سیستم عامل انجام می‌شود نه بوسیله یک برنامه کاربری.
سیستم فایل‌های محلی داخل پارتیشن‌های دیسک مستقر هستند که می‌توانند یا یک پارتیشن فیزیکی روی دیسک باشد و یا یک پارتیشن منطقی که توسط LVM، کنترل می‌شود.
سیستم فایل‌ها می‌توانند در شبکه‌ها هم قرار داشته ‌باشند و وجود فیزیکی‌شان توسط سیستم‌عامل، مخفی نگه داشته شود.
تمام سیستم‌های لینوکس بصورت شاخه‌های یک درخت که بصورت سلسله مراتبی معکوس از دایرکتوری ریشه( / ) استفاده می‌کنند. گرچه کل این درخت می‌تواند در یک پارتیشن باشد، ِ اما معمولا در چندین پارتیشن جا خوش کرده(یا سیستم فایل‌های شبکه) و هنگام وصل شدن به این نقاط، همه بهم وصل شده یکی می‌شوند.همین موضوع نسبت به رسانه‌های دیگر ی چون USB و درایو‌های نوری نیز صدق می‌کند.
علاوه بر این‌ها شبه سیستم فایل‌های مجازی نیز درون این درخت قرار می‌گیرند این‌ها را می‌توان
/proc, /sys and /dev
و شاید
/tmp , /run
نیز تصور نمود که درون این درخت سلسله مراتبی قرار می‌گیرند.
در حقیقت هر عنصری که وصل می‌شود(ماونت) ممکن است سیستم فایل مخصوص خودش را و حتی مغایر با دیگران را بهمراه داشته باشد ِ اما از نظر بر نامه و سیستم‌عامل همه دارای ساختار یکدستی در داخل این درخت هستند. لینوکس یک نوع VFS را پیاده می‌کند. وقتی برنامه‌ای نیاز به فایل دارد با لایه VFS ارتباط برقرار می‌کند که تمام فراخوانی‌های سیستم I/O (ورود-خروج)را ترجمه می‌کند(مثل نوشتن خواندن و غیره) و آنها را درون یک کد خاص مربوط به سیستم فایل خاص قرار می‌دهد پس بنابراین دلیلی ندارد که سیستم فایل واقعی یا رسانه فیزیکی سخت افزاری که بستر آن‌هاست توسط برنامه‌ها دیده شوند علاوه بر آن سیستم فایل‌های شبکه را می‌توان بصورت مخفی بکار گرفت این ویژگی باعث می‌شود لینوکس بتواند نسبت به دیگر سیستم‌عامل‌ها با انواع سیستم فایل‌ها کار کند.
اکثر سیستم فایل‌ها مجوز کامل خواندن ونوشتن را دارند در حالیکه دیگر سیستم فایل‌ها شاید فقط امکان خواندن و یا نوشتن آزمایشی را داشته باشند. بعضی از انواع سیستم فایل‌ها بخصوص در غیر لینوکسی‌ها ممکن است به دستکاری بیشتری نیاز داشته باشند تا بتوانند در VFS نمایش داده شوند.
موارد دیگری مثل VFAT اجازه خواندن/نوشتن/اجرا(RWX) مجزایی را برای فیلد‌های مالک/گروه/همگانی، در اختیار ندارند. بنابراین VFS مجبور می‌شود طوری رفتار کند تا بتواند بفهمد که چطور باید مجوز‌های مجزا را برای سه نوع کاربر بکار ببندد. و همچنین چه رفتاری در عملیات متصل شدن به سیستم فایل‌ها موثر واقع می‌شود. این‌ها پیاده سازی‌های غیر هسته‌ای(NON-KERNEL) هستند مثل خواندن- نوشتنNTFS-3G که گرچه قابل اطمینان است اما راندمان ضعیف‌تری نسبت به سیستم فایل‌‌های درون کرنلی(هسته‌ای) دارد. بسیاری از سیستم‌عامل‌ها و در موارد کمتری EX-FAT عمومی هستند مثل FAT اما بخاطر محدودیت اندازه تا دو گیگا بایت آزار دهنده هستند.

جستجو برای فایل سیستم ها
بیشترین سیستم فایل‌هایی که مورد استفاده قرار می‌گیرند:
EXT4,XFS,BTRFS,SQUASHFS,NFS
وVFAT هستند. جدول صفحه قبل، لیستی از سیستم فایل‌های مورد پشتیبانی فعلی را با جزِِییات کامل نمایش می‌دهد.

 

یادگیری زیر بنای لینوکس
تعدادی از سیستم فایل‌های جدیدتر با راندمان کاری بالا قابلیت ژورنالینگ را در خود قرار داده‌اند. سیستم فایل‌های ژورنالینگ پس از خرابی سیستم در اثر خاموش کردن‌های ناگهانی و کارهای ناخوشایند دیگر سیستم را بر می‌گردانند و نیز خیلی سریعتر کار می‌کنند. اگرچه وجود این ویژگی‌ها در سیستم فایل‌ سبب بهینه شدن می‌شود اما کاهش هزینه‌های اضافی را نیز در بر دارد.
در سیستم فایل‌ ژورنالینگ عملیات بصورت تراکنش‌ها گروهبندی می‌شوند. یک تراکنش می‌بایستی بدون خطا بطور خودکار تکمیل شود و گرنه سیستم فایل‌ تغییری نمی‌کند. یک فایل ثبت گزارش(LOG) برای تراکنش‌ها نگه داشته می‌شود و وقتی خطایی روی می‌دهد معمولا آخرین تراکنش می‌بایستی آزمایش شود. سیستم فایل EXT3 یک بسط ژورنالینگ از فایل سیستم اصلی لینوکس یعنی EXT2 است. هر دوی این سیستم‌فایل‌ها‌ از وقتی که سیستم‌فایل‌ EXT4 که جنبه‌هایی چون شماره گذاری بلوک‌ها بصورت ۴۸بیتی و حجم ذخیره فایلها تا ۱۶ ترابایت را دارد، عرضه شد، منسوخ شدند. بسیاری ازنسخه‌های اخیر لینوکس از سیستم‌فایل EXT4 استفاده می‌کنند. دیگر شرکت‌های صنعتی سیستم‌فایل ژورنالینگ خودشان را ساختند که شامل IBM›JFS و SGISFS(بعدا سیستم‌فایل پیش فرض در RHEL7) می‌شوند. جدیدترین سیستم‌فایل ژورنالینگ BTRFS است که هنوز تحت طراحی و توسعه است. این سیستم‌فایل پیش فرض در لینوکس نسخه

SUSE ENTERPRISE 12 SERVER

است، گردید.
شما می‌توانید لیستی از سیستم‌فایل‌های ثبت شده را که در حال حاضر کرنل لینوکس آن‌ها را اجرا می‌کند با دستورهای زیر بخوبی درک نمایید:
$CAT/PROC/FILESYSTEMS
توجه کنید که اکثر سیستم‌فایل‌ها کد خودشان را تنها وقتی بار می‌کنند که دستور دسترسی به آنها در پارتیشنی که بکار رفته‌اند، داده شود.
این سیستم‌فایل خصوصا وقتی مفیدند که توسط ساختار داده کرنل متفاوتی استفاده شوند تا رفتار تغییر کرنل را نشان دهند و یا عملیات خاصی را پیاده‌سازی نمایند. لینوکس بشکل گسترده‌ای از سیستم‌فایل‌ها برای وظایف خاصش استفاده می‌کند. به جدول صفحه قبل نگاه کنید و توجه کنید که برخی ازاین سیستم‌فایل‌های خاص نقطه‌ای جهت اتصال(مانت) ندارند و این یعنی اینکه برنامه‌های کاربردی با آنها سر و کله نمی‌زنند، اما کرنل از آنها استفاده می‌کند تا از فواید لایه VFS و کد استفاده نماید.

 

ویژگیهای فایل سیستم
مهمترین ویژگی‌های سیستم‌فایل عبارتند ازINODES-فایل دایرکتوری و پیوندهای نرم و سخت. خواص زیاد باعث توسعه وظایفی چون ایجاد و فرمت بندی–بررسی خطاها و رفع آنها و وصل شدن و قطع شدن در هنگام بوت یا بعد از آن را شامل می‌شوند.
یک INODE عبارت از یک ساختار داده است که روی دیسک تعریف می‌شود و صفات فایل و محل آن‌را ذخیره می‌کند.هر فایلی به INODE خودش مربوط می‌شود.اطلاعاتی که در INODE قرار می‌گیرند مواردی چون مجوزها –مالکیت گروه- کاربر اندازه و تایم استمپ(که زمان آخرین دسترسی به فایل –زمان اصلاح و تغییر را شامل می‌شود) می‌باشد اسامی فایل‌ها درINODE یک فایل ذخیره نمی‌شوند اما بجایش در فایل دایرکتوری قرار می‌گیرند. فعالیت I/O که درگیر یک فایل هستند معمولا مستلزم INODE فایل بعنوان اطلاعاتی هستند که می‌‌بایستی آپدیت شوند.
یک فایل دایرکتوری یک نوع خاص از فایل است که برای اسامی فایل و INODE‌های مربوطه بکار می‌رود. دو راه برای مربوط ساختن یک نام فایل به یک INODE وجود دارد پیوند‌های سخت (که به یک INODE اشاره می‌کنند) را پیوند‌های نرم( سمبولیک)(که بنام فایلی اشاره دارند که یک INODE مربوط به خودش را دارد) هر ارتباط مفاد فایل دایرکتوری و یک INODE بعنوان لینک شناخته می‌شوند لینک‌های بیشتر را می‌توان با استفاده از دستور LN ایجاد کرد.
از آنجاییکه برای دو یا چند مدخل دایرکتوری این امکان وجود دارد که به یک INODE مشابه اشاره کنند(لینکهای سخت افزاری) یک فایل را می‌توان با چندین نام شناسایی کرد که هرکدام جای خودش را در ساختار دایرکتوری دارا می‌باشد ولیکن اهمیتی ندارد که از چه اسمی استفاده می‌کند، می‌تواند فقط یک اینود داشته باشد.
پس از آنکه نامی به شماره اینودی تبدیل شد INODE درون حافظه بارگذاری می‌شود و توسط در خواست‌های بعدی بکار می‌رود. خواص توسعه یافته‌ای که به متادیتا (یا فرا داده مجموعه‌ای از اطلاعات گسترده در رابطه با توصیف یک داده را گویند) مستقیما توسط سیستم‌فایل تفسیر نمی‌شوند.
چهار فضای نام وجود دارد، کاربر-تایید شده-امنیتی و سیستم فضای نام برای لیستی از کنترل‌های دستی (ACL) بکار می‌روند و فضای نام امنیتی فقط توسط SELINUX استفاده می‌شود.
مقدار پرچم در آینود فایل ذخیره می‌شود و ممکن است تنها توسط کاربر ریشه اصلاح یا مقداردهی شود.
هر سیستم‌فایل دارای ابزاری برای ایجاد کردن آن روی پارتیشن است. نام عمومی برای این وسیله MKFS می‌باشد ولیکن این ابزاری دم دستی برای برنامه‌های خاص سیستم‌فایل است که می‌توانید برای مشاهده آن از دستور زیر استفاده نمایید:

LS-LH/SBIN/MKFS*

هر سیستم فایل، گزینه‌های خاص خودش را دارد که می‌توان هنگام فرمت کردن آن‌ها را تنظیم نمود.
مثلا وقتی یک سیستم‌فایل EXT4 درست می‌کنید چیزی که می‌بایستی در ذهن داشته باشید تنظیمات ژورنالینگ است. این موارد شامل تعیین اندازه فایل ژورنال و اینکه آیا توسط یک فایل خارجی مورد استفاده قرار می‌گیرد یا نه، می‌باشد. کاری که باید بکنید مراجعه به صفحات راهنمای دستور MKFS است تا نگاهی به جزئیاتش بیاندازید.

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

It is main inner container footer text