حتما تا كنون با عناويني همچون FAT16 و FAT32 آشنا هستيد . اين دو از سيستم هاي فايلي مايكروسافت هستند كه در حال حاضر با توجه به گسترش زمينه هاي مختلف سيستم هاي كامپيوتري ناكارآمد و غير قابل اطمينان هستند.

يكي از مهمترين مشكلات امنيتي در سيستم FAT16 و FAT32 عدم توانايي در تعريف سطوح مجوز دسترسي به فايل ها و يا پوشه ها مي باشد . كه اين امر مي تواند به عنوان يكي از دلايل ناكارآمدي و قابل اطمينان نبودن اين سيستم ها در سطوح شبكه باشد .
بر اين اساس مايكروسافت سيستم فايلي جديدي تحت عنوان NTFS را ايجاد نمود كه از يك ساختار 64 بيتي پشتيباني مي كند و از اين رو كاربران مي توانند فايل هايي ايجاد كنند كه طول نام آنها تا 256 كاركتر باشد .
چهار مجوز استاندارد در سيستم NTFS براي فايل ها و پوشه ها وجود دارند :
1- No Access: با انتخاب اين گزينه كاربران هيچگونه مجوزي براي خواندن ، نوشتن و ... فايل يا پوشه مربوطه نخواهند داشت .
2- Read : با توجه به آنكه اجزاه خواندن يك فايل شامل اجراي آن نيز مي باشد ،از اين رو كاربري كه اين سطوح از دسترسي را داشته باشد مي تواند فايل را اجرا كرده و آن را بخواند .
3- Change : اين سطح دسترسي و مجوز ، كاربر را قادر مي كند تا فايل را خوانده و در صورت لزوم تغييرات خود را در آن انجام دهد يا حني فايل را حذف كند .
4- Full Control : با فعال بودن اين گزينه كاربران داراي مجوز مي توانند فايل را خواند ، تغييرات مورد نياز را درآن ايجاد كرده و يا حذف كنند . در واقع تمام امكانات و اختياراتي كه كاربر در حالت Change دارد در اين قسمت نيز وجود دارد و فرق اين دو سطح مجوز در آن است كه با داشتن مجوز Full Control ، كاربر مي تواند حتي براي ساير كاربران سيستم دسترسي تعريف كند و يا دسترسي كاربر ديگر را از آن پوشه و يا فايل حذف كند .
از لحاظ امنيتي بهتر است حتي الامكان از اين مجوز استفاده نكنيد ، زيرا داشتن مجوز Change بالاترين سطح دسترسي را به كاربران مي دهد مگر آنكه واقعا بخواهيد كاربري امكان تعريف يا حذف مجوز براي سايرين را داشته باشد .
البته مجوزه هاي ديگري نيز چون Read Only ، No Execute، Execute Only ، Write Only و ... نيز قابل تعريف مي باشند .

تعريف مجوزها
تعيين مجوز براي منابع اشتراكي شبكه
مجوزهاي بررسي شده در فوق در واقع براي تعيين سطح دسترسي كاربراني است كه از يك سيستم بطور مشترك استفاده مي كنند . اما ممكن است سيستم شما در بين چندين سيستم ديگر و در يك شبكه قرار گرفته باشد و شما بخواهيد با تعيين سطح دسترسي هاي مشخص امكان دسترسي به يك يا چند كاربر بدهيد . پس از تعريف منابع اشتاركي در سيستم تان كه مي تواند فايل ها ، پوشه ها ، درايو ها ، چاپگر ، اسكنر و ... باشد ، كاربران داراي مجوز مي توانند به اين منابع دسترسي داشته باشند . با توجه به آنچه گذشت مي توان سطوح دسترسي كاربران در سطح شبكه را نيز به شكل زير تعريف كرد:
1- No Access: نازلترين سطح دسترسي (دسترسي وجود ندارد)
2- Read : اجرا و خواندن
3- Change : اجرا ، خواندن و اعمال تغييرات
4- Full Control : اجرا ، خواندن ، نوشتن و اعمال تغييرات ، تغيير در سطح مجوز ها
با توجه به اين توانايي ها شما مي توانيد براي يك فايل و يا پوشه در هر دو وضعيت سيستم محلي و شبكه ، مجوزلازم را به كاربران بدهيد . مثلا با تعيين مجوز Change براي يك فايل در سيستم محلي ، به كاربراني كه در پشت سيستم شما مي نشينند امكان اعمال تغييرات را در فايل بدهيد و با تعيين مجوز Read در سطح شبكه تنها امكان خواندن را به كاربراني كه از شبكه استفاده مي كنند بدهيد . البته در صورت جابجايي اين سطوح ، يعني تعيين مجوز Change, در سطح شبكه و Read در سطح سيستم محلي ، تنها مجوز Read كه حداقل سطح دسترسي بين اين دو است به كاربران داده مي شود و كاربران شبكه نيز تنها مي توانند فايل را خوانده و اجرا كنند . شكل زير ، بوت سكتور يك ولوم قالب دار را با يك NTFS را شرح مي دهد .وقتي يك ولوم NTFS را قالب بندي مي كنيد ، برنامه قالب بندي اولين 16 قسمت را براي بوت سكتور و كد بوت استرپ اختصاص مي دهد.


در ولوم هاي NTFS ، اطلاعات رشته هايي هستند كه BPB ها را از يك BPB گسترده شده دنبال مي كند . ان اطلاعات كه در رشته ها قرار دارند Ntldr( برنامه لود كننده NT ) را قادر مي سازند تا ليست هاي فايل هاي اصلي ( MTF) را در طول شروع ، پيدا كنند. در ولوم هاي NT ، MFT در يك سكتور از پيش تعريف شده ، محدود نشده اند . اين موضوع در مورد ولوم هاي FAT16 و FAT32 نيز صادق است . به همين خاطر اگر سكتور بدي در محل نرمال آنها قرار گيرد ، MFT ها مي توانند جابه جا شوند. اگر اطلاعات خراب شده باشد ، MFT نمس تواند مستقر شود و ويندوز NT/2000 فرض را بر اين خواهد گذاشت كه ولوم قالب بندي نشده است .
مثال زير روشن خواهد كرد كه چگونه يك بوت سكتور ولوم NTFS هنگامي كه وندوز 2000 در حال اجراست ، قالب بندي مي شود . در اين قسمت نتيجه چاپي قالب بندي شده است .
در جدول زير قسمت هاي BPB وBPB گسترش يافته در ولوم NTFS شرح داده شده است .
به دليل اينكه يك سيستم در حال كار نرمال در بوت اسكوتر ها به دليل دسترسي به ولوم وجود دارد، بيشترين توصيه ما اين است كه ديسك مرورگر با قائده اي را مانند chkdsk نصب كنيد اين كار بسيار بهتر از اين است كه از همه اطلاعات خود BACK UP بگيريد تا از پاك شدن اطلاعات ضروري خود جلوگيري كنيد .
MFT
هر فايل در يك ولوم NTFS به وسيله ركوردي در يك فايل مخصوص به نام فهرست فايل اصلي يا ( MFT) نشان داده مي شود .
NTFS اولين 16 ركورد را در يك فهرست براي اطلاعات مخصوص رزرو مي كند . اولين ركورد از اين فهرست ، فهرست فايل اصلي را توصيف مي كند و خود به وسيله يك ركورد بازتابي MFT پيروي مي شود .اگر اولين ركورد MFT خراب شده باشد ،NTFS ركورد دوم را مي خواند تا بتواندركورد بازتابي MFT را كه اولين ركورد آن مانند اولين ركورد MFT است را پيدا كند مكان هاي اطلاعات كه به بخش هاي ركورد بازتابي MFT و MFT تقسيم شده اند ، در بو ت سكتور ها ثبت شده اند .نسخه اي ديگر از بوت سكتور در مركز منطقي ديسك محدود شده است . سومين ركورد MFT فايل ثبت كننده وقايع است كه براي ترميم فايل ها به كار برده مي شود . هفدهمين ركورد و ركوردهاي زيرين فهرست فايل اصلي براي هر كدام از فايل ها هستند.

