علاوه بر کارآيی، ثبات و
مقياس پذيری 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 حمايت ميشود.
پروژة درس سیستمهای عامل
موضوع پروژه:
بررسي سيستم فايلهای
NTFS , LINUX , FAT 32
استاد راهنما : آقاي دکتر نديمي
جمع آوري كننده: علي نجف زاده
ترم چهارم
–
رشتة نرم افزار كامپيوتر
دانشگاه
علمي كاربردي خوارزمي –
واحد تيران و كرون - مرداد ماه 1384