مقدمه
در اکثر امور پروندهها يک جز محوري کار هستند. بجز در مواردي خاص کار ورودي و خروجي از طريق پرونده است. در بسياري از امور روزانه از قابليت ذخيره شدن پروندهها استفاده ميکنيم و در واقع پروندهها نقشي حياتي در کار سيستم دارند. براي کمک به اين هدف تقريبا تمام سيستمهاي عامل از سيستمهايي براي مديريت پروندهها استفاده ميکنند. انتخاب يک سيستم مديريت پرونده وابسته به نوع سيستم عامل و کاربرد سيستم دارد. در سيستم عامل لينوکس نيز انواع مختلفي از فايلهاي سيستم مورد پشتيباني است و قابليتهاي فراواني را در اختيار کاربران ميگذارد. در اين مقاله قصد دارم شما را با مفهوم سيستم فايل و نيز انواع سيستم فايلهاي مورد پشتيباني در سيستم گنو/ لينوکس آشنا کنم. آنچه در اين مقاله مطالعه خواهيد کرد آشنايي با مفهوم سيستم فايل و انواع سيستم فايل است. آنچه در اين مقاله نبايد جستجو کنيد اطاعات دقيق و فصيح فني است، چرا که در اين مقاله چندان به ساخت و کار فني سيستم فايلها و تمام انواع سيستم فايلها نميتوانيم بپردازيم. انواع فايل سيستم موجود و نيز انواع فايل سيستمهاي مورد پشتيباني لينوکس بسيار زيادند و توضيحي مختصر از کم و کيف هر کدام مشتمل بر کتابي کامل خواهد بود. 1.سيستم فايل
«سيستم فايل» يا «سيستم مديريت فايل» در حقيقت مجموعهاي از نرمافزارهاي سيستم است که اطلاعات مربوط به استفاده از پروندهها را به کاربران و سيستم ارائه ميکند. در حقيقت سيستم فايل رابطي است ميان «سيستم عامل» و «سخت افزار» و وظيفهي مشخص کردن مکان هر فايل و سازماندهي فايلها را برروي سخت افزار (يا همان حافظه ثانويه مانند ديسک سخت يا CD) را دارد. وجود يک سيستم فايل کاربر يا برنامه نويس را از ايجاد يک نرمافزار خاص براي هر کاري آسوده ميکند. در حقيقت سيستم فايل با ايجاد يک ساختار منطقي مانند راهنمايي براي کاربران و سيستم عامل است که به آنها محل قرار گيري فايلها را نمايش ميدهد و در زمان لازم فايلها را يافته و باز ميکند، ميخواند و اگر لازم باشد در آنها مينويسد و يا پاک ميکند و با فايلهاي جديد جايگزين ميکند.
در لينوکس مفاهيم خاصي براي کار با سيستم فايل وجود دارد. ديد لينوکس به ساختار پروندهها و دايرکتوريها مانند يونيکس است. در ساختار يونيکسي هر فايل داراي يک inod يا Index node است.(ترجمهي فارسي index node شاخص گره است.) هر دايرکتوري نيز يک فايل ساده است که شامل ليستي از فايلهاست که هنگام مراجعه به دايرکتوري از آن ليست براي دسترسي به فايلها استفاده ميکند. 1.1 Inodeها
تمام انواع فايلهاي لينوکس (و تمام يونيکسها) توسط سيستم عامل و به وسيلهي گرههاي شاخص اداره ميشوند. (گرههاي شاخص يا index node يا i-node) گره شاخص در واقع يک ساختار کنترلي است که حاوي اطلاعات کليدي مورد نياز سيستم عامل براي يک فايل مشخص است. ممکن است چند اسم فايل به يک گره شاخص مربوط شوند (لينک سخت) اما يک گره شاخص فعال هميشه به يک فايل اشاره ميکند و هر فايل فقط با يک گره شاخص کنترل ميشود. خصيصههاي پرونده و نيز مجوزها و ساير اطلاعات کنترلي در گره شاخص يا i-node ذخيره ميشوند. در حقيقت ميتوانيد i-nodeها را چيزي شبيه به کارتهاي مشخصات کتابها در کابخانه فرض کنيد که براي دسترسي يه کتابها ابتدا در کشويي به دنبال اسم کتاب گشته کارت آن را پيدا ميکنيد و از روي کارت محل قرار گيري کتاب را ديده و به قفسهي کتاب مراجعه ميکنيد. در جدول زير نمونهاي از اطلاعات ذخيره شده در يک i-node را مشاهده ميکنيد.
اطلاعات ذخيره شده در يک i-node
حالت پرونده
- يک پرچم ?? بيتي که مجوزهاي فايل را ذخيره ميکند.
- نوع پرونده براي نمونه عادي، دايرکتوري، بلاک
- پرچمهاي اجرا
- مجوز خواندن مالک
- مجوز نوشتن مالک
- مجوز اجراي مالک
- مجوز خواندن گروه
- مجوز نوشتن گروه
- مجوز اجراي گروه
- مجوز خواندن ديگران
- مجوز نوشتن ديگران
- مجوز اجراي ديگران
شمارش پرنده
- تعداد مراجعات فهرست راهنما به اين گره شاخص (تعداد لينکهاي سخت)
شناسه مالک يا UserID
- مالک خاص پرنده
شناسه گروه يا GroupID
- گروهي که مالک اين پروندهاست
اندازه پرونده
- تعداد بايت هاي اين پرنده
آدرسهاي پرونده
- ?? بايت اطلاعت مربوط به آدرس محل قرار گيري فايل
آخرين دستيابي
- زمان آخرين دستيابي به پرونده
آخرين تغيير
- زمان آخرين تغيير در پرونده
تغيير گره شاخص
- زمان آخرين تغيير گره شاخه يا i-node
جدول شماره? 1.2 Directoryها
دايرکتوريها نيز به صورت ساختاري درختي سازماندهي شدهاند و هر دايرکتوري ميتواند محتوي تعدادي فايل يا زيردايرکتوري (sub directory) باشد. دايرکتوريها نوع خاصي از فايلها هستند که در حقيقت شامل ليستي از وروديها هستند. شايد اگر بدانيد که ترجمهي درست فارسي دايرکتوري «فهرست راهنما» است مطلب برايتان واضحتر شود. هر ورودي شامل شماره inode و نام يک فايل است. زماني که يک کاربر مسيري را وارد ميکند، کرنل ميان ليست موجود در دايرکتوري به دنبال شماره inode مناسب ميگردد و وقتي اسم به صورت صحيح به شماره inode تبديل شد اين شماره به حافظه منتقل ميگردد تا براي استفاده در دسترس باشد. 1.3 Linkها
يونيکس با ديدي متفاوت از مفهوم لينکها پشتيباني ميکند، در حقيقت يک inode ميتواند چندين نام داشته باشد يعني چندين فايل به يک inode متصل هستند. اين همان لينکهاي سخت هستند که قبلا در مقالهاي در بارشان توضيح داده بوديم. البته لينکهاي سخت در سيستمهاي راه دور قابل استفاده نيستند، يعني نميتوانيد در يک شبکه از اين لينکها استفاده کنيد و تنها برروي فايل سيستمهاي محلي قابل استفادهاند. نوع ديگري از لينکها نيز لينکهاي نرم هستند که يک فايل معمولي شامل نام يک فايلاند. زماني که کرنل يک لينک نرم را جستجو ميکند، لينک نرم (همان فايل) محتويات خود را که نام فايل مقصد است به کرنل تحويل ميدهد و کرنل بر اساس دادهي جديد شروع به جستجوي فايل نهايي ميکند.( اين نوع لينک نيز در مقالهي مذکور مورد بررسي قرار گرفته.) 1.4 فايلهاي Device Special
در سيستمهاي شبه يونيکسي هر ابزاري (a device) از طريق يک فايل قابل دسترسي است، نوع خاصي از فايلها که برروي سيستم فايل حجمي را اشغال نميکند و تنها يک نقطهي دسترسي به يک ابزار است. (مانند dev/cdrom/) دو نوع از اين فايلها موجود است يک نوع character نوع ديگر block نام دارند. بسيار خوب تابه اينجا با مفاهيم اوليهي سيستم فايلها در لينوکس آشنا شديد، در قسمت بعد به بررسي VFS در لينوکس خواهيم پرداخت که وظيفهي کنترل اوضاع در کرنل را بر عهده دارد.
نکته |
در خط فرمان دستور ls -l را وارد کنيد. آيا نتيجهي نمايش داده شده شما را به ياد جدول «شماره ?» مياندازد؟!! حالا دستور ls را با گزينههاي"i" استفاده کنيد يعني : « ls -i» عددي که در ابتداي خط نمايش داده ميشود شمارهي i-node است. اگر ديدن مشخصات کال فقط يک فايل يا دايرکتوري را ميخواهيد از دستور "stat" به همراه نام فايل يا دايرکتوري استفاده کنيد. براي نمونه اگر بخواهيم اطلاعاتي از فايل article.txt بدست آوريم کافيست در خط فرمان تايپ کنيد : stat article.txt و سپس اينتر | 2.سيستم فايل مجازي يا VFS
هستهي لينوکس از يک لايه به نام «سيستم فايل مجازي» يا "Virtual File System" براي انجام عمليات برروي فايلها استفاده ميکند. اين لايه در کرنل (هسته) درخواستهاي کاربر و برنامهها را دريافت و دستورات لازم براي اعمال در لايهي سخت افزار را صادر ميکند. در يونيکس ازاين روش براي استفاده از سيستم فايلهاي مختلف در يک سيستم استفاده ميشود.
2.1 ساختار VFS
سيستم فايل مجازي يا VFS يک عده توابع مورد نياز براي اعمال در فايل سيستم را فراهم ميکند، اين واسط سه شيء بسيار ضروري براي عمليات را فراهم ميکند که شامل inodeها، بازکردن فايلها و فايل سيستم است. VFS دربارهي انواع فايل سيستمهايي که در هسته موردپشتيباني هستند اطلاعات کافي دارد و داراي جدولي شامل توابع و اشارهگرهاي مربوط به فايل سيستم موجود هستند و هنگامي که کاربر درخواست انجام کاري برروي فايلي را نمود VFS از جدول فوق توابع مربوط به سيستم فايل را جستجو و پس از يافتن تابع مورد نظر تابع را اعمال ميکند.
با ساختار و روش کلي کار فايل سيستمها در لينوکس آشنا شديد، در ادامه به بررسي انواع فايل سيستمها و مختصر تاريخي از فايل سيستمهاي لينوکس خواهيم پرداخت. 3.تاريخچهي فايل سيستم در لينوکس
در ابتدا لينوکس از فايل سيستم Minix براي کارهاي خود استفاده ميکرده، درحقيقت لينوس تروالدز با توجه به محبوبيت Minix در آن زمان ترجيح داده بجاي نوشتن يک فايل سيستم جديد از همان فايل سيستم موجود در سيستمهاي آن زمان يعني Minix استفاده کند. نسخههاي اوليهي Linux نيز همراه با فايل سيستم Minix عرضه شد. اما سيستم فايل Minix بسيار محدود بود، محدويت در ايجاد فايلها حداکثر تا ?? مگا بايت يا محدوديت درايجاد پارتيشنها حداکثر تا ?? مگابايت (بله ?? مگابايت در سال ???? ) و حداکثر طول نامهاي ?? کاراکتري توسعه دهندگان لينوکس را واداشت تا به فکر نوشتن يک سيستم فايل جديد باشند. نهايتا براي هستهي لينوکس VFS نوشته شد. در ابتدا VFS توسط "Chris Provenzano" نوشته شدو سپس توسط لينوس تروالدز بهينه سازي شد و در هستهي لينوکس قرار گرفت.
بعداز افزوردن VFS به هسته يک فايل سيستم جديد به نام "Extended File System´´ در آپريل ???? به لينوکس نسخهي 0.96c افزوده شد. اين فايل سيستم جديد دو محدوديت ذکر شدهي فايل سيستم Minix را نداشت و براي فايلها از حداکثر سايز ? گيگابايت (2GB) و اسامي بلند با طول ??? کاراکتر پشتيباني ميکرد. اين سيستم فايل بسيار بهتر از Minix بود اما هنوز تمام خواستهها را پاسخ نميداد براي نمونه امکان تغيير مقدار inodها يا تغيير مهر زمان (timestamp) وجود نداشت و فايل سيستم از لينکها براي نگهداري ليستي از بلاکهاي آزاد استفاده ميکرد که بازدهي پايين آن باعث ضعف سيستم و نيز نياز به Defragment را موجب ميشد.
براي مقابله بااين مشکلات دو سيستم فايل جديد به ميان آمدند يکي "Xia File System" وديگري "Second Extended File System´´ که هر دو در ژانويهي ???? منتشر شدند. xiafs به شدت براساس Minixfs بود و تعداد کمي قابليت به اين سيستم فايل افزوده بود. به طور واضح تر اين سيستم فايل اسامي طولاني و پارتيشنهاي حجيمتر را به Minix افزوده بود. از طرفي Ext2fs بر اساس کدهاي Extfs بود و تعداد زيادي به روز رساني و بهبود در آن ديده ميشد، در نسخههاي ابتدايي Xiafs بسيار پايدارتر از EXt2fs بود اما Ex2fs بيشتر استفاده ميشد و Bugهاي آن سريعتر رفع ميشدند و بهتر پيشرفت ميکرد به خصوص در استفادهي از CPU و سرعت پاسخدهي بسيار کاراتر بود. در حال حاضر Ext2 يکي از سيستم فايلهاي بسيار پايدار و پيش تنظيم شده در هستهي لينوکس است. فايل سيستم Xia از نسخهي2.1.21 از کرنل لينوکس حذف شد. در جدول زير ميتوانيد مقايسهاي ميان فايل سيستمهاي اوليهي لينوکس را ببينيد:
|
Minix FS |
Ext FS |
Ext2 FS |
Xia FS |
حداکثر سايز پارتيشن |
64MB |
2GB |
4TB |
64MB |
حداکثر سايز فايل |
64MB |
2GB |
2GB |
64MB |
حداکثر طول نام فايلها |
16/3 |
255 |
255 |
248 |
سايز بلاکهاي متغير |
خير |
خير |
بله |
خير |
ادامهي توسعه |
بله |
خير |
بله |
? |
قابليت توسعه |
خير |
خير |
بله |
خير |
4.قابليتهاي Ext2
يک فايل سيستم ext2fs از استانداردهاي معمول يونيکس مانند فايلها و دايرکتوريها و ابزارها و لينکها پشتيباني ميکند. ميتوانيد توسط اين فايل سيستم پارتيشنهاي حقيقتا بزرگي ايجاد نماييد که با تلاشهاي اخير مقدار اين پارتيشن ميتوند تا ? ترابايت (4TB) باشد. بنابراين ميتوانيد از ديسکهاي حجيم با پارتيشن بندي دلخواهتان استفاده کنيد. پشتيباني از اسامي طولاني تا ??? کاراکتر که در صورت نياز قابل افزايش تا ???? کاراکتر است. نيز قابليتهاي ديگري در Ext2fs موجود است که در فايل سيستمهاي معمولي يونيکس وجود ندارند. علاوه بر اينها ميتوانيد از به هنگام سازيهاي شبيه BSD يا "BSD-like synchronous update"ها نيز استفاده کنيد.
Ext2fs اين امکان را به شما ميدهد تا سايز بلاکهاي منطقي را انتخاب کنيد، اين مقدار معمولا برابر ???? يا ???? و ???? بايت است. استفاده از بلاکهاي منطقي بزرگتر ميتواند سرعت ورودي يا خروجي را افزايش دهد و نياز کمتري به کار هدهاي ديسک سخت را به ارمغان ميآورد.علاوه بر اين Ext2fs از "fast symbolic links" يا «لينکهاي نرم سريع» پشتيباني ميکند، در اين روش لينکها از بلاکهاي فايل سيستم استفاده نميکنند و مقصد لينک در خود inod ذخيره ميشود. اين امر علاوه بر افزايش سرعت کار فضاي کمتري را در ديسک سخت استفاده ميکند. البته اينها تمام مزاياي اين فايل سيستم نيستند و تنها نمونههايي از مزاياي اين فايل سيستم هستند. 4.2 نحوه کار EXT2
نحوهي کار Ext2fs در ساختار سخت افزاري تاثير فراواني از ساختار فايل سيستم BSD گرفته است. يک فايل سيستم شامل گروهي از بلاکهاست. (مقايسه کنيد با سيستم خوشهاي يا "cluster" در VFAT مايکروسافت) ساختار فيزيکي يک فايل سيستم راميتوانيد در جدول زير مشاهده کنيد:
Boot Sector |
Block Group 1 |
Block Group 2 |
... ... |
Block Group N |
هر گروه از بلاکها شامل يک کپي افزوده از اطلاعات کنترلي سيستم فايل است. و محتوي قسمتي از فايل سيستم شامل نگاشتي از بلوک و نگاشتي از inode و قسمتي از جدول inodeها و بلاکي از دادههاست. ساختار يک block group در شکل زير نمايش داده شده است.
Super Block |
FS descriptors |
Block Bitmap |
Inode Bitmap |
Inode Table |
Data Blocks |
در Ext2fs دايرکتوريها به عنوان يک ليست از وروديهاي با طول متغير مديريت مي شود. هر ورودي شامل شماره inode و نيز طول ورودي نيز نام فايل و طول آن است. با استفاده از وروديهاي با طول متغير امکان به کار گيري فايلهايي با نامهاي طولاني بدون از دست دادن فضاي ديسک سخت ممکن است. اين ساختار را در جدول زير مشاهده ميکنيد:
inode number |
entry length |
name length |
filename |
براي نمونه براي فايلهاي file1، long_file_name، و f2 داريم :
در فايل سيستم جديد Ext3fs نيز از همين ساختار براي ذخيره و بازخواني فايلها و دايرکتوريها استفاده ميشود. براي استفادهي برنامهها از اين فايل سيستم و کنترل و تغيير در آن از کتابخانهاي به نام libext2fs استفاده شده است. اين کتابخانه داراي روتينهاي لازم براي آزمايش و تغيير اطلاعات برروي فايل سيستم Ext2 ميباشد. ابزارهاي مختلفي مانند mke2fs، e2fsck، tune2fs، dumpe2fs و debugfs از همين کتابخانه براي انجام کارهايشان استفاده ميکنند. با توجه به ساختار بسيار مناسب و عمومي اين کتابخانه نرمافزارهاي جديد مورد نياز براي تغيير در فايل سيستم به راحتي نوشته مي شوند. 5.فايل سيستم Swap
پارتيشن Swap در لينوکس پارتيشني است که شما يکبار آن را ايجاد ميکنيد و سپس آن را فراموش ميکنيد!! اين پارتيشن به عنوان بخشي از حافظهي سيستم يا RAM استفاده ميشود و اطلاعات پس از خاموش شدن سيستم از روي آن پاک ميشوند. نحوهي کار و نيز روش تخصيص دادهها و مکان يابي دادهها برروي swap کمي پيچيده است و خود نياز به يک مقالهي کامل دارد. 6. سيستم proc
proc نيز يک سيستم فايل مجازي با ويژگيهاي منحصر به فرد خود است که به عنوان يک رابط براي کرنل فعاليت ميکند. اين سيستم فايل اغلب در proc/ سوار ميشود. (Mount on /proc) و اغلب قسمتهاي آن فقط خواندني هستند. دستورات بسياري از اين رابط براي کار با کرنل و يا دريافت اطلاعات از سيستم استفاده ميکنند، ماننند دستورات: cat، find، free، mount، ps، tr، uptime، times، chroot، mmap، readlink، syslog، slabinf، hier، arp، dmesg، hdparm، ifconfig، init، lsmod، lspci، netstat، procinfo، route 7. ژورنالينگ يا Journaling
زماني که يک کامپيوتر به طور ناقص خاموش ميشود، براي نمونه وقتي در اثر قطع برق، کامپيوتر خاموش ميشود و يا به صورت دستي خاموش شود ممکن است اطلاعات ديسک سخت دچار اشکال شوند و صدمه ببينند. در اين موقعيت مقداري از اطلاعات برروي ديسک نوشته ميشوند و باقي اطلاعات نوشته نميشوند و سيستم فايل به حالت half-finished يا نيمه تمام وارد ميشود. در اين زمان سيستم پس از روشن شدن يک روتين را براي چک کردن اشکالات ديسک سخت دنبال ميکند.(fsck در لينوکس و scandisk در ويندوز) اين امر ممکن است در ديسکهاي سخت امروزي زمان زيادي به طول بيانجامد و براي اطمينان از صحت کارکرد فايل سيستم بايد در هر بار شروع سيستم اين روتين اجرا شود.
فايل سيستمهاي ژورنالينگ يا "Journaling File Systems" اين مشکلات را حل کردهاند، علاوه بر مديريت فايلها و نحوهي قرار گيري فايلها در سيستم فايل در اين گونه سيستم فايلها قسمتي به نام ژورنال نيز وجود دارد که تمام تغييراتي را که بايد در ديسک ثبت شوند را ذخيره ميکند.(يک سيستم log گيري) سپس يک پروسه در پشت زمينه و به طور نامحسوس تغييرات را دنبال کرده و اطلاعات مورد نياز را در ژورنال مينويسد. اين موضوع باعث مي شود تا در صورت بروز مشکل امکان رفع نقص سريعتر شده و نيز از طرفي نياز به چک کردن فايل سيستم در هر بار شروع نباشد.
در حال حاضر چهار سيستم فايل بسيار مشهور که به صورت ژورنالينگ فعال هستند شامل Ext3fs که پيش فرض هستهي لينوکس است و با هسته توسعه پيدا ميکند، JFS که متعلق به IBM است ، XFS که متعلق به SGI است و ابتدا براي يونکس IRIX طراحي شده بود و نيز ReiserFS است. 7.1 فايل سيستم ReiserFS
اين سيستم فايل توسط "Hans Reiser" نوشته شد و در برخي توزيعهاي لينوکس مانند SuSE 7.0 به بعد و يا RedHat 7.1 مورد پشتيباني قرار گرفت. در ReiserFS از مدل" Balanced Tree" استفاده ميشود که فايلها و نام فايلها در يک Balanced Tree نگهداري ميشود. ReiserFS يک سيستم فايل حقيقتا ژورنالينگ نبود اما از نسخهي ? که به ReiserFS4 مشهور است اين قابليت بهبود بسياري يافت و اکنون در وضعيت مناسبي است. البته شهرت اين فايل سيستم در سرعت آن است که در هستهي سري 2.6 لينوکس اوضاع کمي تغيير کرده و ReiserFS در برخي زمينهها سرعتي کمتر از سايرين دارد. 7.2 فايل سيستم XFS
زماني که SGI در سالهاي ???? نياز به يک فايل سيستم قدرتمند با بازدهي بالا داشت شروع به توسعهي سيستم فايلي به نام XFS کرد. اين سيستم فايل با هدف بالا بردن حجم ديسک سخت و نيز پهناي باند دادهها و تبادل موازي براي استفاده در نرمافزارهاي فيلم و صدا و پايگاه دادههاي بزرگ توسعه يافت. از مزاياي اين فايل سيستم بازيابي سريع اطلاعات در صورت صدمه ديدن ديسک سخت و پشتيباني از فايلهاي حجيم و نيز دايرکتوريهاي حاوي فايلهاي بسيار و بازدهي بسيار خوبش در چنين محيطهايي است. در حال حاضر XFS با تغييراتي در اختيار جامعهي اوپن سورس قرار گرفته و براي لينوکس نيز بازنويسي شده و براي نسخهي 2.4 و 2.6 هستهي لينوکس موجود است. البته نسخهي لينوکسي هنوز تماما کامل نيست و برخي قابليتهامانند loop-mounting هنوز با مشکلاتي همراه است.
از مشکلاتي که در حال حاضر XFS با آنها مواجه است ممکن نبودن resize يا تغيير سايز به صورت on-line است و براي تغيير سايز بايد از اطلاعات پشتيبان بگيريدو پس از تغيير سايز اطلاعات را بازيابي کنيد و يا براي استفاده از Qouata بايد هستهي لينوکس را مجددا کامپايل کنيد. اگر از بوت لودر LILO با گزينهي بوت از بوت سکتور استفاده ميکنيد XFS همراه LILO کار نخواهد کرد. البته با GRUB نسخههاي بالاتر از 0.99 ميتونيد از XFS استفاده کنيد اما مشکلات و رفتار غير معمول نيز در اين حالت گزارش شده است.
اما قابليتهاي جديد نيز در اين فايل سيستم وجود دارد براي نمونه اين فايل سيستم يک فايل سيستم ?? بيتي است، بنابراين ميتوانيد فايلهايي با حجم ميليونها ترابايت داشته باشيد که اين مقدار بسيار بزگتر از فايل سيستمهايي است که امروزه استفاده مي شوند. از طرفي اين فايل سيستم سرعت بسيار مطلوبي دارد. چيزي حدود هفت گيگابايت در ثانه(7GB/sec) که اين سرعت را مديون مدل B+Tree است که مدل ليست کردن و دسترسي به فايلهاست. در سيستم فايلهاي FFS مانند BSD يا Ext2fs از مدل ليست کردن براي دسترسي به فايلها استفده ميشود اما در اين فايل سيستم از مدل بسيار پيچيدهي B+Tree استفاده ميشود.اما چطور ميليونها ترابايت؟! از ديد رياضي بسيار ساده است :
2^63 = 9 x 10^18 = 9 exabytes 7.3 فايل سيستم JFS
اين فايل سيستم که نامش "Journaling File System" است توسط IBM و براي استفاده در سرورهاي Enterprise توسعه يافته است. اين فايل سيستم براي سرورهايي که ترافيک بالايي دارند و نياز به فايل سيستم براي مديريت چنين ترافيکي دارند ساخته شده است. در حال حاظر از اين سيستم فايل در لينوکس (هستهي ?.?) پشتيباني ميشود اما نسخهي لينوکسي آن هنوز کاملا براي لينوکس بهينه سازي نشده است.(هنوز کاملا port نشده)
فايل سيستم JFS از تکنيک "database journaling " براي کارهاي خوداستفاده ميکند که باعث افزايش سرعت و پاسخگويي ميشود. JFS نيز يک فايل سيستم ?? بيتي است و پارتيشنهايي با حداقل سايز ?? مگابايت (16MB) استفاده ميکند. حداکثر سايز کاملا به سايز بلاکهاي سيستم بستگي دارد که در حالتي که بلاکها ??? بيتي باشند مقدار بزرگترين فايل برابر ??? ترابايت (512TB) و در حالتي که سايز بلاکها ? کيلوبايت باشد حداکثر سايز فايل سيستم ? پتابايت (4Peta bytes) خواهد بود. 7.4 فايل سيستم EXT3
فايل سيستم EXT3 براي کساني که نميخواهند فايل سيستم لينوکس خود را تغيير بدهند يک راهکار مناسب است. ext3fs در حقيقت همان ext2fs با همان ساخت و کار است با اين تفاوت که قابليت ژورنالينگ به آن افزوده شده است. اين فايل سيستم همراه کرنل لينوکس ارائه ميشود و در لينوکس پشتيباني کاملي از اين فايل سيستم ميشود چرا که فايل سيستم محلي و مختص لينوکس است. يکي از قابليتهاي اين فايل سيستم پشتيباني شدن در تقريبا تمام نسخههاي کرنل است، حتي نسخههاي قديمي نيز اين فايل سيستم را به عنوان ext2fs شناخته و از آن استفاده ميکنند.(در واقع با افزودن امکان ژورنالينگ به ext2fs شما به ext3fs دست يافتهايد!)
در نسخهي ?.? هستهي لينوکس پشتيباني بسيار خوبي از اين فايل سيستم به عمل آمده که سرعت آن رابهبود بسياري بخشيده به طوري که در برخي امور حتي سريعتر از فايل سيستمهاي ديگر عمل ميکند. علاوه بر اين در اين فايل سيستم مجوزهاي ديگري نيز وجود دارد که قابليت انعطاف پيذري سيستم را افزايش ميدهد و امنيت فايل سيستم را نيز بيشتر ميکند. 8. فايل سيستمهاي شبکه
فايل سيستمهايي نيز براي استفاده در شبکهها وجود دارند که مشهور ترين و محبوبترين آنها NFS است، البته فايل سيستمهايي مانند AFS يا CODA و NCP و SMB نيز وجود دارند.
NFS حدود سال ???? توسط Sun Microsystem ايجاد شد و در نسخههاي مختلفي منتشر شد که ابتدا 2 و سپس نسخهي 3 توسعه پيدا کردند و در حال حاضر نسخهي 4 اين سيستم فايل در حال استفاده است. البته روشهاي بهتري براي اشتراک فايل در شبکه وجود دارد که AFS يا "Andrew File System" يکي از آنهست اما استفاده و پياده سازي اين فايل سيستمها به مراتب دشوار تر از NFS ميباشد.
فايل سيستم SMB يا "Session Message Block" از طريق پروتوکل SMB و برنامهي Samba در لينوکس قابل دسترسي است. SMB در حقيقت بري ويندوزهاي 3xو 9x و NT منتشر شد و براي شبکههايي که شامل ويندوز و لينوکس در کنار هم مي شوند مناسب است. فايل سيستم "ncpfs" نيز براي پشتيباني از پروتوکل "NCP" که در "NovellNetware" استفاده ميشود قابل دسترسي است.
فايل سيستم ديگر Code نام دارد که يک فايل سيستم توزيع شده بر اساس AFS2 است که قابليتهاي جديدي مانند امکان disconnect" را براي کامپيوترهاي سيار فراهم کرده و از نظر امنيتي و بازدهي نيز بسيار توسعه يافته است. 9. فايل سيستمهاي رمز نگاري شده
فايل سيستمهاي رمزنگاري شده يا "Encrypted Fileystems" کاربران را براي قرار دادن اطلاعات در محيطي امن کمک ميکنند. اگر يک مهاجم (Attacker) به سيستم شما دسترسي پيدا کند اطلاعات موجود در فايل سيستم رمزنگاري شده براي او نامفهوم خواهد بود و نميتواند اطلاعات موجود برروي آن را استفاده کند. در بسياري موارد سيستم فايلهاي رمزنگاري شده نياز به mount و unmount کردن دستي دارند در صورتي که پس از اتمام کار فايل سيستم را unmount يا پيادهنکنيد، مهاجم از طريق شبکه ميتواند به آن دسترسي پيدا کند! در اين مقاله تنها به نام بردن چند سيستم فايل رمزنگاري شده بسنده ميکنم:
CFS: اين فايل سيستم از سرور NFS براي رمزنگاري تمام ساختار درختي فايلها استفاده ميکند. (http://cache.qualcomm.com) TCFS : اين سيستم فايل نيز بر اساس CFS است و بهبودهايي را فراهم نموده و از طريق patch شدن در کرنل قابل استفاده است. (http://www.tcfs.it) BestCrypt: اين فايل سيستم به کاربران اجازهي ايجاد يک ساختار درختي کامل در فايل سيستمي مجازي را ميدهد که در يک فايل ذخيره شده است و ابزار مخصوصي براي ايجاد، فرمت کردن و ماونت کردن دارد. (http://www.jetico.com) PPDD: يک درايور براي لينوکس است که به کاربران اجازهي ايجاد فايلهايي مشابه ابزارها راميدهد. فايلها پسپ قابل فرمت و استفاده مانند يک ديسک سخت هستند. ( http://linux01.gwdg.de/~alatham/) StegFS: اين سيستم اطلاعات را رمزنگاري و سپس در مخفي ميکند، بدين ترتيب مهاجم ابتدا نياز به حدس زدن مکان فايلهاست و سپس نياز به بازکردن رمز دارد.( http://www.mcdonald.org.uk/StegFS/) البته فايل سيستمهاي ديگري نيز با هدف رمزنگاري اطلاعات وجود دارند که از حوصله ي مقاله ي حاظر خارجاند. 10. ساير فايل سيستمها
10.1 vfat
در لينوکس از فايل سيستمهاي ديگري نيز پشتيباني ميشود براي نمونه از vfat که سيستم فايل ويندوز و داس و os/2 است به خوبي پشتيباني ميگردد. هر دو نوع FAT16 وFAT32 در لينوکس نيز پشتيباني ميشود اما اين سيستم فايلها هيچ کدام از قابليتهاي فايل سيتسمهاي لينوکس را ندارند. حتي FAT32 قابل مقايسه با ext2fs که درسال ???? منتشر شد نيست. پارتيشنهاي FAT16 محدود به دو گيگابايت (2GB) است، به صورت تئوري FAT32 پارتيشنهايي با سايز تا 8ترابايت (? ترابايت 1024 گيگابايت است) را پشتيباني ميکنند. اما در عمل Scan Disk ويندوز ?? تنها يا 128GB از هاردديسک را پشتيباني ميکند و ويندوز ???? اجازهي ايجاد پارتيشنهاي FAT32 با حجم بيشاز 32GB را نميدهد. 10.2 فايل سيستم NTFS
فايل سيستم NTFS يا New Technology File System که از طرف مايکروسافت همراه با ويندوز NT نسخهي 4.0 با هدف از ميان بردن محدوديتهاي FAT16 منتشر شد ، در اين سيستم فايل حداکثر پارتيشنها دو ترابايت (2 TB) است. سيستم فايل NTFS در هستهي لينوکس به صورت فقط خواندني مورد پشتيباني قرار دارد و براي نوشتن برروي آن بايداين قابليت رادر هستهي لينوکستان فعال کنيد، اما امکان وارد شدن صدمه به فايل سيستمتان وجود دارد. 10.3 فايل سيستمهاي ديگر
علاوه بر فايل سيستمهايي که در اين مقاله بررسي کرديم، انواع ديگري از فايل سيستم اين وجود دارند، در اين قسمت از مقاله به نام برخي از اين فايل سيستمها اشاره خواهم کرد که برخي از آنها در لينوکس پشتيباني نميشوند و فقط براي اطلاعات بيشتر خوانندگان نام آنها را قيد ميکنم. فايل سيستمهاي ژورنالينگ:
a. BeFS b. HTFS c. NSS d. VxFS
ساير فايل سيستمها (که ممکن است رابطهاي با لينوکس نداشته باشند و فقط جهت اطلاعات بيشتر نامبرده ميشوند) :
DTFS EFS (Enhanced filesystem) ffS (BSD filesystem) GPFS (generall Parallel Filesystem) HFS (HP-UX Hi performance filesystem) LFS (linux log structured file system) QNX filesystem ODS (Open VMS file system) NSS ( Novell storage services) NWFS ( NetWare filesystem / 286 و NetWare filesystem / 386) MFS ( Last Macintosh Fie System) RomFS
و بسياري فايل سيستمهاي ديگر . 11. اطلاعات بيشتر
در اين مقاله سعي شد تا بررسي کلي از سيستم فايلهاي مورد پشتيباني لينوکس به عمل آورده شود، در صورتي که به اين مبحث علاقه داريد و ميخواهيد اطلاعات دقيقتر و فصيحتري در رابطه با انواع فايل سيستمها و يا چگونگي کارکرد فايل سيستمها داشته باشيد، ميتوانيد از لينکهايي که در قسمت منابع و نيز در قسمت ساير فايل سيستمها (10.3) آورده شده است به عنوان منابعي کامل در اين زمينه استفاده نماييد. 12. جمع بندي
اين که از چه فايل سيستمي بايد استفاده کرد کاملا به شما بستگي دارد، مسائل بسيار زيادي ميتواند در انتخاب يک فايل سيستم تاثير داشته باشند، نسخهي کرنلي که استفاده ميکنيد، حجم ديسک سختتان، اهميت اطلاعات، نياز به سرعت در دسترسي يا نياز به بازيابي سريعتر و دلايلي بسيار. در اکثر مواقع اين دلايل ميتوانند راه کارهايي کاملا متضاد را در اختيار شما قرار دهند، براي نمونه در صورتي که براي بازيابي سريع اطلاعات اهميت بيشتري قائل هستيد ديگر به صرفهي اقتصادي نبايد توجه کنيد، اگر نياز به سرعت بالاتري براي دسترسي به اطلاعات احساس ميکنيد مجبور خواهيد شد ازبلاکهايي با سايز بزرگتر استفاده کنيد که اين نيز مقرون به صرفه نيست. اگراز امکانات شبکه استفاده ميکنيد مسلما نياز به يکي از فايل سيستمهاي شبکه خواهيد داشت. توجه داشته باشيد که انتخاب يک فايل سيستم مناسب ميتواند براي شما بسيار حياتي باشد، چرا که همان طور که در ابتداي مقاله اشاره کردم مهمترين بخش فعاليتهاي روزانهي هر سيستمي پروندهها هستند، گزارشهاي روزانه، نامههاي الکترونيکي و بسياري فايلهاي ديگر همه و همه از طريق فايل سيستم مديريت ميشوند و انتخاب يک فايل سيستم مناسب بسيار حياتي است. البته گاهي نيز اجبارهايي در کار است، براي نمونه پارتيشن اصلي يا root را نميتوانيد vfat انتخاب کنيد! يا اگر از LILO به عنوان بوت لودرتان استفاده ميکنيد ممکن ايت نتوانيد از XFS براي پارتيشن بوت استفاده کنيد و يا ممکن است لازم باشد از ترکيب اين فايل سيستمها در کارتان استفاده کنيد. براي نمونه از etx2 براي پارتيشن بوت، از ديگري براي / از فايل سيستمي سريع براي /tmp از فايل سيستمي ايمين و قابل بازيابي براي دايرکتوري home/ و ... که کاملا به سياستهاي شما و نوع کار شما وابسته است. در نهايت در صورتي که دربارهي اين مقاله پرسشي داريد و يا نياز به مطالب بيشتري داريد ميتوانيد ما را از طريق انجمنهاي گنوايران.ارگ در جريان بگذاريد.
|