طرح ساده اي از ساختمان MFT
فهرست فايل اصلي مقدار مشخصي از فضا را براي هر كدام از فايل هاي ركورد اختصاص مي دهد . خصوصيات يك فايل در فضاي اختصاص يافته در MTF نوشته مي شود .فايل ها كوچك و ديركتور ها ( معمولا 1500 بايتي و يا كوچكتر ) مانند فايلي كه در شكل بعد نشان داده شده است، مي توانند كاملا در داخل ركورد فهرست فايل اصلي جاسازي شوند .
اين طراحي دسترسي به فايل ها را بسيار سريع مي كند .براي مثال سيستم فايل FAT كه از يك فهرست فايل اختصاصي براي ليست كردن اسامي و آدرسها هر فايل استفاده مي كند FAT راهنما ، محتوي يك شاخص را به داخل يك فهرست فايل اختصاصي ثبت مي كند . وقتي شما بخواهيد يك فايل را ببينيد ، در ابتدا FAT فهرست فايل اختصاصي را مي خواند و مطمئن مي شود كه آن فايل وجود دارد . سپس FAT فايل ها را به وسيله زنجيره اي از واحد هاي اختصاصي اتصال يافته به آن فايل ، بازيافت مي نمايد .
ركورد هاي راهنما در داخل فهرست فايل اصلي قرار گرفته اند . بجاي اطلاعات ، راهنما ها محتوي اطلاعات شاخص هستند . ركورد هاي راهنماي كوچك ، كاملا در داخل ساختمان MFT مستقر هستند . راهنماهاي بزرگتر اساسا در داخل B-trees هستند و داراي ركوردهاي همراه اشاره گر هستند كه براي دسته هاي خروجي محتوي راهنماهاي ثبت كننده اي كه نمي توانند در داخل ساختمان MTFباشند ، مناسب هستند .
فايل NTFS نسبت داده شده :
سيستم فايل NTFS هر فايل و فولدر را مانند يك فايل نسبت داده شده مي بيند . عناصري مانند نام فايل و يا اطلاعات امنيتي خود فايل و حتي اطلاعات خود همه به عنوان فايل نسبت داده شده هستند . هر نسبت داده شده اي به وسيله يك نوع كد نسبت داده شده و يا اختيارا به وسيله يك اسم نسبت داده شناسايي ميگردد . هنگامي كه يك نسبت گر فايل بتواند در داخل ركورد فايل MFT متناسب شود ، به نام نسبت دهنده مقيم ناميده مي شوند .براي مثال اطلاعاتي از قبيل نام فايل ونشان زماني ، اغلب اوقات شامل ركورد فايل MTFمي گردند . هنگامي كه همه اطلاعات يك فايل براي متناسب بودن با ركورد فايل MTF بسيار بزرگ است ، بعضي از نسبت داده شده هاي آن غير ساكن مي شوند . نسبت داده شده هاي غير ساكن در جاي ديگرفضاي ديسك در ولوم به صورت دسته هاي يك يا بيشتر اختصاصي مي شوند .
NTFS ليست نسبت داده شده ها را ايجاد مي كند و آ نها را براي توضيح مكان ركوردهاي نسبت داده شده ، نسبت مي دهد .
فهرست 3-5 همه فايل هاي نسبت داده شده را كه به وسيله سيستم فايلNTFS تعريف شده است ليست وار نشان مي دهد. اين ليست قابليت وسعت بيشتر را دارد به دين معنا كه فايل هاي نسبت داده شده ديگري در آينده مي توانند تعريف شده و به اين ليست اضافه شوند .
بهينه سازي NTFS
اگر شما احتياجات ذخيره سازي خود را بررسي كنيد ، مي توانيد بعضي از پارامتر هاي سراسري NTFS را براي به دست آوردن افزايش قدرت اجرا يي CD تنيظم كنيد .
فاكتور هاي بسيار ديگري نيز موجود دارد ( ما در اينجا از ذكر نوع CD درايو و يا rpm خود داري مي كنيم )كه مي توانند بر روي اجراي NTFS تاثير بگذارند مانند : سايز دسته ، موقعيت ، قابليت ريز شدن فهرست فايل اصلي (MTF ) و فايل هاي صفحه بندي ، ولوم فشرده NTFS ، منبع ولوم NTFS ( كه به وسيله ولوم وجودي FAT به وجود مي آيند و يا معكوس مي شوند .
تعريف سايزدسته به طور دقيق :
دسته يك واحد اختصاص يافته است . اگر شما به طور مثال فايلي به اندازه 1 بايت ايجاد كنيد ، حداقل يك دسته بايد در سيستم فايل FAT اختصاص بيابد. اگر فايلي در NTFS به حد كافي كوچك باشد ،مي تواند بدون استفاده از دسته هاي ويرايشگر خود درركورد MFTزخيره شود . هنگامي كه فايل دورتر از مزر دسته بزرگ مي شود ، دسته ديگري اختصاصي مي شود . اين بدين معني است كه سايز دسته بزرگتر ، فضاي ديسك بيشتري را به خود اختصاص خواهد داد و در نتيجه اجرا بهتر است .
فهرست زير ارزش پيشفرض را كه ويندوز NT/2000/XP براي قالب بندي NTFS استفاده مي كند را نشان مي دهد :
بهرحال هر گاه شما فرمت ها را به صورت دستي قالب بندي كنيد ، مي توانيد سايز دسته را در جعبه فرمت محاوره به 512 بايت ، 1KB، 2KB ،4KB، 8KB، 16KB،32KB، 64KB تعيين كنيد . اين عمل چه چيزي به ما مي دهد ؟
ما به كمك اين عمل مي توانيم ميانگين سايز فايل را تعيين كنيم ونتيجتا بخش ها را فرمت نماييم . چگونه مي توانيم تعيين كنيم ؟ را ه آسان ( ولي ناهموار ) اين است كه شماره هاي فايل در يك درايو را به وسيله ديسك هاي نهايي كه دركيلوبايت ها استفاده مي شود ، تقسيم بندي كنيم . راه ديگر اين است كه به اطلاعاتي بپردازيد كه مي خواهيد آنها را در درايو قبل از قالب بندي ذخيره نماييد . هنگامي كه مي خواهيد مولتي مديا ها را كه در سايز بسيار بزرگ هستند ، دسته را بزرگتر كنيد تا يك اجرا توسعه پيدا كند . و اگر داري صفحات وب كوچك و يا مدارك مقاله اي هستيد ، سايز دسته را كوچك تر كنيد تا فضاي زيادي را از ديسك اشغال نكند . توجه : در ولوم ها ، داشتن سايز دسته ها بيش از 4 KB تراكم حمايت نمي شود . ذخيره و قسمت شدن MFT محتويات MFT مكررا سيستم هاي فايل و شاخص ها را استفاده مي كند . بنابراين اجراي MFT تاثير بسيار زيادي بر روي اجراي بي عيب ولوم مي گذارد. به وسيله قسمت ذخيره خطايNTFS ، حدود 12.5% سايز ولوم براي MFT خواهد بود يعني جائيكه به MFT اجازه داده مي شود تا بزرگ شود و به كاربر اين اجازه را نمي دهد كه اطلاعات را در آنجا بنويسد.براي مثال هنگامي كه فايل هاي بسياري به داخل درايو جابه جا مي شوند، MFT مي تواند دورتر از قسمت ذخيره بزرگ شده و تبديل به قسمت هايي شود . دليل ديگر اين است كه هنگامي كه شما فايل ها را حذف مي كنيد ، NTFS اكثر اوقات از فضاي خود در MTF براي ذخيره سازي فايل هاي جديد استفاده نمي كند و فقط مدخل MTF مانند هنگامي كه مدخل جديدي را براي فايل جديد حذف يا اختصاصي مي كند ، نشانه گذاري مي نمايد . اين عمل بعضي از اجرا ها و نتايج بازيافتي را داراست و به هر حال اين نيرو را به MFT مي دهد تا بتواند قسمت شود .
انتخاب فايل سيستم در ويندوز XP زياد ساده نيست و البته چيزيست كه بارها بايد انتخاب كنيم ! اصولا براي انتخاب فايل سيستم از ما در مورد دو نوع FAT32 و NTFS ميپرسند در حاليكه اين گونه در 3 بخش هست كه بايد بهش FAT رو هم اضافه كنيم ... در مورد FAT بايد بگم كه ماكزيموم 2 GB گنجايش براي هر درايو هست و از MS-DOS حمايت ميكند برا همينم اين گزينه رو كنار ميزاريم و ميريم سر اصل موضوع : اما اينكه صريحا بشه انتخاب كرد كه از كدوم نوع بايد استفاده كرد نميشه جواب داد چون هر كدام بسته به كارايي خودشون بايد مورد استفاده قرار بگيرند ...در مورد امنيت و اعتبار خوب بحثي نيست كه NTFS خيلي بهتر است . مجموعه نظر هاي بعضي شركت ها رو در زير در مورد قياس اين دو با هم ميارم :
امنيت: FAT32 براي فراهم اوردن امنيت بسيار ضعيف است چراكه كاربري كه به درايو خاصي دسترسي دارد به تمام فايلهاي ان درايو دسترسي خواهد داشت. NTFS به كاربران با مجوزهاي متفاوتي اجازه استفاده از فايلها و فولدر هاي درايو را ميدهد كه پيچيدگي سيستم را بالا ميبرد. ويندوز XP Professional از اين گزينه و پنهاني كردن ان حمايت ميكند .
سازگاري : ارزشهاي NTFS با ويندوز95/98/Me نميتوانند مشخص شوند . كه تنها مرتبط با وقتيستكه از دابل بوت كردن يا بوت چندگانه استفاده مي شود . FAT32 فقط موقعي مورد دسترسي هست كه كامپيوتر بايكي از اين سه ويندوز بالا بياد . FAT32 ميتواند به NTFS كانورت شود اما NTFS نميتواند بدون فرمت شدن كانورت شود .
بازدهي فضايي : NTFS ميتونه ديسك رو سهميه بندي كنه براي هر كاربر و ميتواند از فايلهاي كمپرس استفاده كند اما FAT32 نميتونه . در XP ماكزيموم پارتيشن 32 GB هست روي FAT32 و اين عمل با NTFS به 16 TB Terabyte ميرسه اعتبار : FAT32 استعداد error گيريش خيلي زياد هست NTFS داراي لوگ فايل هست كه براي تعمير اتوماتيك فايل سيستم هست. NTFS از كلاسترهاي ديناميك حمايت ميكنه به اينصورت كه سكتورهاي خراب رو مشخص ميكنه كه ديگه براي دفعات بعدي استفاده نشوند.
يک سيستم فايل موازي نسل جديد براي کلاسترهاي لينوکس مقدمه اي بر دومين سيستم فايل موازي مجازي
دانشمندان علوم کامپيوتر از کامپيوترهاي عظيم موازي به منظور شبيه سازي رويدادهايي که در دنياي واقعي رخ مي دهند استفاده مي کنند.
اين اعمال در چنين مقياس بزرگي جهت درک بهتر نمودهاي علمي يا پيش بيني رفتارها لازم و ضروري مي باشند. در اغلب موارد منابع محاسباتي يک فاکتور محدود کننده در حوزه اين شبيه سازي ها محسوب مي گردند.
منابع محدود تنها شامل CPU و حافظه نمي شوند، بلکه اين منابع زيرسيستم هاي ورودي/خروجي را نيز در بر مي گيرند، چرا که چنين برنامه هايي معمولا حجم زيادي از داده را توليد و يا پردازش مي نمايند. براي اينکه روند شبيه سازي با سرعت بالا اجرا شده و ادامه يابد، سيستم ورودي/خروجي بايستي قادر به ذخيره صدها مگابايت داده در هر ثانيه باشد، و در اين عمليات بايد ديسک هاي زيادي مورد استفاده قرار گيرد. نرم افزاري که اين ديسک ها را به صورت يک سيستم فايل مرتبط سازماندهي مي کند يک "سيستم فايل موازي" ناميده مي شود.
سيستم هاي فايل موازي بويژه به منظور فراهم نمودن ورودي/خروجي هاي بسيار سريع در مواقعي که بايستي توسط پردازش هاي زيادي در يک لحظه مورد دسترسي قرار گيرند طراحي شده اند. اين پردازش ها ميان چندين کامپيوتر مختلف، يا ميان گره ها(nodes)، که کامپيوتر موازي را تشکيل مي دهند توزيع گرديده است. شکل 1 يک نماي سطح بالا از يک کامپيوتر موازي به همراه يک سيستم فايل موازي را نمايش مي دهد. گره هايي که کار محاسبه را انجام مي دهند به يکديگر متصل شده اند و از سوي ديگر توسط شبکه کلاستر به گره هاي سرور ورودي/خروجي مرتبط هستند، و داده را بر روي ديسک هاي الصاقي به گره هاي سرور ذخيره مي نمايند.

شماتيک گره ها در LINUX
لازم نيست که شما براي بهره بردن از يک سيستم فايل موازي در يک لابراتوار ملي، که داراي يک کلاستر 1000 گره اي است، مشغول به کار باشيد. براي سالها سيستم فايل موازي مجازي (PVFS) مخصوص کلاسترهاي لينوکس در دسترس بوده است، که به هر شخصي امکان برپا کردن و استفاده از همان سيستم فايل موازي که در حال حاضر بر روي کلاسترهاي بزرگ فراواني در سراسر دنيا مورد استفاده قرار مي گيرند را مي دهد. اخيرا يک سيستم فايل موازي کامل تر و جديدتر بنام PVFS2 عرضه شده است. اين سيستم فايل جديد داراي انعطاف پذيري بيشتري بوده، و بهره بيشتري از سخت افزار موجود در کلاسترهاي امروزي مي برد، با کلاسترهاي بزرگتر مطابقت بيشتري دارد، و مديريت آن نسبت به نسل قبل ساده تر است.
تاريخچه لينوکس
توروالدز در طراحي سيستمعامل آزمايشي خود در سال 1991 از سيستم فايلMinix استفاده كرد. سيستم فايلMinix جوابگوي نيازهاي توروالدز بود و به خوبي در سيستمعامل جديد جا افتاد. با بهوجود آمدن يك جنبش اينترنتي براي توسعه اين سيستمعامل جديد و تبديل آن به يك سيستمعامل اپنسورسِ قابل استفاده براي عامه مردم، نارسايي و مشكلات سيستم فايلMinix ظهور كرد و نياز به طراحي يك سيستم فايل جديد توسط مشتاقان لينوكس حِس شد. دو مشكل عمده Minix در سيستم فايل عبارت بودند از كوچك بودن نام فايلها (حداكثر 14 كاراكتر) و فضاي حافظه بسيار محدود (بلوك آدرسدهي فقط 16 بيتي بود يعني 216=46 مگابايت) طراحي Virtual File System) VFS) توسط <كريس پروون زنو> راه را براي خلق يك سيستم فايل جديد با توانايي و كارايي بهتر ازMinix هموار ساختVFS . يا همان لايه مجازي سيستم فايل توسط خود آقاي توروالدز توسعه داده شد و به كرنل لينوكس اضافه گرديد. بلافاصله در آوريل 1992 سيستم فايل جديد،Extended File system ، در نسخه 96/0 لينوكس بهجاي سيستم فايلMinix استفاده شد. در واقع بنيانگذارانEXT fs عبارتند از Remy Card از آزمايشگاه ماساچوست، "Theodor Ts o" از انجمن تكنولوژي ماسوچوست و Stephan Tweedie از دانشگاه رادينبرگ.

ويژگي مهم EXT fs حافظه دو گيگا بايتي براي سيستم فايل و نامگذاري 255 كاراكتري فايلها است. همراه ساير بخشهاي لينوكس كه روح توسعه در آنها جريان داشت، در ژانويه 1993،EXT fs بهSecond Extended File system ارتقاء داده شد. EXT مشكلاتي داشت كه ميبايست برطرف ميشدند. مانند عدم كارايي مناسب Inode ها وLink List ها و عدم امكان استفاده از Time stamps (ثبت زمانهاي مربوط به هر فايل) EXT2 fs نسبت به نگارش قبلي خود بسيار بهتر و مطمئنتر بود و مشكلات و باگهاي موجود برطرف شده بودند.
ولي از پايداري لازم برخوردار نبود. همزمان باEXT2 fs ، سيستم فايلي هم براساس ساختارMinix به نام Xia طراحي شد كه يك سيستم فايل مطمئن و پايدار بود. در نسخههاي بعديEXT2 fs ، پايداري آن هم به حد مناسب رسيد و به عنوان سيستم فايل مخصوص لينوكس معرفي و عرضه شد. پس از مدت زيادي كه از زمان عرضه و استفاده EXT3 fs گذشت، نسل جديدEXT به نامEXT3 fs طراحي شد. پررنگترين ويژگي 3EXT استفاده از فناوري journaling است. Journaling روشي براي ثبت وقايع هر فايل است تا انسجام و سازگاري دادهها با سيستم براي هميشه تضمين شود.Vfs اين توانايي را هم ايجاد كرده است كه لينوكس بتواند با ديگر سيستم فايلهاي موجود نيز در تعامل باشد و سيستم فايلهاي ديگري هم براي عملياتخود تعريف كند. همانطور كه در تاريخچه گفته شد، اولين نسخههاي لينوكس همراه با سيستم فايلMinix عرضه شدند كه يك سيستم فايل مناسب و كارا مينمود ولي پيشرفت پروژه گنو و طراحي يك سيستمعامل اپنسورس فراگير، نيازمند سيستم فايل جديدتري بود.
كليد سيستم فايلext به وسيله طراحي ساختارVFS رقم خورد. براي شناخت بيشتر اين سيستم فايلي، ابتدا لايه مجازي سيستم فايل استفاده شده در لينوكس را بررسي ميكنيم.
Virtual File system) VFS)

لايه VFS
لينوكس از يك لايه مجازيVFS براي سيستم فايل خود استفاده ميكند. اين لايه مجازي ميان سيستم فايل در كرنل و لايه فراخواني فرايندهاي كاربران لينوكس واقع شده است (شكل فوق). همانطور كه شكل نشان ميدهد،VFS بر روي سيستم فايل قرار گرفته و با گرفتن توابع فراخواني پروسسهاي كاربران، اطلاعات تجزيه و تحليل شده را به سمت يك بلوك سيستم فايل هدايت ميكند. هر پروسس در وضعيت كاري كاربر با اين لايه سيستم فايل در ارتباط است نه بهصورت مستقيم با رويههاي سيستم فايل. هسته سيستمعامل با بهكارگيريVFS اين توانايي را به كرنل ميدهد كه بدون هيچ نگراني از فرمتهاي گوناگون پشتيباني كند، مانند فرمت فايل يونيكس و ويندوز. همچنينVFS باعث تسريع در عملياتهاي سيستم فايل شده و در هر فراخواني فقط نياز به دسترسي به يك بلوك است. مفاهيم اوليهext Extendedfs از مفاهيم يونيكس براي ساختاربندي خود استفاده ميكند. مهمترين اين مفاهيمInode ،Directories وLink List ها ميباشند. Inode براي هر فايل يك ساختار بلوك مانندInode وجود دارد و هر فايل در لايه فيزيكي سيستمعامل تبديل به يكInode ميشود. هرInode از بخشهاي مختلفي تشكيل ميشود كه هر بخش شامل يك سري اطلاعات است. نوع فايل، اندازه فايل،owner يا مالك فايل، مجوزها و خصوصيات فايل، تاريخهاي ثبت شده براي فايل مانند تاريخ ايجاد، آخرين دسترسي، اصلاح و اشارهگرها، مهمترين اطلاعات هرInode را تشكيل ميدهند. دادههاي هر فايل درData Block ها ذخيره و نگهداري ميشوند كه هر Inode تعدادي اشارهگر به اين ديتابلوكها دارد. هر فرايندي در سطح سيستمعامل كه نياز به فايلي مشخص دارد كافيست شماره آن فايل را به دست بياورد و با رجوع بهInode فايل تمام اطلاعات لازم را در اختيار خواهد داشتInode .ها ساختاري همانند شكل زير دارند.

شکل INODE ها
Directories
دايركتوريها همان ساختار درختي آشناي سازماندهي فايلها هستند. ساختار هر دايركتوري به صورت زير ميباشد: Inode number entry length file name

مدخلهاي اشارهكننده به Link ها هستند. هر دايركتوري ميتواند شامل فايل يا زيردايركتوري باشد. دايركتوريها نام هر فايل همراه شمارهInode آن را در خود ذخيره ميكنند. هسته سيستمعامل براي يافتن يك فايل ابتدا دايركتوريها را اسكن ميكند و با پيدا كردن شمارهInode فايل آدرس فيزيكي فايل در ديسك توليد ميشود (شكل فوق). از ديگر وظايف دايركتوريها مديريتLink List ها است. Link همانند يونيكس، مفهوم لينك هم درext مطرح و به كار برده شده استLink List . ميتواند يك اشارهكننده به فايل يا دايركتوري يا بلوكهايي از دادهها باشد. شما با ايجاد يك لينك ميتوانيد دسترسي سريع به فايل يا دايركتوري داشته باشيد. خود هسته سيستمعامل هم براي دستهبندي اطلاعات ازLink List ها استفاده ميكندLink .ها در سطح كاربر هم قابل تعريف و بهكارگيري هستند و به لينكهاي سختافزاري و نرمافزاري تقسيمبندي ميشوند. ساختار فيزيكي Ext Fs سيستم فايلext لينوكس ساختار فيزيكي همانند سيستم فايلBSD دارد.
بدينصورت كه حافظه سيستم فايل تماماً بهBlock Group ها تقسيم ميشود. اين بلوكها در اندازههاي 1K، 2K،4K قرار ميگيرند و هر بلوك براي يك سري اطلاعات با كاربردي خاص استفاده ميشود. ساختار حافظه فيزيكي سيستم فايلext به اين شكل است: Boot Sector Block Group 1 Block Group 2 ... Block Group N هر يك از اينBlock Group ها هم ساختاري اين چنين دارند: Super Block FS Description Block Bitmap Inode Table Data Block همانطور كه مشاهده ميشود هرBlock Group در ابتدا شامل يكSuper Block است كه اطلاعات مدير سيستم(Root) به همراه اطلاعات كلي مربوط به بلوك در آن قرار ميگيرد. بخش بعدي اطلاعات مربوط به سيستم فايل است و در ادامه جدولInode ها، دادههاي هر بلوك و بيتهاي كنترلي بلوك وInode قرار ميگيرند. در اين شيوه از ساختاربندي فايل، چون جدولInode ها فاصلهاي بسيار نزديك با بلوك دادهها دارد كارايي سيستم چندين برابر ميشود و سرعت دستيابي به اطلاعات هر بلوك از فايلها افزايش مييابد. همچنين با ايجاد يك ساختار بلوكبندي شده فضاي آدرسدهي منطقي كمتري مصرف ميشود. Ext2 fs سيستم فايل استاندارد گنو / لينوكس پس از به كار گرفته شدن سيستم فايلExt fs در هسته گنو/ لينوكس برخي نواقص و نارساييهاي آن ظاهر شد و بنابراين به سيستم فايل Second Extended fs ارتقاء داده شد. قريب يك دههExt2 fs پيشفرض سيستم فايل لينوكس در كرنل و توزيعهاي تجاري بود. شايد بتوان مهمترين شاخصههايExt2 fs كه باعث متمايز شدن آن از تمامي سيستم فايلهاي قبل از خود شد را بهصورت زير ليست كرد: Ext2 fs توانايي كار و پشتيباني با فايلهايي با فرمتي غير ازExt را هم داراست.
به راحتي با داشتن يكVFS فايلهاي ويندوز و يونيكس و ديگر سيستمعاملهاي تجاري همانندBSD و فرمتV را شناخته و از اين فرمتها در كنارExt استفاده ميكند. Ext2 fs قابليت نامگذاري فايلها تا 255 كاراكتر را ميسر ميكند و حتي در صورت تعريف بلوكهاي بزرگتر باز هم اين اندازه قابل افزايش است. بهصورت پيشفرض، حافظه فيزيكي 2Ext برابر2 گيگا بايت است. اين اندازه از سيستم فايل همراهVFS امكان ايجاد يك پارتيشن بزرگ تا اندازه4 گيگا بايت را ميسر ميكند و ديگر نيازي به تقسيم يك پارتيشن بزرگ به اندازههاي كوچكتر به وجود نميآيد.

هر يك از اينBlock Group ها هم ساختاري اين چنين دارند:

Ext fs با تخصيص پنجاه درصد بلوكهاي حافظه به حساب ريشه (Root) تواناييهاي بالقوهاي در اختيار مدير سيستم قرار ميدهد. با استفاده از اين بلوكها امكان پيگيري فرايندهاي كاربران به آساني ميسر ميشود. از خصوصيات ويژهExt2 fs امكاندهي به كاربر درset كردن خصوصيات يك فايل در زمان ساخت يا بعد از آن است. حتي يك كاربر ميتواند برخي رفتارهاي سيستم فايل را هم به تناسب خود تغيير دهد. اين اعمال تغييرات بهوسيله ارايه ابزارهاي بسيار سادهاي كه از طرف جامعه اپنسورس به كاربران هديه ميشود، به آساني صورت ميگيرد. اجازه تعريف اندازه بلوكهاي فيزيكي سيستم فايل به مدير سيستم ديگر مزيتExt2 fs است. مدير سيستم ميتواند برحسب نياز بلوكها را به صورت دستي سايزبندي كند. اين امر موجب كارايي هر چه بيشتر سيستم در مواجه با فرايندهاي بلوكه شده ميشود. استفاده ازLink ها درExt2 fs به راحتي امكانپذير است و با يك دستور <>Ln در پوسته فرمان ميتوانيد براي فايلها و دايركتوريها، يكLink درست كنيد. در سيستم فايلExt2 fs ،State هاي سيستم فايل قابل ثبت و نگهداري است. فيلدSuper Block در هر بلوك سيستم فايل وظيفهاي براي نگهداري اين اطلاعات دارد كه قابل بازخواني هستند. و مزيت آخرExt2 fs در دسترس و همگاني بودن توابع كتابخانهاي سيستم فايل است كه اين امكان را ميدهد، هر كاربري با بهكارگيري اين توابع توانايي هرگونه تغيير، اصلاح و بهوجود آوردن و ساخت را در 2Ext بهدست آورد. به همين خاطر ابزارهاي بسياري براي كار باExt2 fs موجود و قابل تهيه هستند. از ابزار پيكربندي سيستم فايل تا ابزار اشكالزدايي آن. مهمترين اين ابزارها عبارتند ازDebugfs :،dump2 fs ،tune fs ،e2fsck ،Mk2 fs . Ext3 fs نسل جديد سيستم فايل گنو / لينوكس در كرنلي كه ازExt2 fs استفاده ميكند اگر عملياتshut down به درستي انجام نشود، به عنوان مثال قطع برق ياCrash كردن سيستم، شاهد بروز دو مشكل عمده هستيم: امكان خرابي و از بين رفتن دادهها و دوم اينكه سيستم براي بوت مجدد نيازمند به استفاده از ابزار اسكن دادهها براي شناسايي و تشخيص داده جهت سازگاري آنها با سيستم فايل است. گاهي در اين موارد مدت زمان زيادي بايد صبر كنيد تا چند گيگابايت اطلاعات توسط سيستم خوانده شوند كه اين بسيار نامطلوب استthree Extended fs . نسل جديدExt2 fs مشكل را برطرف كرده استExt3 fs . با بهرهگيري از تكنولوژي <>journaling يا <سيستم ثبت وقايع فايلها>، امنيت دادهها و سازگاري و انسجام اطلاعات را در هنگام وقوع خطاهاي سختافزاري تظمين ميكند. Ext3 fs توسط آقاي Tweedie (از بنيانگذاران سيستم فايل (Ext fs توسعه يافته و از هسته 15.4.2 به بعد قابل استفاده است. Journaling از روشي در ذخيره و نگهداري دادهها بر روي ديسك استفاده ميكند كه ديگر نيازي به سازماندهي اطلاعات بلوكهاي سيستم فايل و تنظيم كردن آدرسهاي منطقي نيست و هيچ زماني در فرايند بوت براي شناخت دادهها و انسجام آنها با سيستم فايل صرف نميشود. در ضمن امنيت دادهها هم تأمين ميشود. در زمان وقوع يك خطاي سختافزاري، ژورنالينگ از اطلاعات دادهها پشتيباني ميكند و باعث ميشود هيچگونه اطلاعات جديدي بر روي دادهها نوشته نشود. سرعت و بهره توان عملياتيExt3 fs به مراتب بيشتر ازExt2 fs استExt3 fs . از سه روش براي بالا بردن سرعت استفاده ميكند. در روشData = write back ، پس ازCrash كردن سيستم، دادههاي قديمي استفاده ميشود. در اين روش اطمينان صحت دادهها پايين ميآيد ولي سرعت بالا ميرود. در روش Data = ordered (پيشفرض) از هر گونه اضافه شدن اطلاعات به دادههاي بلوكهاي سيستم فايلInode ها جلوگيري ميشود. اين مد بهترين كارايي را دارد. در سومين روشData= journal ، سيستم از يك فايل بزرگjournal براي نگهداري اطلاعات سيستمي ضروري براي ذخيره و بازيابي دادههاي ديسك استفاده ميكند. ميشود گفت كه فايل journal در واقع فايلBackup سيستم است. Ext3 fs باExt2 fs سازگاري كامل دارد و تبديل و ارتقاء به آساني و با چند خط فرماننويسي درshell سيستم صورت ميپذيرد. و اين كار بدون هيچگونه نياز به فرمت كردن يا پارتيشنبندي يا اختلال در بلوكهاي دادههاي سيستم فايل صورت ميپذيرد. يعني شما فقط فايلjournal را به سيستم فايلExt2 fs اضافه ميكنيد. بهكارگيري تكنولوژيjournaling در سيستم فايل علاوه بر مزاياي گفته شده، باعث ايجاد يك تاريخچه از هر فايل در سيستم شده و عمليات پيگيري وقايع هر فايل به آساني امكانپذير ميشود. گذشته از اين ژورنالينگ در ديگر امكانات هسته هم استفاده ميكند. همه اين ويژگيها باعث شدهاند كه بسياري از شركتهاي تجاري سيستم فايل 3Ext را به عنوان پيشفرض توزيع گنو/ لينوكس خود انتخاب كنندRed Hat . از نسخه 2/7،Ext3 fs را در نسخه لينوكس خود بهكار برد. مفاهيم سيستم فايل موازي براي دستيابي به کارآيي بالا، يک سيستم فايل موازي فايل ها را همانند سيستم RAID ميان گره ها قطعه قطعه و تقسيم مي نمايد. در اين سيستم، بجاي ديسک ها، گره ها سرورهاي داده محسوب مي شوند. همانگونه که يک RAID چندين کانال را به منظور افزايش کارآيي در يک مجموعه از ديسک هاي محلي متمرکز مي کند، يک سيستم فايل موازي نيز اتصالات شبکه را در يک مجموعه از ديسک هايي که به صورت شبکه در آمده اند متمرکز مي نمايد. قطعه قطعه کردن داده در ميان گره ها يک روش ساده براي دستيابي به موازي سازي ميان چندين سيستم ورودي/خروجي سري است. بر خلاف حالتي که چندين گره از يک RAID به صورت اشتراکي استفاده مي کنند، يک سيستم فايل موازي قادر به استفاده همزمان از چندين لينک شبکه، با حذف گلوگاه محدودکننده، مي باشد. تا زماني که فايلها به اين روش قطعه قطعه مي شوند و برنامه هاي موازي وادار به کار بر روي نواحي معيني از يک فايل به اشتراک گذاشته شده مي گردند، شبکه و محتويات لود شده ديسک ها توانايي گسترش در ميان گره هاي ذخيره سازي را دارند. در مقابل، سيستم هاي فايل شبکه اي داراي نقش متفاوتي هستند. امروزه، داشتن يک پيکربندي از چندين ماشين با برخي از انواع ذخيره سازي اشتراکي يا سيستم فايل همچون NFS، Windows Networking يا AppleTalk ديگر امر غير عادي محسوب نمي شود. اين سيستم ها با توجه به پيشرفت هاي حاصل شده در کارآيي آنها (پيشرفت هايي نظير عمل کش کردن سمت کلاينت) به خوبي home directory ها کار خود را انجام مي دهند. کش سازي سمت کلاينت تاريخچه تغييرات محلي فايل را بدون بروزرساني بيدرنگ در وضعيتي که داده بر روي سرور و يا بر روي حافظه هاي کش موجود بر روي ساير کلاينت ها ذخيره شده باشد نگه داري مي کند. اين رويکرد بطور کلي بارگذاري هاي شبکه را کاهش داده و سرعت انجام اعمال معمولي از قبيل ويرايش يا کامپايل فايل ها را به روشي که هزينه هاي شبکه را تقريبا شفاف مي سازد افزايش مي دهد. در حالي که مزيت کش سازي سمت کلاينت در سيستم هاي فايل شبکه اي بر کسي پوشيده نيست، برنامه هاي موازي در صورتيکه داده ارائه شده به آنها ناهماهنگ و متناقض باشد مي توانند نتايج نادرستي را توليد نمايند. اگر پردازش ها همواره يک ديد مشترک از داده را به اشتراک گذارند، برنامه هاي موازي قادر خواهند بود بدون خطا به کار خود ادامه دهند. يک روش، حصول اطمينان از اين مسئله است که حافظه هاي کش موجود در هر گره همواره حاوي آخرين داده است. تکنيک هاي گوناگوني براي حفظ هماهنگي و سازگاري وجود دارد، که توسط هر تکنيک به مشخصه هاي متفاوتي از کارآيي مي توان دست يافت. براي مثال، برخي سيستم هاي فايل کلاستر مسئله سازگاري و هماهنگي داده را با استفاده از قفل هاي فايل به منظور جلوگيري از دستيابي همزمان به فايل حل مي کنند. بطور کلي، قفل ها روشي براي حصول اطمينان از اين مطلب هستند که تنها يک فرايند در يک لحظه قادر به اعمال تغييرات بر روي داده است. در يک سيستم فايل شبکه اي، معمولا يک قفل بايستي از يک مدير قفل مرکزي کسب اجازه نمايد. قفل هاي فايل نوع Coarse-grained تضمين مي کنند که فقط يک پردازش در يک لحظه قادر به نوشتن داده در يک فايل باشد. کارآيي با افزايش تعداد پردازش ها تنزل خواهد يافت. ساير روش ها شامل طرح هاي قفل فايل fine-grained، همچون قفل محدوده بايت (byte-range)، مي باشند که اين امکان را فراهم مي آورند که چندين پردازش بصورت همزمان نواحي مختلفي از يک فايل به اشتراک گذاشته شده را بنويسند. به هر حال، آنها با محدوديت هاي مقياس پذيري ((scalability نيز مواجه مي شوند. بالاسري (overhead) ناشي از نگهداري تعداد زيادي از قفل هاي از اين نوع در نهايت به تنزل کارآيي ختم مي گردد. در حالت کلي تر، هر سيستم قفل شبکه اي با يک گلوگاه محدود کننده براي دسترسي داده مواجه مي شود. براي دستيابي به مقياس پذيري و کارآيي در مورد درخواست هاي برنامه هايي که اعمال ورودي/خروجي زيادي دارند، يک سيستم بدون بالاسري قابل توجه (همچون قفل کردن) و بدون عرضه متفاوت داده ميان گره ها (همچون کش سازي سمت کلاينت) مورد نياز است. برنامه هاي موازي تمايل دارند که هر فرايند را وادار به نوشتن در نواحي مجزايي از يک فايل به اشتراک گذاشته شده نمايند. براي اين نوع برنامه ها، در حقيقت هيچ نيازي به عمل قفل کردن نيست، و ما مي خواهيم که تمام اعمال نوشتن بصورت موازي و بدون تاخير موجود در چنين رويکردهايي ادامه يابد. بجاي داشتن يک سيستم فايل با کارآيي بالا که زمان زيادي را صرف مجادله براي منابع مشترک يا تلاش براي حفظ سازگاري و هماهنگي حافظه هاي کش کند، حالت ايده آل اين است که سيستمي را طراحي کنيم که به اشتراک گذاري منابع و سازگاري مناسب را پشتيباني نمايد. PVFS2 مثالي از يک سيستم فايل موازي نسل آينده است که براي برآورده ساختن اين موارد طراحي شده است. در قسمت بعد به بحث در مورد چگونگي راه اندازي PVFS2 خواهيم پرداخت.
سيستم PVFS2
سيستم PVFS2 PVFS2 نشان مي دهد که ساختن يک سيستم فايل موازي که بصورت مجازي با پي ريزي دقيق فوق داده و فضانام و همچنين تعريف معاني دستيابي داده که مي تواند بدون قفل کردن در دسترس قرار گيرد سازگاري را حفظ کند، امکانپذير است. اين طراحي به بروز برخي از رفتارهاي سيستم فايل که مورد انتظار تعدادي از برنامه هاي سنتي نيست ختم مي شود. اين معاني در زمينه ورودي/خروجي موازي بحث جديدي به شمار نمي روند. PVFS2 بصورت دقيق تر معاني را که توسط MPI-IO، يک API ورودي/خروجي با کارآيي بالا، ديکته مي شود پياده سازي مي نمايد. PVFS2 همچنين داراي پشتيباني محلي براي الگوهاي انعطاف پذير ناپيوسته دستيابي داده مي باشد. اغلب برنامه هاي سنتي (نظير "cat" و "vi") به نواحي داده پيوسته از فايل هاي باز شده دسترسي دارند، در حاليکه برنامه هاي علمي اغلب اوقات نيازمند الگوهاي دستيابي هستند که ناپيوسته باشند. براي مثال، شما مي توانيد برنامه اي را تصور نماييد که ستوني از عناصر خارج از يک آرايه را مي خواند. براي بازيابي اين داده، برنامه ممکن است تعداد زيادي عمل خواندن کوچک و پراکنده را بر روي سيستم فايل انجام دهد. در صورتيکه، اگر بتواند طي يک مرحله تمامي عناصر ناپيوسته را از سيستم فايل درخواست نمايد، هم سيستم فايل و هم برنامه به نحو کارآمد تري وظيفه خود را انجام خواهند داد (شکل زير را ببينيد).

آرايه دستورات
علاوه بر کارآيي، ثبات و مقياس پذيري scalability)) نيز اهداف مهم طراحي به شمار مي آيند. به منظور کمک به دستيابي به اين اهداف، PVFS2 بر اساس يک معماري مستقل از وضعيت ((stateless طراحي گرديده است. اين به آن معني است که سرورهاي PVFS2 تاريخچه مربوط به اطلاعات سيستم فايل، اطلاعاتي مانند اينکه کدام فايل ها باز شده اند يا موقعيت فايل ها و مواردي از اين قبيل، را نگهداري نمي کنند. همچنين در اين مورد هيچ وضعيت قفل مشترکي براي مديريت وجود ندارد. مزيت اصلي يک معماري مستقل از وضعيت اين است که در آن کلاينت ها قادرند بدون بهم زدن کل سيستم دچار خطا شده و مجددا به کار خود ادامه دهند. اين معماري همچنين به PVFS2 اين امکان را مي دهد که در مواجهه با صدها سرور و هزاران کلاينت بدون اينکه تحت فشار بالاسري و پيچيدگي پيگيري وضعيت فايل يا اطلاعات قفل متعلق به کلاينت هاي مذکور قرار گيرد وظيفه خود را بدرستي انجام دهد.
بر خلاف PVFS نسل گذشته، PVFS2 داراي يک سيستم شبکه اي و ذخيره سازي ماژولار است. يک سيستم ذخيره سازي ماژولار اين امکان را براي چندين back-end ذخيره سازي فراهم مي آورد که به راحتي به PVFS2 متصل شوند. اين خاصيت تلفيقي کار افرادي را که در حال تحقيق بر روي ورودي/خروجي به منظور آزمايش و تجربه تکنيک هاي مختلف ذخيره سازي هستند ساده مي سازد. همچنين يک سيستم شبکه اي ماژولار اجازه کار بر روي اتصالي از شبکه هاي چندگانه را داده و فرايند افزودن پشتيباني براي انواع ديگري از شبکه ها را آسان مي نمايد. PVFS2 در حال حاضر TCP/IP و همچنين شبکه هاي Infiniband و Myrinet را پشتيباني مي کند.
اين طراحي ها PVFS2 را قادر به انجام وظايف خود به نحو عالي در يک محيط موازي مي سازد، اما در وضعيتي که به عنوان يک سيستم فايل محلي مورد استفاده قرار گيرد کار خود را به خوبي قبل انجام نخواهد داد. بدون کش سازي فوق داده سمت کلاينت، برخي اعمال زمان زيادي صرف مي کنند.اين امر مي تواند مدت زمان انجام برنامه هايي همچون "ls" را بيشتر از حد انتظار افزايش دهد. با وجود اين محدوديت، PVFS2 براي برنامه هايي که داراي اعمال ورودي/خروجي زيادي هستند مناسب تر است، تا اينکه براي ميزباني يک home directory مورد استفاده قرار گيرد. PVFS2 براي خواندن و نوشتن کارآمد حجم زيادي از داده بهينه شده است، و از اينرو بسيار مناسب برنامه هاي علمي مي باشد.
اجزاء PVFS2
بسته اصلي PVFS2 شامل سه جزء متفاوت است: يک سرور، يک کلاينت و يک ماژول کرنل. سرور بر روي گره هايي که داده سيستم فايل يا فوق داده را ذخيره مي کنند اجرا مي شود. کلاينت و ماژول کرنل نيز بوسيله گره هايي که به شکل فعال داده (يا فوق داده) را از سرورهاي PVFS2 ذخيره يا بازيابي مي کنند مورد استفاده قرار مي گيرند.
بر خلاف PVFS اصلي، هر سرور PVFS2 توانايي ايفاي نقش به عنوان يک سرور داده، يک سرور فوق داده يا هر دو را بصورت همزمان دارد. همانگونه که قبلا گفته شد، سيستم هاي فايل موازي از تعدادي گره سود مي برند که تمام داده ميان آنها به شکل قابل پيش بيني قطعه قطعه شده است. اين گره ها همان سرورهاي داده در PVFS2 هستند. برخي از انواع پيکربندي نيز ممکن است از چندين سرور فوق داده بهره ببرند. ذخيره کردن فوق داده در ميان چندين گره کمکي است به موازنه بارگذاري سرور تحت اعمالي که شامل دسترسي سنگين و زياد به فوق داده هستند (مثلا ايجاد يا تغيير نام تعداد زيادي فايل). اين نوع پيکربندي بطور کامل در PVFS2 پشتيباني مي گردد. بهرحال، تعداد سرورهاي فوق داده هيچ فشاري بر روي اعمال خواندن يا نوشتن وارد نمي آورد، و اکثر برنامه هاي علمي اعمال فوق داده کافي جهت هر گونه بهره برداري از پيچيدگي افزوده انجام نمي دهند.
کلاينت هاي PVFS2 با سرورهاي PVFS2 بر روي اتصال شبکه ارتباط برقرار مي نمايند. تمامي ارتباط به صورت اختياري به حالت رمز در مي آيند تا اطمينان حاصل گردد که ماشين هاي داراي معماري هاي متفاوت توانايي درک يکديگر را دارند. يک کلاستر مختلط شامل گره هاي x86، Itanium و PowerPC را تصور نماييد. رمزبندي ارتباط ما تضمين مي کند که تمامي گره ها قادر به استفاده از يک PVFS2 volume، صرفنظر از ترتيب بايت محلي يا اندازه کلمه خواهند بود.
ماژول کرنل PVFS2 يک درايور کرنل لينوکس است که به يک PVFS2 اجازه نصب را همانند هر نوع سيستم فايل لينوکس ديگري مي دهد. وظيفه اصلي آن ترجمه واضح تمامي اعمال سيستم فايل به دستورات کلاينت PVFS2 بر روي PVFS2 نصب شده است.
دستيابي به سيستم هاي فايل PVFS2
دو روش جهت دستيابي به سيستم هاي فايل PVFS2 فراهم گرديده است. روش اول نصب کردن سيستم فايل PVFS2 است. اين روش اعمال تغييرات توسط کاربر و دايرکتوري هاي ليست، يا انتقال فايل ها و همچنين اجراي باينري ها از سيستم فايل را مجاز مي شمارد. اين مکانيزم با برخي بالاسري هاي کارآيي مواجه مي گردد اما مناسب ترين روش جهت دستيابي تعاملي به سيستم فايل مي باشد.
برنامه هاي علمي از روش دوم (MPI-IO) استفاده مي نمايند. اينترفيس MPI-IO به دستيابي بهينه به فايل هاي منفرد توسط تعداد زيادي از پردازش ها بر روي گره هاي مختلف کمک مي کند. آن همچنين اعمال دستيابي غيرپيوسته را فراهم مي آورد که جهت دستيابي کارآمد به داده گسترش يافته در سراسر فايل مورد استفاده قرار مي گيرد. در مورد تصوير 2 اين کار با درخواست هر عنصر هشتمي که در آفست 0 شروع شده و در آفست 56 پايان مي يابد، کلا به عنوان يک عمليات سيستم فايل، صورت مي پذيرد.
در اين مقاله ما بر روي روش اول تمرکز کرده ايم.
راه اندازي PVFS2
PVFS2 جهت اجرا بر روي چندين ماشين در نظر گرفته شده است. در هر صورت، براي سادگي کار، ما PVFS2 را بر روي يک ماشين نصب و راه اندازي مي کنيم. ما ماشين را با نام "testmachine1" صدا خواهيم زد و نصب را در محل پيش فرض (/usr/local) انجام خواهيم داد. سپس نسخه PVFS2 را در /mnt/pvfs نصب خواهيم کرد. فرايند مربوط به نصب بر روي چندين ماشين کاملا مشابه روند گفته شده است.
PVFS2 بر روي اغلب توزيع هاي جديد GNU/Linux ايجاد شده است، اما اگر شما مايليد از ماژول کرنل استفاده نماييد، شما به کرنل لينوکس نسخه 2.6.0-test4 يا پس از آن نياز خواهيد داشت.
PVFS2 با استفاده از "configure" و "make" ايجاد و نصب گرديده است. در مثال هايي که در ادامه آمده است اينگونه فرض شده که شما به عنوان root وارد سيستم شده ايد. در صورتيکه شما مايل به ايجاد ماژول کرنل باشيد گزينه "--with-kernel" مورد نياز خواهد بود.
کد
./configure --with-kernel=/usr/src/linux-2.6.x
make
make install
اگر شما قصد ايجاد ماژول کرنل اختياري را داريد، اکنون بايد آن را بصورت مجزا کامپايل نماييد. اين کار را با تغيير دايرکتوري ها به دايرکتوري "src/kernel/linux-2.6" و اجراي "make" انجام دهيد. پس از اينکه ماژول ايجاد شد، فايل pvfs2.ko را در محلي به انتخاب خود کپي نماييد (مثلا در /lib/modules/`uname -r`/kernel/fs/pvfs2.ko).
پس از آنکه نرم افزار ايجاد و نصب گرديد، بايستي پيکربندي شود. بسته PVFS2 ابزاري بنام pvfs2-genconfig را جهت ايجاد فايل هاي پيکربندي براي هر يک از سرورهاي شما فراهم آورده است. هر سرور به دو فايل پيکربندي نياز دارد (يکي براي پيش فرض هاي عمومي، و يکي براي تنظيمات محلي) که بايستي در هنگام اجراي pvfs2-genconfig مشخص گردند. يک مثال دستور خط فرمان مي تواند به صورت زير باشد:
کد:
pvfs2-genconfig global.conf local.conf
اين فرمان اطلاعات ديگري نيز از شما دريافت مي نمايد؛ بهرحال، احتمالا موارد پيش فرض براي اين مثال کفايت مي کند. توجه داشته باشيد که فايل هاي ايجاد شده global.conf و local.conf-testmachine1 خواهند بود.
قبل از آغاز به کار سرور PVFS2، شما بايستي دايرکتوري هايي را که براي عمل ذخيره سازي مورد استفاده قرار خواهند گرفت را تعيين نماييد. اين کار بسيار ساده با آغاز pvfs2-server به همراه يک آرگومان "-f" در کنار نام فايل هاي پيکربندي صورت مي گيرد.
کد:
pvfs2-server global.conf local.conf-testmachine1 -f
سرور، فضاي ذخيره سازي را آغاز سازي نموده و سپس خارج مي شود. حال از اين پس با همين خط فرمان اما بدون آرگومان "-f" مي تواند شروع به کار نمايد.
کد:
pvfs2-server global.conf local.conftestmachine1
در مرحله بعد، يک فايل با نام /etc/pvfs2tab ايجاد نماييد. اين فايل حاوي خط زير است:
کد:
tcp://testmachine1:3334/pvfs2-fs /mnt/pvfs pvfs2 default 0 0
در اين مرحله از کار، اگر شما اينترفيس ماژول کرنل لينوکس را مورد آزمايش قرار نداده ايد، مي توانيد بدون هيچ مشکلي به قسمت Testing برويد. در غير اينصورت، همين حالا آن را با استفاده از insmod يا modprobe لود نماييد.
گام بعدي آغاز به کار برنامه کلاينت PVFS2 است. برنامه کلاينت PVFS2 شامل دو برنامه به نام هاي pvfs2-client-core و pvfs2-client است. در صورتيکه برنامه pvfs2-client-core در PATH سيستم شما نصب شده باشد، برنامه pvfs2-client آن را بصورت خودکار يافته و شما به سادگي مي توانيد "pvfs2-client" را اجرا نماييد. در غير اينصورت، شما بايد با استفاده از سوييچ خط فرمان –p محل برنامه pvfs2-client-core را براي pvfs2-client مشخص نماييد.
کد:
pvfs2-client -p /usr/local/bin/pvfs2-client-core
و در نهايت، براي نصب نوع نسخه PVFS2 :
کد:
mount -t pvfs2 pvfs2 /mnt/pvfs
حالا PVFS2 نصب شده و آماده آزمايش است!
سيستم فايل جديد خود را آزمايش نماييد.
نخستين کار استفاده از ابزار pvfs2-ping به منظور اطمينان از روشن و در حال اجرا بودن سرور است. اين ابزار طي يکسري مراحل تعيين مي نمايد که سيستم بدرستي پيکربندي شده و به درخواست هايي که از سوي کلاينت (کلاينتي که بر روي آن نصب شده است) صادر مي شود پاسخ مي دهد.
کد:
pvfs2-ping -m /mnt/pvfs
سپس يک فايل را با استفاده از pvfs2-import بر روي سيستم کپي نماييد. اين ابزار از برخي جهات شبيه "cp" است، اما در هنگام انتقال داده به سيستم فايل از بافرهاي بزرگي استفاده مي کند. همچنين زمان کپي را محاسبه مي نمايد.
کد:
pvfs2-import linuxdistro.iso /mnt/pvfs/linuxdistro.iso
براي چک کردن فضاي قابل استفاده بر روي سرورها، ما ابزاري بنام pvfs2-statfs فراهم کرده ايم. اين ابزار اطلاعات را مشابه فرمان "df" گزارش مي دهد؛ آن در ميان تمامي سرورهاي PVFS2 پيکربندي شده شما کار خود را انجام مي دهد. همانند "df"، استفاده از گزينه "-h" موجب نمايش خروجي در اندازه خوانا توسط انسان مي شود.
کد:
pvfs2-statfs -h -m /mnt/pvfs
اگر شما PVFS2 را نصب کرده باشيد، امکان استفاده از ابزارهاي سيستمي استاندارد همچون "cp" و "df" براي شما فراهم خواهد بود. در هنگام کار با سيستم فايل آزمايشي تان، اين احتمال وجود دارد که برخي از اعمال بنظر پاسخ دهندگي کمي داشته باشند. مجددا ذکر اين نکته اهميت دارد که سيستم هاي فايل موازي همچون PVFS2 براي انتقال حجم زيادي از داده بهينه شده اند.
نتيجه گيري
هيچ سيستم فايلي وجود ندارد که راه حل کاملي براي هر نوع از اعمال ورودي/خروجي باشد، و PVFS2 نيز از اين قاعده مستثني نيست. برنامه هاي با کارآيي بالا براي دستيابي داده بر روي مجموعه متفاوتي از مشخصه ها تکيه دارند. به طور خاص، PVFS2 جهت برنامه هاي داراي حجم زيادي از اعمال ورودي/خروجي بسيار مناسب است. اگر شما حجم زيادي از داده داريد و نيازمند دسترسي سريع به آن از ماشين هاي فراواني هستيد، ارزش آن را دارد که نگاهي به PVFS2 بياندازيد.
لينوس توروالدز، خالق لينوکس، نسخه جديد هسته لينوکس را منتشر کرد. در نسخه 2.6.12 بازبينيهاي مهمي در جهت ارتقاء اين بخش از سيستمعامل لينوکس انجام شده است. پشتيباني از فناوري TPM (Trusted Platform Modules) و بهبود کارکرد درايورهاي لينوکس از جمله مهمترين تغييرات در نسخه جديد است.
TPM يک فناوري سختافزاري است که براي حفاظت از دادههاي حساس مانند پسورد کاربران بهکارميرود. نسخه جديد کرنل، يک درايور براي پشتيباني از تراشههاي TPM (مانند تراشههاي بهکار رفته در لپتاپهاي ساخت شرکت IBM) افزوده شده است. اين درايور از تراشههاي ساخت شرکتهاي Atmel و National Semiconductor پشتيباني ميکند.
گفته ميشود که توسعه نرمافزاري اين نسخه با استفاده از ابزار جديدي که توروالدز ساخته و نام Git را برآن نهاده، صورت گرفته است. ماه آوريل امسال توروالدز تصميم گرفت نرمافزار BitKeeper را که از سال 2002 براي توسعه لينوکس بهکار ميبرد کنار بگذارد و به ابزار جديد Git روي آورد. اين اقدام به دنبال فشار افکار عمومي در جامعه اپنسورس و نکوهش استفاده از يک ابزار غير آزاد براي توسعه يک پلاتفرم آزاد صورت گرفت. در طي اين مدت جامعه اپنسورس تلاش کرد با روش مهندسي معکوس ساختار BitKeeper را تحليل کند و ابزارهايي براي مقاصد خود بسازد.
برخي تحليلگران معتقدند صرفنظر از بحثهايي که پيرامون توسعه لينوکس با استفاده از يک نرمافزار آزاد يا غير آزاد ممکن است وجود داشته باشد، انتقال روند توسعه کرنل لينوکس از BitKeeper به Git تغيير عمدهاي از نظر فني محسوب نميشود.
از ميان ويژگيهاي جديد و تغييرات اين نسخه ميتوان به اصلاحات مربوط به IPv6 ، قابليت Software Suspend و Device Mapper اشارهکرد. به اين نسخه همچنين قابليت Address Space Randomization افزوده شده است که براي محدودکردن دامنه تاثيرگذاري ويروسها تعبيهشده است. همچنين اصلاحاتي در درايورهاي USB ، تراشههاي صوتي، شبکه و نيز سيستمهاي فايلي CIFS ، JFS و XFS صورت گرفته است.
انتظار ميرود نسخه جديد هسته لينوکس از SELinux پشتيباني کند. SELinux پروژه مشترکي است که با همکاري آژانس امنيت ملي آمريکا (NSA) و جامعه اپن سورس اجرا ميشود. اجراي اين پروژه از سوي شرکت Red Hat و در غالب پروژه Fedora Core حمايت ميشود.
معرفي سايت مرتبط با اين مقاله