X
تبلیغات
گرید کامپیوتینگ-Grid computing - گرید کامپیوتینگ

گرید کامپیوتینگ-Grid computing

سایت تخصصی در مورد گرید کامپیوتینگ-grid computing-globus و سیستم های توزیع شده و علوم جديد كامپيوتر

سوپرکامپیوتر Super Computer یا کامییوتر بزرگ

 

ابر رایانه ها برای کارهایی که به محاسبات زیاد و دقیق نیازمند است به کار می رود.
از جمله: پیش بینی وضع هوا , تحقیقات آب و هوایی ، نمونه سازی مولکولی محاسبه ی ساختار ها و خصوصیات ترکیب های شیمیایی، درشت مولکول های زیستی، بسپار ها, و بلور ها، شبیه سازی های فیزیکی مانند شبیه سازی هوا پیما در تونل باد، شبیه سازی انفجار جنگ افزار های هسته ای و تحقیقات در مورد جوش هسته ای ، رمز گشایی و مانند آن استفاده می شود.

ابر رایانه وسیله ای برای تبدیل مسایل محاسبه ای به مسایل ورودی و خروجی است. ابر رایانه رایانه ای است که در زمان معرفی از نظر ظرفیت پردازش و به خصوص سرعت محاسبه ازدیگر ماشین ها قوی تر باشد.

اولین ابر رایانه ها در دهه ی ۱۹۶۰به طور عمده در موسسه اطلاعات کنترل (CDC) توسط سیمور کری Seymour Cray  طراحی شد. کری تا دهه ی ۱۹۷۰ زمانی که برای تاسیس شرکت خود پژوهشکده کری, از آن جدا شد آنرا هدایت می کرد. کری بعدها با طرح های جدید خود بازار ابر رایانه را در دست گرفت و تا ۲۵ سال (۱۹۶۵ ۱۹۹۰) بی رقیب ماند.

در دهه ی ۱۹۸۰به موازات تولید یک دهه قبل تر کامپیوتر کوچک ها شمار زیادی از رقیبان کوچکتر وارد بازار شدند اما بسیاری از آنها در" رکود بازار ابر رایانه ها" ی اواسط دهه ی ۱۹۹۰ ناپدید شدند. امروزه ابر رایانه ها طرح های یک بار تولید شونده هستند که توسط شرکت های "سنتی" مانند IBM و HP طراحی می شوند. این شرکت ها بسیاری از شرکت های دهه ی ۱۹۸۰ را برای استفاده از تجاربشان خریداری کردند، هر چند در طراحی ابر رایانه ها موسسه ی کری متخصص تر است .

معنای کلمه ی ابر رایانه تا حدی متغیر است , و ابر رایانه های امروزی فردا دیگر کاربردی نخواهند داشت، همانگونه که از کولاسوس (Colossus)، اولین رایانه ی الکترونیکی برنامه دار رقمی دنیا، که طی جنگ جهانی دوم رمز های آلمانی ها را می شکست- پیدا است. ماشین های اولیه ی سی دی سی (CDC) صرفاً پردازنده های منفرد پر سرعتی بودند که تا ده برابر سریع تر از سریع ترین ماشین هایی که توسط دیگر شرکت ها معرفی شده بودند کار می کردند.


یک تحول در ابر رایانه

در دهه ی ۱۹۷۰ بیشتر ابر رایانه ها برای استفاده از پردازنده ی برداری طراحی می شدند و بسیاری از بازیگر های تازه کار برای ورود به بازار پردازنده هایی از این نوع را با قیمت ارزان تر عرضه می کردند. در دهه های ۱۹۸۰و ۱۹۹۰ پردازنده های برداری جای خود را به سیستم های پردازش موازی فشرده با هزاران سی پی یو (CPU) ساده ای داد که برخی از آنها واحد های غیر مرسوم و برخی طرح های متداول و سنتی بودند. امروزه طرح های موازی بر پایه ی ریز پردازنده های RISC " غیر مرسوم" مانند PowerPC یا PA_RISC قرار دارند.


ابزار های نرم افزاری

ابزار های نرم افزار ی پردازش توزیعی، API های استاندارد از جمله MPI و PVM و راه حل های نرم افزاری متکی بر منبع باز مانند Beowulf و openMosix، که کار ساخت نوعی از " ابر رایانه های مجازی" با استفاده از مجموعه های ایستگاه کار ها و خدمتگذار های عادی را تسهیل بخشید، را شامل می شود. فن آوری هایی مانند Rendezvous راه تولید خوشه های رایانه های ویژه را هموار ساخت. یک نمونه، تابع تفسیر توزیعی در برنامه کاربردی ترکیبیApple ۰۳۹;s Shake ست. رایانه هایی که از نرم افزار Shake استفاده می کنند کافی است فقط در شبکه در مجاورت یک دیگر باشند تا به طور خود کار منابع همدیگر را پیدا و مورد استفاده قرار دهند. در حالی که هنوز هیچ کس خوشه رایانه ی ویژه ای ای بهتر از ابر رایانه های سال گذشته نساخته است فاصله ی بین رایانه های رومیزی، یا حتی لپ تاپ ها و ابر رایانه ها در حال ناپدید شدن است و این احتمال وجود دارد که این روند با افزایش پشتیبانی توکار برای همسانی(parallelism) و پردازش توزیعی در سیستم عامل های رایانه های رومیزی تداوم یابد. یک زبان برنامه نویسی آسان برای ابر رایانه ها مبحث تحقیقاتی باز و وسیعی را در علم رایانه به جا ی می گذارد .


کاربرد ها ابر رایانه ها

ابر رایانه ها برای کارهایی که به محاسبات زیاد و دقیق نیازمند است به کار می رود از جمله: پیش بینی وضع هوا , تحقیقات آب و هوایی ( که شامل گرم شدن جهانی می شود)، نمونه سازی مولکولی (محاسبه ی ساختار ها و خصوصیات ترکیب های شیمیایی، درشت مولکول های زیستی، بسپار ها, و بلور ها، شبیه سازی های فیزیکی ( مانند شبیه سازی هوا پیما در تونل باد، شبیه سازی انفجار جنگ افزار های هسته ای و تحقیقات در مورد جوش هسته ای )، رمز گشایی و مانند آن. موسسه های نظامی و علمی از بزرگترین مشتری ها می باشند.


طراحی ابر رایانه

ابر رایانه ها به دلیل به کار گیری طرح های ابتکاری و جدید با سرعتی بیشتر از رایانه های متداول کار می کنند. این طرح ها ان ها را قادر می سازد بسیاری کارها را با وجود نیاز به برسی فنی جزییات بغرنج به صورت موازی انجام دهند.ان ها بیشتر برای انجام گونه های خاصی از محاسبات تخصص دارند و در برابر بیشتر کارهای محاسباتی عادی عملکرد ضعیفی از خود نشان می دهند. سازمان دهی حافظه این رایانه ها به دقت تنظیم شده است تا در تمام زمان ها پردازنده با داده ها و دستور العمل ها تغذیه شود. در واقع, بیشتر تفاوت پیاده سازی بین رایانه های کند تر و ابر رایانه ها به خاطر طرح سازمان دهی حافظه و ترکیب بندی اجزا است .

قانون Amdahl برای تمام سیستم های موازی صادق است. ابر رایانه ها تلاش زیادی را برای حذف توالی نرم افزاری اعمال کرده و برای شتاب دادن به تنگنا های (bottlenecks) باقی مانده از سخت افزار بهره می گیرند.


چالش های ابر رایانه و فن آوری ها

یک ابر رایانه تولید گرما می کند و باید خنک شود. خنک سازی بیشتر ابر رایانه ها یک مشکل HVAC بزرگ است .
اطلاعات نمی تواند با سرعتی بیشر از سرعت نور بین دو جز یک ابر رایانه جا به جا شود. به همین دلیل، ابر رایانه هایی که چندین متر طول دارند باید دارای زمان پاسخگویی دست کم یک دهم نانو ثانیه باشد. به این خاطر در طرح ابر رایانه ی کری ساخت سیمور کری از کابل های کوتاه ا ستفاده شده بود.

ابر رایانه ها مقادیر زیادی داده را در مدت زمان کوتاهی مصرف و تولید می کنند. برای اطمینان از این که اطلاعات به سرعت منتقل و به درستی ذخیره و باز یابی می شود به کاری بیشتر نیاز است .


تکنولوژیهای نوین فن آوری هایی برای ابر رایانه ها

فن آوری هایی که برای ابر رایانه ها شکل گرفته اند عبارتند از:

1.     پردازش برداری

2.     خنک سازی به کمک مایع

3.     دسترسی به حافظه نا یکنواخت(NUMA)

4.     لوح های شیاری که اولین نمونه ی ان بعد ها RAID نام گرفت

5.     سیستم فایل موازی


تکنیک های پردازش در ابر رایانه

تکنیک های پردازش برداری اول بار برای ابر رایانه ها توسعه یافت و همچنان در برنامه های کاربردی با کارایی بالامتخصص مورد استفاده قرار می گیرد . تکنیک های پردازش برداری به بازار مجتمع در معماریDSP ودستورهای پردازش SIMD برای رایانه های همه منظور تحلیل یافته است .


سیتم عامل در ابر رایانه ها

سیستم عامل آنها، که اغلب نسخه ای از لینوکس است، با سیستم عامل های دیگر ماشین های کوچکتر تفاوتی ندارند. به هر حال از آنجا که توسعه دهندگان سیستم های عامل منابع برنامه نویسی را محدود کرده اند رابط کاربری ان ها ضعیف تر است. و از این واقعیت منتج می شود که وقتی این رایانه ها که اغلب قیمتی برابر با صد ها هزار دلار دارند به بازار های خیلی کوچک فروخته می شوند بودجه ی R&D آنها اغلب محدود می شود. به طرز جذابی این روندی مداوم در صنعت رایانه بوده است.


برنامه نویسی کامپیوترهای بزرگ

معماری موازی ابر رایانه ها اغلب استفاده از تکنیک های برنامه نویسی خاصی را برای به کار گیری سرعت شان تحمیل می کند .کمپایلر های فرترن تک منظوره سریعتر از کمپایلر های زبان برنامه نویسی C و زبان برنامه نویسی , , C کد تولید می کنند بنا بر این فرترن زبان انتخابی برنامه نویسی علمی و بنابر این زبان بیشتر برنامه هایی که در ابر رایانه ها پیاده می شود است. برای بهره گیری از موازی بودن ابر رایانه ها، در خوشه های با اتصال شل از PVM و MPI ودر ماشین های با حافظه مشترک و هماهنگ از OpenMP استفاده می شود .

انواع ابر رایانه های – سوپر کامپیتور های همه کاره

سه دسته ی اصلی از ابر رایانه های همه کاره وجود دارد

ماشین های مبتنی بر پردازش موازی عملیات های محاسباتی مشترک را در آن واحد بر حجم زیادی از داده انجام شود.

رایانه های خوشه ای با کابل کشی کوتاه برای پشتیبانی از تعداد زیادی پردازنده و برای این که حافظه ی آنها بتواند با هم در ارتباط باشد از رابط های مخصوص استفاده می کنند . پردازنده ها و وسایل کابل کشی از ابتدا برای ابر رایانه ها طراحی می شوند.سریعترین ابر رایانه های همه کاره دنیا از این فن آوری استفاده می کنند.

خوشه های commodity از تعداد زیادی پی سی های commodity که با شبکه های محلی با پهنای باند زیاد و سرعت عکس العمل کم به هم مرتبطند استفاده می کنند.

در سال ۲۰۰۲ قانون مور (Moore) و اقتصاد مقیاس عامل های غالب در طراحی ابر رایانه ها است: در حال حاضر یک رایانه رو میزی جدید از یک ابر رایانه ی ۱۵ ساله قدرتمند تر است، و دست کم برخی از ترفند های طراحی که باعث می شد ابر رایانه های پیشین بهتر از ماشین های رومیزی کنونی کار کنند درون یک commodity pc ۰۳۹;s جا داده شده اند .از این گذشته , هزینه ی توسعه و تولید تراشه ها باعث می شد تا طراحی تراشه های سنتی برای یک اجرای کوتاه عملا غیر اقتصادی شده وتراشه های تولید انبوه که با داشتن تقاضا های کافی از عهده ی هزینه ی تولید خود بر می آمدند جای آنها را بگیرند .

علاوه بر این، بسیاری از مسایلی که توسط ابر رایانه ها انجام می شد به طور ویژه برای موازی سازی ( در اصل، تبدیل کردن به بخش های ریز تر برای این که بتوان در ان واحد بر روی ان ها کار کرد) و به خصوص، موازی سازی نسبتاً زمخت (coarse-grained parallelization) که مقدار اطلاعات مورد نیاز برای انتقال بین واحد های پردازش مستقل از هم را محدود می کند، مناسب است. به همین دلیل برای بسیاری از کار ها می توان " خوشه های" رایانه ای با طرح استاندارد که قابل برنامه نویسی برای کار به صورت یک رایانه ی بزرگ هستند را جایگزین ابر رایانه های سنتی و متداول کرد. بسیاری از این ها از سیستم عامل لینوکس استفاده می کنند، به آنها خوشه های Beowulf گفته می شود.

در ابتدای سال ۲۰۰۳ ، ابر رایانه های شماره ی ۳ دنیا خوشه ای از commodity است و تحت سیستم عامل لینوکس و با سخت افزار اینتل x۸۶ کار می کند. به هر حال انتظار می رود شماری از پروژه های خوشه ی commodity که تحت لینوکس و با CPU های AMD x۸۶-۶۴ عمل می کنند با سرعت بالاتری کار کنند. اگر این روند تداوم یابد احتمالا لینوکس سیستم عامل استاندارد de facto ابر رایانه ها خواهد شد.

در انتهای سال ۲۰۰۳ ابر رایانه های شماره ی ۳ دنیا خوشه ای متفاوت بود، VirginiaTech System X که با Mac OS X بر خوشه ای از سیستم های ۱,۱۰۰ G۵ کار می کرد.


ابر رایانه ها – کامپیوترهای بزرگ تک منظوره

ابر رایانه های تک منظوره ابزار های محاسبه ی به کارایی بالا هستند که معماری ان ها برای یک کار خاص طراحی شده است. این باعث می شود بتوان از تراشه های به طور خاص برنامه نویسی شده ی FPGA و یا حتی تراشه های VLSI سنتی استفاده و با قربانی کردن عمومیت، نسبت کار ایی/قیمت بالاتری تولید کرد. از این ابر رایانه ها برای برنامه های کاربردی مانند محاسبه های فیزیک فضایی و کد شکنی brute-force استفاده می شود.


چند نمونه از ابر رایانه های تک منظوره عبارتند از:

۱ـ Deep Blu برای بازی شطرنج
۲ـ محاسبه قابل پیکر بندی
۳ـ GRAPE برای فیزیک فضایی


سریعترین ابر رایانه ها – سوپر کامپیوترهای امروزی

سرعت یک رایانه عموماً با فلاپ (عملیات های اعشاری در هر ثانیه) اندازه گیری می شود .این اندازه گیری هزینه سربار ارتباطات را نادیده گرفته و فرض می کند که تمام پردازنده ها ی ماشین به داده ها دسترسی وبا تمام سرعت کار می کنند.بنابر این به عنوان یک استاندارد متری ایده ال نیست ولی به هر حال به طور گسترده مورد استفاده قرار می گیرد .

در ۲۹ سبتامبر سال ۲۰۰۴م سریعترین ابر رایانه ها نمونه اولیه Blue Gene/L با ۱۶.۲۵۰پردازنده ساخت IBM می باشد. این ابر رایانه می تواند با سرعت ۰۱/۳۶ ترا فلاپ کار کند. نمونه اولیه Blue Gene/L نسخه ی سفارشی شده ی معماری PowerPc شرکت ای بی ام (IBM) است. این نمونه اولیه فعلاً در Rochester شرکت ای بی ام، نیو یورک فاسیلیتی است اما نسخه های تولید در سایت های مختلف از جمله آزمایشگاه ملی لارنس لیور مور (LLNL) مهیا خواهد شد. قبل از Blue Gene/ L سریعترین ابر رایانه شبیه ساز زمین در موسسه علوم زمین یوکوماها ژاپن بود.


نمونه اولیه

Blue Gene/L نسخه سفارشی شده معماری Power Pc شركت (IBM) است. این نمونه اولیه فعلا در Rochester شركت ای بی ام نیو یورك فاسیلیتی است اما نسخه های تولید در سایت های مختلف از جمله آزمایشگاه ملی لارنس لیور مور (LLNL) مهیا خواهد شد. قبل از Blue Gene/L سریعترین ابر رایانه شبیه ساز زمین در موسسه علوم زمین یوكوهامای ژاپن بود.

 

http://bia2amniat.ir/post-287.aspx

+ نوشته شده در  سه شنبه پانزدهم بهمن 1387ساعت 10:37  توسط یوسف عبدلیان باریکرسفی  | 

معرفي ميان­افزارهاي Globus و Gridbus

 

با سلام به دوستان در قسمت بعد به بحث

                                        معرفي ميان­افزارهاي

                                Globus

                                                               و

                                                     Gridbus                         

 

    می پردازم لطفا با نظراتتان در بهبود وبلاگ کمک کنید

لطفا روی تبلیغات هم کلیک کنید   - با تشکر

+ نوشته شده در  یکشنبه بیست و نهم دی 1387ساعت 18:7  توسط یوسف عبدلیان باریکرسفی  | 

پايگاههاي داده گريد قسمت سوم (اخطار - دادگان - زمان بندي - ابزاري براي دسترسي به پايگا ه داده -معم

 

4.2.2. اخطار

مشتري بايد مناطق مورد نظر خود را که عمليات اخطاردهي در آن مناطق بايد انجام شوند را مشخص نمايد. سپس ميان­افزار وظيفه­ي مديريت آنها اعم از ثبت, فيلتر بندي و اجراي عمليات بر روي سيستم­هاي پايگاه­هاي داده, را دارد. اين کارها در حالت ايده­آل با استفاده از سرويس عمومي رويدادها بر روي گريد قابل پياده­سازي و انجام است.

5.2.2. دادگان

دادگان در چنين سيستمي ترکيبي خواهد بود از سرويس­هاي دادگان پايگاه­هاي داده­اي که در گريد مجتمع مي­شوند که سرويس­هايي که به وسيله­ي اين پايگاه داده مجازي پشتيباني مي­شوند, را توصيف خواهند کرد.

6.2.2. زمان بندي

اين سرويس يک واسط عمومي براي زمان بندي منابع در پايگاه داده مجازي را فراهم مي­آورد. البته واضح است که به دليل ناهمگوني محيط و برنامه­هاي زمان­بندي­ مختلف آنها پياده­سازي چنين سرويسي بسيار دشوار است و هنوز راه حل قطعي براي آن ارائه نشده است.

3.2. ابزاري براي دسترسي به پايگاه داده

ايجاد ابزاري براي ارتباط با پايگاه­هاي داده وظيفه­ي گروه­هاي فعال روي GGF DAIS[1] است. پروژه­ي OGSA-DAI بر طبق پيمان همکاري EPCC,IBM,NEeSC,NWeSC و Oracle در حال توسعه مجموعه­اي از ابزارهايي است که اين واسط را پياده سازي کرده در حالي که استانداردهاي تعريف شده را رعايت مي­کنند.

هدف اصلي آنها مديريت قابل اطمينان منابع ذخيره سازي داده, منابع چندگانه انعکاسي[2], نام دهي توزيع شده و انتقال مجموعه­هاي عظيم داده بين مجموعه­هاي مرتبط مي­باشد.

ابزارهاي دسترسي و مجتمع سازي داده اجازه دسترسي به داده­هايي را که به وسيله­ي DBMS­هاي مختلف کنترل مي­شوند را مي­دهند, در حالي که اين DBMS­ها به طور خودکار و بدون استفاده از اين ابزار مي­توانند به کار خود به صورت محلي ادامه دهند.

1.3.2. معماري OGSA-DAI

اجزاي موجود در OGSA-DAI در چهار دسته قرار مي­گيرند که در ادامه مورد بحث قرار خواهند گرفت.

1.       سرويس­هاي پايگاه داده [3]گريد : اين سرويس­ها يا منابع داده ساخت يافته هستند يا يک پروکسي براي منابع داده مثل يک نمونه­ي واقعي از يک DBMS. در هر دو حالت اين سرويس­ها دسترسي به منابع داده را از طريق انواع درگاه[4] ممکن مي­سازند. براي پشتيباني از مدل­هاي مختلف داده­ها, زبان­هاي پرس و جو, زبان­هاي توصيف داده و زبان­هاي اختصاصي, اين واسط زبان­هاي مختلفي را که عمليات خاصي را روي پايگاه­هاي داده انجام مي­دهند را شامل مي­شود. انعطاف پذيري سرويس پايگاه داده گريد تا حدي است که مي­تواند دستورات اختصاصي يک DBMS خاص را نيز پياده سازي کند. همچنين مي­تواند يک سري از عملياتي را که بايد به صورت دسته اي[5] و روي پايگاه­هاي داده مختلف انجام شوند را بهينه سازي کند. اما کاربران براي استفاده وسيع تر و مستقل از محيط اجراي اين ابزار مي­توانند کار خود را به SQL 92 و XPath محدود کنند.

2.       سازنده­هاي سرويس پايگاه داده[6] : اين بخش مي­تواند به يک نمونه از DBMS متصل شود و يا همراه با يک نوعDBMS يا مدل داده­اي باشد. در حالت اول سرويس پايگاه داده گريدي که به وسيله­ي اين بخش ساخته مي­شود, براي پايگاه داده­ي خود, به عنوان يک پروکسي کار مي­کند. در حالت دوم اين سازنده سيستم­هاي ذخيره سازي داده­اي را فراهم مي­کند که قابل استفاده براي پايگاه داده مانند Oracle 9i يا مدل داده­اي مشخص شده مثل XML باشد. نتيجه مي­تواند يک GDSF,که پروکسي­هاي لازم براي تبادل ارتباط با پايگاه داده را فراهم مي­کند, باشد يا يک سرويس پايگاه داده گريد که اجازه دسترسي مستقيم به پايگاه داده مورد نظر را مي­دهد باشد. اين واسط کنترل و انعطاف پذيري بسيار بالايي را براي تعريف واضح زبان استفاده شده مي­دهد.

3.       ابزارهاي حمل و نقل اطلاعات گريد [7]: اين ابزار­ها يک نمونه­ي انتزاعي را بر روي سيستم­هاي موجود براي انتقال اطلاعات مانند GridFTP و MPICH-G ايجاد مي­کنند تا استفاده از آنها را عموميت بخشند. به طور کلي دو نوع واسط تعريف مي­شود. يکي به عنوان توليد کننده و ديگري مصرف کننده داده. يک GDTV مي­توانند به عنوان فراهم کننده­ي اطلاعات براي يک عمليات خاص به کار رود, براي مثال در بارگذاري حجم بسيار بالاي داده و يا عمليات بر روي داده­هاي توزيع شده. همچنين مي­تواند به عنوان انتقال دهنده­ي داده از يک عمليات به پايگاه داده استفاده شود, مانند برگرداندن نتيجه­ي يک عمليات محاسباتي به پايگاه داده براي ذخيره سازي آن.

 

4.       دفتر ثبت سرويس­هاي داده گريد [8]: در اين بخش سرويس پايگاه داده گريد و GDSF­ها ثبت مي­شوند تا هنگامي که کاربران به آنها نياز دارند با جستجو کردن در GDSR امکان دستيابي به منبعي با مشخصات مورد نظر براي آنها فراهم شود. GDSR در واقع نوع خاصي از دفاتر ثبت در OGSA است که به پايگاه­هاي داده و سرويس­هاي آنها اختصاص يافته است. به همين دليل دادگاني که اين مکان­ها ثبت مي­شوند با دادگاني که در ساير نرم­افزارهاي کاربردي ذخيره مي­شوند متفاوت هستند. براي مثال موارد زير که مختص پايگاه داده هستند ذخيره مي­شوند.

 

·         نوع مدل داده­اي براي مثال رابطه اي, XML و غيره

·         زبان­هايي که به وسيله­ي يک سرويس پايگاه داده گريد پشتيباني مي­شوند مانند SQL 92, XPath, XQuery و غيره

·         عمليات­هاي مورد پشتيباني مانند پرس و جو, حذف, ويرايش, درج, بار گذاري انبوه و غيره

·         وسيله انتقال داده پشتيباني شده GDTV

·         منابع و محدوديت­هاي آنها

·         ظرفيت و کارايي منابع

·         سياست­هاي دسترسي




[1] Database Access and Integration Services

[2] replication

[3] Grid Database Service (GDS)

[4] portType

[5] Batch

[6] Grid Service Database Factories(GDSF)

[7] Grid Data Transport Vehicle(GDTV)

[8] Grid Data Service Registry(GDSR)

+ نوشته شده در  یکشنبه بیست و نهم دی 1387ساعت 18:0  توسط یوسف عبدلیان باریکرسفی  | 

پايگاههاي داده گريد قسمت دوم - پرس وجو -تراکنش­ها - بارگذاري حجيم داده

 

1.2.2. پرس­ وجو

در حالت ايده­ال يک واسط کاربري در اختيار کاربر قرار خواهد گرفت تا در آن اقدام به ثبت پرس­وجوي خود نمايد. سپس يک برنامه مترجم و بهينه ساز آن درخواست را فهميده و در سرتاسر گريد توزيع خواهد کرد و در نهايت نيز نتايج بدست آمده از آنها را باهم ترکيب کرده و به کاربر نشان خواهد داد. باز هم روش مبتني بر سرويس تعريف شده در بخش قبل به کمک ما خواهد آمد اما کماکان نمي­تواند سرويس­هاي سطح بالا ارائه کند. کارهاي قبلي در رابطه با پرس­وجو­هاي توزيع يافته کاملا مشابه مورد معادل در گريد هستند و مي­توان از آنها در انجام اين کار استفاده کرد. بدين ترتيب که هنگامي که يک درخواست پرس­جو ترجمه مي­شود عبارت معادل آن به منابع مختلف ارسال مي­شود تا به آنها پاسخ داده شود. سپس پاسخ­ها با توجه به زمان پاسخ گويي تعيين شده و هزينه­ي قابل پرداخت براي مشتري, انتخاب مي­شوند و به کاربر برگردانده مي­شوند. براي مثال اگر يک عمليات ترکيب[1] به عنوان گلوگاه مطرح شود, در حالي که بازدهي يکي از عوامل موثر در نتيجه­ي کار است بايد از دو منبع به صورت موازي استفاده کرد تا کارايي بيشتري داشته باشد.

2.2.2 تراکنش­ها

تراکنش­هاي ساده­اي که در بخش قبل تعريف کرديم نيازمندي­هاي­­ پايه­ي ما در اين حالت را نيز پشتيباني مي­کند در حالي که براي پشتيباني کامل و پيشرفته­ي تراکنش­هاي گريد هنوز مدل کاملي ارائه نشده است.

3.2.2. بارگذاري حجيم داده

اين کار در سيستم مي­تواند با استفاده از ابزاري که يک فايل حجيم را به فايل­هاي کوچکتر تقسيم کرده و در اختيار پايگاه­هاي داده مختلف قرار مي­دهد, انجام شود.

 

 

 



[1] Join

+ نوشته شده در  یکشنبه بیست و نهم دی 1387ساعت 17:57  توسط یوسف عبدلیان باریکرسفی  | 

پايگاههاي داده گريد قسمت اول

 

 بانک اطلاعاتي گريد در واقع مجموعه­اي است از يک يا چند بانک اطلاعات توزيع شده ناهمگون, داراي تکرار که از طريق سيستم گريد با يکديگر تعامل و ارتباط منطقي پيدا مي­کنند و به سادگي نمي­توانند سرويس­هاي سراسري شفاف ارائه کنند.

به بياني ساده بانک اطلاعات گريد بسيار شبيه بانک اطلاعات چندگانه است با اين تفاوت اصلي که در بانک اطلاعات چندگانه به هر حال يک کنترل کننده مرکزي عملکرد سيستم را کنترل مي­کند اما در بانک گريد چنين کنترل کننده­اي وجود ندارد[9].

1.2. قرار دادن پايگاه­هاي داده در معماري گريد

در اين قسمت سعي بر توصيف چارچوبي داريم که پايگاه­هاي داده را به معماري گريد بيافزايد به طوري که نيازمندي­هاي خاص پايگاه­هاي داده را علاوه بر نيازمندي­هاي گريد پشتيباني کند.

اين چارچوب براساس سرويس[1] طراحي شده است. بدين صورت که هر سيستم پايگاه داده­اي که خود را با گريد منطبق کرده است, ليستي از سرويس­هايي را که پشتيباني مي­کند به گريد مي­دهد که بر اساس استانداردهاي گريد معرفي مي­شوند. البته واضح است که تعريف استانداردي که تمام سرويس­هاي ممکن را پشتيباني کند غير ممکن است زيرا پايگاه­هاي داده خاصي وجود دارند که دستورات خاصي را شامل مي­شوند که در هيچ بانک اطلاعاتي ديگري وجود ندارد. در چنين حالتي بايد به سيستم اجازه داده شود که سرويس­هاي مورد نظر خود را براي گريد تعريف کند. يکي از مزاياي استفاده از سيستم مبتني بر سرويس اين است که پايگاه داده مي­تواند در بخش مربوط به معرفي دادگان خود تمام سرويس­هايي را که مي­تواند پشتيباني کند را مشخص نمايد تا در هنگام کار با ساير پايگاه­هاي داده به مشکلي برخورد نداشته باشد.

 در چنين گريدهايي, صاحب بانک اطلاعاتي مشخص مي­نمايد که کدام سرويس­ها در گريد قابل استفاده باشند.

 
 

حال به بررسي تک تک سرويس­هاي مشخص شده در اين شکل مي­پردازيم:

1.1.2. دادگان

اين سرويس دسترسي به دادگان فني پايگاه داده و سرويس­هايي که توسط آن پشتيباني مي­شوند را فراهم مي­آورد. براي مثال اطلاعات مربوط به نام فيزيکي و منطقي بانک اطلاعاتي, مالکيت آن, تعداد نسخه­ها و نحوه­ي دسترسي به اطلاعات آن در اين سرويس آورده خواهد شد.

همچنين دادگان مربوط به توصيف يک سرويس تمام اطلاعات درباره­ي کيفيت سرويس, نحوه تبادل اطلاعات آن و تمام قابليت­هاي آن را شامل مي­شود. اين اطلاعات توسط توسعه­دهندگان نرم­افزارهاي کاربردي گريد و ابزارهايي که نياز به دانستن نحوه­ي تبادل داده با پايگاه­هاي داده را دارند استفاده مي­شود.  اين داده براي نرم­افزار­هاي کاربردي پويا بسيار حائز اهميت مي­شوند. در يک دسترسي دو مرحله­اي به بانک اطلاعاتي (ابتدا دسترسي به منابع گريد و سپس دسترسي به خود پايگاه داده از طريق DBMS آن) نياز است که يک سري عمليات ويژه با استفاده از اين دادگان قبل از دسترسي به پايگاه داده انجام شود تا بانک اطلاعاتي مزبور به منابع گريد اضافه شود.

2.1.2. پرس و جو[1]

با وجود اينکه هسته­ي تمام زبان­هاي پرس و جو يکسان است, اين زبان به طور خاص به پايگاه داده­اي که بر روي آن قرار مي­گيرد وابسته است. بنابراين در سرويسي که بر روي يک پايگاه داده قرار مي­گيرد نوع زبان پرس و جوي قابل پشتيباني بايد مشخص شود. براي زمان بندي کارها و نيز ايجاد بستري براي بهينه سازي توزيع منابع, نياز به فرايندي که تخمين زماني از اجراي پرس و جوها را به سيستم بدهد بسيار احساس مي­شود.

واضح است که سرويسي که براي انجام پرس و جو­ها به خدمت گرفته مي­شود بايد از امکانات بسياري از ديگر نرم­افزارها براي تبادل داده با ساير بخش­هاي گريد استفاده کند تا بتواند نتايج را به نقاط مختلف گريد انتقال دهد.

آخرين قابليتي که بايد وجود داشته باشد, امکان انتقال نتيجه به هر نقطه­اي به جز فرستنده­ي درخواست است. اين قابليت باعث مي­شود سيستم از حالت خادم-مشتري صرف خارج شده و امکاناتي براي انجام تعاملات پيشرفته را داشته باشد.

3.1.2. تراکنش­­ها

اين عمليات­ها قابليت انجام تراکنش بر روي يک پايگاه داده تنها و نيز توزيع شده در سطح گريد را ممکن مي­سازد. انواع مختلف تراکنش وجود دارد که به وسيله­ي DBMSهاي مختلف پشتيباني مي­شوند براي مثال در بعضي از آن­ها تراکنش­هاي تودرتو گنجانده شده است, در حالي که ساير پايگاه­هاي داده آن را پشتيباني نمي­کنند. به همين دليل سرويس دادگان تعريف شده بايد تعريفي از نوع تراکنش قابل پشتيباني ارائه دهد.

4.1.2. بارگذاري با حجم زياد[2]

پشتيباني از بارگذاري داده­هاي حجيم در پهنه­ي گريد يکي از مهم­ترين نياز­هاي پايگاه­هاي داده گريد مي­باشد که براي برخي نرم­افزارهاي کاربردي عاملي حياتي محسوب مي­شود. به عبارت ديگر سرويس بايد قادر باشد که با استفاده از مکانيزم­هاي انتقال داده و بهينه سازي آنها حجم بسيار زياد داده را در سرتاسر گريد منتقل کند.

5.1.2. اخطار[3]

اين مکانيزم به مشتري­ها اجازه مي­دهد تا نواحي مورد علاقه­ي خود در گريد را انتخاب کنند و هنگامي که تغييري در آن­ها به وجود آمد پيام اخطاري مبني بر تغيير اين ناحيه ارسال شود. پشتيباني از اين سرويس خود شامل دو بخش مي­شود که در بخش اول کاربر بايد اعلام نمايد که به چه بخشي علاقه مند است براي مثال درج, حذف, به روز رساني و غيره و در بخش دوم بايد متدي را پياده سازي نمايد که عمليات مربوط به آن تغيير را انجام دهد. پشتيباني از چنين مکانيزمي در مواردي که DBMSهاي مربوطه از زبان محلي مشترکي مثل محرک­ها استفاده مي­کنند بسيار ساده تر خواهد شد. در چنين سيستمي, هنگامي که يک پيام اخطار توليد مي­شود به سرويس رويداد گريد عمومي ارسال مي­شود تا تصميم گرفته شود که چه عملياتي بر روي آن بايد انجام شود و سپس اين سرويس در ادامه­ي کار خود عمليات مورد نظر را انجام مي­دهد؛ براي مثال يک ايميل به شخص خاصي ارسال مي­کند و يا عمليات خاصي را انجام مي­دهد.

6.1.2. زمان بندي[4]

اين سرويس به کاربران اجازه مي­دهد که استفاده از پايگاه داده خود را زمان بندي کنند که در اين حالت پهناي باند شبکه­اي هم که به اين پايگاه داده متصل است بايد از پيش تخصيص داده شود. از آنجايي که دسترسي اختصاصي به يک پايگاه داده غير عملي است مکانيزم­هايي لازم است که بر اساس آن منابعي مانند حافظه, پردازنده و ديسک در لحظاتي خاص در اختيار گريد قرار گيرد تا به انجام درخواست رسيده همت گمارد.

ادعايي بر اين مبنا وجود ندارد که سرويس­هاي ارائه شده در اين بخش تماما نيازهاي گريد و پايگاه­هاي داده­ي آن را پشتيباني مي­کنند. بلکه اين سرويس­ها فقط بنابر تجربيات سيستم­هاي مبتني بر پايگاه داده طراحي شده­اند و واضح است که با گسترش گريد نياز به توليد سرويس­هاي بيشتري احساس خواهد شد. سرويس­هايي که در اين بخش نام برده شدند تقريبا سطح پايين و عمومي هستند و سرويس­هاي سطح بالاتر در نرم­افزارهاي کاربردي گريد قرار خواهند گرفت.

2.2. مجتمع کردن پايگاه­­هاي داده در گريد

يکي از مزاياي مهم گريدهاي داده امکان مجتمع سازي منابع توزيع شده است. در اين بخش نشان خواهيم داد سيستم مبتني بر سرويس بخش قبل چگونه در اين مجتمع سازي به ما کمک خواهد کرد.

در روشي که ارائه خواهيم کرد از يک ميان­افزار مبتني بر گريد استفاده خواهيم کرد که به وسيله­ي آن يک پايگاه داده مجتمع شده­ي مجازي خواهيم داشت که از اين پس نرم­افزارهاي کاربردي به جاي استفاده مستقيم از پايگاه­هاي داده با اين ميان­افزار به تعامل خواهند پرداخت. با چنين کاري يک سيستم مديريت پايگاه داده مجازي خواهيم داشت که دقيقا همان سرويس­هايي را که در بخش قبل اشاره کرديم پشتيباني مي­کند اما در واقع هيچ نوع داده­اي را در خود ذخيره نمي کند و از ساير منابع ذخيره سازي استفاده مي­کند. براي انجام فعاليت بر روي چنين پايگاه داده مجتمع شده­ي مجازي از يک ميان­افزار سرويس­هاي مجتمع[5] استفاده مي­شود که با پايگاه­هاي داده مستقيما تبادل داده انجام مي­دهد


 

حالت ايده آل براي ساخت چنين سيستمي استفاده از ابزاري است که بتواند مجموعه­اي از پايگاه­هاي داده را بگيرد و با استفاده از آنها يک پايگاه داده مجازي بسازد. حال بايد به توصيف پيامدهاي چنين ابزاري بپردازيم.

روش مبتني بر سرويسي که در بخش قبل بررسي کرديم با قرار دادن استانداردهايي بر تعريف سرويس­ها در راه مجتمع کردن پايگاه­هاي داده به ما کمک بسياري خواهد نمود. هرچند به علت ناهمگوني منابع امکان استانداردسازي کامل وجود ندارد, اما اين ابزار مي­تواند به شکل زير اقدام به ساختن پايگاه داده مجازي نمايد:

اين ابزار, براي هر سرويس بايد در تمام دادگان پايگاه­هاي داده موجود در گريد به جستجو پردازد تا قابليت­هاي آنان را شناسايي کند. سپس با اطلاع از ميان­افزار مورد استفاده و امکاناتي که توسط آن قابل استفاده هستند گزينه­هاي مختلف براي مجتمع سازي سرويس­ها به دست مي­آيند. اگر تعداد گزينه­ها بيشتر از يک باشد يکي از آنها انتخاب شده و در ليست سرويس­هاي گريد قرار مي­گيرد ولي اگر تعداد گزينه­ها صفر باشد, به کاربر اطلاع داده مي­شود که عمليات مورد نظر قابل انجام نيست و بايد نمي تواند از سرويس مورد نظر استفاده کند.

پياده کردن تمام سرويس­هايي که در بخش قبل اشاره شد پيامدهاي خاصي را به دنبال خواهد داشت که در ادامه توضيح داده خواهند شد.

 


[1] Query

[2] Bulk Loading

[3] Notification

[4] Scheduling

[5] Service Federation Middleware

 

+ نوشته شده در  یکشنبه بیست و نهم دی 1387ساعت 17:53  توسط یوسف عبدلیان باریکرسفی  | 

پايگاه­هاي داده گريد

 در بحث های بعد در مورد پايگاه­هاي داده گريد 

 

توضیح می دهم و مطالبی میگذارم

 

لطفا روی بنر های تبلیغاتی  هم کلیک کنید

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:53  توسط یوسف عبدلیان باریکرسفی  | 

محيط گريد(قسمت 6)

6.1. OGSA[1]

اين معماري, تکنولوژي گريد را به صورت مجموعه­اي از سرويس­هاي گريد (GS) نشان مي­دهد که خود براي اينکه نيازمندي­هاي گريد را برطرف کند, يک نمونه­ي توسعه يافته از وب سرويس است. دليل اصلي توسعه­ي سرويس وب به سرويس گريد مديريت حالات مختلف, هويت شناسي[2], جلسه­ها[3] و سيکل­هاي حيات آنها مي­باشد.

چنين چارچوبي بايد نيازمندي­هاي سازمان­هاي مجازي و گريد را به طور کامل برطرف کند. براي مثال بايد قابليت جابجايي و همکاري منابع ناهمگون را فراهم آورد. همچنين بايد سرويس­هاي متداول نظير اعتبارسنجي و تبادل داده را انجام دهد.

در واقع OGSA محصول ترکيب معماري انعطاف پذير و جامعيت پوياي سرويس­هاي وب و معماري مقياس پذير و توزيع شده­ي گريد است. در ادامه به بررسي سرويس­هاي وب و OGSA خواهيم پرداخت.

1.6.1. سرويس­هاي وب

سرويس­هاي وب معماري مجتمعي هستند که طراحي شده اند تا به سيستم­هاي اطلاعاتي که به صورت مستقل اجرا مي­شوند اجازه دهند که با يکديگر تبادل اطلاعات داشته باشند. تعريف آنها در استانداردهاي W3C به طور کامل بيان شده است و شرکت­هاي بزرگي مثل IBM, Oracle و Microsoft به طور فعال بر آن نظارت دارند.

تعريف سرويس وب به اين صورت مي­باشد:

"وب سرويس يک بستر و يک بخش نرم­افزار مستقل از پياده سازي است که مي­تواند

·   به وسيله­ي زبان توصيف سرويس تعريف شود

·   توسط بخش ثبت سرويس­ها ثبت شود.

·   از طريق يک مکانيزم استاندارد درک و فهميده شود(هنگام اجرا يا طراحي)

·   از طريق يک واسط برنامه نويسي نرم­افزاري(API) و معمولا بر روي شبکه فراخواني شود.

·   با ساير سرويس­ها ترکيب شود"[8]

 

سرويس­هاي وب به دو دليل براي ما حائز اهميت است:

1.                   وظيفه­ي آنها در متصل کردن چند منبع اطلاعاتي به هم ديگر مشابه چيزي است که ما در گريد به آن نياز داريم. اين به هم پيوستگي براي بسياري از سيستم­هايي که قصد استفاده از بسته­ها و اجزاي مختلف را دارند اهميت ويژه­اي دارد.

2.                   پشتيباني شرکت­هاي مختلف از استاندارد­هاي سرويس­هاي وب, زبان­هاي توصيفي, بسترها و ابزارهاي توسعه­ي نرم­افزاري زيادي را در اختيار قرار مي­دهد. اين امکانات با در اختيار قرار دادن يک چارچوب استاندارد براي توصيف و ترکيب کردن سرويس­هاي وب و سرويس­هاي گريد به سرويس­هاي گريد اجازه توسعه­ي سريع را مي­دهد.

يکي از مشخصه­هاي مهم سرويس­هاي وب وجود زبان­هايي است که براي توصيف جنبه­هاي مختلف بخش­هايي است که بايد با هم مجتمع شوند و اين زبان کاملا مستقل از پياده سازي و تکنولوژي­هاي محيط است. اين زبان­ها به طور کلي به وسيله­ي XML Schema پياده سازي مي­شوند. براي مثال WSDL[4] براي توصيف وظايف و واسطه­هاي سرويس­هاي وب به کار مي­رود وWSIL[5] براي پشتيباني سيستم­هاي ساده ثبت و بازيابي سرويس­ها به کار مي­رود. درحال حاضر تعداد بسياري پيشنهاد براي بازنگري اين زبان وجود دارد تا امکاناتي مثل کيفيت سرويس, وضعيت سرويس و انواع داده پيچيده تري را به اين زبان اضافه گردد.

 

2.6.1.سرويس OGSA

سيستمي که بر اساس OGSA طراحي مي­شود ترکيبي از سرويس­­هاي گريد خواهد بود. هر سرويس گريد يک سرويس وب است که به وسيله WSDL تعريف مي­شود. نمونه­هاي توسعه يافته­اي از WSDL در حال تعريف شدن هستند تا مشخصه­هاي خاص گريد را به اين زبان بيافزايند. اين نسخه توسعه يافته­ي WSDL به نامGSDL [6] معروف است.

يک سرويس گريد بايد واسطه­هاي معيني را پياده سازي کند, سيکل حيات مشخصي داشته باشد و در اين سيکل حيات به وسيله­ي GSH[7] به طور يکتا قابل شناسايي باشد. مديريت سيکل حيات شامل يک مدل مرحله­اي است تا بتواند بر روي ملزومات سيستم محدوديت قرار دهد, هنگامي که اختلال جزيي[8] در سيستم رخ دهد از بروز نابودي داده­هاي دائمي جلوگيري کند و استقلال سيستم را تضمين کند.

يک سرويس گريد ممکن است که بعضي از مشخصه­هاي خود را از طريق عناصر داده سرويس (SDE) به نمايش گذارد. اين عناصر داده سرويس مي­توانند ايستا يا پويا باشند. آنهايي که ايستا هستند در طول سيکل حيات سرويس گريد ثابت مي­مانند. اطلاعات اين عناصر داده سرويس با استفاده از WSDL قابل فهم خواهد بود. آنهايي که پويا هستند براي نمايش وضعيت سرويس گريد به کار مي­روند. از اين عناصر داده سرويس معمولا براي آناليز سرويس­هاي گريد استفاده مي­کنند. براي مثال با استفاده از ابزارهاي خاصي کارايي سرويس, شناسايي خطاهاي پيش آمده و آناليز پيشرفت سرويس, محاسبه و تعيين مي­شود. عناصر داده سرويس با استفاده از XML Schema پياده مي­شوند و به سادگي قابل پرس و جو[9] مي­باشند.

در عناصر داده سرويس مکانيزم­هاي اخطار يک رويداد[10], ثبت و انتشار پشتيباني شده است و توابعي که در واسطه­هاي عناصر داده سرويس وجود دارند فقط اعتبار سنجي و ثبت و درک سرويس­ها مي­باشد.


3.6.1. تاريخچه OGSA

نويسندگان OGSA انتظار داشتند که اولين پياده سازي OGSA که بر روي Globus Toolkit 3 صورت گرفت تمام نيازمندي­هاي اين نرم­افزار را برطرف کند و تمام امکاناتي را که Globus Toolkit 2 فراهم کرده بود را نيز داشته باشد و در واقع نيز OGSA فرصت خوب و مناسبي براي طراحي دوباره تکنولوژيGlobus بود. اگر چه اين روش بسيار مفيد خواهد بود ولي تغييرات زيادي بايد از نظر معنايي در سيستم داده شود.

به خاطر اينکه سرمايه گذاري­هاي بسياري بر روي گريد­هاي قديمي انجام شده بود, به وجود آوردن يک تغيير اساسي در ساختار گريد باعث ايجاد نگراني در ميان اين شرکت­ها گشت. به همين دليل بايد نيرويي آنها را وادار مي­کرد که از اين تکنولوژي جديد استفاده کنند و آن را به عنوان پايه براي تکنولوژي­هاي بعد گريد در نظر گيرند. بحث بر پذيرفتن OGSA به عنوان پايه­ي تکنولوژي­هاي آينده­ي گريد به سه فاکتور اساسي وابسته مي­باشد: سياسي, بازرگاني و تکنولوژيکي.

از نظر سياسي, براي اينکه اين تکنولوژي فراگير باشد, کيفيت سرويس بالايي داشته باشد و تمام شرکت­هايي که بر روي گريد کار مي­کنند از اين استاندارد استفاده کنند, موسسه­ي eScience وظيفه­اي را بر عهده گرفت که شرکت­هاي مختلف را از لحاظ قانوني مجبور کند که اين استاندارد را رعايت کنند و در صورت تخلف مورد پي گرد قرار گيرند.

از نظر بازرگاني, ابزارهاي برنامه نويسي و يک بستر مناسب براي گريد در حال حاضر وجود ندارد و اين امر به اين دليل است که منابع موسسه­ي eScience در برابر تقاضاي بسيار زياد براي يک بستر کامل و استاندارد گريد ضعيف و اندک است. از آنجايي که ساخت چنين بستري به نيروي کار بالا و هزينه­هاي سنگين وابسته است شرکت­هاي تجاري مختلفي سعي در پشتيباني مالي اين پروژه دارند تا يک بستر استاندارد براي گريد پديد آيد.

 

از نظر تکنولوژيکي, OGSA به طور وسيعي به مهندسي نرم­افزار وابسته است. در حال حاضر بسته­هاي نرم­افزاري که براي گريد وجود دارد عموما زياد ساخت يافته نيستند و توسعه دهندگان اين سيستم­ها را دچار سردرگمي مي­کنند. اين عدم وجود ساختار منظم باعث افزايش هزينه نگهداري و توسعه­ي بستر گريد مي­شود.

به هر حال با تعريف GSDL­ها و استفاده­ي برنامه نويسان از آنها به گونه­اي اين مشکل کمتر احساس مي­شود و زبان استانداردي براي توسعه دهندگان پديد آمده است.

 

 

 

 

 


4.6.1. چالش­هاي پيش روي OGSA

براي اينکه استاندارد­هاي OGSA تامين شوند چالش­هاي زيادي وجود دارد. رسيدن به استانداردهايي که در تمام نقاط دنيا پذيرفته باشند براي مجتمع کردن سرويس­هاي وب و گريد يکي از واضح ترين و مهم ترين چالش­ها است. ما در اين قسمت بر روي مشکلات فني تر تمرکز خواهيم کرد.

·     انواع ابتدايي[11] مختلف که براي نرم­افزارهاي کاربردي علمي استفاده مي­شوند بايد در يک XML Schema تعريف شده و به وسيله­ي تمام گريد­هاي تعريف شده در دنيا مورد قبول واقع شوند, در غير اين صورت هر شبکه­اي از استاندارد­هاي خود استفاده کرده و هماهنگ کردن آنها مقدور نخواهد بود.

·     دقت زيادي در تعريف GSDL­ها بايد وجود داشته باشد تا اين سرويس­ها به صورت جامع و مانع تعريف شده و نيز استفاده­هاي فزاينده­ي آينده از اين زبان را نيز پشتيباني کند.

·     بستر­هاي استانداردي نياز است که بر روي آنها سرويس­هاي گريد و نرم­افزارهاي کاربردي پياده شوند.

·     بستري براي اعلان خطا­هاي سيستم(شامل کشف خطا, گزارش آن, نحوه برطرف کردن خطاهاي جزيي و غيره) و پاسخ گويي به آنها بايد ايجاد شود.

·     بستري براي مديريت و توسعه. اين بستر امکاناتي را در اختيار قرار خواهد داد تا به وسيله آن­ها رفتار گريد را مديريت کرده و نيز توانايي افزودن,حذف و ويرايش سرويس­هاي گريد را به صورت پويا داشته باشيم.

·     سرويس­هاي هماهنگ کننده­اي بايد پياده سازي شوند که بتوانند سرويس­هاي مختلف گريد را با يکديگر هماهنگ کنند.

·     روش­هاي تست يکي از اساسي ترين نياز­هايي هستند که به عنوان معيارهايي از کارايي گريد بايد تعريف شده و پياده سازي شوند.

·     پشتيباني از گريد­هاي متحرک[12] که به طور نا پيوسته به شبکه متصل مي­شوند و نوعي تبادل اطلاعات نامعتبر(به دليل وجود ارتباط غير قابل اطمينان) دارند يکي ديگر از چالش­هاي پيش روي گريد است.

 

در حال حاضر اين چالش­ها در برابر معماري کلاسيک گريد قرار دارند که گروه­هاي فعال در مجمع گريدهاي عمومي[13] آنها را در نظر دارند. OGSA يک چهارچوب مناسب را فراهم مي­کند که اين چالش­ها را مورد توجه قرار داده است. براي مثال واسط­هايي را در اختيار قرار مي­دهد تا بتوان GSDL­ها را تعريف کرد.



[1] Open Grid Services Architecture

[2] Identification

[3] Sessions

[4] Web Service Description Language

[5] Web Services Inspection Language

[6] Grid Services Description Language

[7] Grid Service Handle

[8] Partial Failure

[9] Query

[10] Event Notification

[11] primitive

[12] mobile

[13] Global Grid Forum

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:48  توسط یوسف عبدلیان باریکرسفی  | 

محيط گريد(قسمت 5)

5.1. ارتباط گريد با ساير تکنولوژي­ها

مفهوم به اشتراک گذاري پويا و کنترل شده در داخل سازمان­هاي مجازي بسيار پايه­اي است به طوري که ما مي­توانيم تصور کنيم که تکنولوژي­هاي مانند گريد بايد هم اکنون به صورت گسترده­اي نصب شده باشند. در عمل ما مي­بينيم که فقط تعداد کم و ناکافي راه حل براي مشکلات سازمان­هاي مجازي وجود دارد. به طور خلاصه, راه حل­هاي موجود براي سيستم­هاي توزيع شده نمي­توانند يک چارچوب مناسب و کلي پديد آورند که تمام نيازمندي­هاي سازمان­هاي مجازي براي به اشتراک گذاري منابع را پاسخ دهد. تکنولوژي­هاي گريد با فراهم سازي چنين راه حل کلي خود را از ساير تکنولوژي­ها متمايز کرده اند. در زير تکنولوژي­هايي که گريد مي­تواند براي رسيدن به هدف خود از آنها استفاده کند ذکر شده است.

 

1.5.1. سرويس جهاني وب

تکنولوژي­هاي وب به خاطر گستردگي و مقبوليت عام گزينه­ي مناسبي براي استفاده در گريد و حل مشکلات سازمان­هاي مجازي مي­باشند. به همين خاطر مي­توان از آنها در ساخت بستر براي سازمان­هاي مجازي استفاده کرد. با وجود اينکه اين فن آوري مدلي بسيار قوي براي استفاده در سيستم­هاي مجري-مشتري است, که هم در وب و هم در گريد کاربرد دارد, فاقد مشخصه­هاي قدرتمند تري هستند که براي ساخت سازمان­هاي مجازي نياز است. براي مثال مرورگر­هاي وب براي تاييد اعتبار کاربران عموما از TLS[1] استفاده مي­کنند و نمي­توانند سيستم تک وروده[2] يا جانشيني[3] را پشتيباني کنند.

بدين منظور بايد گام­هايي برداشته شود تا گريد و وب را با همديگر مجتمع سازد. براي مثال GSI[4] که خود مدل توسعه يافته­اي از TLS است قابليت تک وروده را پشتيباني مي­کند و اگر بتواند با وب مجتمع شود مي­تواند اين قابليت را به وب اضافه نمايد. همين طور اگر  GSI قابليت جانشيني خود را به وب بيافزايد, وب ابزار بسيار مناسبي خواهد بود تا به عنوان درگاه سازمان­هاي مجازي مورد استفاده قرار گيرد تا واسطه­هاي بسيار کم حجم و کوچکي را بر روي نرم­افزار­هاي کاربردي حجيم قرار دهد.

 

2.5.1. فراهم کنندگان سرويس­هاي ذخيره سازي اطلاعات و نرم­افزارهاي کاربردي

فراهم کنندگان سرويس­هاي نرم­افزارهاي کاربردي و سرويس­هاي ذخيره سازي و ساير شرکت­هاي ميزباني مشابه, پيشنهاد مي­دهند که بعضي از نرم­افزارهاي کاربردي مهندسي و تجاري و نيز فضاي ذخيره سازي را به صورت اجاره­اي در اختيار مشتري­ها قرار دهند. مشتري و فروشنده بر روي سطح سرويس و نوع سخت­افزار و نرم­افزار مورد نظر به توافق مي­رسند. همچنين سطحي از امنيت که بايد توسط سرويس دهنده تضمين شود مشخص مي­شود.

مجتمع سازي تکنولوژي گريد با اين سرويس دهنده­ها محدوده­اي وسيع تر و غني تر از امکانات به­وجود مي­آورد. براي مثال, سرويس­ها و پروتکل­هاي استاندارد گريد مي­توانند براي جداسازي سخت­افزار و نرم­افزار از يکديگر به کار روند. يک مشتري مي­تواند با يک سرويس دهنده به توافق رسيده و منبعي را با مشخصات لازم در اختيار گرفته, سپس آن را در شبکه قرار دهد. در اين صورت منبعي که توسط اين سرويس دهنده در اختيار مشتري قرار گرفته, بر طبق پروتکل­هاي گريد و تحت امنيت پروتکل­هاي گريد به اشتراک گذاشته مي­شود.

 

3.5.1. سيستم­هاي محاسباتي حرفه اي

تکنولوژي­هاي توسعه نرم­افزاري مثل CORBA,EJB[5],J2EE [6] و DCOM سيستم­هايي هستند که براي ساخت نرم­افزارهاي توزيع شده طراحي شده­اند. آنها مي­توانند واسطه­هاي استانداردي براي منابع تعريف کنند, متدها را از راه دور صدا بزنند(RMI) و منابع را در داخل يک سازمان خاص به اشتراک گذارند. هرچند که هيچ کدام از اين­ها جزو نيازمندي­هايي که از قبل براي سازمان­هاي مجازي تعريف کرديم نيستند. ولي در پياده سازي گريد مي­توان از آنها استفاده کرد. براي مثال در CORBA مي­توانيم يک شئي پياده سازي کنيم که با استفاده از GSI عمليات برقراري امنيت بين سازمان­ها را مديريت کند. مي­توانيم شيئي بسازيم که با منابع موجود در گريد به تبادل اطلاعات پرداخته تا کنترل يک يا چند منبع را در داخل يک سازمان مجازي بر عهده بگيرد.

در تمام اين حالات استفاده از پروتکل­هاي گريد قابليت­هاي توسعه يافته­اي را در اختيار قرار مي­دهد (مثل امنيت بين واحدهاي سازماني مختلف) و امکان برقراري ارتباط با ديگر تکنولوژي­ها (غير از CORBA) فراهم مي­آورد.

 

4.5.1. محاسبات همرده و اينترنت

محاسبات همرده (همان طور که در نرم­افزارهايي مثل Napster و Gnutella وجود دارد) و محاسبات اينترنتي(مثل سيستم­هاي Entropia) نمونه­هاي عمومي تري از سيستم­هاي کلاسيک مشتري-مجري هستند. امکاناتي از قبيل به اشتراک گذاري و ساختار محاسباتي موجود در اين نرم­افزار­ها بسيار به آنچه که ما در گريد بدان نيازمنديم نزديک است.

در عمل, تمرکز بر روي اين دو محدوده هيچ همپوشاني مهمي با يکديگر ندارد و دليل اين اتفاق اين است که توسعه دهندگان اين سيستم­ها بيشتر سعي داشتند راه حل­هايي پيدا کنند که پروتکل­هايي را براي نرم­افزار خود پديد آورند نه اينکه يک پروتکل عمومي پديد آورند که به وسيله­ي ساير نرم­افزار­ها نيز مورد استفاده واقع شود.

همان طور که اين نرم­افزارهاي کاربردي پيچيده تر و احتياج به همکاري بين منابع روشن تر مي­شود, همگرايي بيشتري بين محاسبات همرده, اينترنت و گريد به وجود مي­آيد.




[1] Transport Layer Security

[2] Single Sign-on

[3] Delegation

[4] Grid Security Infrastructure

[5] Enterprise Java Beans

[6] Java 2 Enterprise Edition

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:46  توسط یوسف عبدلیان باریکرسفی  | 

محيط گريد(قسمت 4)

4.1. تعريف سازمان­هاي مجازي

چهار سناريوي زير را در نظر بگيريد

  1. يک شرکت قصد تصميم گيري درباره­ي ساخت يک کارخانه­ي جديد را داشته که نياز به پيش بيني­هاي مالي بسيار مهمي دارد. اين پيش بيني­ها بر اساس سابقه­هاي ثبت شده در پايگاه­هاي داده­ي نا متمرکز شرکت انجام خواهند پذيرفت.
  2. يک ائتلاف صنعتي سعي در انجام مطالعات امکان سنجي پروژه­اي را دارد که طراحي­هاي نسل آينده­ي هواپيما­ها را انجام خواهد داد. مسلما چنين طراحي نياز به محاسبات پيچيده, دقيق و شبيه­سازي­هاي گوناگوني دارد.
  3. يک تيم مديريت بحران براي بررسي باران­هاي شيميايي نياز به محاسبه نحوه و ميزان گسترش محدوده­ي فاجعه با استفاده از آب و هواي محلي و خاک دارد. همچنين بايد خسارات احتمالي محاسبه شده و تدابير امنيتي لازم انديشيده شود و مقدار تجهيزات لازم براي مقابله با آن تعيين شود تا کمترين خسارت به محدوده وارد شود.
  4. هزاران فيزيکدان در آزمايشگاه­ها و دانشگاه­هاي خود از سراسر دنيا گردهم آمده اند تا با استفاده از حجم­هاي بسيار بالاي داده مدلي براي سيارات و ستارگان جهان طراحي کنند.

 

اين مثال­ها از جنبه­هاي بسياري با هم متفاوت هستند: تعداد و انواع کاربران شرکت کننده در عمليات, انواع فعاليت­ها, مقياس و محدوده­ي فعل و انفعالات و منابع مشترک. اما در بسياري از نقاط هم اشتراک دارند همان طور که در ادامه توضيح داده مي­شود(شکل 3).

در همه­ي اين حالات تعدادي شرکت کننده­ي غير قابل اعتماد مقداري از منابع خود را به اشتراک مي­گذارند تا وظيفه­اي را انجام دهد. اما به اشتراک گذاشتن فقط به معني استفاده از اطلاعات يکديگر نيست بلکه گاهي اوقات معني استفاده مستقيم از منبع و در اختيار گرفتن کنترل آن به طور کامل مي­باشد.

به اشتراک گذاشتن منابع شرطي است؛ به اين معني که هر فرد موقعي که يک منبع را به اشتراک مي­گذارد مشخص مي­نمايد که اين منبع در چه مواقعي و چه مکاني قابل استفاده است و چه کاري مي­تواند انجام دهد. براي مثال يک شرکت کننده در سازمان مجازي P در شکل 3 مي­تواند به ساير شرکت کنندگان همان سازمان مجازي اجازه دهد که فقط مسائل ساده را بر روي رايانه­ي وي اجرا کنند. مصرف کنندگان نيز مي­توانند بر روي منابعي که مي­خواهند در اختيار بگيرند محدوديت قرار دهند, براي مثال شرکت کننده­اي در سازمان مجازي Q درخواست داده­هايي را ميکند که فقط با عنوان امن تاييد شده باشند. که البته قرار دادن چنين محدوديت­هايي مستلزم تعريف کردن قراردادهايي به عنوان اصول امنيت مي­باشد.

 

به اشتراک گذاشتن منابع مي­تواند حالت پويا داشته باشد و طي دوره­هاي زماني تغيير يابد. شرکت کنندگان و به تبع آن منابعي که به آنها اختصاص يافته مي­توانند حذف شوند, يا به محيط اضافه شوند يا دسترسي­هاي آنها تغيير يابد.

روابط بين منابع مشترک هميشه به صورت مشتري-مجري نيست بلکه گاهي مي­تواند همرده[1] باشد يعني جاي مشتري و مجري به تناوب تغيير يابد. اين به اشتراک گذاشتن منابع مي­تواند در هر زير مجموعه­اي از شبکه قرار بگيرد و بين تعداد خاصي از منابع به وقوع افتد.

اين روابط مي­توانند با هم ترکيب شوند تا در رسيدن به هدف خاصي همکاري­هاي لازم را به انجام رسانند. منابع مورد استفاده مي­توانند متعلق به سازمان­هاي متفاوتي باشند که توسط يکديگر استفاده مي­شوند.

يک منبع ثابت مي­تواند بسته به محدوديت­هايي که بر رويش قرار مي­گيرد و هدف از پيش تعيين شده با روش­هاي مختلفي استفاده گردد. براي مثال يک رايانه مي­تواند فقط براي اجراي قسمت خاصي از يک نرم­افزار به اشتراک گذاشته شود, در حالي که در حالت ديگري مي­تواند به مديريت يک پروژه­ي بزرگ اختصاص يابد. به خاطر عدم وجود اطلاعات قبلي درباره­ي نحوه­ي استفاده از يک منبع, مقدار کارايي, انتظارات و محدوديت­ها (که کلا به نام کيفيت سرويس معروف هستند) بايد جزيي از شرايطي باشند که براي يک منبع و يا نحوه­ي استفاده از آن در نظر گرفته مي­شود.

 

اين مشخصه­ها و نيازمندي­ها چيزي را تعريف مي­کنند که به آن سازمان مجازي مي­گوييم, مفهومي که به اعتقاد ما يکي از کليدي ترين مفاهيم موجود در گريد خواهد بود. سازمان­هاي مجازي به گروه­هاي مختلف سازماني يا اشخاص اجازه خواهد داد که منابع خود را در يک روند کنترل شده به اشتراک گذارند.


 



[1] Peer-to-peer

پایان قسمت۴

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:45  توسط یوسف عبدلیان باریکرسفی  | 

محيط گريد(قسمت 3)

5.3.1. امنيت

به­طور کلي در محيط شبکه که اطلاعات به­ صورت اشتراکي در اختيار قرار مي­گيرد مسئله تامين امنيت موضوعي است که بايد در نظر گرفته شود. در گريد تجهيزات و منابع زيادي مانند کامپيوترهاي گران قيمت، تجهيزات حساس و باارزش و اطلاعات محرمانه­اي وجود دارند که بايد در برابر دسترسي­هاي غير مجاز محافظت شوند.

حتي در محيط­هايي که احتمال خرابکاري وجود ندارد نيز بايستي اين مسئله مد نظر قرار گيرد. چرا که ممکن است دسترسي به اطلاعات غير مجاز و يا انجام عمليات مخرب بصورت نا خواسته توسط کاربران يا نرم­افزار­هاي کاربردي انجام شود. اين سرويس ميان­افزار هسته اي, وظيفه ايجاد امنيت براي استفاده از منابع موجود را برعهده دارد.

به هر حال دسترسي و استفاده از منابع با يک درخواست از طرف کامپيوتر مبدا انجام مي­شود اين درخواست ممکن است مربوط به يک کاربر، يک منبع و يا يک پردازه باشد. ارتباط اين درخواست­ها با منابع مي­تواند بصورت منبع به کاربر، کاربر به منبع، پردازه به منبع و پردازه به پردازه باشد که سيستم بايد اطلاعات کاملي از هر جفت از موارد فوق مربوط به محيط گريد در اختيار داشته باشد تا با استفاده از آنها مشخص کند که آيا يک درخواست مجاز هست به يک منبع خاص دسترسي داشته باشد يا خير.

اين سرويس براي ايجاد امنيت در سطح گريد از يک معماري دوسطحي استفاده مي­کند.

در سطح اول مسائلي مانند تعيين هويت، کنترل دسترسي­ها، جامعيت، مجوز و رمزگشايي انجام مي­شود و درسطح دوم پيگيري در حال اجراي پردازه­ها انجام مي­شود تا از انجام هرگونه عمليات مخرب جلوگيري شود.

به­طور کلي وظايف اين سرويس را مي­توان بصورت زير خلاصه نمود:

-        تعيين هويت

براي تعيين هويت کاربر­هاست تا مشخص شود که معتبر هستند يا خير.

-        مجوز

براي اطمينان از اينکه کاربرهاي مجاز تنها به منابع مشخص شده براي آنها دسترسي پيدا مي­کنند.

-        جانشيني

براي اينکه به سيستم اجازه داده شود تا بتواند مجموعه­اي از عمليات را براي يک کاربر که هنوز در سيستم معرفي نشده انجام دهد.

-        تک ورود

سيستم بايد اين امکان را داشته باشد که وقتي يک کاربر يک بار براي استفاده از يک منبع وارد سيستم شد براي استفاده از منابع ديگر که از نظر مجوزهاي استفاده شبيه به اين منبع هستند، نياز به ورود مجدد نباشد.

-        ارتباط امن

براي ضمانت کردن جامعيت و محرمانگي در ارتباطات.

 

6.3.1.کيفيت سرويس

برخي از نرم­افزارهاي کاربردي گريد طوري هستند که براي دريافت سرويس يا به عبارت ديگر براي اجرا شدن نياز دارند که سرويس­هاي ارائه شده در محيط با محدوديت­ها و معيارهاي خاصي ارائه شوند. به عنوان مثال يک برنامه بلادرنگ[1] نياز دارد که منابع مورد نيازش حتما در محدوده زماني مشخص به آن تخصيص داده شده و سرويس­ها بتوانند در زمان مشخص سرويس خود را ارائه کنند و يا برنامه ديگري ممکن است نياز داشته باشد که سطح خاصي از پوشيدگي مربوط به عملکرد آن در حين اجرا در اختيارش قرار گيرد.

 در مورد اطلاعات پيوسته مانند چند رسانه­اي­ها هم مسئله کيفيت سرويس مطرح مي­شود و سيستم بايد بتواند اطلاعات چند رسانه­اي را که ترکيب صدا و تصوير هستند با کيفيت قابل قبول ارسال و دريافت نمايد. مثلا تصوير دريافتي بايد با صدا هماهنگ باشد. وجود مسائلي از اين قبيل باعث مي­شود که سيستم تمهيداتي را براي ارائه سرويس­هاي مورد نظر در نظر بگيرد.

 فاکتورهاي کيفيت سرويس براي منابع مختلف متفاوت است. مثلا در مورد پردازنده درصد بکارگيري آن مطرح است. در مورد منابع ذخيره سازي اطلاعات و ديسک­ها، ظرفيت در مورد منابع شبکه سرعت انتقال اطلاعات و غيره مطرح است.

در محيط گريد يک نرم­افزار کاربردي بايد فاکتورها و پارامترهاي کيفيت سرويس را در مورد منابع مورد نياز مشخص کند. بعد از آن سرويس کنترل کيفيت از عمليات زير براي ارائه سرويس استفاده مي­کند.

رزرو کردن منابع

 سيستم بايد با استفاده از مکانيزمي به سرعت منابع مورد نياز را براي يک نرم­افزار کاربردي خاص رزرو نمايد به­خصوص در مورد منابع کمياب در محيط گريد.

 

-        سياست­هاي رزرو

 سيستم بايد با استفاده از مکانيزمي محدوديت­ها و سياست­هاي اعمال شده روي منابع از طرف مالک آنها را در نظر بگيرد. اين محدوديت­ها مشخص مي­کنند که چه کسي، چه وقت و چگونه مي­تواند به منابع اين دامنه دسترسي داشته باشد. سيستم با استفاده از اين اطلاعات و محدوديت­هاي کيفيت سرويس موجود مي­تواند منبع مناسب را رزرو نمايد.

-        پروتکل مورد توافق

سيستم بايد اين اطمينان را به­ وجود بياورد که کيفيت سرويس ارائه شده به يک مشتري در طول زمان سرويس دهي همان است که وي انتظار آن را داشته و سيستم با استفاده از اين پروتکل اين کار را انجام مي­دهد.

 

-        امنيت

سيستم بايد از ورود کاربران غير مجاز جلوگيري کرده و سياست­هايي براي جلوگيري از اعمال تغييرات در مخازن داده­اي که حاوي اطلاعات تجهيزات رزرو شده، سياست­ها و اطلاعات پروتکل مورد توافق است در نظر بگيرد.

 

-        سادگي کيفيت سرويس

 

اعمال سياست­هاي کيفيت سرويس براي يک پردازه بايد حتي الامکان طوري انجام شود که در صورتي­که امکان ارتقاي فاکتورهاي کيفيت سرويس وجود داشت، اين کار با حداقل تغييرات ممکن صورت گيرد. هرچند که در عمل اين کار بسيار مشکل است. به دليل اينکه نياز به پيش­بيني وضعيت آينده سيستم دارد.

-        مقياس پذيري

روش انتخاب شده براي کيفيت سرويس بايد طوري باشد که بتوان از آن براي تعداد زيادي از موجوديتهاي محيط گريد استفاده نمود.

 




[1] Real Time

پایان قسمت ۳

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:41  توسط یوسف عبدلیان باریکرسفی  | 

محيط گريد(قسمت 2)

 

2.1. شرح وظايف ميان­افزار هسته­اي گريد در جهت ايجاد محيط­هاي گريد

شرح وظايف يا عملياتي که اين ميان­افزار انجام مي­دهد به شرح زير است:

1.2.1.کشف منابع و ثبت وضعيت

سرويس اطلاعاتي گريد بايد در مورد منابع موجود در گريد که سرويس ارائه مي­کنند اطلاعات جمع آوري نمايد. اين اطلاعات، اطلاعات ماندگاري در مورد سرورهاي موجود است. اين سرورها براي فعال کردن سرويس­ها و برنامه­هاي موجود در گريد مديريت مي­شوند. در واقع وقتي قرار است يک برنامه در محيط گريد به اجرا در آيد لازم است که به­صورت موازي در سراسر محيط گريد توزيع شود. در اين حالت کامپيوتر مبدا بايد از امکانات و منابع موجود در گريد با اطلاع باشد يعني اطلاعات سرورهاي موجود را در اختيار داشته باشد تا بتواند به آنها مرتبط شده و از سرويس­هاي آنها استفاده نمايد.(در اينجا منظور از سرور ماشين سرور نيست بلکه منظور از سرور سرويس دهنده نرم­افزاري است که بوسيله يک شناسه مورد شناسايي قرار مي­گيرد). بنابراين يکي از وظايف ميان­افزار هسته­اي گريد جمع آوري و ذخيره­سازي اطلاعات در مورد منابع موجود در گريد است.

در اين قسمت به­طور کلي مراحل زير انجام مي­شود:

-        تهيه مشخصات تعيين شده در مورد منابع موجود در گريد به همراه هدف مربوط به هر منبع.

-        تهيه اطلاعات مربوط به وضعيت منابع.

 

2.2.1.زمان بندي[1] منابع

وقتي قرار است يک فعاليت در محيط گريد انجام شود، به دليل وجود مسائلي همچون زمان پاسخگويي، کارايي[2] وغيره مي­بايست منابع در دسترس برنامه ريزي، زمان بندي و هماهنگ شوند. تا بتوانيم وظيفه مورد نظر را در زمان مناسب و با کيفيت در نظر گرفته شده اجرا نماييم. به عبارت ديگر به­کارگيري منابع براي همکاري با يکديگر مثلا جهت عمليات موازي يا پردازه­هاي چند سطحي نياز به هماهنگي زيادي بين عناصر موجود در گريد دارد. در اينجا در واقع کامپيوتر مبدا از نظر زمانبندي صرفا مي­تواند منابع مورد نياز را رزرو نمايد.

 

3.2.1. دسترسي يکسان به منابع محاسباتي

در بين منابع موجود در گريد تفاوت­هاي زيادي وجود دارد. اين تفاوت­ها نبايد روي نحوه دسترسي به منابع تاثير بگذارند. يعني اگر بخواهيم يک نرم­افزار کاربردي بصورت قابل حمل در گريد مورد استفاده قرار گيرد بايد محيطي يکنواخت براي اجراي آن ايجاد نماييم که يکي از ويژگي­هاي اين محيط يکنواخت که کاربر و برنامه نويس و نرم­افزار کاربردي احساس مي­کنند امکان دسترسي يکسان به منابع کامپيوتري موجود درگريد است.

 

4.2.1. دسترسي يکسان به داده

يکي از اهداف ايجاد گريد امکان دسترسي به حجم وسيعي از منابع ذخيره سازي اطلاعات است. ولي مسئله اين است که باز هم بايد نرم­افزار­هاي کاربردي قابل حمل داشته باشيم به­طوري­که بتوانند به داده­هاي مورد نظر خود با روشي يکسان دسترسي پيدا کنند. يعني اين دسترسي بايد مستقل از تمام وابستگي­هاي داده­اي در محيط گريد باشد. علاوه بر اين امروزه سرويس­هاي دسترسي به داده­ها در گريد داده­ها را بوسيله نام شناسايي مي­کنند.

 

5.2.1. ارتباطات امن و تاييد اعتبار کاربران

يکي ديگر از وظايف ميان­افزار هسته­اي گريد اين است که اعتبار و سنديت درخواست­هاي رسيده را مشخص نموده، مجوز آنها را بررسي کرده آن­ها را رمز گشايي ­و در مورد يک سرويس معين بررسي کند. اين کار با استفاده از مدل­هاي امنيتي، پروتکل­ها و تکنولوژي­هاي برقراري ارتباط انجام مي­شود. در واقع اين سرويس مسائل امنيتي را براي محيط گريد فراهم مي­کند. در واقع هر کامپيوتر موجود در محيط بايد قبلا تاييد اعتبار شده باشد تا بتواند از امکانات گريد استفاده نمايدکه اين کار براي جلوگيري از نفوذ و خرابکاري درون کامپيوترها ضروري است.

3.1. بررسي سرويس­هاي ارائه شده توسط ميان­افزار هسته­اي گريد

اين ميان­افزار براي انجام وظايف خود سرويسهاي مختلفي را شامل مي­شود که عبارتند از:

1. مديريت راه دور پردازه­ها

2. تخصيص منابع

3. دسترسي به منابع ذخيره سازي

4. کشف و ثبت منابع

5. امنيت

6. کيفيت سرويس

7. رزرو کردن منابع


1.3.1. مديريت راه دور پردازه­ها

در محيط شبکه و ارتباطات شبکه­اي ارتباط کامپيوتر­ها از طريق ارسال و دريافت پيام انجام مي­شود. بنابراين اين پيغام­ها بايد به نوعي مديريت و کنترل شوند. يک کامپيوتر ممکن است درخواست­هاي زيادي از ساير کامپيوترها بصورت مستمر دريافت کند. پس بايد با روشي مثل صف بندي پيام­ها آنها را نگهداري کرده, درخواست­ها را پردازش نموده و پاسخ را به درخواست کننده ارسال نمايد.

اين سرويس از ميان­افزار هسته­اي گريد وظيفه دارد عمليات برقراري ارتباط جهت ارسال و دريافت پيام، عمليات همگام سازي ارتباطات، انتقال داده­ها، عمليات ضبط و نگهداري وقايع را انجام داده و امکان مشاهده و پيگيري درخواستها و وقايع را فراهم نمايد.

 

2.3.1. تخصيص منابع

در يک تعريف خيلي ساده محاسبات گريد عبارتست از استفاده از چندين منبع کامپيوتري مثل کامپيوتر، داده، I/O، تجهيزات و غيره براي حل يک مسئله بزرگ به­طوري­که اين مسئله قابل انجام توسط يک منبع تکي نباشد[5].

همانطور که مي­دانيم در محيط يک کامپيوتر تک که از منابع محلي براي اجراي برنامه­ها استفاده مي­کند هنگام اجراي يک برنامه بايد منابع کامپيوتر مثل حافظه، پردازنده، منابع ذخيره سازي داده، ورودي-خروجي و... در اختيار آن قرار گرفته (به آن تخصيص داده شده ) و اين منابع مديريت شوند. مثل مديريت حافظه.

در محيط گريد نيز وقتي يک برنامه مي­خواهد اجرا شود بايد منابع مورد نيازش را در اختيار گيرد. به­عنوان مثال يک برنامه ممکن است به 400 پردازنده براي اجرا نياز داشته باشد. درواقع بايد سيستم مجموعه­اي از منابع را به­طور همزمان در اختيار يک نرم­افزار کاربردي قرار داده و آنها را مديريت نمايد. مسلما مديريت منابع در اين حالت با حالت کامپيوتر تک متفاوت است. چرا که مجموعه­اي از تجهيزات و منابع بايد باهم همکاري کنند و به­طور همزمان در اختيار برنامه قرار گيرند. وظيفه اين سرويس, تخصيص منابع مورد نياز يک برنامه جهت اجرا در محيط گريد و مديريت اين منابع مي­باشد.

تخصيص منابع توسط اين سرويس در سه فاز بصورت زير مي­تواند انجام شود.

-        فاز تخصيص : که در آن منابع کامپيوتري مورد نياز را در اختيار گرفته و اشياي مختلف مورد نياز ايجاد مي­شوند.

-        فاز پيکربندي : که در آن نرم­افزار کاربردي مورد نظر مقدار دهي و آماده اجرا مي­شود.

-        فاز کنترل و پيگيري : که در حين اجراي برنامه انجام مي­شود. دراين فاز عمليات کنترل تجهيزات و منابع تخصيصي و نمايش اطلاعات مورد نياز برنامه در حال اجرا انجام مي­شود.

 

3.3.1. دسترسي به منابع ذخيره سازي

در محيط گريد برخي از برنامه­ها با حجم وسيعي از اطلاعات سر و کار دارند که بايستي اولا بتوانند منابع لازم جهت ذخيره سازي اين اطلاعات را در محيط گريد در دسترس داشته باشند و ثانيا در مواقع نياز بتوانند به اين اطلاعات دسترسي پيدا کنند. همان­طور که قبلا نيز اشاره شد يکي از ضروريات محيط گريد ايجاد يک محيط يکنواخت و شفاف براي کاربرها و نرم­افزار­هاي کاربردي است يعني نرم­افزار­هاي کاربردي بايد شبيه به منابع محلي خود به اطلاعات مورد نياز خود دسترسي پيدا کنند.

وظيفه اين سرويس پديد آوردن امکاناتي جهت رسيدن به اين هدف است. يکي از ابزارهاي مناسبي که در اين بخش استفاده مي­شود يک ميان­افزار به­نام فروشنده منابع گريد[3] است که اين ميان­افزار امکاناتي را فراهم مي­کند تا نرم­افزار­هاي کاربردي بتوانند به سادگي به اطلاعات مورد نياز خود که درون منابع ذخيره سازي مختلف در سطح گريد ذخيره شده اند، دسترسي پيدا کنند.

فروشنده منابع گريد به طور خلاصه سه وظيفه­ي مهم جمع­آوري و مديريت فايل­ها, مديريت دادگان و کنترل دسترسي فايل­ها و دادگان را به عهده دارد.

 

4.3.1.کشف و ثبت منابع

در محيط گريد سرويس تخصيص منابع که زمان­بندي را انجام مي­دهد, نياز دارد بداند که در حال حاضر چه امکاناتي از محيط را مي­تواند رزرو کرده و به برنامه­ها تخصيص دهد. اين سرويس که سرويس­هاي اطلاعاتي را در محيط انجام مي­دهد، وظيفه دارد در محيط گريد به جستجو پرداخته و اطلاعات به روز از منابع موجود مانند اطلاعات مربوط به افراد، نرم­افزارها، سرويس­ها، شبکه و سخت­افزارهاي فعال قابل استفاده و به­طور کلي موجوديت­هاي محيط را جمع آوري و نگهداري نمايد. اين سرويس به نوعي عمليات سرويس پوشه­ها [4]و نام دهي[5] را در محيط انجام مي­دهد.

 

 

 




[1] Scheduling

[2] Performance

[3] Storage Resource Broker(SRB)

[4] Directory service

[5] Naming

پایان قسمت ۲

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:39  توسط یوسف عبدلیان باریکرسفی  | 

محيط گريد(قسمت 1)

 

گريد نوعي سيستم نامتمرکز و موازي است که امکان به اشتراک گذاشتن و انتخاب منابع ناهمگون, خودمختار و توزيع شده از نظر جغرافيايي را به صورت پويا و در زمان اجرا و با ملاحظاتي نظير کارايي, در دسترس بودن, هزينه و کيفيت سرويس فراهم مي­نمايد.

سيستم­هاي گريد را مي­توان به سه دسته­ي گريد محاسباتي, گريد سرويس و گريد داده­اي تقسيم بندي کرد[9].

1.1. معماري گريد

همانطور که گفته شد هدف گريد ايجاد محيطي است تا کامپيوترها بتوانند به آساني به منابع موجود در ساير کامپيوترها دسترسي پيدا کرده و از آنها استفاده نمايند. ولي ايجاد چنين ساختاري به جهت وجود ناهمگوني بين کامپيوتر­ها کار بسيار مشکلي است.

محيط گريد مملو از تجهيزاتي است که با تکنولوژيهاي مختلف نرم­افزاري و سخت­افزاري کار مي­کنند. کامپيوترهاي مختلفي مانند سرورها، ابر رايانه­ها، رايانه­هاي شخصي معمولي، ابزار و منابع ذخيره سازي اطلاعات با ساختارهاي مختلف، تجهيزات مهندسي مثل تلسکوپ و....

کامپيوترها سخت­افزار خاص خود را دارند و از سيسستم عامل مخصوص به خود استفاده مي­کنند. يک کامپيوتر با Windows کار مي­کند ديگري يک Mainframe است که سيستم عامل VAX روي آن قرار دارد و اطلاعات را با روش سخت­افزاري تعريف شده, ذخيره و پردازش مي­کند و کامپيوتر ديگر يک سرور است که سيستم عامل Novell روي آن اجرا مي­شود، نرم­افزارهاي کاربردي در محيط و سکوي[1] خاص خود ايجاد شده و اجرا مي­شوند. کامپيوترها در شبکه­هاي مختلف با سياست­هاي مديريتي خاص، پيکربندي­ها و پروتکل­هاي مختلف کار مي­کنند.

 در واقع هدف گريد در برخورد با چنين محيطي تبديل اين محيط به يک محيط يکنواخت است که در آن کامپيوترها بتوانند باهم ارتباط برقرار کرده، پيغام­هاي يکديگر را بفهمند و درخواست­هاي رسيده را پاسخ دهند. کليه کاربران محيطي همگن و يکنواخت را ببينند و احساس کنند. يعني هر کاربر يا نرم­افزار کاربردي بتواند با يک روش مشخص به منابع مورد نياز خود دسترسي پيدا کرده و از آنها استفاده کند و تمامي دغدغه­هاي موجود مانند مشکلات ارتباطي، غير همگون بودن کامپيوترها و غيره از ديد او پنهان بماند. مسلما براي دستيابي به اين محيط همگن و يکنواخت تغيير دادن و يکي کردن کامپيوترهاي موجود در دنيا عملي نشدني است. پس بايد با روشهاي ديگري اين کار انجام شود.

يعني بايد بتوانيم يک محيط انتزاعي همگن از تجهيزات و منابع کامپيوتري موجود بسازيم. که در آن کامپيوتر­ها بر اساس يک قانون يا پروتکل با هم ارتباط برقرار نمايند. به عبارت ديگر يک ماشين مجازي ايجاد کرده و در اختيار کامپيوترها و استفاده­کنندگان از آنها قرار دهيم تا سيستم­هاي مختلف بدون دغدغه ناهمگون بودن امکانات و تجهيزات بتوانند با يکديگر تبادل داده انجام دهند. در همين راستا ميان­افزارهايي طراحي شده و در اختيار کاربران قرار گرفته است.

براي محيط گريد ساختاري بصورت شکل 2 در نظر گرفته شده است.

اين ساختار چند لايه­اي انتظارات ما از يک محيط يکنواخت گريد را بر آورده مي­کند. که وظيفه لايه­هاي آن به شرح زير است [3].


 



[1] Platform

·         لايه FABRIC

حاوي تمام منابع توزيع شده مانند کامپيوترها، شبکه­ها، منابع ذخيره سازي اطلاعات، پايگاه­هاي داده و ابزار علمي و مهندسي است.

منابع کامپيوتري مانند رايانه­هاي شخصي، سرورها، ابر رايانه­ها و خوشه­ها[1] داراي ساختارهاي مختلفي هستند و سيستم عامل خاص خود را دارند.



[1] Cluster

 

 لايه ميان­افزار سطح کاربر

 

 

اين لايه شامل محيطي براي ايجاد و ارتقاي برنامه­هاي کاربردي در محيط گريد، ابزار برنامه سازي و امکاناتي جهت دسترسي و مديريت منابع است و همچنين وظيفه دارد که برنامه­ها را براي اجرا در محيط گريد زمانبندي و مديريت نمايد. اين لايه با فراهم آوردن دستورات و امکانات به­صورت انواع اوليه[1] اين امکان را در اختيار برنامه نويس و نرم­افزار کاربردي قرار مي­دهد تا بتواند با استفاده از اين انوع اوليه, امکانات موجود در محيط گريد را مورد استفاده قرار دهد.

·         لايه ميان­افزار هسته­اي گريد[2]

همانطور که گفته شد ميان­افزار سطح کاربر وظيفه دارد تا حتي الامکان شرايطي را براي ديدن يک محيط يکپارچه و يکنواخت در اختيار کاربران و نرم­افزارهاي کاربردي قرار دهد.

در اين ميان به دليل اينکه محيط ما يک محيط وسيع شبکه­اي است بايستي براي اجراي يک برنامه در اين محيط مسائل ديگري همچون امنيت[3]، کيفيت سرويس دهي[4]، مسائل و سياستهاي مديريتي و... نيز در نظر گرفته شود. لايه ميان­افزار هسته­اي يکي از مهمترين قسمت­ها در معماري گريد است که وظيفه دارد يک محيط يکپارچه امن براي دسترسي نرم­افزار­هاي کاربردي به منابع فراهم سازد. اين لايه يک محيط انتزاعي از منابع موجود در گريد در اختيار نرم­افزار­هاي کاربردي قرار مي­دهد تا بتوانند به­وسيله سرويس­هاي اين لايه منابع مورد نياز را در اختيار گرفته و استفاده نمايند. همچنين اين لايه وظيفه دارد دسترسي­ها به منابع را کنترل کرده و مجوزهاي مورد نياز را در اختيار پردازه­هاي دريافتي از ساير کامپيوترها قرار دهد.



[1] primitive

[2] Core Grid Middleware

[3] Security

[4] Quality of Services

 

 پایان قسمت ۱

+ نوشته شده در  چهارشنبه یازدهم دی 1387ساعت 13:36  توسط یوسف عبدلیان باریکرسفی  | 

 

Grid چيست ؟

 

انفجار اخير در كشش تجاري و علمي بسوي Grid ايجاب مي كند تا اين پرسش را مطرح سازيم كه : بهر حال Grid چيست ؟ پيشنهاد مي كنيم كه سه مورد وجود دارد كه مشخص مي كنند يك سيستم Grid  است يا نه ؟ همچنين ما، درباره نقش هاي بحراني كه استانداردها براي تعريف Grid بازي مي كنند بحث مي كنيم.

نياز براي يك تعريف مشخص

 Grid ها از مباحث تاريك و مبهم آكادميك به موارد بسيار عام و محبوب تبديل شده اند. ما درباره  Gridهاي محاسباتي ، Gridهاي داده ، Gridهاي علمي ، Gridهاي دستيابي ، Gridهاي دانش ، Gridهاي زيستي ، Gridهاي حسي ،  Gridهاي دسته اي، Gridهاي فضاي باز و  Gridهاي كالا،مطالبي مي خوانيم. با گذاشتن يك جدول  روي ناحيه شبكه محلي مي توان يك "Grid دسته اي" ايجاد كرد ، دراينصورت شبكه سيستم فايل من، مرا با يك حافظه Grid تامين مي كند. براستي آيا هيچ سيستم كامپيوتري بدون Grid  وجود  دارد؟

 در نهايت يك Grid بايد در شرايط و ضوابط مربوط به برنامه ها، ارزش هاي تجاري و نتايج علمي كه آنرا ايجاد مي كنند و تحويل مي دهند، سنجيده شود نه در يك معماري خاص. بهرحال بايد اين پرسش ، پاسخ داده شود كه آيا Grid computing براي پيشرفت و رشد خود نيازمند اعتبار سنجي و ميزان كردن(تمركز كردن) است يا نه؟ از اين نظر و از لحاظ جنبه هاي مشابه ، موقعيت ما شبيه اينترنت در حدود سال 1990 است. قبل از آن فروشنده ها ادعا مي كردند كه شبكه هاي خصوصي شبيه SNA و DECNET قسمتي از اينترنت هستند ، و عده اي ديگر  بر اين عقيده بودند كه هر شبكه محلي در شكل و فرم  اينترنت است. اين موقعيت گيج كننده فقط هنگامي روشن شد كه پروتكل اينترنت (IP) بطور وسيع براي هر دو شبكه محلي و گسترده اتخاذ شد.

تعاريف اوليه :

قبل از 1998 ، Carl Kesselman و    Ian Foster     سعي كردند يك تعريف در كتاب                                       ""The Grid: Bluerint for a New Computing Infrastructure   ارائه بدهند. آنها نوشتند:

" يك Grid محاسباتي(computational grid) زيربناي سخت افزار و نرم افزار است كه يك دسترسي قابل اطمينان ، سازگار ،  فراگير  و  معقول(صرفه جويانه) را براي قابليتهاي محاسباتيِ   high-end، فراهم   مي كند."

البته قبل از نوشتن اين ،آنها درباره تقاضاي دسترسي به محاسبات، داده و سرويس ها بحث كرده بودند.

 در 1969، Len Kleinrock  به صورت نابهنگام پيشنهاد كرد :

" ما احتمالا گسترش « استعمال كامپيوتر» را مثل استعمال الكتريسيته و تلفن در حال حاضر خواهيم ديد، كه به خانه ها وادارات بصورت انفرادي و در سرتاسر كشور سرويس خواهد داد."

در نوشته هاي بعدي ، The Anatomy of the Grid نوشته شده بوسيله  Steve Tuecke  در 2000 ، كه تعريفهايي در آنها يافت مي شود كه به موضوعات اجتماعي وسياسي اشاره كرده و Grid computing را با   " تقسيم هماهنگ منابع  و حل مسائل بصورت پويا  و سازمانهاي مجازي  چندبنگاهي                       (multi-institutional) " ربط داده اند . مفهوم كليدي توانايي در نحوۀ گفتگو براي اشتراك منابع در بين     مجموعه اي از بخش هاي شركت كننده و بعد استفاده از منابع حاصل براي برخي اهداف بود .

آنها همچنين درباره اهميت پروتكل هاي استاندارد بعنوان وسيله اي براي فعال كردن عملكرد داخلي و زيربناي عادي ،در كتاب مذكور،بحث كردند.

يك Grid  Checklist  

جوهرة  تعريف هاي بالا مي تواند در يك چك ليست ساده قرار بگيرند ، بر طبق آن يك Grid سيستمي است كه :

1)هماهنگي منابعي كه موضوع مطالعة كنترل متمركز نيستند...

 (يك Grid ، منابع و كاربران با دامنه هاي كنترل متفاوت را هماهنگ و مجتمع مي كند.                                                                                                                                بعنوان مثال: واحدهاي مديريتي مختلف در يك شركت يا شركت هاي مختلف. همچنين Gridروي موضوعاتي   مانند امنيت ، خط مشي، پرداخت و عضويت ، نظارت مي كند. به عبارت ديگر ما با يك سيستم اداره كننده محلي( local management system) سروكار داريم.)

2) ...استفاده از استاندارد ها ،واسط ها و پروتكل هاي چندمنظوره 

(يك Grid از پروتكل هاي چند منظوره و واسط هايي كه بر موضوعات اساسي مانند  تصديق(authentication)، اختيار (authorization)، كشف منابع و دسترسي به منابع  نظارت مي كنند ، تشكيل شده است.البته خيلي اهميت دارد كه اين پروتكل ها و واسط ها ، استاندارد و آزاد باشند. به عبارت ديگر ما با يك سيستم مخصوص كاربرد (applicationspecific) سروكار داريم.)

3) براي آزاد كردن خصوصيات كلي سرويس ها.

(يك Grid به منابع سازندة خود اين امكان را مي دهد تا در يك روش متناسب براي رهاسازي وضعيت هاي مختلف يك سيستم، استفاده شوند. بعنوان مثال براي واكنش زماني ، توان عملياتي ،‌قابليت دسترسي و امنيت ، و يا تخصيص يكسان چندين منبع متفاوت براي برطرف كردن مطالبه هاي پيچيدة كاربران. بنابراين استفاده از سيستم هاي مركب بهتر از استفاده از مجموع قسمتهاي آن است.)

البته در مورد چك ليستي كه در بالا بحث شد بايد دقت كرد كه منظور از "كنترل متمركز"و "پروتكل هاي چندمنظوره ، استاندارد"و"خصوصيات سرويس ها " چيست‌؟ ابتدا اجازه دهيد تا چك ليست را روي كانديدا هاي "Grid" ها آزمايش كنيم.

اولا ، اجازه دهيد تا سيستم هايي را بررسي كنيم كه طبق چك ليست ما بعنوان Grid نيستند.يك سيستم      اداره كنندة cluster شبيه Sun’s Sun Grid Engine ، Platform’s Load Sharing Facility ، يا  Veridian’s Portable Batch System ، وقتي كه روي يك كامپيوتر موازي يا شبكة محلي نصب مي شود، يك منبع Grid قدرتمند تشكيل مي دهد. در مقياس متفاوت ، Web‌ يك Grid نيست  بلكه يك پروتكل چند منظوره و آزاد است كه دسترسي به منابع توزيع شده را فراهم مي كند، اما از آن منابع براي رهاسازي مقادير مفيد از خدمات ، استفادة هماهنگ نمي كند.                         

از طرف ديگر آرايش برنامه هاي چند سايتي مانند Platform’s MultiCluster بطور منطقي مي تواند اولين نسل از Grid ها ناميده شود. بعنوان مثال : سيستم هاي محاسبة توزيعي توليد شده توسط Condor ، Entropia وUnited Devices كه مي توانند desktop هاي بي كار را تحت كنترل درآورند؛ سيستم هاي peer-topeer مانند Gnutella كه توسط تسهيم فايل ها بين جفت هاي شركت كننده حمايت مي شوند ؛ و يك ترتيب بهم پيوسته از Storage Resource Broker كه بوسيلة دسترسي هاي توزيع شده بين داده ها حمايت مي شود.

Grid  : نياز به پروتكل هاي بين Grid ها

چك ليست ما دربارة اينكه چه چيزهايي لازم است تا يك سيستم  يك Grid باشد بحث مي كند ، اما هنوز اين سؤال مطرح است كه يك Grid مشخص چه ويژگي هايي دارد؟ نسخه هاي Grid نيازمند پروتكل هايي       مي باشند كه تنها آزاد و چند منظوره نيستند اما بالاخره استاندارد هستند. اين استاندارد ها به ما اجازه مي دهند تا آرايش اشتراك منابع را بطور پويا و بدون هيچ قسمت اضافي بوجود آوريم . همچنين استانداردها بعنوان    وسيله اي براي فعال كردن ابزارها و سرويس هاي چندمنظوره مهم هستند.

تعريف پروتكل هاي استاندارد براي “InterGrid” در حال حاضر تنها مساله مهم براي Grid ها مي باشد . خوشبختانه پيشرفت هاي قابل ملاحظه اي حاصل شده است. بطوريكه در كنار استانداردها ، مجمع عمومي Grid داريم. كه اكنون در اين مجمع افرادي هستند كه براي تعريف Open Grid Services Architecture (OGSA) تلاش مي كنند.[1]

 يك معماري OGSA در زير ديده مي شود :

 

 

 

 

 

 

 

 

 

 

در شكل بالا منابع فيزيكي شامل Service ها و storage و  network است . و منابع منطقي كه منابع فيزيكي را اداره مي كنند شامل فايل سيستم ها ، مدير DB ، راهنما ها (directories) و اداره كننده هاي workflow

مي باشد.

OGSI مكانيزم هاي وب سرويس ، مانند XML و WSDL را براي تعيين واسط هاي استاندارد، رفتارها و واكنش داخلي همة منابع Grid بكار مي اندازد. [2]

 

+ نوشته شده در  یکشنبه بیست و سوم تیر 1387ساعت 21:1  توسط یوسف عبدلیان باریکرسفی  | 

معماری GridTP

 

معماری GridTP

دید کلی از GridTP

X/Open DTP یک استاندارد از پردازش تراکنش های توزیع شده، که یک base ایده آل جهت ساختن     سرویس های GridTP برای پردازش تراکنش Grid است را فراهم می کند. GridTP  به سه لایه تقسیم     می شود :         

                 1   . لایه مدل منابع مشترک

2       . لایه OGSA Platform

3       .لایه Data Virtualization Services

 

 

 

در لایه مدل منابع مشترک هر بانک اطلاعاتی به منابع وابسته است و سیستم مدیریت بانک بعنوان مدیر منابع عمل می کند(RM). مدیر تراکنش(TM) نقش اساسی در GridTP  در هماهنگی تراکنش عمومی دارد. امروزه  DB ها بعنوان منابع قابل مدیریت رفتار می کنند. در OGSA ، هر چیزی بعنوان Grid service ارائه        می شود.  TM داده اصلی و توابع مدیریت تراکنش را فراهم می کند که می توانند Hosting Environment را برای ارتباط OGSI ارائه کنند.OGSI مکانیزم های اساسی مانند ایجاد، نامگذاری و مدیریت روی آن چیزی که OGSA Platform آنرا ساخته است، را تعریف می کند.

در لایه Data Virtualization Services  ساختن خدمات GridTP ،که خدماتDomainspecific سطح بالایی بر مبنای OGSA platform هستند، ما با محدودیت روبرو هستیم . در این لایه ، بوسیله خدمات GridTP ، ما نوعی   Data Virtualization Service فراهم می کنیم (DVS). DVS  دسترسی های وابسته به داده های توزیع شده ، کشف پویای منابع داده ، تعادل پویای بار کاری و شمای مدیریت در محیط های Grid را ارزیابی می کند. خدمات GridTP می تواند نیازمندی های DVS را با هم پیوند دهد .بعلاوه ، GridTP توانایی هماهنگی تراکنش های توزیع شده بین چندین DB را می تواند فراهم کند

+ نوشته شده در  یکشنبه بیست و سوم تیر 1387ساعت 20:57  توسط یوسف عبدلیان باریکرسفی  | 

Grid Transaction

 

 

Grid Transaction

در اينجا يك معماري جديد از پردازش تراكنش Grid كه GridTP ناميده مي شود و بر اساس OGSA platform و مدل X/Open DTP مي باشد را ارائه مي كنيم. پيوند زدن ارث() سيستم هاي پردازش تراكنش به سرويس هاي Grid آسان  است ، زيرا GridTP شبيه مدل برنامه نويسي وinterface ها با ميان افزارهاي سنتي است . علاوه براين  GridTP از هرگونه پروتكل موجود براي تراكنش ها در سرويس هاي وب  (نظير BTP و WS-Transaction و غيره) مستقل است. در نمونه اي از مطالعة GridTP ، يك كاربرد Gridكه   3G  Portal  ناميده مي شود ارائه مي شود تا استفاده از اين معماري را نشان دهد.بنابراين GridTP يك  مكانيزم يكپارچه براي جاسازي مدل X/Open DTP در سرويس هاي Grid‌ ، كه يك انجام قابل رجوع نويدبخش براي آيندة Grid Transaction Processing را فراهم مي آورد ، دارد.

مقدمه :

نظارت كردن در انواع مختلف interface ها براي ادارة مدل هاي منابع معمولي در سيستم هاي مديريت حافظه و داده در محيط Grid هاي  پويا ، توزيع شده و قابل سنجش(scalable) حائز اهميت است. بطور كلي اكنون نمي دانيم كه كدام يك از اين interface ها بايد به عنوان پايه واساس در Platform هاي OGSA در نظر گرفته شود. علاوه بر اين ، اگرچه سيستم هاي مديريت بانك اطلاعاتي (DBMS) جزء اصلي پردازش داده به شمار مي آيند، بسياري از application هاي Grid  بر اساس فايل (file-based) هستند. بسياري از   پردازش هاي middleware تراكنش ها، مانند BEA Tuxedo جهت support  تناسب تراكنش هاي عمومي و دسترسي هاي آشكار در بانك هاي اطلاعاتي توزيع شده، اجرا مي شوند.

علاوه بر اين مدل استانداردِ پردازشِ تراكنشِ توزيع شده كه X/Open Distributed Transaction Processing (DTP) ناميده مي شود، وجود دارد. مدل X/Open DTP يك استاندارد براي نرم افزار پردازشِ تراكنشِ توزيع شده در منابع اشتراكي كه در سايت هاي مختلف و در شبكه قرار دارند مي باشد. آن  به چندين برنامة كاربردي اجازه مي دهد تا اين منابع را به اشتراك بگذارند و اجازه مي دهد تا بصورت هماهنگ در تراكنش هاي عمومي كار كنند. سيستم هاي مديريت بانك اطلاعات رابطه اي اين مدل را با واسط XA فراهم مي كنند. در ضمن بسياري از تراكنش ها يا message processing middleware  مانند(CICS, Encina Tuxedo, IBM, MQ Services و غيره ) از X/Open DTP   پيروي مي كنند. بنابراين جمع كردن مدل

X/Open DTP  در Grid computing  بسيار اميد بخش خواهد بود.

در واقع مدل X/Open DTP  موضوعاتي مانند naming ، امنيت ، پيكربندي و مديريت كه در پردازش تراكنش توزيع شده بسيار اهميت دارند را نمي تواند اداره كند. پيوند زدن سيستم هاي legacy transaction processing به سرويس هاي Grid آسان است ، زيرا GridTP  شبيهِ مدل برنامه نويسي  و     interface ها با middleware هاي سنتي (XA و TX) است.علاوه بر اين GridTP  از هرگونه پروتكل هاي موجود براي تراكنش ها مثل BTP, WS-Transaction و... در وب سرويس ها مستقل است. بنابراين طبيعي است كه OGSA و X/Open DTP را براي فراهم آوردن يك interface استاندارد از دسترسي دادة Grid و پردازش تراكنش با هم تركيب كنيم.

 

مدلX/Open  DTP  :

سازمان بين المللي استاندارد دو استاندارد در رابطه با پردازش تراكنش ها پيشنهاد كرده است:

استانداردهاي OSI-TP (Open System Interconnection – Distributed Transaction Processing )  و OSI-CCR (Open System Interconnection – Commitment, Concurrency  and  Recovery ) دو استاندارد پروتكل هايي را كه بر طبق پروتكل ارتباط(communication) OSI  سنتي ساخته مي شوند، و همچنين پروتكل ها و فرمت هاي پيغام داده ها براي انجام پروتكل دو فازي را تعريف     مي كنند.

 

در ضمن پروتكل هاي ISO-OSI هيچ interface  برنامه نويسي را تعريف نمي كنند.interface هاي      برنامه نويسي توسط پردازش تراكنش توزيع شده (DTP)مشخص مي شوند. مدل X/Open DTP  قسمتهاي سيستم پردازش تراكنش (TP)، مدير تراكنش(TM)،مديران منابع(RMs) و برنامه هاي كاربردي(AP) را مشخص مي كند.(به شكل 1 نگاه كنيد.)

TM : تراكنش هاي عمومي را اداره مي كند و تصميم به شروع آنها و انجام آنها يا به تعويق انداختن آنها را هماهنگ مي كند.

RM : منبع بازيافتي و اشتراكي را كنترل مي كند.

AP : دنباله ای از عملیات که شامل منابع می شود را مشخص می کند.

در این مدل برنامه های کاربردی ، حدود تراکنش ها را بوسیله استاندارد API که بعنوان واسط TX شناخته     می شود ، مشخص می کنند. و کارهای واقعی را با استفاده از واسط محلی RM مخصوص انجام می دهند . مانند : Embedded SQLو  ISAMو غیره . TM و RM ها با استفاده از واسط XA  (که پروتکل ها را برای هماهنگی،انجام کامل و بازگردِ تراکنش ها توصیف می کند) با هم مراوده می کنند. هر فروشنده RM مانند ORACLE و SQL Server و ... باید یک library قبول کننده XA که بوسیله TM مورد استفاده قرار می گیرد ، را فراهم کند.

همچنین این مدل یک پروتکل انجام دو فازی (2PC) و چندین بهینه سازی آن (تراکنش های فقط خواندنی که تنها در یک مرحله می توانند اجرا شوند و تراکنش های اکتشافی که می توانند قبل از 2PC negotiation اجرا شوند یا سقوط کنند ) که به تراکنش ها اجازه می دهد تا زیر تراکنش داشته باشند و یا یک زنجیر شکل دهند را تعریف می کندو نیز timeout هایی را برای تراکنش ها تعریف می کند و غیره . بنابراین ، این مدل یک چارچوب کلی از پردازش تراکنش های توزیع شده که بطور گسترده در صنعت مورد توجه است را ارائه       می کند.

اکنون تعداد زیادی از middleware  های پردازش تراکنش های تجاری ، مدل X/Open DTP   را برآورده می کنند. برای نمونه سیستم BEA Tuxedo  از استانداردهای XA و TX پیروی می کند. در نتیجه Tuxedo  میتواند پایگاه داده های متفاوت را در یک کاربرد ، در صورتیکه جامعیت داده حفظ شود، با هم تلفیق و ترکیب کند . بنابراین استفاده از این مدل در محیط های Grid جالب خواهد بود.  

 

+ نوشته شده در  یکشنبه بیست و سوم تیر 1387ساعت 20:44  توسط یوسف عبدلیان باریکرسفی  | 

Moab Grid Suite® Customer Downloads

Moab Grid Suite® Customer Downloads

Man typing To download any component of Moab Grid Suite, please click on the appropriate link and enter your Cluster Resources username and password:

See our FAQ first for answers to typical installation questions, and see our Common Issues section for support on common technical questions.

If you need support while installing or evaluating Moab Cluster Suite, please contact Cluster Resources for free eval support. We'll answer questions and assist you in setting up your system with Moab at no cost.



To receive support please visit: http://support.clusterresources.com/

+ نوشته شده در  جمعه بیست و چهارم خرداد 1387ساعت 21:11  توسط یوسف عبدلیان باریکرسفی  | 

Manage your Globus Grid with Moab

Manage your Globus Grid with Moab

Get 90-99% Hardware Utilization


Moab Screenshots Moab Grid Suite facilitates easy Globus Grid management in a real-world computing environment.

Moab integrates scheduling, managing, monitoring and reporting across multiple clusters and ensures grid service levels are delivered and workload is processed faster.

Moab can:

  • Seamlessly transition from cluster to grid with support for multiple resource managers, operating systems and hardware
  • Let contributing organizations keep their sovereignty by giving administrators of local clusters the power to set their own policies
  • Improve administration of grids with automated policies and track the results with a visual view of running, idle and downed nodes


+ نوشته شده در  جمعه بیست و چهارم خرداد 1387ساعت 21:7  توسط یوسف عبدلیان باریکرسفی  | 

اينترنتII

اينترنتII

آيكون ساعت شنى با وجود گسترش و بزرگ شدن هر لحظه اينترنت (World wide web) هنوز كند مى چرخد و اينترنت به (World wide wait) تبديل شده است. كاربران چه قديمى و چه جديد فهميده اند بازى درحال عوض شدن و قواعد اينترنت در حال تغيير و نو شدن است تا راه خود را به سوى آنچه اينترنت II ناميده مى شود، پيداكند.

اينترنت كنونى قابليت اجراى برنامه هاى كاربردى نسل بعد را ندارد و درحال جان كندن است.

آيا سرعت كنونى اينترنت براى دريافت و ارسال فايل ها در سال هاى آينده قابل قبول خواهدبود؟ آيا نمى توان در سطح جهان از رايانه هايى كه در حال كار نيستند براى پردازش اطلاعات سنگين استفاده كرد؟ پاسخ سؤالات فوق به راهى ختم خواهدشد با عنوان اينترنت II.

اينترنت برتر از تمام فناورى هايى ظاهر شده است كه جهان را به هم مرتبط مى سازد. اما اين فناورى نيز مانند ساير فناورى هاى ديگر آفت هايى دارد مانند هكرها، ويروسها و غيره.

اينترنت كنونى را در حقيقت مى توان نسخه توسعه يافته شبكه ARPANET ناميد. شبكه اى كه در سال ۱۹۶۹ توسط سازمان ناسا پايه گذارى شد و سپس چند دانشگاه آمريكا به اين شبكه پيوستند و بعد نيز به مرور كشورها عضو اين شبكه يكپارچه شدند.

هدف اصلى و ابتدايى از راه اندازى شبكه آرپانت امورتحقيقاتى و پژوهشى بود. اما اين شبكه بعدها در جهت اهداف سياسى، اقتصادى، فرهنگى و غيره نيز به كار گرفته شد.

تعمير و رفع مشكلات شبكه كنونى اينترنت سخت و دشوار شده است، بنابراين محققان برروى امكان ايجاد شبكه جهانى جديد درحال مطالعه و تحقيق هستند كه اين شبكه با نام اينترنت II شناخته مى شود.

اينترنت كنونى از پروتكل IPV4 استفاده مى كند كه نزديك به ۲۰ سال قدمت دارد و به عقيده بعضى عمر اين پروتكل به سر آمده است. مشكل اصلى در اين پروتكل تعداد محدود آدرس هاى IPV4 براى پشتيبانى از اينترنت فعلى و اينترنت II است. پديده اينترنت II يا Grid Technology پديده اى است كه به عنوان جانشين اينترنت فعلى در بعضى از كشورها شناخته شده است. اينترنت II با داشتن بهترين و سريع ترين ابزارهاى جست وجو (Search)، سرعت بسيار بالا و داشتن امكانات قوى براى تحقيق و پژوهش جايگزين شايسته اينترنت در سال هاى آتى خواهدبود. سرعت انتقال اطلاعات در يك پايگاه اينترنت II ده ها گيگابايت در ثانيه خواهدبود، البته هنوز زمان زيادى براى رسيدن به اينترنت II وجوددارد. اين فناورى حاصل همكارى ۱۳۰ دانشگاه و مركز تحقيقاتى به منظور توسعه اينترنت به صورت شبكه اى با قابليت هاى پيشرفته تر براى تحقيقات و آزمايش هاى دانشگاهى است.

مبناى كار اينترنت II

طراحى اينترنت II كه با اينترنت كنونى نيز سازگار است، مسيرى را در جهت دستيابى به پهناى باند بيشتر و نرخ انتقال اطلاعات افزون تر مهيا مى كند. لذا امتيازات اينترنت II توانايى يكپارچه كردن شبكه هاى محلى و بومى، افزايش اطمينان و افزايش ظرفيت شبكه است.

در اينترنت II برخلاف اينترنت كنونى از پروتكل IPU6 به جاى پروتكل IPU4 استفاده مى شود. (internet protocol version). در اصل شماره IP كه در حال حاضر از ۴ بخش تشكيل شده است در اينترنت II شش بخشى خواهدبود كه اين تغيير پروتكل افزايش پهناى باند را به دنبال خواهدداشت و زمان دسترسى به اطلاعات به زمان حقيقى بسيار نزديك تر مى شود.

كاربردهاى اينترنت II

با تبديل اينترنت كنونى به اينترنت II در تمام گرايش هاى فنى، مهندسى، علوم و غيره مى توان شاهد تغييرات شگرفى بود كه در زير به عنوان نمونه به چند مورد از آنها اشاره مى شود.

* پزشكى: تصويربردارى سه بعدى از اعضاى بدن و معاينه تخصصى پزشكى از راه دور، بدون حضور پزشك در محل بيمار

* سرگرمى: ارائه تصاوير ويديويى با سرعت و كيفيت بسيار بالا به صورت دو طرفه

* آموزشى: ايجاد امكانات آموزشى ميان دو مؤسسه دور از هم و تعامل استاد و دانشجو بدون نياز به حضور استاد و دانشجو در كلاس درس

* نجوم: كنترل تلسكوپ از راه دور و مشاهده اطلاعات دريافتى از تلسكوپ به صورت بلادرنگ

مزاياى اينترنت II

درحقيقت مى توان گفت اينترنت II براى سه منظور مهم طراحى شده است:

۱- افزايش پهناى باند اطلاعاتى

(Band width)

۲- چندكاره بودن شبكه (Multi task)

۳- امنيت بالاى دريافت و اجراى اطلاعات (Securiety)

افزايش پهناى باند

اگر جزو كاربران اينترنت كنونى هستيد، حتماً از كندى سرعت اينترنت شاكى و گله مند هستيد. شما در بهترين حالت dial up سرعتى حدود ۴۴mbps را خواهيد داشت و در صورت استفاده از سرويس هاى ADSL اين سرعت اندكى افزايش يافته و تا ۵۱۲mbps و يا بيشتر هم خواهد رسيد (البته با افزايش هزينه هاى شما) - ممكن است سرعت دريافت و ارسال اطلاعات براى شما اهميت حياتى داشته باشد - در اين موقع مجبور خواهيد بود كه بيشتر هزينه كرده و به سراغ سرويس هاى vsat برويد كه بعد از گرفتن مجوزهاى لازم، اين سرويس براى شما فعال خواهدشد و البته هزينه هاى زيادى را نيز بايد براى استفاده از اين سرويس به صورت ماهيانه پرداخت كنيد.

مواردى كه در بالا عنوان شد تنها گوشه هايى از مشكلات دستيابى به اينترنت كنونى است، يكى از مهم ترين اهداف اينترنت II دستيابى به پهناى باند بيشتر براى كاربران است كه همزمان با افزايش سرعت دريافت و ارسال اطلاعات درخواستى، پهناى باند تخصيص يافته به كاربران و مشتركان نيز در اين سرويس افزايش پيداكند.

چندكاره بودن شبكه

تنها مزيت اينترنت II در افزايش پهناى باند خلاصه نمى شود. آيا نمى توان از سرعت و قدرت رايانه ها در مواقعى كه كاربران با آن كارى انجام نمى دهند براى انجام امور محاسباتى دقيق و سريع بهره گرفت؟

در اينترنت II امكانى فراهم شده است تا كاربران در صورت تمايل و اعلام آمادگى شخصى جهت دراختيار گذاشتن منابع سخت افزارى خود در شبكه به صورت رايگان قادر به انجام اين كار باشند.

كافى است كه شما با وصل شدن به آدرس يك پايگاه اينترنتى كه از پروتكل هاى اينترنت II پشتيبانى مى كند، Screen saver دلخواه خود را نصب كرده و در مواقعى كه از رايانه خود استفاده نمى كنيد به ساير كاربران اجازه دهيد كه از منابع سخت افزارى رايانه شما جهت پردازش هاى سنگين استفاده كنند و درحقيقت رايانه خود را درمواقع بيكارى وقف امور پژوهشى و تحقيقاتى كنيد تا شما نيز در پيشرفت علم نقشى برعهده داشته باشيد و نيز با ايجاد امكان استفاده از منابع سخت افزارى ساير رايانه ها، رايانه خانگى خود (pc) را به ابرقدرتى بى رقيب تبديل كنيد.

امنيت بالاى دريافت و ارسال

اينترنت فعلى با مشكلات امنيتى بسيارى دست به گريبان است. هكرها، فيشرها و غيره همواره در كمين نشسته اند تا در صورت كوچك ترين غفلت شما و يا سرويس دهنده شما اطلاعات شما را دزديده و به حراج بگذارند.

هر از چندگاهى نسخه هاى اصلاح شده آنتى ويروس ها، آنتى اسپم ها، آنتى تروژن ها و غيره برروى شبكه دراختيار كاربران قرارمى گيرد و شما مجبور خواهيدبود براى در امان ماندن از شر اين ميهمان هاى ناخواسته آنتى ويروس خود را به روز كنيد (up to date) با هكرها چه مى كنيد؟ هكرها هميشه يك قدم از شما جلوتر هستند و هر زمان كه اراده كنند سدهاى پولادين را شكسته و به web site شما نفوذ خواهندكرد و اطلاعات شما را در چشم برهم زدنى به يغما مى برند. براى جلوگيرى از نفوذ اين دزدان دنياى ديجيتال چه فكرى كرده ايد؟

اينترنت II سعى كرده است تا حدودى مشكلات امنيتى موجود در اينترنت كنونى را برطرف نمايد و با شش بخشى شدن آدرس هاى اينترنتى تا حدودى امنيت در شبكه ها بالاتر خواهدرفت و از نفوذ هكرها نيز جلوگيرى به عمل خواهدآمد.

فرايندهاى اصلى اينترنت II

در اينترنت II فرايندهاى زيادى وجودخواهدداشت. اما سه فرايند اصلى اين پديده تكنولوژيك عبارتند از:

۱- گريدهاى اطلاعاتى (Data grid)

۲- گريدهاى جوينده (Scavenging Grid)

۳- گريدهاى محاسباتى (Computing Grid)

* Data grid

اين gridها وظيفه ذخيره سازى اطلاعات و سپس ارائه آن به كاربران را برعهده دارند.

مشتريان اين گريدها بدون توجه به موقعيت مكانى قابليت دسترسى به اين اطلاعات را دارا خواهندبود.

در اين نوع گريد دستگاه هايى كه با سيستم ارتباط دارند مسئول به اشتراك گذارى اطلاعات هستند.

*Scavenging Grid

اين گريدها به صورت مداوم به دنبال ظرفيت هاى خالى در اينترنت هستند تا از منابع آزاد درجهت پردازش هاى سنگين بهره بگيرد و البته با كسب اجازه قبلى از صاحبان سيستم ها

*Computing Grid

اين گريدها كه بعضى آن را جزئى از scavenging Grid مى دانند، وظيفه استفاده از منابع بلااستفاده رايانه هاى شخصى را در جهت پردازش هاى نرم افزارى برعهده دارد و سرعت پردازش اطلاعات در اين سيستم ها افزايش چشمگيرى خواهدداشت و لذا مى توانيم نرم افزارهاى سنگين را برروى رايانه هاى قديمى اجرا كرده و نياز به ارتقاى سيستم ها تا حدودى كاهش پيداخواهدكرد

+ نوشته شده در  جمعه سی ام فروردین 1387ساعت 18:3  توسط یوسف عبدلیان باریکرسفی  | 

چه تفاوت و شباهتهايي ميان شبکه اينترنت و سيستم گريد وجود دارد؟

 

GRID آرمانی فراتر از  دهکده جهانی

grid

پژوهشگاه دانش هاي بنيادي از موسسات پيشتاز علمي ايران و منطقه است که سالها پيش با ايجاد اولين اتصال به شبکه اينترنت ، ايران را به شاهراه جهاني اطلاعات و ارتباطات پيوند زد و اکنون مي کوشد در راستاي همکاري در ساخت بزرگترين مجموعه آزمايشگاهي فيزيک دنيا ، زمينه اتصال ايران به سرويس اطلاعاتي بسيار عظيمي موسوم به گريد را فراهم کند.
بدون شک مشارکت در اين کار علمي بزرگ که هزاران محقق وکارشناس از سراسر دنيا را به خود جذب کرده ، گام بسيار مهمي است تا مرزهاي دانش را پيش ببريم و فناوري زيادي از آن ياد بگيريم و در صحنه هاي علمي بزرگ حضور يابيم.
با توجه به اهميت اين مشارکت از مجيد عرب گل ، مسوول طرح گريد در پژوهشگاه دانش هاي بنيادي (IPM) درباره چگونگي ورود به اين شبکه عظيم پرسيديم شبکه اي که همانند يک تور عمل مي کند و در واقع اين تور بزرگ گسترده شده و بزودي همه ما در آن خواهيم افتاد.


چه ضرورتي يا ضرورت هايي باعث شدند تا سيستم گريد (تور) مطرح شود؟
با الحاق ايران به جمع کشورهاي برخوردار از سرويس اطلاعاتي عظيم گريد ، امکان به اشتراک گذاردن توان محاسباتي و ذخيره داده ها ميان رايانه هاي موجود در شبکه در سراسر جهان فراهم مي شود. درواقع با اتصال رايانه شخصي به گريد، آن رايانه به يک سوپر رايانه با قدرت محاسباتي فوق تصور تبديل مي شود. در اين ميان شتاب دهنده ذرات (LHC) که بخشي از آن را متخصصان ايراني ساخته اند، قرار است از امسال فاز عملياتي خود را آغاز کند تا با شتاب دادن به ذرات اتمي ، به دنياي شگفت انگيز و ناآشناي ريزذرات بنيادي وارد شود و رازهاي جهان را به تصوير کشد؛ اما اين ماشين عظيم که در خاک 2کشور سوئيس و فرانسه واقع شده است و بزرگترين دست ساخته علمي بشر ناميده مي شود زماني به گريد احتياج پيدا کرده که حجم داده هاي آن به صورت فزاينده اي درآمد. اين ماشين علمي هر ساله يک پتا بايت داده توليد مي کند. اين مقدار معادل 1000 برابر داده هايي است که در تمام کتابهاي چاپي در مدت يک سال و در کل سياره ما به چاپ مي رسد. براي آن که عظمت ماجرا را بيشتر درک کنيم بد نيست مقايسه ديگري انجام دهيم.
بياييد تمام داده هايي را که بشر درطول يک سال در تمام سياره زمين توليد مي کند، مثل کتابهاي چاپي ، الکترونيکي ، ايميل ها، نامه ها، عکسها و فيلمهايي که به صورت ديجيتال تهيه مي شود را در نظر بگيريد. داده هاي خالي که LHC در يک سال به تنهايي توليد خواهد کرد، يک درصد همه اين داده ها خواهد بود. اگر همه اين داده هاي توليد شده در يک سال را روي سي دي هاي رايج بريزيد و اين لوحها را روي يکديگر قرار دهيد، ستوني از سي دي با ارتفاع 20 کيلومتر ايجاد خواهد شد.

grid2



از چه زماني همکاري هاي ايران با سيستم گريد شروع شد و اين همکاري ها در چه قالبي شکل گرفتند؟
پژوهشگاه دانش هاي بنيادي به عنوان يکي از پيشرفته ترين مراکز علمي منطقه با اعتبار جهاني از چند سال پيش تاکنون در بخشي از طرح ساخت بزرگترين مجموعه آزمايشگاهي دنيا در زمينه فيزيک ذرات بنيادي و فيزيک هسته اي CERN (سرن) مشارکت دارد که درخصوص همکاري هاي علمي خود با اين طرح تلاش دارد گره اي از شبکه جهاني اشتراک توان محاسباتي و اطلاعاتي رايانه هاي متصل به اينترنت را در کشور ايجاد کنند. در واقع آزمايش LHC در سرن انجام مي شود و پژوهشگاه IPM به عنوان عضوي از طرح CMS که احتمالا در سال 2008 آغاز به کار خواهد کرد، داده هاي بسيار زيادي را توليد خواهد کرد که براي تحليل آنها نياز به پياده سازي يک گره از گريد در کشور داريم و با نصب نرم افزارهاي لازم تا چند ماه آينده آماده خواهد شد. وظيفه اين گره امکان استفاده از داده هاي آزمايش LHC و توان محاسباتي گريد جهاني براي محققان اين رشته را فراهم مي کند که پژوهشگاه دانش هاي بنيادي در حال حاضر هسته گريد خود را به عنوان عضوي از ارگان مجازي طرح CMS و LHC تشکيل داده و کار راه اندازي گريد داخلي و عضويت در گريد جهاني در سرن را پيگيري مي کند.

LHC



در حال حاضر در طرح شتاب دهنده ذرات که در سرن انجام مي شود چه کشورهايي شرکت دارند ، نقش ما در اين طرح چقدر است؟
در طرح LHC که قسمت اصلي آزمايشگاه سرن خواهد بود ، شتاب دهنده بزرگي در ژنو طراحي شده است و حدود 2300 دانشمند از 159 کشور روي اين طرح کار مي کنند. ما هم سعي کرديم با ايجاد يک گره گريد يعني يک سري رايانه شاهراهي براي انتقال داده ها با سرن ايجاد کنيم که دانشگاه هاي کشور به مرکز IPM وصل مي شوند و از اين راه ارتباطشان برقرار مي شود. اين گريد اين امکان را ايجاد مي کند که نه تنها پژوهشگران ذرات بنيادي و فيزيک مي توانند از آن استفاده کنند، بلکه بقيه پژوهشگران که در شاخه هاي ديگر علوم مشغول به فعاليت هستند هم مي توانند از اين پل ارتباطي قوي استفاده کنند.

با توجه به وجود رايانه هاي سريع و کلاستر باز هم براي محاسبات پيچيده به گريد احتياج است؟
وقتي آزمايش هاي LHC انجام شوند ، معادل 20 ميليون سي دي در سال توليد خواهد داشت. به طور کلي در حال حاضر، توليد علم و حل مسائل پيچيده اي که دانشمندان با آنها مواجه مي شوند ، بدون استفاده از رايانه هاي سريع امکان پذير نيست و با وجود پيشرفت هاي صورت گرفته در ساخت رايانه ها هنوز نه تنها يک رايانه بلکه خوشه اي از رايانه ها و حتي ابر رايانه ها هم پاسخگوي نياز به محاسبات و تحليل حجم عظيم داده هايي که دانشمندان در برخي طرحها با آن مواجه هستند ، نيست.
اين امر آنها را به فکر ايجاد يک فناوري جديد براي به اشتراک گذاردن توان محاسباتي رايانه هاي متصل به اينترنت انداخت که از آن به عنوان گريد ياد مي شود. از سوي ديگر ، طبق برآوردها سرعت پردازنده رايانه ها هر 18 ماه و سرعت انتقال اطلاعات در شبکه هر 9ماه 2 برابر مي شود. در نتيجه ، رشد سرعت ارتباطات از سرعت رايانه ها بيشتر است و اين واقعيت کمک مي کند تا هر چه سريع تر فناوري گريد به آرمان خود نزديک تر شود.

حتي با وجود سوپر رايانه ها باز هم به اين سيستم احتياج خواهيم داشت. در اين صورت ، ديگر از جهت دسترسي به سوپر رايانه ها در تنگنا نخواهيم بود؟
در واقع ما در گريد به جاي آن که کل داده هايمان را در يک رايانه ذخيره کنيم ، آن را به بخشهاي مختلفي تقسيم کرده اند و در واقع از امکانات اين سيستم براي ذخيره سازي حجيم ترين داده ها استفاده مي کنيم.

lhc

 

 

 

 

 

 

 

 

 

نمونه هايي مشخص از توان محاسباتي گريد


پروژه نجومي tloME@SETI نمونه اي از قدرت محاسباتي گريد است که از آن به عنوان Internet Computing هم ياد مي شود.
در اين پروژه که توسط دانشگاه کاليفرنيا (برکلي) مديريت مي شود ، افرادي که رايانه متصل به اينترنت دارند مي توانند با نصب نرم افزار SETI@ome در اين پروژه مشارکت کنند.
هدف اوليه اين پروژه پيدا کردن موجودات هوشمند در ساير نقاط جهان است که اين کار با تحليل امواج راديويي رسيده به رصدخانه Arecibo واقع در کشور پورتوريکو و روي رايانه هاي عضو اين پروژه صورت مي گيرد.
جالب اينجاست که اين پروژه تاکنون توانسته 15 Tflops (ترافلاپز واحد سرعت رايانه است) را با هزينه کمتر از 500هزاردلار فراهم کند.
در حالي که ابررايانه IBM'S ASCLL White با توان محاسباتي 12Tflops حدود 110 ميليون دلار هزينه در بر دارد. پيشرفت علمي در رشته هايي مانند علوم نانو ، پزشکي ، ژنتيک و همين طور مقوله هايي مانند تحقيقات و شبيه سازي هاي هواشناسي ، نجومي و دريايي دانشمندان را با حجم عمليات رياضي مواجه مي کند که از توان هيچ رايانه اي به تنهايي برنمي آيد بنابراين گريد به عنوان روشي که به کمک آن در زماني معقول مي توان داده ها را تحليل کرد بروز پيدا مي کند البته غير از دانشمندان که مشتريان اصلي گريد بوده و خواهند بود ، از هم اکنون گروههاي بسياري به فکر گسترده کردن دامنه استفاده از گريد هستند که اقتصاددان ها در راس اين گروه قرار دارند

با توجه به اين که در حال حاضر سوپر رايانه ها جزو فناوري هايي محسوب مي شوند که ما از آنها محروم هستيم بنابراين گريد گزينه بسيار خوبي براي پژوهشگران ما محسوب مي شود. به اين ترتيب و با شرکت در طرحهاي مختلف حتي مي توان از سوپررايانه هاي متعدد استفاده کنيم.

استفاده از اين سيستم تا به حال در دنيا شروع شده است؟
در حال حاضر ، هر کشوري در اروپا و بعضي کشورهاي آسيايي مانند چين درصدد توسعه گريد داخلي و اتصال به دهکده جهاني گريد هستند و ايران هم بايد به طراحي نرم افزار و زيرساختار گريد داخلي خود اقدام کند. در حال حاضر ، اگر چه تنها يک شبکه اينترنت در سطح جهان مطرح است گريدهاي مختلف ملي ، بين کشوري و يا قاره اي وجود دارند و در حال رشد هستند و در اين شرايط وجود سازمان هاي مجازي مطرح مي شود که براي حل مساله از منابع انساني ، رايانه ها ، داده هايي که از طريق آزمايشگاه ها توليد مي شوند ، استفاده مي کنند. بيشتر کشورهاي   امريکا ، چين ، پاکستان ، تايلند ، سنگاپور و... تاکنون به صورت ملي و يا طرحي در گريدهاي مختلف شرکت داشته اند.

چه تفاوت و شباهتهايي ميان شبکه اينترنت و سيستم گريد وجود دارد؟
شبکه اينترنت اطلاعات پردازش شده را در اختيار مردم مي گذارد ولي گريد اطلاعات خام و توان محاسباتي ، سنسورها و دستگاه هاي آزمايشگاهي را و در واقع گريد اينترنت را از يک محيط ساکن به يک محيط قابل برنامه ريزي و پويا تبديل مي کند. به عبارتي ديگر، فناوري گريد بر خلاف وب که سرويسي براي مبادله اطلاعات در اينترنت است ، سرويس نرم افزاري براي به اشتراک گذاردن توان محاسباتي و فضاي ذخيره داده ها بين رايانه هاي متصل به اينترنت است و هدف نهايي آن هم ايجاد يک شبکه وسيع جهاني محاسباتي و اطلاعاتي است.
گريد در واقع سرويسي جديد است که روي اينترنت سوار مي شود و به اين ترتيب مي توان اطلاعات خامي را که تنها دانشمندان براي تبادل اطلاعات به آن نيازمند هستند در بستر اينترنت انتقال داد.

aa

پس تنها متخصصان و دانشمندان از گريد استفاده مي کنند. آيا ممکن است در آينده اي نزديک مردم عادي هم از محاسن آن بهره مند شوند؟
پيش بيني مي شود همان طور که اينترنت در زندگي مردم نقش داشته ، گريد هم نقش بسزايي داشته باشد.در واقع در آينده و در جهت پيامدهاي اين فناوري مردم مي توانند از طريق اينترنت ، توان محاسباتي رايانه خود را از طريق شرکتهاي کارگزار در معرض اجاره قرار دهند و افرادي که نياز به اين توان محاسباتي دارند آنها را اجاره کنند. به اين ترتيب ، سرويس هاي گريد که روي اينترنت قرار مي گيرند ، تا چند سال آينده يکي از تکنولوژي هاي مطرح دنيا خواهند شد.

شما براي گسترش سيستم گريد در کشور چه اقداماتي را انجام داده ايد و آيا مي توان از اين طريق بخشهاي ديگر تجاري ، اقتصادي و... از مزاياي آن استفاده کنند.
بايد در ابتدا گريد در داخل کشور معرفي شود و در انتها پس از جاافتادن اهميت مساله گريد ملي راه اندازي شود. با اتصال دانشگاه هاي کشور به گريد از طريق پژوهشگاه دانشهاي بنيادي به نوعي به گريد ملي دست خواهيم يافت.
البته اقدامات ما همگي در خصوص e-science و در جهت گسترش ارتباطات علمي و پژوهشي است. در واقع ما تنها سرويس هاي اينچنيني را به کاربران مي دهيم.

da

براي حفظ ايمني و تامين مسائل ايمني کاربران گريد چه اقداماتي صورت گرفته؟
در حال حاضر هر کس با گرفتن امضاي الکترونيکي از يک موسسه معتبر مي تواند وارد گريد شود و به عنوان يک عضو از امکانات آن استفاده کند. موسسه موردنظر هم سطح دسترسي هر يک از کاربران را مشخص مي کند. البته از آنجا که هنگام تحويل امضاي الکترونيکي که همچون گذرنامه اي براي صاحب آن براي ورود به شبکه گريد محسوب مي شود، تعهداتي از فرد گرفته مي شود تا در صورت بروز مشکل بتوان براحتي شخص خاطي را شناسايي و تعقيب کرد. اگرچه ممکن است در اين سيستم هم هکرهايي وارد شوند اما به روز شدن و پيشرفت ميان افزارهاي اين سيستم براي حفظ امنيت بيشتر انجام مي شود

+ نوشته شده در  شنبه بیست و هفتم بهمن 1386ساعت 18:1  توسط یوسف عبدلیان باریکرسفی  | 

راهنمای راه اندازی یک server/client

فرض كنيد شما يك برنامه با كاربرد بسيار حرفه اي داريد كه توانايي هاي زيادي مانند حافظه ُ سرعت و غيره از كامپيوتر شما مي طلبد و شما در دفتر كار خود چند پي.سي داريد. خوب شما در آن واحد نمي توانيد معمولا با چند پي سي به طور همزمان كار كنيد مگر اين كه يك هشت پا با مغزي Multi thread باشيد. پس معمولا شما پشت فتوشاپ يا اتوكد يا هر نرم افزار كند ديگري نشسته ايد و بيشتر وقت خود را به حرص خوردن و نگاه كردن به ساعت شني ويندوز / مك يا لينوكس تان مي گذرانيد و اين در حالي است كه دو يا سه كامپيوتر ديگر در محل كار شما بيكار هستند.

البته راه حل هاي Grid Computing وجود دارند كه اجازه مي دهند شما چندين ماشين را به هم متصل كرده و از حافظه و توان محاسباتي آنها به شكل يك پارچه استفاده كنيد ولي اين راه حل ها براي كاربران عادي بسيار گران / مشكل و دور از دسترس هستند. اينجاست كه این را ه حل ساده مفهوم پیدا می کند.

هدف من اين است حالا كه اين امكان وجود ندارد كه از توان چند كامپيوتر به شكل يكپارچه براي اجراي يك برنامه - فرضا فتوشاپ - استفاده كنيم بياييم چند نسخه از آن را در چند كامپيوتر جدا گانه راه اندازي كنيم كه هر كدام منابع خودشان را مصرف كنند و در نهايت كنترل همه آنها را به دست شما بدهيم. به اين ترتيب شما در حالي كه مشغول باز كردن يك فايل بزرگ در فتوشاپ هستيد مي تواني يك نسخه ديگر فتو شاپ را به شكل از راه دور -Remote- بر روي يك كامپيوتر ديگر باز كنيد و به كار خود ادامه دهيد.

حالا نقشه اجرايي

بياييد فرض كنيد شما يك كامپيوتر Master ويندوز اكس پي و چندين ماشين Slave لينوكس ارزان قيمت داريد. قرار است شما مديريت كل سيستم را از پشت ويندوزتان كه خوش دست تر و كار با آن راحت تر است انجام دهيد. فرض مي كنيم شما يك شبكه اترنت 100 مگابيتي هم براي اتصال اين ماشين ها به يكديگر داريد و همه اين ماشين ها يكديگر را در شبكه TCP/IP شما مي بينند.


نرم افزار مورد نياز به غير از سيستم عامل

Real VNC
Client and Server Versions for Both Windows XP and Linux

Cross Over office
Linux

خوب حالا بر روي ماشين هاي لينوكس Cross Over office را نصب كرده و بر روي آن فتوشاپ نصب مي كنيم. حالا ما چندين ماشين لينوكس داريم كه فتوشاپ بر روي آنها نصب شده و بدون افت توان كار مي كند. حالا مساله اين است كه چگونه همه آنها را از ماشين ويندوزمان كنترل كنيم؟

كافيست كه سرويس VNC را بر روي ماشين هاي لينوكس اجرا كنيد :

vncserver

وي.ان.سي چند سوال ساده از شما مانند اسم و كلمه عبور و نام مشتري اكس.ويندو مي پرسد.

اين كار را بر روي تمام ماشين هاي لينوكس تكرار كرده و به هر كدام نام جديدي بدهيد.

در ماشين ويندوز VNC client را نصب و اجرا كنيد و به تمام ماشين هاي لينوكس تك تك Login كنيد. حالا كافي است كه در ترمينال TWM اين دستور را اجرا كنيد:

Photoshop

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

اكنون مي توانيد كمي از طعم شيرين Virtualization و Grid Computing را بدون داشتن سرور هاي گران قيمت بچشيد.
+ نوشته شده در  جمعه دوازدهم بهمن 1386ساعت 12:23  توسط یوسف عبدلیان باریکرسفی  | 

Grid computing چیست ؟

Grid computing چیست ؟
حدود 33 سال از به ‌وجود آمدن اینترنت می‌گذرد و از سال 1989 که وب پدید آمد، بیشتر مردم از آن استفاده می‌کنند و به‌صورت بخشی از زندگی ایشان در آمده است. شاید علت این استفاده زیاد از اینترنت، استاندارد باز آن بوده است که امکان ارتباط کامپیوترهای مختلف را با یکدیگر مهیا می‌سازد. با استفاده از اینترنت می‌توانید از هر کامپیوتری که به‌آن متصل است، ایمیل بفرستید و شخصی در آن طرف دنیا با کامپیوتری کاملاً متفاوت با کامپیوتر شما، آن ایمیل را به ‌راحتی بخواند و به ‌شما ایمیل دیگری بفرستد. امروزه تقریباً تمامی ‌شرکت‌ها و سازمان‌های بزرگ، برای تبادل اطلاعات و فرستادن ایمیل به‌مشتریان خود از اینترنت استفاده می‌کنند. پرسش این است که آیا به‌راستی امکاناتی که اینترنت در اختیار ما قرار می‌دهد، فقط در فرستادن ایمیل و داشتن وب‌سایت خلاصه می‌شود؟ آیا اینترنت امکان استفاده از منابع سخت‌افزاری سیستم‌های دیگر را نیز به‌ ما می‌دهد؟ پس از اینترنت چه ابزار یا بستری خواهد آمد؟ 

امروزه فناوری جدیدی به‌ نام Grid به ‌عرصه ارتباطات قدم نهاده است که براساس آن با دانلودکردن یک محافظ نمایشگر مخصوص می‌توانیم به‌کامپیوترهای شخصی خود اجازه دهیم که وقتی از آن استفاده نمی‌کنیم، به ‌شبکه جهانی متصل شوند و به ‌سیستم‌های بزرگ تحقیقاتی اجازه دهند از منابع آزاد و بلااستفاده سیستم ما استفاده نماید. کامپیوترهای امروزی مانند مغز انسان معمولا از بخش کوچکی از توانایی‌های خود استفاده می‌کنند و اغلب به‌ صورت غیرفعالند و منتظر اطلاعات ورودی می‌مانند. تصور کنید که اگر از منابع سخت‌افزاری این همه کامپیوتر غیرفعال استفاده شود و همه در یک کامپیوتر جمع شود، چه دستگاه پرقدرتی خواهیم داشت. Grid Computing با ‌کمک به اینترنت زمینه‌ای را فراهم آورده است که بتوان با استفاده از آن، از منابع سخت‌افزاری سیستم‌های دیگر نیز استفاده نماییم.

ممکن است Grid برای افراد مختلف معانی متفاوتی داشته باشد، اما اگر بخواهیم تعریف ساده‌ای از آن داشته باشیم، می‌توانیم بگوییم Grid Computing در واقع به‌شما اجازه می‌دهد با استفاده از منابع سیستم‌های متصل به‌ شبکه و  ایجاد یک منبع بزرگ از سرویس‌ها و امکانات این سیستم‌ها، مرکزی بزرگ و قدرتمند به‌ وجود آوریم که توانایی انجام‌دادن عملیات بسیار پیچیده‌ای را داشته باشد که یک سیستم به‌تنهایی نمی‌تواند انجام دهد. به‌نحوی که از دید استفاده‌کنندگان این سیستم‌های بزرگ، این عملیات تنها از طریق یک سیستم انجام می‌شود.

Grid Computing در حقیقت نسل جدیدی از شبکه‌های توزیع یافته است و همانند اینترنت به‌ کاربران خود اجازه می‌دهد فایل‌ها را به ‌اشتراک بگذارند. به‌علا‌وه، منابع مشترکی از اطلاعات را برای استفاده‌کنندگان فراهم می‌کند. با استفاده از این سیستم‌ها می‌توان منابع کامپیوترهای ناهمگون را به‌اشتراک گذاشت. هدف اصلی Grid استفاده از این منابع مشترک مانند قدرت پردازنده، پهنای باند، پایگاه اطلاعاتی و در اختیار گذاردن آن برای ‌کامپیوتر مرکزی است.
انواع Grid  
سیستم‌های Grid با توجه به‌ نیازهای کاربران می‌توانند در انواع مختلف مورداستفاده قرار گیرند. اغلب این سیستم‌ها بر اساس نوع کاری که انجام می‌دهند، طبقه بندی می‌شوند. از سه نوع اصلی این سیستم می‌توان از Gridهای اطلاعاتی، Gridهای جوینده منابع و Grid‌های محاسباتی نام برد.

Gridهای اطلاعاتی یا Data Grid موظفند اطلا‌عات را ذخیره کنند و آن‌ها را در اختیار کاربران قرار دهند. کاربران این سیستم‌ها بدون آن‌که از موقعیت جغرافیایی و مکانی این اطلاعات آگاه باشند، به ‌اطلاعات دسترسی دارند. مثلاً تصور کنید که دو دانشگاه در دو سوی دنیا یکی در ایران و دیگری در انگلستان روی یک مطلب علمی‌مشترک تحقیق می‌کنند و هر یک از آن‌ها اطلاعات خاص خود را ذخیره می‌کند و می‌خواهد دانشگاه دیگر نیز به ‌برخی از ‌این اطلاعات (نه تمامی‌آن) دسترسی داشته باشد. این دانشگاه‌ها می‌توانند از یک Data Grid استفاده کنند و اطلاعات خود را با ضریب امنیتی بالایی با هم به‌اشتراک بگذارند.
 
در این نوع Grid دستگاه‌های متصل به‌سیستم نیاز به‌قدرت زیاد ندارند و فقط مسئول به ‌اشتراک گذاشتن اطلاعات هستند. از طرف دیگر Grid ‌های محاسباتی یا Computational Grid از آن جا که نیاز زیادی به ‌قدرت پردازنده‌ها دارند، باید از ماشین‌هایی با قدرت بسیار بالا استفاده نمایند.

یکی دیگر از انواع Gridها، سیستم‌های جوینده منابع یا Scavenging Grid است. این سیستم‌ها از تعداد زیادی کامپیوتر شخصی استفاده می‌کنند و به‌صورت مداوم به‌دنبال ظرفیت‌ها، منابع آزاد  و چرخه پردازنده (CPU cycle)   کامپیوتر‌های  متصل به ‌Grid هستند و از این منابع استفاده می‌نمایند. البته صاحبان این کامپیوترهای شخصی باید قبلا‌ً اجازه استفاده از منابع بدون استفاده خود را بدهند.
 
اهمیت Grid Computing  
تقریبا در همه سازمان‌ها و شرکت‌های بزرگ تعدادی کامپیوتر بدون استفاده وجود دارد. مثلاً سرورهای یونیکس از تقریباً ده تا بیست درصد از ظرفیت حقیقی خود استفاده می‌کنند و کامپیوترهای شخصی حدوداً از 95 درصد از ظرفیت خود اصلاً استفاده نمی‌کنند.  با استفاده از Grid Computing در یک سازمان یا شرکت بزرگ می‌توان از منابع بلا‌استفاده کامپیوترهای سازمان  کمال استفاده را برد و سرعت پردازش اطلاعات در سیستم‌هایی که با کمبود حافظه مواجهند را جبران نمود. از طرف دیگر، سرعت نرم‌افزارهایی که از این منبع بزرگ سخت‌افزاری استفاده می‌کنند، بسیار بالاتر خواهد بود و در نتیجه می‌توانیم به ‌فکر درست کردن نرم‌افزارهایی با قابلیت‌های بالاتر باشیم و منابع بیشتری را در اختیار استفاده‌کنندگان قرار دهیم.

Grid Computing می‌تواند مزایای زیادی برای مدیران و برنامه‌نویسان داشته باشد. مثلاً با آن می‌توان  برنامه‌هایی که نیاز به‌حافظه زیادی دارند را اجرا نمود و به ‌اطلاعات، دسترسی آسان‌تری پیدا کرد. اصولا ًGrid Computingمی‌تواند به‌سازمان‌ها و شرکت‌های بزرگی که سرمایه هنگفتی را در IT هزینه کرده‌اند، کمک کند از سیستم‌های خود حداکثر استفاده را ببرند.

فناوری‌های Grid در واقع می‌توانند از منابع و سیستم‌های غیرمتمرکز پشتیبانی کنند و امکان ارتباط سیستم‌ها را با هم فراهم ‌سازند. وقتی برای اولین بار فناوری Grid ابداع شد، هدف آن تنها  به‌اشتراک گذاشتن منابع سیستم و در اختیارداشتن سیستمی‌قدرتمند بود و به‌طور کلی بیشتر در اختیار مؤسسات تحقیقاتی قرار داشت. اما امروزه از Grid توقع بیش‌تری می‌رود و اهمیت بیشتری پیدا کرده است؛ به‌ویژه در تجارت الکترونیک و سیستم‌های تجاری غیرمتمرکز و توزیع‌یافته. به‌ عنوان نمونه، مدل تجارت الکترونیک B2B را در نظر بگیرید که دو مؤسسه تجاری اطلاعات خود را از طریق اینترنت با هم مبادله می‌کنند. Grid نیز می‌تواند کاری مشابه ‌را انجام دهد و دو یا چند سیستم تجاری را به‌هم مرتبط سازد. به‌طوری که  بتوانند اطلاعات خود را به‌اشتراک بگذارند. فناوری Grid همچنین می‌تواند راه‌حل مناسبی برای افزایش دسترسی، قابلیت اطمینان و امنیت سیستم‌های غیرمتمرکز نیز باشد.    
ابزار قدرتمند Globus 
یکی از قدرتمند‌ترین ابزارهای ایجاد، کنترل و مدیریت سیستم‌های Grid، ابزار Globus است. پروژه Globus حدود سال 2003 به‌صورت عملی درآمد. این پروژه حاصل تلاش مشترک محققان و برنامه‌نویسان Grid در سرتاسر دنیاست که بر حول چهار محور بنا شده است: تحقیق، ابزارهای نرم‌افزاری، آزمون و نرم‌افزار‌ها. این ابزار در نسخه 2.2 خود خدمات بسیاری به‌مدیران سیستم‌های Grid ارائه می‌کند که   می‌توان به امنیت، مدیریت منابع و مدیریت دقیق  اطلاعات اشاره کرد. Globus با در اختیار گذاشتن APIها و فایل‌های Header زبان C برای ساختن و کامپایل برنامه‌ها به ‌برنامه‌نویسان اجازه می‌دهد سیستم‌های خود را به Grid متصل نمایند و به ‌مدیران امکان می‌دهد منابع متصل به Grid را به‌راحتی مدیریت کنند.

اضافه براین، Globus با در اختیار گذاشتن Componentهایی مخصوص، کار مدیران Grid را آسان‌تر می‌کند. مثلاًGlobus یک ابزار بسیار کارا به‌نام Commodity Grid) COG) که زبان‌های برنامه‌نویسی مانند Python، جاوا و فناوری‌های روز مانند سرویس‌های وب، کوربا و RMI را می‌شناسد و می‌تواند در دو بخش تهیه نرم‌افزارهای سازگار با Grid و مدیریت سیستم‌های Grid به ‌ما کمک کند. البته نسخه 2.2 ابزار Globus در برخی موارد ضعف‌هایی نیز دارد. این نسخه از سرویس‌هایی مثل مدیریت Life-Cycle یا چرخه زندگی نرم‌افزار و سیستم‌های ذخیره و بازیابی پشتیبانی نمی‌کند. البته نسخه جدید Globus یعنی نسخه 3 از آن جا که سعی داشته است با معماری باز سرویس‌های Grid یا همان the Open Grid Services Architecture) OGSA) هم‌خوانی داشته باشد، توانسته‌است بسیاری از نقاط ضعف نسخه قبلی را رفع کند.
نگاهی به‌اجزای Grid
اجزای تشکیل دهنده grid عبارتند از:

- رابط کاربر

- اجزای امنیت‌

- مدیریت کنترل کار سیستم (Workload management)

 - زمانبند (Scheduler)

 - مدیریت اطلاعات (Data Management)

 - مدیریت منابع (Resource management)

در این قسمت به‌صورت مختصر در مورد هر یک از این اجزا توضیح داده می‌شود. دسترسی به ‌اطلاعات در Grid   اهمیت شایانی دارد و رابط کاربر یا User Interface این مسئولیت مهم را عهده‌دار است. رابط کاربر می‌تواند یا در برنامه‌ای که کاربر از آن مستقیما استفاده می‌کند یا در ابزارهای  مدیریتی Grid که مورد استفاده مدیر سیستم است، نقش ایفا کند. همانطور که شما برای استفاده از برق فقط وسیله برقی خود را به ‌پریز برق متصل می‌کنید و لازم نیست از مکان منبع یا منابع اصلی این قدرت اطلاعی داشته باشید، استفاده کننده سیستم Grid نیز الزاماً نباید از پیچیدگی‌های داخل این سیستم‌ها مطلع باشد.  مثال دیگر این‌که، شما از مرورگر وب جهت استفاده از اینترنت استفاده می‌کنید؛ بدون این‌که از مکان سرور وب سایت اطلاعی داشته باشید و تنها با وارد کردن آدرس سایت موردنظر، وب سایت آن در مرورگر نمایش داده می‌شود. اینترفیس Grid نیز باید مانند مرورگر باشد. یعنی استفاده‌کننده Grid نیز از پیچیدگی‌های این سیستم اطلاعاتی ندارد و فقط با ورود یک پارامتر ورودی، یک خروجی دریافت می‌کند.  (شکل 1)


شکل1- سیستم‌های Gird از دید استفاده کنندگان

کامپیوترها در Grid به ‌شبکه متصلند. این سیستم‌ها همچنین می‌توانند حاوی اطلاعات بسیار مهم و حساسی باشند. در نتیجه امنیت را می‌توان یکی از مهم‌ترین اجزایی این سیستم‌ها دانست که خود حاوی اجزای فرعی مانند احراز هویت (authentication)، اختیارات (authorization) و رمزدهی (encryption) است.

مثلاً ابزار Globus حاوی یک Component به‌ نام Grid Security Infrastructure) GSI) یا ساختار زیر بنایی امنیت Grid است که مسئولیت امنیت در محیط را برعهده دارد. GSI حاوی یک SSL باز است. در نتیجه وقتی یک استفاده کننده یک بار به‌صورت مجاز به‌ سیستم راه پیدا کرد، یک Proxy Certificate برای کاربر به‌ وجود می‌آید و برای آن کاربر در نظر گرفته می‌شود. GSI در درگاه Grid قرار دارد. (شکل 2)

شکل2-  GSI در Gird 

استفاده کننده از یک سیستم Grid باید از منابع موجود و قابل دسترس  در سیستم اطلاع داشته باشد. مدیریت کنترل کار سیستم یا Workload Management می‌تواند این کار را به‌ راحتی انجام دهد. درخواست‌کننده سرویس می‌تواند با ارتباط با این قسمت از منابع آزاد سیستم، ظرفیت هر منبع و موقعیت آن‌ها اطلاع حاصل نماید.  در سیستم‌های Grid که توسط Globus هدایت می‌شوند، زمانی که یک استفاده کننده شناسایی شد و برنامه موردنظر آن کاربر اجرا گردید، با توجه به ‌نوع نرم‌افزار و پارامترهای ورودی کاربر، سیستم Grid به‌دنبال منابع آزاد موجود در شبکه می‌گردد.
 
این وظیفه اغلب  به‌ عهده Broker ها است. Globus به‌صورت عادی، ‌Broker ندارند، اما از سرویس‌هایی مانند
Grid Information Service) GIS) و Monitoring and Discovery Service) MDS) را پشتیبانی می‌کنند که به‌سیستم اطلاع می‌دهند کدام منبع یا منابع قادرند منابع خود را در اختیار بگذارند. شکل 3 موقعیت این سرویس‌ها را نمایش می‌دهد.

شکل 3-  موقعیت سرویس‌های MDS در Gird 

یکی دیگر از اجزایی که در سیستم‌های Grid بسیار اهمیت دارد، زمانبند یا Scheduler است. در این سیستم‌ها از آن جایی که باید هر کاری را کامپیوتر مشخصی به‌عهده بگیرد و هر کامپیوتر باید مدت زمانی را در اختیار Grid قرار دهد، سیستم نیاز به‌ یک زمانبند دارد. این زمانبند می‌تواند بسیار ساده باشد، اما اکثر زمانبند‌ها باید بتوانند کارها را اولویت‌بندی کنند و سیستم را کنترل نمایند. در ابزار Globus زمانبند‌هایی با قابلیت بالا  وجود ندارند، اما تعدادی سازوکار زمانبند وجود دارد که کار زمانبندهای دقیق را تا حدی انجام می‌دهد. شکل 4 موقعیت زمانبند‌ها را در Grid  نشان می‌دهد.

شکل 4-  موقعیت زمانبند‌ها در Grid 
جزء دیگر Grid‌ها، مدیریت اطلاعات این سیستم‌ها است که وظیفه ذخیره‌سازی اطلاعات را در سیستم  به عهده‌ دارد.  این بخش وظیفه محافظت از اطلاعات و جابه‌جایی این اطلاعات در تمامی‌دستگاه‌های متصل به ‌Grid را عهده‌دار است. جابه‌جایی و انتقال اطلاعات کار بسیار مشکلی است و اطلاعات باید از کانالی مطمئن منتقل شود.

با استفاده از ابزار Globus و بخش مدیریت اطلاعات این ابزار، می‌توان محیطی امن برای انتقال این اطلاعات به ‌وجود آورد. این قسمت از Globus به Grid Access to Secondary Storage) GASS) معروف است که امکاناتی مانندGridFTP را دربردارد که مانند FTP است، اما امکانات امنیتی مانند GSI را نیز دربرمی‌گیرد. در نتیجه وقتی یک کاربرProxy Certificate را داشته‌باشد، می‌تواند از GridFTP جهت انتقال فایل‌ها استفاده کند؛ بدون آن که نیاز داشته باشد دوباره به‌ سیستم وارد شود. شکل 5 موقعیت GASS را در Grid نشان می‌دهد.

شکل5- GASS در Gird

از دیگر بخش‌های مهم Grid، بخش مدیریت منابع است که به‌ Grid Resource Allocation Manager) GRAM) شهرت دارد. این بخش وظایف هر دستگاه را مشخص می‌کند و باعث هماهنگی دستگاه‌های متصل به ‌شبکه در انجام‌دادن امور محوله است. شکل 6 محل قرار گرفتن GRAM را نشان می‌دهد.


شکل 6- بخش مدیریت منابع در Grid

Grid از دید برنامه نویسان
از دید برنامه‌نویسان، Grid از سازمان‌های مجازی‌ای تشکیل شده است که از پروتکل‌های مخصوصی برای ارتباط با هم استفاده می‌کنند. این پروتکل‌ها به ‌استفاده‌کنندگان Grid و برنامه‌ها اجازه می‌دهند سرویس‌های خود را در محیطی کنترل شده و امن اجرا کنند. این سازمان‌های مجازی می‌توانند یک کامپیوتر شخصی، سروری قدرتمند یا کامپیوترهای متصل به‌ شبکه باشند که از آن جا که پروتکل یکسانی دارند، می‌توانند با هم متصل باشند و از منابع یکدیگر استفاده نمایند.

گروه جهانی Grid با ارائه معماری باز سرویس‌های Grid یا Open Grid Services Architecture) OGSA) و جمعآوری استانداردهای باز، مانند زبان تعریف سرویس‌های وب یا Web Services Description Language) WSDL) توانسته است استانداردی آسان و در عین حال دقیق برای سیستم‌های Grid تعریف کند. از آن گذشته، OGSA از تجربیات به‌ دست آمده از پروژه‌های بزرگی مانند Globus نیز بهره‌مند است. شکل 7 ساختار معماری این استاندارد را نشان می‌دهد.




شکل 7- ساختار معماری باز سرویس های Grid

استانداردهای باز و پروتکل‌های این معماری راه تولید سرویس‌ها را نشان می‌دهند. این سرویس‌ها قلب Grid هستند و در واقع به ‌استفاده‌کننده اجازه می‌دهند با Grid کار کند. این سرویس‌ها عبارتند از:

- سرویس درخواست‌های پردازنده مرکزی

- سرویس مدیریت کنترل کار سیستم و sessionها

- سرویس جست‌وجوی اطلاعات

- سرویس تعیین پهنای باند شبکه‌

- سرویس مدیریت اطلاعات‌

وقتی متخصصان Grid درباره شروع شدن یک سرویس صحبت می‌کنند، مثلاً شروع شدن سرویس جست‌وجوی اطلاعات، منظور یک نمونه یا Instance سرویس است که می‌تواند تکالیف بلند مدت یا موقتی داشته باشد. این سرویس‌ها می‌توانند به‌صورت فعال یا غیر فعال باشند و زمان فعالیت را می‌توان با زمانبند یا به‌صورت اختیاری تعیین نمود. ‌سرویسی خوب است که بتواند به‌راحتی امکانات خود را در اختیار استفاده کننده قرار دهد. مثلاً وقتی یک وسیله الکترونیکی را به ‌پریز برق متصل می‌کنید، برای شما هیچ اهمیتی ندارد که برق مورد نیازتان از کجا می‌آید؛ فقط می‌خواهید از برق استفاده کنید.

سرویس خوب Grid نیز سرویسی است که بتواند سرویس موردنظر ‌استفاده‌کننده  را به‌راحتی دراختیار او قرار دهد و استفاده‌کننده بتواند به ‌سادگی از آن استفاده کند. مثلا سرویس بانک‌اطلاعاتی در Grid باید به‌صورتی عمل کند که استفاده کننده فقط یک جست‌وجو وارد کند و  جواب جست‌وجوی خود را بگیرد؛ بدون این‌که از جایگاه و عملیات بانک‌اطلاعاتی خبر داشته باشد.
پیچیدگی‌ها
اگر تصور می‌کنید سیستم‌های Grid پیچیده‌اند و ممکن است کار با آن‌ها مشکل باشد، کاملاً درست فکر می‌کنید. مثلاً سیستم‌های Grid باید به‌سرعت قادر باشند منابع سیستم‌های متصل به‌آن‌ها را شناسایی کنند و در عین حال نباید از سرعت و کارایی این سیستم‌ها بکاهند. نکته بسیار مهم دیگری که مشخصاً ارتباطی به ‌Grid ندارد ولی در این سیستم‌ها تأثیر‌گذار است، ساختن نرم‌افزارهایی است که بتوانند با سیستم‌های Gird کار کنند.

امروزه بیشتر نرم‌افزارها می‌توانند روی کامپیوتر‌های شخصی یا حتی سرور‌ها کار کنند.  یعنی در واقع این نرم‌افزارها از یک پردازنده مرکزی استفاده می‌کنند، اما در سیستم‌های Gird، ممکن است چند  پردازنده این کار را به‌عهده بگیرند و چند سیستم با هم کار کنند. البته هر سیستم یک کار را انجام می‌دهد. سپس نتایج محاسبات جمع می‌شود و به ‌درخواست کننده سرویس برگشت داده می‌شود.

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

امنیت سیستم‌های Grid نیز بسیار حائز اهمیت است. کاربران این سیستم‌ها باید از دسترسی به‌منابع ایشان در سیستم اطلاع حاصل کنند و بدانند کدام کاربر به‌اطلاعات آن‌ها دسترسی دارد. اضافه بر این، قابلیت اطمینان و سرعت این سیستم‌ها بسیار اهمیت دارد. اگر سیستم‌های Grid از سرعت کافی برخوردار نباشد، کاربران Grid از استفاده از این سیستم‌ها دلسرد می‌شوند.
 
چگونه Grid بسازیم ؟
ممکن است پس از خواندن مطالبی که تا اینجا گفته شد، به‌ این فکر افتاده باشید که آیا می‌توانید خودتان یک Grid  بسازید؟ البته که می‌توانید! می‌توانید از نرم‌افزارهای منبع آزاد یا اپن‌سورس استفاده کنید و یک محیط Grid بسازید. اولین قدم برای شروع، دانلود کردن ابزار Globus است. Globus همان‌طور که قبلاً نیز بحث شد، ابزاری است قدرتمند برای ایجاد و مدیریت محیط Grid.  همچنین،  به‌ سرویس‌هایی برای ساختن Grid نیاز دارید که شامل سرویس مدیریت اطلاعات، سرویس پرس‌و‌جوی اطلاعات، درخواست‌کننده نیروی پردازشگر، زمانبند و سرویس تقسیم‌کننده پهنای‌باند ‌باشند. این سرویس‌ها به‌سرویس‌های Grid معروفند و در واقع همان سرویس‌های وب هستند؛ البته با قابلیت‌های بیشتر و مرتبط با Grid.  برخی از کامپیوترهای شما که به ‌شبکه Gird متصلند، میزبان سرویس‌های Grid خواهند بود و کامپیوترهای دیگر از این سرویس‌ها استفاده می‌کنند.

به علا‌وه، برای ساختن یک Grid به‌ابزارهایی نیز نیاز خواهید داشت: ابزارهای زیربنایی مثل زمانبندها، ابزارهای مدیریت منابع، مدیریت امنیتی و ابزارهای انتقال فایل مانند GridFTP که قبلاً توضیح داده شد. ابزار دیگری که حتما به‌آن نیاز خواهید داشت، Grid Directory Services) GDS) است که فهرست سرویس‌های آماده را در اختیار دارد. به‌علا‌وه، به ‌API‌هایی نیز نیاز دارید که برنامه‌های شما را با Grid هماهنگ سازند و به‌برنامه‌های شما امکان دهند در محیط Grid کار کنند. خواندن منابع زیر نیز شما را در یادگیری بیشتر Grid Computing یاری می‌نماید:
www.gridcomputing.com/ingplanet.com

http://www.gridcomputingplanet.com/features/article.php/3396741

www-128.ibm.com/developerworks/grid/library/grfuture.html
+ نوشته شده در  جمعه دوازدهم بهمن 1386ساعت 12:20  توسط یوسف عبدلیان باریکرسفی  | 

Grid Computing | ساختار اينترنت2

به تازگي كتابي با عنوان Grid Computing: Making The Global Infrastructure a Reality را جسته و گريخته مطالعه مي كنم كه در اوايل آن به نقشه اي از ساختار اينترنت 2 برخوردم كه براي خودم هم جالب بود.
بهانه اي شد تا هم كتاب را  معرفي كنم هم آن نقشه را براي شما هم قرار دهم. در اين كتاب مطرح ترين و اساسي ترين پروژه هايي كه در زمينه محسابات شبكه اي ( لطفا اگر ترجمه اي خوب براي Grid Computing داريد بنوسيد. ) وجود دارد مورد بررسي قرار گرفته است و رابطه ميان آن ها تشريح شده است. بر طبق گفته هاي اين كتاب سرنوشت تمامي محاسبات كنوني و راه حال بسياري از توان هاي پردازشي بالا استفاده صحيح از امكانات محاسبات شبكه اي است كه در سطح زمين ( حتي آسمان - مثلا يك هواپيما كه در حال پرواز است!!! ) پراكنده شده اند. ساختاري مانند اينترنت2 كه در ايالات متحده در حال فعاليت است ، همراه با SuperJanet4 يا همان United Kingdom National Backbone Research and Education Networ، همراه با GEANT يا European Backbone Research Network و APAN Asian Network مطرح ترين اين نمونه ها هستند.
اين شبكه ها همراه با بسياري سيستم ها كوچك تر تشكيل شبكه اي را مي دهند با نام Logical GTRN Global Terabit Research Network كه در سطح زمين پخش شده است.

اين تعريف بسيار مختصري بود از GTRN كه در صورت پيش رفت صحيح قدرمند ترين سيستم محاسباتي ساخته بشر خواهد بود.
پيشنهاد مي كنم از نقشه جزئي زيرساخت اينترنت2 يا همان Abilene  در اينجا ديدن كنيد : Sites on the Abilene Research Network - همچنين نقشه اي كلي تر را از اينجا ببينيد : Abilene Network Traffic

+ نوشته شده در  جمعه دوازدهم بهمن 1386ساعت 12:6  توسط یوسف عبدلیان باریکرسفی  | 

روش Clustering (گروه بندی) در Ktreme

روش Clustering (گروه بندی) در Ktreme

Virginia Tech-Apple G5-based System X

گاهی لازم است به محيط بيرون يك جعبه نيز فكر كنيد. اين كاری بود كه سال گذشته Srinidhi Varadarajan استاديار علم كامپيوتر در دانشكده مهندسی Virginia Tech انجام داد.

Varadarajan مدير (Tera Scale Computing Facility (TCF جديد Virginia Tech است كه قويترين ابر كامپيوتر خانگی دنيا می باشد. او سومين ابر كامپيوتر در ليست Top 500 Supercomputer Site است.

در حاليكه بسياری از گروههای كامپيوتری علمی به سرورهای با پردازنده های اينتل تكيه می كنند ولی  TCF پردازنده G5 شركت آی بی ام و اپل را اساس كار خود قرار می دهد. TCF شامل گروهی از 1100 كامپيوتر G5 اپل است كه هر گره آن دارای پردازنده های دو گيگاهرتزی 64 بيتی دو طرفه PowerPC و چهار گيگابايت حافظه و 160 گيگابايت حافظه كمكی هستند. قيمت كلی TCF  حدود 5.2 ميليون دلار تخمين زده شده است و Virginia Tech می گويد او سازنده اين ابر كامپيوتر نه چندان گران در جهان است.

اين مجموعه، System X لقب گرفته است چون هدف طراحان آن ايجاد  سيستمی است كه دارای بيش از 10 Tera FLOPS باشد (10 تريليون محاسبه عدد شناور در ثانيه).

سيستم Virginia Tech تنها سيستم ثالثی بوده كه در مقايسه با سيستمهای ديگر دارای حداكثر كارآيی با بيش از ده Tera FLOPS بوده است.

Virginia Tech از اين مجموعه برای پشتيبانی از تحقيقات علمی از جمله فعل وانفعالات كامپيوتری، آمارهای مولكولی و شبيه سازی مولكولی پروتئينها استفاده خواهد كرد.

Cal Ribbens عضو هيئت علمی كامپيوتر كه روی اين سيستم كار می كند می گويد، ما برنامه های كاربردی علم كامپيوتر را در حد وسيعی اجرا خواهيم كرد و در زمينه برنامه های علوم طبيعی افرادی داريم كه كار شبيه سازی مولكولی از جمله  عمليات محاسبات و ساختار پروتئينها را همچون اجرای Amber، انجام می دهند. همچنين كسانی هستند كه كار شبيه سازی Cell-cycle (چرخه سلولی) را با استفاده از كدهای ODE Sower نوشته شده در آن انجام می دهند يا افرادی كه برنامه های بيو انفورماتيك  مثل BLAST را اجرا می كنند.

او معتقد است كه يك سوم چرخه كامپيوتر مربوط به علم طبيعی می شود و اين مقدار نيز رو به افزايش است.

يكی از اجزای مهم System X نرم افزار خانگی اين دانشكده به نام Deja Vu است كه می تواند  در محيطهای كامپيوتری بزرگ يك fault tolerance را ايجاد نمايد. Ribbens می گويد، اگر يك گره دچار اشكال شود شما می توانيد پس از اطلاع از وضع كار و محاسبه خود ، برنامه را از نو راه اندازی نماييد.

 بسياری از ابزارهای  انتقال پيام قادر به انجام اينكار هستند ولی بخاطر اهميت اين مجموعه ای كه  Virginia Tech آنرا Deja Vu نام نهاده و بايد فاقد بار اضافی نيز باشد، تضمين اين سيستم در كنترل برنامه های مديريتی به بن بست نرسيده است.

Virginia Tech اكنون در حال تعويض دستگاه های G5 مستقل و مستقر در مته های فلزی با G5 های xServer مداربند و ظرفيت مناسب ديگر است.

+ نوشته شده در  جمعه دوازدهم بهمن 1386ساعت 11:49  توسط یوسف عبدلیان باریکرسفی  | 

آسیب پذیری امنيتي در Globus Toolkit

Globus Toolkit 4.x

Globus Toolkit Nexus Unspecified Denial of Service Vulnerability

آسیب پذیری امنيتي در Globus Toolkit گزارش شده است که به حمله كننده اجازه آسیب رسانی از طریق حملات اختلال در سرویس دهی را می دهد.
این آسیب پذیری با بروز خطایی در nexus-enabled applications (e.g. MPICH-G2 jobs یا GRAM Job Manager) باعث آسیب رسانی به سیستم های آسیب پذیر می شود. بیشتر از این اطلاعاتی در دسترس نیست

+ نوشته شده در  پنجشنبه چهارم بهمن 1386ساعت 12:27  توسط یوسف عبدلیان باریکرسفی  | 

اينترنتII

 

آيكون ساعت شنى با وجود گسترش و بزرگ شدن هر لحظه اينترنت (World wide web) هنوز كند مى چرخد و اينترنت به (World wide wait) تبديل شده است. كاربران چه قديمى و چه جديد فهميده اند بازى درحال عوض شدن و قواعد اينترنت در حال تغيير و نو شدن است تا راه خود را به سوى آنچه اينترنت II ناميده مى شود، پيداكند.
اينترنت كنونى قابليت اجراى برنامه هاى كاربردى نسل بعد را ندارد و درحال جان كندن است.
آيا سرعت كنونى اينترنت براى دريافت و ارسال فايل ها در سال هاى آينده قابل قبول خواهدبود؟ آيا نمى توان در سطح جهان از رايانه هايى كه در حال كار نيستند براى پردازش اطلاعات سنگين استفاده كرد؟ پاسخ سؤالات فوق به راهى ختم خواهدشد با عنوان اينترنت II.
اينترنت برتر از تمام فناورى هايى ظاهر شده است كه جهان را به هم مرتبط مى سازد. اما اين فناورى نيز مانند ساير فناورى هاى ديگر آفت هايى دارد مانند هكرها، ويروسها و غيره.
اينترنت كنونى را در حقيقت مى توان نسخه توسعه يافته شبكه ARPANET ناميد. شبكه اى كه در سال ۱۹۶۹ توسط سازمان ناسا پايه گذارى شد و سپس چند دانشگاه آمريكا به اين شبكه پيوستند و بعد نيز به مرور كشورها عضو اين شبكه يكپارچه شدند.
هدف اصلى و ابتدايى از راه اندازى شبكه آرپانت امورتحقيقاتى و پژوهشى بود. اما اين شبكه بعدها در جهت اهداف سياسى، اقتصادى، فرهنگى و غيره نيز به كار گرفته شد.
تعمير و رفع مشكلات شبكه كنونى اينترنت سخت و دشوار شده است، بنابراين محققان برروى امكان ايجاد شبكه جهانى جديد درحال مطالعه و تحقيق هستند كه اين شبكه با نام اينترنت II شناخته مى شود.
اينترنت كنونى از پروتكل IPV4 استفاده مى كند كه نزديك به ۲۰ سال قدمت دارد و به عقيده بعضى عمر اين پروتكل به سر آمده است. مشكل اصلى در اين پروتكل تعداد محدود آدرس هاى IPV4 براى پشتيبانى از اينترنت فعلى و اينترنت II است. پديده اينترنت II يا Grid Technology پديده اى است كه به عنوان جانشين اينترنت فعلى در بعضى از كشورها شناخته شده است. اينترنت II با داشتن بهترين و سريع ترين ابزارهاى جست وجو (Search)، سرعت بسيار بالا و داشتن امكانات قوى براى تحقيق و پژوهش جايگزين شايسته اينترنت در سال هاى آتى خواهدبود. سرعت انتقال اطلاعات در يك پايگاه اينترنت II ده ها گيگابايت در ثانيه خواهدبود، البته هنوز زمان زيادى براى رسيدن به اينترنت II وجوددارد. اين فناورى حاصل همكارى ۱۳۰ دانشگاه و مركز تحقيقاتى به منظور توسعه اينترنت به صورت شبكه اى با قابليت هاى پيشرفته تر براى تحقيقات و آزمايش هاى دانشگاهى است.

مبناى كار اينترنت II

طراحى اينترنت II كه با اينترنت كنونى نيز سازگار است، مسيرى را در جهت دستيابى به پهناى باند بيشتر و نرخ انتقال اطلاعات افزون تر مهيا مى كند. لذا امتيازات اينترنت II توانايى يكپارچه كردن شبكه هاى محلى و بومى، افزايش اطمينان و افزايش ظرفيت شبكه است.
در اينترنت II برخلاف اينترنت كنونى از پروتكل IPU6 به جاى پروتكل IPU4 استفاده مى شود. (internet protocol version). در اصل شماره IP كه در حال حاضر از ۴ بخش تشكيل شده است در اينترنت II شش بخشى خواهدبود كه اين تغيير پروتكل افزايش پهناى باند را به دنبال خواهدداشت و زمان دسترسى به اطلاعات به زمان حقيقى بسيار نزديك تر مى شود.

كاربردهاى اينترنت II

با تبديل اينترنت كنونى به اينترنت II در تمام گرايش هاى فنى، مهندسى، علوم و غيره مى توان شاهد تغييرات شگرفى بود كه در زير به عنوان نمونه به چند مورد از آنها اشاره مى شود.

* پزشكى: تصويربردارى سه بعدى از اعضاى بدن و معاينه تخصصى پزشكى از راه دور، بدون حضور پزشك در محل بيمار
* سرگرمى: ارائه تصاوير ويديويى با سرعت و كيفيت بسيار بالا به صورت دو طرفه
* آموزشى: ايجاد امكانات آموزشى ميان دو مؤسسه دور از هم و تعامل استاد و دانشجو بدون نياز به حضور استاد و دانشجو در كلاس درس
* نجوم: كنترل تلسكوپ از راه دور و مشاهده اطلاعات دريافتى از تلسكوپ به صورت بلادرنگ

مزاياى اينترنت II

درحقيقت مى توان گفت اينترنت II براى سه منظور مهم طراحى شده است:

۱- افزايش پهناى باند اطلاعاتى
(Band width)
۲- چندكاره بودن شبكه (Multi task)
۳- امنيت بالاى دريافت و اجراى اطلاعات (Securiety)

افزايش پهناى باند

اگر جزو كاربران اينترنت كنونى هستيد، حتماً از كندى سرعت اينترنت شاكى و گله مند هستيد. شما در بهترين حالت dial up سرعتى حدود ۴۴mbps را خواهيد داشت و در صورت استفاده از سرويس هاى ADSL اين سرعت اندكى افزايش يافته و تا ۵۱۲mbps و يا بيشتر هم خواهد رسيد (البته با افزايش هزينه هاى شما) - ممكن است سرعت دريافت و ارسال اطلاعات براى شما اهميت حياتى داشته باشد - در اين موقع مجبور خواهيد بود كه بيشتر هزينه كرده و به سراغ سرويس هاى vsat برويد كه بعد از گرفتن مجوزهاى لازم، اين سرويس براى شما فعال خواهدشد و البته هزينه هاى زيادى را نيز بايد براى استفاده از اين سرويس به صورت ماهيانه پرداخت كنيد.
مواردى كه در بالا عنوان شد تنها گوشه هايى از مشكلات دستيابى به اينترنت كنونى است، يكى از مهم ترين اهداف اينترنت II دستيابى به پهناى باند بيشتر براى كاربران است كه همزمان با افزايش سرعت دريافت و ارسال اطلاعات درخواستى، پهناى باند تخصيص يافته به كاربران و مشتركان نيز در اين سرويس افزايش پيداكند.

چندكاره بودن شبكه

تنها مزيت اينترنت II در افزايش پهناى باند خلاصه نمى شود. آيا نمى توان از سرعت و قدرت رايانه ها در مواقعى كه كاربران با آن كارى انجام نمى دهند براى انجام امور محاسباتى دقيق و سريع بهره گرفت؟
در اينترنت II امكانى فراهم شده است تا كاربران در صورت تمايل و اعلام آمادگى شخصى جهت دراختيار گذاشتن منابع سخت افزارى خود در شبكه به صورت رايگان قادر به انجام اين كار باشند.
كافى است كه شما با وصل شدن به آدرس يك پايگاه اينترنتى كه از پروتكل هاى اينترنت II پشتيبانى مى كند، Screen saver دلخواه خود را نصب كرده و در مواقعى كه از رايانه خود استفاده نمى كنيد به ساير كاربران اجازه دهيد كه از منابع سخت افزارى رايانه شما جهت پردازش هاى سنگين استفاده كنند و درحقيقت رايانه خود را درمواقع بيكارى وقف امور پژوهشى و تحقيقاتى كنيد تا شما نيز در پيشرفت علم نقشى برعهده داشته باشيد و نيز با ايجاد امكان استفاده از منابع سخت افزارى ساير رايانه ها، رايانه خانگى خود (pc) را به ابرقدرتى بى رقيب تبديل كنيد.

امنيت بالاى دريافت و ارسال

اينترنت فعلى با مشكلات امنيتى بسيارى دست به گريبان است. هكرها، فيشرها و غيره همواره در كمين نشسته اند تا در صورت كوچك ترين غفلت شما و يا سرويس دهنده شما اطلاعات شما را دزديده و به حراج بگذارند.
هر از چندگاهى نسخه هاى اصلاح شده آنتى ويروس ها، آنتى اسپم ها، آنتى تروژن ها و غيره برروى شبكه دراختيار كاربران قرارمى گيرد و شما مجبور خواهيدبود براى در امان ماندن از شر اين ميهمان هاى ناخواسته آنتى ويروس خود را به روز كنيد (up to date) با هكرها چه مى كنيد؟ هكرها هميشه يك قدم از شما جلوتر هستند و هر زمان كه اراده كنند سدهاى پولادين را شكسته و به web site شما نفوذ خواهندكرد و اطلاعات شما را در چشم برهم زدنى به يغما مى برند. براى جلوگيرى از نفوذ اين دزدان دنياى ديجيتال چه فكرى كرده ايد؟
اينترنت II سعى كرده است تا حدودى مشكلات امنيتى موجود در اينترنت كنونى را برطرف نمايد و با شش بخشى شدن آدرس هاى اينترنتى تا حدودى امنيت در شبكه ها بالاتر خواهدرفت و از نفوذ هكرها نيز جلوگيرى به عمل خواهدآمد.

فرايندهاى اصلى اينترنت II

در اينترنت II فرايندهاى زيادى وجودخواهدداشت. اما سه فرايند اصلى اين پديده تكنولوژيك عبارتند از:

۱- گريدهاى اطلاعاتى (Data grid)
۲- گريدهاى جوينده (Scavenging Grid)
۳- گريدهاى محاسباتى (Computing Grid)

*
Data grid

اين gridها وظيفه ذخيره سازى اطلاعات و سپس ارائه آن به كاربران را برعهده دارند.
مشتريان اين گريدها بدون توجه به موقعيت مكانى قابليت دسترسى به اين اطلاعات را دارا خواهندبود.
در اين نوع گريد دستگاه هايى كه با سيستم ارتباط دارند مسئول به اشتراك گذارى اطلاعات هستند.

*
Scavenging Grid

اين گريدها به صورت مداوم به دنبال ظرفيت هاى خالى در اينترنت هستند تا از منابع آزاد درجهت پردازش هاى سنگين بهره بگيرد و البته با كسب اجازه قبلى از صاحبان سيستم ها

*
Computing Grid

اين گريدها كه بعضى آن را جزئى از scavenging Grid مى دانند، وظيفه استفاده از منابع بلااستفاده رايانه هاى شخصى را در جهت پردازش هاى نرم افزارى برعهده دارد و سرعت پردازش اطلاعات در اين سيستم ها افزايش چشمگيرى خواهدداشت و لذا مى توانيم نرم افزارهاى سنگين را برروى رايانه هاى قديمى اجرا كرده و نياز به ارتقاى سيستم ها تا حدودى كاهش پيداخواهدكرد.

+ نوشته شده در  چهارشنبه بیست و ششم دی 1386ساعت 18:26  توسط یوسف عبدلیان باریکرسفی  | 

گرید کامپیوتینگ در اوراکل

Oracle 10g  Available

Grid Computing

 یکی از معماری‌های جدید Computing  است. این معماری انجام محاسبات و سرویس دهی به جای استفاده از ابر کامپیوترها با فضاهای دیسک بالا و مقادیر زیادی از حافظه که خود مستلزم صرف هزینه های بالا‌ جهت خرید و نگهداری آنها است، می‌توان از کامپیوترهایی با پردازشگرها و هارد دیسک‌های معمولی و با تجهیزات عادی با هزینه‌هایی بسیار ارزان‌تر در تعداد بیشتر استفاده کرد. در نهایت، می توان این دستگاه‌ها را با ساختاری مناسب تبدیل به واحدی برای پردازش اطلاعات کرد. حتی در روشComputing  امکان استفاده از سیستم‌ عامل های متفاوت وجود دارد و مهم تر از همه آنکه انعطاف‌پذیری در تعویض هر کدام از اجزای اینGrid  موجب ایجاد هیچ گونه خللی در سرویس دادن به کاربران نمی‌شود.
 ORACLE 10gتوسط محیطEnterprise  خود، امکان دادن سرویس‌های گسترده‌ای را روی محیطGrid  فراهم آورده است. این تکنولوژی باعث کاهش هزینه‌های مرتبط در قسمت تکنولوژی فناوری اطلاعات شده است به طوری که با هر هزینه‌ای امکان استفاده از معماریGrid  وجود دارد. یکی از رقابت‌های موجود در بین پیاده‌سازی ساختارهای Grid توسط شرکت ها در فناوری‌اطلاعات، پیش‌بینیDowntime  های پایگاه داده و ارایه راه‌حل‌های متفاوت بسته به —نوع مشکل به وجود آمده —با استفاده از تکنولوژیGrid Computing است.
ORACLE 10g
با توجه به تقسیم‌بندی عواملی که باعث در دسترس نبودن یک پایگاه داده می‌شود راه‌حل‌های متفاوتی را ارایه کرده است.

Unplanned Downtime -1

مواردی که نمی‌توان کنترلی بر رویDown   بودن یک سیستم داشت، به عنوانUnplanned Downtime  شناخته می‌شوند.

1-1- Computer Failures:

از دلایلی که به طور ناخواسته سیستم و یا پایگاه داده را خارج از سرویس دهی می‌کند، مشکلاتی است که برای سخت افزار به وجود می‌آیدORACLE 10g . راه‌حلی را که برای این نوع خطا ارایه می‌دهد استفاده از

Fast Database Recovery وReal Application Cluster  است.

1-1-1- Real Application Cluster

در بحثClustering ، اوراکل قابلیت نصب به روی چند سیستم با معماری‌های متفاوت را دارد، در حالیکه تمام آنها به یکsingle shared database  دسترسی دارند و این مساله از دید کاربران سیستم وApplication  هایی که باDatabase  کار می‌کنند پنهان است و همه آنها چند سیستم را در قالب یکUnified Systemm می‌بینند. حسنClustring  در این است که بسته به بالا رفتنload  سیستم، امکان اضافه کردنnode  جدید بدون نیاز به جایگزین کردن کل پایگاه داده با یک مقیاس بزرگ تر وجود دارد. وجود دیسک‌های آرایه‌ای قدرت بیشتری به ORACLE 10g  جهت پیاده‌سازی Real Application Cluster   بخشیده است. در تکنولوژیApplication Clustering  به وجودآمدن مشکل برای یکی ازnode  های سیستم هیچ مانعی برای ادامه کار سایرnode ها به وجودنخواهد آورد و سایرnode  ها از در دسترس نبودنnode  مشکل دار، به سرعت آگاه خواهند شد و این آگاهی درORACLE 10g  در چند لحظه کوتاه مشخص خواهد شد و دیگر نیازی بهtime ou t  مربوط به پروتکلTCP/IP  نخواهد بود.

2-1-1- Fast Database Recovery :

Fast Database Recovery از امکانات دیگر اوراکل در مورد خطاهای ناشی از سخت افزار مانندcrash  کردن سیستم عامل است. که با بهینه‌سازی که درORACLE 10g  صورت گرفته، پایگاه داده به صورت اتوماتیک تعداد دفعات عملیاتcheck point  را جهتstartup  شدن سیستم بعد از حالتcrash  در دفعه بعد محاسبه خواهد کرد. به طوری که درORACLE 10g  سیستم به جای دقیقه‌ها انتظار برای در دسترس بودن برای کاربران ظرف چند ثانیه قادر به سرویس دادن مجدد خواهد بود.

2-1- Data Failure :

مواردی که باعث از بین رفتن اطلاعات مربوط به کاربران می‌شوند متفاوت است و می‌توان علت آن را در Storage hardware   ،  Human error ،Corruption  وSite Failure  جست وجو کرد.

1-2-1- Storage Hardware:

 Automatic Storage Management که به اختصارASM  نامیده می‌شود، ازVolume Manager های قوی مربوط بهDatabase ORACLE 10g  است که بدون نیاز به نصب نرم‌افزار جدید و یا تهیه سخت افزاری خاص به صورت مستقیم باKernel Oracle  کار می‌کند. این‌Volume Manager امکان پخش کردن همه فایل ها به رویStorage های متفاوت و همچنین امکان(Stripe Aَnd Mirror Everything) SAME  که نوعیmirroring  است را نیز فراهم می‌آورد کهDBA  را قادر به مدیریتStorage  های پایگاه داده خود به صورت ساده می‌کند.

2-2-1- Human Error:

برای رفع مشکل کاربرانی که اطلاعات خود را به صورت ناگهانی و ناخواسته توسط خودشان از دست می‌دهند،ORACLE 10g  راه حلی را با نام تکنولوژی Flash Back ارایه کرده است. این تکنولوژی ازOracle 9i  وجود داشته است ولی در نسخه01g  امکانات بیشتری به آن اضافه شده است.

از جمله می‌توان به:

    Flashback ,Transaction Query,

   Flashback  Versions  Query

Flashback   Database,

اشاره کرد که بسته به حالت های مختلف حتی یک کاربر بدون مراجعه بهDBA  این امکان را برای خود فراهم می‌کند که اطلاعات از دست رفته خود را باز گرداند بدون اینکه نیاز به ایجاد وقفه در کار کاربران دیگر و همچنینDown  کردن پایگاه داده جهت برگرداندن نسخه پشتیبان باشد.

تکنولوژی که در Flashback  استفاده می‌شود، نوعی گرفتنContinuous Backup  یا Storage Snapshot توسط خودDatabase Oracle  است که باعث می‌شودRecovery  یک پایگاه داده01g  از ساعت ها و روزها به چند دقیقه تقلیل پیدا کند.

3-2-1- Data Corruption:

Data corruption زمانی به وجودمی‌آید که یک دستورI /O  از طرف پایگاه داده جهت دسترسی به یک رکورد داده می‌شود ولی آدرس مقصد برای دسترسی به اطلاعات که توسط سیستم عامل بهDatabase Oracle  داده می‌شود اشتباه استOracle Hardware Assisted Resilient Data (HARD)  برنامه‌ای است که قبل از رجوع به نقطه‌ای از هارد دیسک جهت بازیابی اطلاعات با الگوریتم خاص مسیرdata  ذخیره شده روی دیسک توسط پایگاه داده را ارزیابی می‌کند و از صحت مسیر اطمینان حاصل می‌کند تا از به وجودآمدن مشکل فوق جلوگیری کند.

4-2-1- Site Failures :

از جمله مشکلاتی که پایگاه داده را در مقیاسی بزرگ تر غیر قابل دسترسی می‌کند، می‌توان به بلایای طبیعی از جمله زلزله و سیل اشاره کرد که باعث از دست رفتن اطلاعات می‌شوند که جهت رفع مشکلoracle  امکانData Guard  خود را به عنوان یک راه‌حل ارایه می‌دهد که در واقع نوعیStandby copy  از پایگاه داده می‌شود که این امکان را برایDatabase Administrator  فراهم می‌آورد که نسخه کپی را در مکانی خارج از سایت و پایگاه داده اصلی آن سوی دنیا پیاده‌سازی کند. در این روش کلیه تغییراتی که بر روی پایگاه داده اصلی انجام می‌شود ، یک نسخه از آن به رویStandby Database  کپی می‌شود، تا هنگام بروز مشکل برای پایگاه داده اصلی، پایگاه دادهStandby Database  جایگزین آن شود بدون کمترین مقدار در از دست دادن اطلاعات.

Pianned Down Time -2

تغییراتی که در جهت ارتقای سیستم ها و یا موارد عملیاتی مانند تهیه نسخه پشتیبان و مدیریت بهینه سیستم هستند، جز زمان های در دسترس نبودن پایگاه داده به صورت قابل پیش‌بینی به حساب می‌آیند. از جمله بهData Changes  وSystem Changes  می‌توان اشاره کرد که برای حالت Data Changes ‌می‌توان به امکاناتPARTITION TABLE  و ساختنINDEX  اشاره کرد که وجود این امکانات باعث افزایش مدیریت بهتر حافظه و بالا رفتن سرعت می‌شودSystem Changes . از موارد دیگری است که به عنوانPlanned Down Time  به حساب می‌آید. در این حالت پایگاه داده برای اضافه کردن و یا حذف کردن سخت‌افزار در دسترس نخواهد بود کهORACLE 10g  از امکاناتی به نامDynamic Resource Provisioning  استفاده می‌کند و عملیاتی از جمله اضافه کردن و یا کم کردن پردازشگر را بهSMP Server  فراهم می‌کند و یا اضافه کردن و یا کم کردنnode  به Real Application Cluster  و حذف و اضافه هارددیسک بدون ایجاد و اختلال در فعالیت پایگاه داده را انجام می دهد.

+ نوشته شده در  سه شنبه بیست و پنجم دی 1386ساعت 11:53  توسط یوسف عبدلیان باریکرسفی  | 

اصول هسته Grid Computing :

دو اصل در هسته Grid Computing آنرا به طور منحصربفردی از دیگر روشهای Computing ازقبیل Mainframe ، Client/Server یا چند لایه ای (Multi-tier) متمایز می سازد : مجازی سازی و تأمین.


 

    * با مجازی سازی ، منابع خاص (مانند رایانه ها ، دیسکها ، اجراء نرم افزاری و منابع اطلاعاتی) به عنوان منابع درهم آمیخته و مشترک جهت دسترسی مصرف کنندگان (از قبیل افراد و برنامه های نرم افزاری) بطور انتزاعی در نظر گرفته می شود.مجازی سازی یعنی شکستن اتصالاتی که بسختی بین ارائه کننده و مصرف کننده (مشتری) منابع برقرار شده است و مهیا ساختن منابع برای سرویس دهی به نیازهای خاص ، بدون اینکه مشتری نگران چگونگی انجام آن باشد.
    * تأمین یعنی اینکه ، وقتی مشتری از طریق لایه مجازی سازی نیاز به منبع خاصی دارد ، در پشت پرده ، آن منبع جهت انجام در خواست ،شناسایی شده و به مشتری تخصیص داده شود.تأمین بعنوان بخشی از Grid Computing به این معنی است که سیستم تعیین می کند چگونه نیاز مشتری را برآورده سازد در حالیکه عملیات در کل ، به صورت بهینه انجام شود.
 


 

برای نمونه می توان از Oracle 10g به عنوان تنها DBMS پیشتاز در این زمینه یاد کرد که در مقاله بعدی این جنبه ار Oracle 10g را بررسی خواهیم نمود.


 

+ نوشته شده در  سه شنبه بیست و پنجم دی 1386ساعت 11:28  توسط یوسف عبدلیان باریکرسفی  | 

پیاده سازی محیط Grid و برنامه نویسی موازی

سیستم های Grid   نوعی از سیستم های توزیع شده یا موازی هستند که اشتراک ، انتخاب و جمع آوری منابع را در فواصل جغرافیایی فراهم می اورد. بر اساس این تعریف ملاحظه میشود که امکان اجام کارها بصورت موازی وجود دارد.شاید مهمترین دلایل استفاده از سیستم های موازی  را بتوان در 4 مورد زیر خلاصه نمود:

1-  Application ها بطور حریضانه به دنبال منابع هستند .

2-       کامپیوترهای موجود معماری تک پردازنده و ترتیبی دارند .

3-       پیشرفت تکنولوژی شبکه های کامپیوتری .

4-       محدودیت فیزیکی سخت افزارها در افزایش سرعت .

با توجه به موارد فوق درمی یابیم موازی سازی یک امر ضروری برای انجام کارهای بزرگ و سنگین می باشد.با انجام موازی سازی  قابلیتهایی نظیر ،توازن سازی ،همپام سازی ، در دسترس بودن ، انعطاف پذیری و کاهش هزینه  امکان پذیر میشود.اما برای نوشتن برنامه های موازی به محیطی نیاز است که این کار انجام گیرد .در این مورد کلا" دو دیدگاه وجود دارد .

الف Implicit parallelism

در این دیدگاه موازی سازی توسط زبانها و کمپایلرهای موازی پشتیبانی میشوندو تمامی عملیات مربوط به موازی سازی در آن زبانها یا کمپایلرها حمایت می شوند.این زبانها و کمپایلرها خاص ابر رایانه ها طراحی میشوند.

ب Explicit parallelism

در این دیدگاه زبان موازی نداریم ، در واقع از همان زبانهای سریال استفاده میشود و این برنامه نویس است که موازی سازی را انجام می دهد.برای این منظور برنامه نویس می بایست قسمتهای موازی را تشخیص داده و بکمک ابزار برنامه نویسی آنها را از هم جدا کند. این روش که در سیستم های Grid و Cluster کاربرد دارد برنامه به بخشهای زیر تقسیم می شود :

1-       تقسیم بندی فرایندها 

2-       نگاشت روی پردازنده ها

3-       ساختارهای ارتباطی

سپس می بایست مدل برنامه نویسی موازی تعیین گردد .بطور کلی مدلهای برنامه نویسی موازی بصورتهای زیر وجود دارد :

1-  Share memory

در این حالت معماری مابصورت  حافظه مشترک بوده و دستورات بصورت Read  و Write می باشند.برخی از این ابزار  عبارتند از : DSM ، Java ، Openmp.

2-       Message passing

در این حالت در محیط شبکه هر سیستم حافطه و پردازنده خودش را دارد و از دستورات Send و Receive  استفاده میشود. برخی از این ابزار  عبارتند از : MPI و PVM

تذکر: نسخه تحت ویندوز MPICH می باشد که شامل توابع کتابخانه ای برای نوشتن برنامه های موازی است .در پروژه نیز ما از این ابزار استفاده کرده ایم .

3-       Hybrid

به ترکیبی از دو مدل فوق اشاره دارد .برخی از این ابزار  عبارتند از MPI,Openmp.

4-       Object & Service Oriented

این ابزار در سطح کاربر بوده و بالاتر از Middleware قرار می گیردولی کارایی کم میشود.برخی از این ابزار  عبارتند از Dcom و Corba .

برای انجام برنامه نویسی موازی می بایست بخشاهای زیر را در کد ایجاد کرد و رعایت نمود:

1-  Partitiong  که برای بخش بخش کردن Task بکار می رود.

2- Communication  برای برقرای ارتباط بین بخشهای جدا شده در فاز اول می بایست رعایت شود.

3- Agglomeration که نحوه اتصال دو بخش فوق را بعد از برقرای ارتباط و بخش بندی را مشخص می کند.

4-      Mapping/Scheduling که نسبت دادن کارها به پردازندها را انجام میهد بطوریکه زمان انجام کار حداقل شده و راندامان بالایی داشته باشیم .

برنامه نویسی موازی یک Task  پیچیده است زیرا برنامه هایی را که مینویسیم شامل بخشهای موازی است .ابزارهای برنامه نویسی کمک می کنند تا حدی این پیچیده گی کاهش یابد.برای نوشتن برنامه ای موازی به چنین محیطهایی نیاز داریم .مهمترین نکته ای که از دیدگاه کاربر مهم است آنستکه برخی از چیزها را Transparence کنیم و همچنین بتوانداز مفاهیم قبلی برنامه نویسی استفاده نماید.

در این روش برنامه به یکسری زیر برنامه تقسیم می شود و هر بخش از آن بین گره های شبکه اجرای می گردد.هر زیر برنامه بصورت ترتیبی نوشته شده است ولی چون همه پردازنده ها موازی برنامه را اجرا می کنند در نتیجه برنامه موازی اجرای میشود.متغیرهایی که روی هر پردازنده اجرا میشوند کاملا"Private هستند و برای ارتباط فقط از مبداء به مقصد پیام ارسال میشود.

همانطور که اشاره شد برای انجام برنامه نویسی موازی از ابزار MPICH که کتابخانه ای از توابع موازی را فراهم می آورد استفاده شده است .هدف از این پروژه انجام عملیات ضرب ماتریس بصورت موازی است .همانطور که در نمودارملاحظه میشود این پروسه روی چندین ماشین اجرا شده است .با افزایش تعداد ماشینها سرعت انجام عملیات نیز افزایش می یابد.

MPICH  ابزاری است که توابع استاندارد  کتابخانه ای MPI را برای اجرا در انواع سیستم ها فراهم می آورد. این ابزار در سیستم های عامل NT4,window 2000,windows xp  و Windows server قابل استفاده است و هر جا که ارتباطات بصورت TCP/IP وجود دارد قابل بکارگیری است.همچنین برای کمپایل برنامه های نوشته شده از محیط    6.x++ VC بهره می بریم .

در این برنامه عمدتا از دستورات انتقال پیام استفاده شده است و باتوجه به کاربرد این دستورات در برنامه این دستورات را بصورت زیر شرح می دهیم .

همانطور که ذکر شده این برنامه براساس Message passing کار می کند .بطور کلی به دو صورت گروهی (Collective) و نقطه به نقطه (Point to point) انتقال پیام انجام میشود.در حالت اول یک فرستنده به چندین گیرنده پیام را ارسال می کند.و در حالت نقطه به نقطه یک فرستنده و یک گیرنده داریم که پیام را بیکدیگر ارسال می نمایند.این روش خود بصورتهای زیر انجام میشود:

1-     سنکرون : در این حالت دقیقا وقتی که گیرنده می خواهد داده را بردارد، فرستنده متوجه میشود.به عبارتی وقتی کار ارسال  پیام تمام شد فرستنده متوجه میشود و ادامه کار منوط به این است گیرنده داده را بردارد. برای مثال ماشین فاکس چنین خصوصیتی دارد.

2-     آسنکرون :در این حالت فرستنده از برداشتن داده توسط گیرنده آگاه نیست .به عبارتی وقتی پیام سیستم را ترک می کند متوجه نمی شویم که رسیده است یا نه . برای مثال سیستم پست نامه را میتوان نام برد.

3-       عملیات بلوک کردن :وقتی انجام میشود و نتیجه را باز می گرداند که عملیات تکمیل شده باشد.

4-     عملیات بدون بلوک کردن : در این حالت عملیات  شروع شده و معلوم نیست چه زمانی خاتمه می یابد.به عبارتی برای اطمینان از انجام عملیات باید تست انجام شود.برای مثال سمافور در سیستم عامل اینچنین است .

با توجه به مطالب فوق می توان دریافت که ارسال سنکرون Blocking و ارسال آسنکرون Non blocking است .

در مقابل ارتباطات گروهی قادر هستند که عملیات زیر را انجام دهند :

1-       میتوان از آنها بعنوان ارتباطات نقطه به نقطه  استفاده نمود.

2-       امکان انجام پردازشهای سنکرون ( Barrier) را دارد .

3-       قابلیت انجام ارتباطات یک به چند ( Broadcast ) را دارد.

4-       قابلیت انجام عملیات Reduction بدین معنی که ترکیب داده از پردازنده های متعدد  برای تولید نتیجه نهایی و بر آیند.

 

همانطور که اشاره شده MPI یک زبان نیست بلکه یک کتابخانه از توابع به منظور نوشتن برنامه های  موازی است و می بایست هدر فایلهای آن را در سورس برنامه معرفی نمود.فرمت توابع MPI  که بهنگام برنامه نویسی بکار گرفته میشود بصورت زیر است :

MPI_Xxxxx(parameter,…);

 

عمده توابعی که در برنامه استفاده شده است تقریبا" مشابه برنامه محاسبه عدد P می باشد.با این تفاوت که در این جا عملیات ضرب ماتریس انجام میشود. به منظور تمایز پروسس های مختلف اولین روتین که بکار می رود  MPI_Initاست .این روتین یک گروه یا Communicator ایجاد می کند و به تمام پردازنده هایی که در یک گروه هستند شماره ای اختصاص می دهد.به این شماره اصطلاحا" Rankگفته میشود.بصورت پیش فرض Masterشماره Rank صفر را می گیرد و بقیه پردازندهها به ترتیب شماره گذاری میشوند.در واقع Rank به پروسه IDاست .

الگوریتم کار  بدین صورت است که بعد از تعریف متعیرها ی مورد نیاز ،زمان شروع برنامه را ثبت می کنیم سپس برای نمایش شماره و نام ماشین پردازش گر از فرمان Fprintf استفاده کرده ایم که در واقع MyID و processor name را بر می گرداند.سپس تعداد سطر و ستون ماتریس مورد نظر را تعریف می کنیم .این مقادیر ثابت می باشند و انجام تغییرات آن منوط به دستکاری در سورس برنامه است.در واقع دو ماتریس 1000 در  1000 در  این برنامه  در  هم ضرب شده اند .که بصورت ریاضی بصورت 1000*1000*1000 تعریف میشود. در ادامه بعد از تخصیص حافظه مورد نیاز ماتریسها را بصورت تصادفی مقدار دهی می کنیم و در بخش آخر عملیات ضرب ماتریسها انجام میشود.برای این منظور ابتدا توسط تابع  MPI_Bcast اندازه  هر یک  از ماتریسها  برای بقیه گره ها معرفی می کنیم . در واقع در شرط اول فقط اطلاعات ماتریس ها برای ID صفر و رد شرط دوم اطلاعات مورد نیاز سایر گره ها مشخص میشود.در بخش عمل ضرب ماتریسها بدین صورت انجام میشود هر پروسس یک سطر از ماتریس را در کل ماتریس بعدضرب می کند .در این جا نتایج خروجی توسط تابع Printf چاپ نشده است و تنها زمان محاسبه وپردازش  چاپ گردیده است .

      سورس برنامه به پیوست تقدیم شده است ( برنامه و توضیحات روی CD نیز وجود دارد). برای       درک بیشتر برنامه توابعی که در  بکار رفته است را در ادامه به تفکیک شرح می دهیم :

1- MPI_Comm_Rank  : این تابع شماره Rank را بر می گرداند .برای مثال روی Master شماره صفر را میدهد .

2-       MPI_Comm_size : این تابع سایز گروه در Communicator را بر می گرداند به عبارتی تعداد پروسه هایی که در گروه وجود دارند را می دهد.

3-     MPI_Send : این تابع که به ارسال استاندارد مشهور است و مهم آنستکه که عملیات ارسال تکمیل شده باشد.به عبارتی زمانی کامل میشود که پیام ارسال شده باشد و از نوع Blocking  است .

4-       MPI_Recv : در تابع دریافت استاندارد  بااجرای Send ،طرف گیرنده ،بهنگام اجرای  Receive یک پیام به فرستنده ارسال می کند .

5-       MPI_Wtime : این تابع Wall clock رابر می گرداند .هر وقت بخواهیم زمان را اندازه گیری کنیم این تابع را بعد از Send  و بعد از Receive  صدا می زنیم .

6-       MPI_Bcast :از این تابع برای ارسال یک به چند استفاده می کنیم .به عبارتی از گره ریشه پیام را به یک سری از زیر گره های  ارسال می کنیم .

7-       MPI_Reduce : این تابع وظیفه ارسال نتایج حاصل از پردازش زیرگره ها را به گره ریشه را دارد.

8-       MPI_Barrier :از این تابع برای سنکرون کردن گره ها استفاده میشود. به عبارتی منتظر می ماند  تا الباقی گره ها نتایج را ارسال نمایند .

این برنامه در یک محیط شبکه Workgroup با 5 سیستم اجرا شده است . مشخصات این سیستم ها طبق جدول زیر است .

نام ماشین

نوع پردازنده

میزان حافظه اصلی

Laptop

1.6 centrino

512MB DDR

Hossini

1.83 dual core napa

512 MB DDR2/533

Hasani

3000 full cache LGA

512 MB DDR2/677

Ruhi

3000 full cache LGA

512 MB DDR2/677

Sabser(Server HP ML370)

Dual Xeon 3.6 2MB L2

2GB DDR2/677 ECC

 

همانطور که از جدول فوق پیداست  این 5 سیستم برای اجرای ماتریس 1000*1000 در نظر گرفته شده اند.همانطور که از نتایج خروجی و نمودار پیداست .با اجرای مرحله به مرحله برنامه زمان اجرای پردازش ثبت شده است .برای اینکه بتوانیم برنامه ها را بصورت موازی اجرا نمامیم می بایست در ابتدا MPICHرا در تمامی ماشینها نصب کنیم .بعد از نصب برای اینکه تمامی سیستم ها با هم کار کنند اولا یک کاربر مشترک با رمز عبور یکسان باید تعریف گردد و ثانیا در صورتیکه Firewall روی کارت شبکه سیستم فعال است باید غیر فعال گردد.در مرحله بعد با کاربر و رمزی که برای آن تعریف کرده ایم MPI registerرا اجرا می کنیم تا رجیستر گردد.سپس فایل کمپایل شده (فایل اجرایی برنامه ) در تمامی کامپیوترهای شبکه در یک پوشه که نام آن در تمامی سیستم ها یکسان است و به اشتراک گذاشته شده کپی می کنیم سپس از طریق MPIch Configure tool. لیست ماشینهای شبکه را اضافه می کنیم و برنامه را در ماشین Master اجرا می کینم در اولین مرحله با 1 ماشین بیشترین زمان انجام محاسبه ثبت شده است .با افزایش تعداد پردازنده ها تا 5 عدد کاملا" زمان پردازش بهینه شده و در کمترین مقدار خود قرار گرفته است .اما با زیاد کردن تعداد ماشین ها چون هر ماشین ممکن بوده است بیشتر از یک عمل را انجام دهد به علت وجود پروسه های مختلف برای تقسیم کار و همچنین به علت وجود سربار در ارتباطات زمان انجام پردازش سیر صعودی به خود میگیرد.همچنین نمودار نشان می دهد که همیشه با افزایش تعداد پردازنده ها زمان  پردازش افزایش نمی یابد و به علت وجود سربار سیستم بصورت None dedicate عمل خواهد کرد.

+ نوشته شده در  سه شنبه بیست و پنجم دی 1386ساعت 11:17  توسط یوسف عبدلیان باریکرسفی  | 

نحوه نصب گلوباس

به دلیل قولی که به بچه ها داده بودم قسمت اول نصب را برایتان می نویسم و

 

قسمت بعد را بعد از امتحانات مینویسم 

 

 لطفا نظر دهید چه مطالبی در این وبلاگ قرار دهم

 

برای نصب Globusموارد زیر را باید در نظر بگیریم

نسبت به نرم افزاری که از Globus دانلود کردیم باید linux مربوط به آن را نصب کرده

حال برای پیاده سازی باید ورژن جاوا در linux و gcc آن را چک کنیم که اگر آن ورژن ها را ساپورت نمی کرد آنها را نصب کنیم ورژن جاوا باید 1.6 باشد

 

برای چک کردن ورژن جاوا دستور زیر را در ترمینال تایپ می کنیم

 

Java -version

و برای update  ورژن جاوا مراحل زیر را انجام می دهیم

 

با این دستور java 1.6   از zip خارج می شود    

                                   

  (اسم فایل (java    tar xzvf

 

نکته: می توان برای سریعتر نوشتن اسم فایل حرف اول را نوشته و بعد Tabرا بزنید با این کار سریع بقیه اسم فایل را به صورت اتوماتیک می آورد

 

بعد محتویات java 1.6  را در شاخه HOME\USER  که رفته ایم OverWrite      می کنیم

به این ترتیب ورژن جاوا update  می شود

 

بعد ورژن gcc   را چک میکنیم با دستور زیر

 

gcc –v

باید ورژن gcc   4.1 نباشد چون باگ دارد می توان از ورژنهای

  3.2. 3.2.1 و  2.95.x استفاده کرد

و gccرا نمی توان  updateکردو نسخه ایی از linuxکه این ورژن را دارد نصب می کنیم

 

نرم افزار Tomcatرا هم باید نصب کرد ولی در زمان کامپایل به آن نیاز نداریم و در زمان Runtime  به آن نیاز داریم

اگراز لینوکس suse  استفاده میکنید به هیچ نرم افزار جانبی احتیاجی نداریم

با دستور زیر یک user به نام Globus  درست می کنیم

root# useradd globus

 

و از شاخه system \group and user.. می توان user  مورد نظر را ساخت

 

ودر شاخه usr/local/globus   محتویاتی که دانلود کردیم از  globusکپی     می کنیم و در آن شاخهf4  میزنیم و ترمینال باز میشود و دستورات زیر را تایپ می کنیم

 

نسبت به نام فولدری که در شاخه usr/local است نام آخرین فولدر را انتخاب می کنیم اگر فولدری که در این مسیر بود usr/local/globus-4.0.1  بود

این پیغام را باید تایپ کنیم

 

# mkdir /usr/local/globus-4.0.1
# chown globus:globus /usr/local/globus-4.0.1

حالا از user root خارج می شویم و به user Globus می رویم با سویچ کردن

و دستورات زیر را در کنسول تایپ می کنیم

 

معنی globus$ این است که از مسیری که هستیم این دستور را اجرا کنیم

و مثلا برای اجرای ./configure نباید اولش globus$ را تایپ کنیم و بعد از آن را. در اینجا  globus$یعنی در مسیر usr/local/globus-4.0.1 باشیم و

./configure --prefix=$GLOBUS_LOCATION را تایپ کنیم

 

globus$ export GLOBUS_LOCATION=/usr/local/globus-4.0.1
globus$ ./configure --prefix=$GLOBUS_LOCATION

 

اگر در root بودیم و ./configure می کردیم error می داد.

ولی حالا باید این پیغام را بدهد

1.      Optional Features:
2.        --enable-prewsmds       Build pre-webservices mds. Default is disabled.
3.        --enable-wsgram-condor  Build GRAM Condor scheduler interface. Default is disabled.
4.        --enable-wsgram-lsf     Build GRAM LSF scheduler interface. Default is disabled.
5.        --enable-wsgram-pbs     Build GRAM PBS scheduler interface. Default is disabled.
6.        --enable-i18n           Enable internationalization. Default is disabled.
7.        --enable-drs            Enable Data Replication Service. Default is disabled.
8.        [...]
9.      Optional Packages:
10.   [...]
11.   --with-iodbc=dir        Use the iodbc library in dir/lib/libiodbc.so.
12.                           Required for RLS builds.
13.   --with-gsiopensshargs="args"
14.                           Arguments to pass to the build of GSI-OpenSSH, like
15.                           --with-tcp-wrappers

 

 

 

در مرحله چهارم

 

     globus$ make

 

نکته :اگر شما یک log file  بخواهید  داشته باشید باید تایپ کنید

 

globus$ make 2>&1 | tee build.log

 

در مرحله پنجم و آخر

 

globus$ make install

 

در این مرحله کامل شده است Install و حالا شما باید پیکربندی کنید قسمتهایی که در زیر شرح داده شده است

 

توصیه میکنیم که Install  کنید هر security

حالا شما مراحل security را طبق این step ها باید نصب کنید

که در بر می گیرد   به دست آوردن host certificates و user certificates  و ساختن

grid-mapfile  که در صفحات بعدی به آن اشاره می شود

با security setup شما میتوانید شروع کنید سرور GridFTP

پیکربندی DB برای RFT  و پیکربندی  WS-GRAM

و شما همچنین میتوانید  شروع کنید یک GSI-OpenSSH daemon

و setup کنید یک سرور MyProxy و اجرا کنید RLS  و استفاده کنید CAS

 

 

قسمت security  را بعد از امتحانات می نویسم

 

 نوشته شده توسط:

یوسف عبدلیان باریکرسفی

 

Yousef_abdolian@yahoo.com

 

 

 

+ نوشته شده در  دوشنبه بیست و چهارم دی 1386ساعت 18:14  توسط یوسف عبدلیان باریکرسفی  | 

نحوه نصب Globus

به دلیل قولی که به بچه ها داده بودم قسمت اول نصب را برایتان می نویسم و

 

قسمت بعد را بعد از امتحانات مینویسم 

 

 لطفا نظر دهید چه مطالبی در این وبلاگ قرار دهم

 

برای نصب Globusموارد زیر را باید در نظر بگیریم

نسبت به نرم افزاری که از Globus دانلود کردیم باید linux مربوط به آن را نصب کرده

حال برای پیاده سازی باید ورژن جاوا در linux و gcc آن را چک کنیم که اگر آن ورژن ها را ساپورت نمی کرد آنها را نصب کنیم ورژن جاوا باید 1.6 باشد

 

برای چک کردن ورژن جاوا دستور زیر را در ترمینال تایپ می کنیم

 

Java -version

و برای update  ورژن جاوا مراحل زیر را انجام می دهیم

 

با این دستور java 1.6   از zip خارج می شود    

                                   

  (اسم فایل (java    tar xzvf

 

نکته: می توان برای سریعتر نوشتن اسم فایل حرف اول را نوشته و بعد Tabرا بزنید با این کار سریع بقیه اسم فایل را به صورت اتوماتیک می آورد

 

بعد محتویات java 1.6  را در شاخه HOME\USER  که رفته ایم OverWrite      می کنیم

به این ترتیب ورژن جاوا update  می شود

 

بعد ورژن gcc   را چک میکنیم با دستور زیر

 

gcc –v

باید ورژن gcc   4.1 نباشد چون باگ دارد می توان از ورژنهای

  3.2. 3.2.1 و  2.95.x استفاده کرد

و gccرا نمی توان  updateکردو نسخه ایی از linuxکه این ورژن را دارد نصب می کنیم

 

نرم افزار Tomcatرا هم باید نصب کرد ولی در زمان کامپایل به آن نیاز نداریم و در زمان Runtime  به آن نیاز داریم

اگراز لینوکس suse  استفاده میکنید به هیچ نرم افزار جانبی احتیاجی نداریم

با دستور زیر یک user به نام Globus  درست می کنیم

root# useradd globus

 

و از شاخه system \group and user.. می توان user  مورد نظر را ساخت

 

ودر شاخه usr/local/globus   محتویاتی که دانلود کردیم از  globusکپی     می کنیم و در آن شاخهf4  میزنیم و ترمینال باز میشود و دستورات زیر را تایپ می کنیم

 

نسبت به نام فولدری که در شاخه usr/local است نام آخرین فولدر را انتخاب می کنیم اگر فولدری که در این مسیر بود usr/local/globus-4.0.1  بود

این پیغام را باید تایپ کنیم

 

# mkdir /usr/local/globus-4.0.1
# chown globus:globus /usr/local/globus-4.0.1

حالا از user root خارج می شویم و به user Globus می رویم با سویچ کردن

و دستورات زیر را در کنسول تایپ می کنیم

 

معنی globus$ این است که از مسیری که هستیم این دستور را اجرا کنیم

و مثلا برای اجرای ./configure نباید اولش globus$ را تایپ کنیم و بعد از آن را. در اینجا  globus$یعنی در مسیر usr/local/globus-4.0.1 باشیم و

./configure --prefix=$GLOBUS_LOCATION را تایپ کنیم

 

globus$ export GLOBUS_LOCATION=/usr/local/globus-4.0.1
globus$ ./configure --prefix=$GLOBUS_LOCATION

 

اگر در root بودیم و ./configure می کردیم error می داد.

ولی حالا باید این پیغام را بدهد

1.      Optional Features:
2.        --enable-prewsmds       Build pre-webservices mds. Default is disabled.
3.        --enable-wsgram-condor  Build GRAM Condor scheduler interface. Default is disabled.
4.        --enable-wsgram-lsf     Build GRAM LSF scheduler interface. Default is disabled.
5.        --enable-wsgram-pbs     Build GRAM PBS scheduler interface. Default is disabled.
6.        --enable-i18n           Enable internationalization. Default is disabled.
7.        --enable-drs            Enable Data Replication Service. Default is disabled.
8.        [...]
9.      Optional Packages:
10.   [...]
11.   --with-iodbc=dir        Use the iodbc library in dir/lib/libiodbc.so.
12.                           Required for RLS builds.
13.   --with-gsiopensshargs="args"
14.                           Arguments to pass to the build of GSI-OpenSSH, like
15.                           --with-tcp-wrappers

 

 

 

در مرحله چهارم

 

     globus$ make

 

نکته :اگر شما یک log file  بخواهید  داشته باشید باید تایپ کنید

 

globus$ make 2>&1 | tee build.log

 

در مرحله پنجم و آخر

 

globus$ make install

 

در این مرحله کامل شده است Install و حالا شما باید پیکربندی کنید قسمتهایی که در زیر شرح داده شده است

 

توصیه میکنیم که Install  کنید هر security

حالا شما مراحل security را طبق این step ها باید نصب کنید

که در بر می گیرد   به دست آوردن host certificates و user certificates  و ساختن

grid-mapfile  که در صفحات بعدی به آن اشاره می شود

با security setup شما میتوانید شروع کنید سرور GridFTP

پیکربندی DB برای RFT  و پیکربندی  WS-GRAM

و شما همچنین میتوانید  شروع کنید یک GSI-OpenSSH daemon

و setup کنید یک سرور MyProxy و اجرا کنید RLS  و استفاده کنید CAS

 

 

قسمت security  را بعد از امتحانات می نویسم

 

 نوشته شده توسط:

یوسف عبدلیان باریکرسفی

 

Yousef_abdolian@yahoo.com

 

 

 

+ نوشته شده در  یکشنبه بیست و سوم دی 1386ساعت 16:16  توسط یوسف عبدلیان باریکرسفی  | 

فناوري‌ Grid - انقلابي در فناوري اطلاعات كه به ‌وعده‌هاي اينترنت عمل مي‌كند!

Grid Computing يا شبكه‌هاي متصل كامپيوتري مدل شبكه‌اي جديدي است كه با استفاده از پردازشگرهاي متصل به هم امكان انجام‌دادن عمليات‌ حجيم محاسباتي را ميسر مي‌سازد. Gridها در واقع از منابع كامپيوترهاي متصل به‌شبكه استفاده مي‌كنند و مي‌توانند با استفاده از برآيند نيروي اين منابع، محاسبات بسيار پيچيده را به‌راحتي انجام دهند. آن‌ها اين كار را با قطعه قطعه كردن اين عمليات و سپردن هر قطعه به‌كامپيوتري در شبكه انجام مي‌دهند. به عنوان مثال وقتي شما از كامپيوترتان براي مدتي استفاده نمي‌كنيد و كامپيوتر شما به‌ اصطلاح به‌وضعيت محافظ نمايشگر يا Screensaver مي‌رود، از پردازشگر كامپيوتر شما هيچ استفاده‌اي نمي‌شود. اما با استفاده از شبكه‌هاي Grid مي‌توان از حداكثر توانايي‌هاي پردازشگر‌ها استفاده نمود و برنامه‌اي را در كامپيوتر قرار داد كه وقتي از سيستم استفاده‌اي نمي‌شود، اين برنامه بتواند از نيروي بلااستفاده دستگاه بهره بگيرد و قسمتي از محاسبات بزرگ عملياتي را انجام دهد. در اين مقاله اين پديده در فناوري اطلاعات مورد بحث قرار مي‌گيرد و اهميت استفاده از اين فناوري، پيچيدگي‌ها، اجزاي تشكيل دهنده و استانداردهاي اين مدل بررسي مي‌شود و نشان داده خواهد شد كه با استفاده از اين مدل چگونه در وقت و زمان شما صرفه‌جويي مي‌شود. گفتني است در حال حاضر بزرگ‌ترين شبكه Grid جهان در خدمت پروژه SETI@home براي يافتن حيات هوشمند فرازميني قرار دارد. در شماره 55 ماهنامه شبكه مصاحبه‌اي اختصاصي با دكتر دان ورتيمر، دانشمند ارشد اين پروژه توسط سردبير ماهنامه انجام شده‌بود.


امروزه فناوري جديدي به‌ نام Grid به ‌عرصه ارتباطات الكترونيك قدم نهاده است كه براساسآن با دانلود كردن يك محافظ نمايشگر مخصوص مي‌توانيم به‌كامپيوترهاي شخصي خود اجازه دهيم كه وقتي از آن استفاده نمي‌كنيم، به ‌شبكه جهاني متصل شوند و به ‌سيستم‌هاي بزرگ تحقيقاتي اجازه دهند از منابع آزاد و بلااستفاده سيستم ما استفاده نمايند.

Grid computing چيست ؟
حدود 33 سال از به ‌وجود آمدن اينترنت مي‌گذرد و از سال 1989 كه وب پديد آمد، بيشتر مردم از آن استفاده مي‌كنند و به‌صورت بخشي از زندگي ايشان در آمده است. شايد علت اين استفاده زياد از اينترنت، استاندارد باز آن بوده است كه امكان ارتباط كامپيوترهاي مختلف را با يكديگر مهيا مي‌سازد. با استفاده از اينترنت مي‌توانيد از هر كامپيوتري كه به‌آن متصل است، ايميل بفرستيد و شخصي در آن طرف دنيا با كامپيوتري كاملاً متفاوت با كامپيوتر شما، آن ايميل را به ‌راحتي بخواند و به ‌شما ايميل ديگري بفرستد. امروزه تقريباً تمامي ‌شركت‌ها و سازمان‌هاي بزرگ، براي تبادل اطلاعات و فرستادن ايميل به‌مشتريان خود از اينترنت استفاده مي‌كنند. پرسش اين است كه آيا به‌راستي امكاناتي كه اينترنت در اختيار ما قرار مي‌دهد، فقط در فرستادن ايميل و داشتن وب‌سايت خلاصه مي‌شود؟ آيا اينترنت امكان استفاده از منابع سخت‌افزاري سيستم‌هاي ديگر را نيز به‌ ما مي‌دهد؟ پس از اينترنت چه ابزار يا بستري خواهد آمد؟

امروزه فناوري جديدي به‌ نام Grid به ‌عرصه ارتباطات قدم نهاده است كه براساس آن با دانلودكردن يك محافظ نمايشگر مخصوص مي‌توانيم به‌كامپيوترهاي شخصي خود اجازه دهيم كه وقتي از آن استفاده نمي‌كنيم، به ‌شبكه جهاني متصل شوند و به ‌سيستم‌هاي بزرگ تحقيقاتي اجازه دهند از منابع آزاد و بلااستفاده سيستم ما استفاده نمايد. كامپيوترهاي امروزي مانند مغز انسان معمولا از بخش كوچكي از توانايي‌هاي خود استفاده مي‌كنند و اغلب به‌ صورت غيرفعالند و منتظر اطلاعات ورودي مي‌مانند. تصور كنيد كه اگر از منابع سخت‌افزاري اين همه كامپيوتر غيرفعال استفاده شود و همه در يك كامپيوتر جمع شود، چه دستگاه پرقدرتي خواهيم داشت. Grid Computing با ‌كمك به اينترنت زمينه‌اي را فراهم آورده است كه بتوان با استفاده از آن، از منابع سخت‌افزاري سيستم‌هاي ديگر نيز استفاده نماييم.

ممكن است Grid براي افراد مختلف معاني متفاوتي داشته باشد، اما اگر بخواهيم تعريف ساده‌اي از آن داشته باشيم، مي‌توانيم بگوييم Grid Computing در واقع به‌شما اجازه مي‌دهد با استفاده از منابع سيستم‌هاي متصل به‌ شبكه و ايجاد يك منبع بزرگ از سرويس‌ها و امكانات اين سيستم‌ها، مركزي بزرگ و قدرتمند به‌ وجود آوريم كه توانايي انجام‌دادن عمليات بسيار پيچيده‌اي را داشته باشد كه يك سيستم به‌تنهايي نمي‌تواند انجام دهد. به‌نحوي كه از ديد استفاده‌كنندگان اين سيستم‌هاي بزرگ، اين عمليات تنها از طريق يك سيستم انجام مي‌شود.

Grid Computing در حقيقت نسل جديدي از شبكه‌هاي توزيع يافته است و همانند اينترنت به‌ كاربران خود اجازه مي‌دهد فايل‌ها را به ‌اشتراك بگذارند. به‌علا‌وه، منابع مشتركي از اطلاعات را براي استفاده‌كنندگان فراهم مي‌كند. با استفاده از اين سيستم‌ها مي‌توان منابع كامپيوترهاي ناهمگون را به‌اشتراك گذاشت. هدف اصلي Grid استفاده از اين منابع مشترك مانند قدرت پردازنده، پهناي باند، پايگاه اطلاعاتي و در اختيار گذاردن آن براي ‌كامپيوتر مركزي است.


انواع Grid
سيستم‌هاي Grid با توجه به‌ نيازهاي كاربران مي‌توانند در انواع مختلف مورداستفاده قرار گيرند. اغلب اين سيستم‌ها بر اساس نوع كاري كه انجام مي‌دهند، طبقه بندي مي‌شوند. از سه نوع اصلي اين سيستم مي‌توان از Gridهاي اطلاعاتي، Gridهاي جوينده منابع و Grid‌هاي محاسباتي نام برد.

Gridهاي اطلاعاتي يا Data Grid موظفند اطلا‌عات را ذخيره كنند و آن‌ها را در اختيار كاربران قرار دهند. كاربران اين سيستم‌ها بدون آن‌كه از موقعيت جغرافيايي و مكاني اين اطلاعات آگاه باشند، به ‌اطلاعات دسترسي دارند. مثلاً تصور كنيد كه دو دانشگاه در دو سوي دنيا يكي در ايران و ديگري در انگلستان روي يك مطلب علمي‌مشترك تحقيق مي‌كنند و هر يك از آن‌ها اطلاعات خاص خود را ذخيره مي‌كند و مي‌خواهد دانشگاه ديگر نيز به ‌برخي از ‌اين اطلاعات (نه تمامي‌آن) دسترسي داشته باشد. اين دانشگاه‌ها مي‌توانند از يك Data Grid استفاده كنند و اطلاعات خود را با ضريب امنيتي بالايي با هم به‌اشتراك بگذارند.

در اين نوع Grid دستگاه‌هاي متصل به‌سيستم نياز به‌قدرت زياد ندارند و فقط مسئول به ‌اشتراك گذاشتن اطلاعات هستند. از طرف ديگر Grid ‌هاي محاسباتي يا Computational Grid از آن جا كه نياز زيادي به ‌قدرت پردازنده‌ها دارند، بايد از ماشين‌هايي با قدرت بسيار بالا استفاده نمايند.

يكي ديگر از انواع Gridها، سيستم‌هاي جوينده منابع يا Scavenging Grid است. اين سيستم‌ها از تعداد زيادي كامپيوتر شخصي استفاده مي‌كنند و به‌صورت مداوم به‌دنبال ظرفيت‌ها، منابع آزاد و چرخه پردازنده (CPU cycle) كامپيوتر‌هاي متصل به ‌Grid هستند و از اين منابع استفاده مي‌نمايند. البته صاحبان اين كامپيوترهاي شخصي بايد قبلا‌ً اجازه استفاده از منابع بدون استفاده خود را بدهند.

اهميت Grid Computing
تقريبا در همه سازمان‌ها و شركت‌هاي بزرگ تعدادي كامپيوتر بدون استفاده وجود دارد. مثلاً سرورهاي يونيكس از تقريباً ده تا بيست درصد از ظرفيت حقيقي خود استفاده مي‌كنند و كامپيوترهاي شخصي حدوداً از 95 درصد از ظرفيت خود اصلاً استفاده نمي‌كنند. با استفاده از Grid Computing در يك سازمان يا شركت بزرگ مي‌توان از منابع بلا‌استفاده كامپيوترهاي سازمان كمال استفاده را برد و سرعت پردازش اطلاعات در سيستم‌هايي كه با كمبود حافظه مواجهند را جبران نمود. از طرف ديگر، سرعت نرم‌افزارهايي كه از اين منبع بزرگ سخت‌افزاري استفاده مي‌كنند، بسيار بالاتر خواهد بود و در نتيجه مي‌توانيم به ‌فكر درست كردن نرم‌افزارهايي با قابليت‌هاي بالاتر باشيم و منابع بيشتري را در اختيار استفاده‌كنندگان قرار دهيم.

Grid Computing مي‌تواند مزاياي زيادي براي مديران و برنامه‌نويسان داشته باشد. مثلاً با آن مي‌توان برنامه‌هايي كه نياز به‌حافظه زيادي دارند را اجرا نمود و به ‌اطلاعات، دسترسي آسان‌تري پيدا كرد. اصولا ًGrid Computingمي‌تواند به‌سازمان‌ها و شركت‌هاي بزرگي كه سرمايه هنگفتي را در IT هزينه كرده‌اند، كمك كند از سيستم‌هاي خود حداكثر استفاده را ببرند.

فناوري‌هاي Grid در واقع مي‌توانند از منابع و سيستم‌هاي غيرمتمركز پشتيباني كنند و امكان ارتباط سيستم‌ها را با هم فراهم ‌سازند. وقتي براي اولين بار فناوري Grid ابداع شد، هدف آن تنها به‌اشتراك گذاشتن منابع سيستم و در اختيارداشتن سيستمي‌قدرتمند بود و به‌طور كلي بيشتر در اختيار مؤسسات تحقيقاتي قرار داشت. اما امروزه از Grid توقع بيش‌تري مي‌رود و اهميت بيشتري پيدا كرده است؛ به‌ويژه در تجارت الكترونيك و سيستم‌هاي تجاري غيرمتمركز و توزيع‌يافته. به‌ عنوان نمونه، مدل تجارت الكترونيك B2B را در نظر بگيريد كه دو مؤسسه تجاري اطلاعات خود را از طريق اينترنت با هم مبادله مي‌كنند. Grid نيز مي‌تواند كاري مشابه ‌را انجام دهد و دو يا چند سيستم تجاري را به‌هم مرتبط سازد. به‌طوري كه بتوانند اطلاعات خود را به‌اشتراك بگذارند. فناوري Grid همچنين مي‌تواند راه‌حل مناسبي براي افزايش دسترسي، قابليت اطمينان و امنيت سيستم‌هاي غيرمتمركز نيز باشد.


ابزار قدرتمند Globus
يكي از قدرتمند‌ترين ابزارهاي ايجاد، كنترل و مديريت سيستم‌هاي Grid، ابزار Globus است. پروژه Globus حدود سال 2003 به‌صورت عملي درآمد. اين پروژه حاصل تلاش مشترك محققان و برنامه‌نويسان Grid در سرتاسر دنياست كه بر حول چهار محور بنا شده است: تحقيق، ابزارهاي نرم‌افزاري، آزمون و نرم‌افزار‌ها. اين ابزار در نسخه 2.2 خود خدمات بسياري به‌مديران سيستم‌هاي Grid ارائه مي‌كند كه مي‌توان به امنيت، مديريت منابع و مديريت دقيق اطلاعات اشاره كرد. Globus با در اختيار گذاشتن APIها و فايل‌هاي Header زبان C براي ساختن و كامپايل برنامه‌ها به ‌برنامه‌نويسان اجازه مي‌دهد سيستم‌هاي خود را به Grid متصل نمايند و به ‌مديران امكان مي‌دهد منابع متصل به Grid را به‌راحتي مديريت كنند.

اضافه براين، Globus با در اختيار گذاشتن Componentهايي مخصوص، كار مديران Grid را آسان‌تر مي‌كند. مثلاًGlobus يك ابزار بسيار كارا به‌نام Commodity Grid) COG) كه زبان‌هاي برنامه‌نويسي مانند Python، جاوا و فناوري‌هاي روز مانند سرويس‌هاي وب، كوربا و RMI را مي‌شناسد و مي‌تواند در دو بخش تهيه نرم‌افزارهاي سازگار با Grid و مديريت سيستم‌هاي Grid به ‌ما كمك كند. البته نسخه 2.2 ابزار Globus در برخي موارد ضعف‌هايي نيز دارد. اين نسخه از سرويس‌هايي مثل مديريت Life-Cycle يا چرخه زندگي نرم‌افزار و سيستم‌هاي ذخيره و بازيابي پشتيباني نمي‌كند. البته نسخه جديد Globus يعني نسخه 3 از آن جا كه سعي داشته است با معماري باز سرويس‌هاي Grid يا همان the Open Grid Services Architecture) OGSA) هم‌خواني داشته باشد، توانسته‌است بسياري از نقاط ضعف نسخه قبلي را رفع كند.


نگاهي به‌اجزاي Grid
اجزاي تشكيل دهنده grid عبارتند از:

- رابط كاربر

- اجزاي امنيت‌

- مديريت كنترل كار سيستم (Workload management)

- زمانبند (Scheduler)

- مديريت اطلاعات (Data Management)

- مديريت منابع (Resource management)

در اين قسمت به‌صورت مختصر در مورد هر يك از اين اجزا توضيح داده مي‌شود. دسترسي به ‌اطلاعات در Grid اهميت شاياني دارد و رابط كاربر يا User Interface اين مسئوليت مهم را عهده‌دار است. رابط كاربر مي‌تواند يا در برنامه‌اي كه كاربر از آن مستقيما استفاده مي‌كند يا در ابزارهاي مديريتي Grid كه مورد استفاده مدير سيستم است، نقش ايفا كند. همانطور كه شما براي استفاده از برق فقط وسيله برقي خود را به ‌پريز برق متصل مي‌كنيد و لازم نيست از مكان منبع يا منابع اصلي اين قدرت اطلاعي داشته باشيد، استفاده كننده سيستم Grid نيز الزاماً نبايد از پيچيدگي‌هاي داخل اين سيستم‌ها مطلع باشد. مثال ديگر اين‌كه، شما از مرورگر وب جهت استفاده از اينترنت استفاده مي‌كنيد؛ بدون اين‌كه از مكان سرور وب سايت اطلاعي داشته باشيد و تنها با وارد كردن آدرس سايت موردنظر، وب سايت آن در مرورگر نمايش داده مي‌شود. اينترفيس Grid نيز بايد مانند مرورگر باشد. يعني استفاده‌كننده Grid نيز از پيچيدگي‌هاي اين سيستم اطلاعاتي ندارد و فقط با ورود يك پارامتر ورودي، يك خروجي دريافت مي‌كند. (شكل 1)



شکل1- سيستم‌هاي Gird از ديد استفاده کنندگان

كامپيوترها در Grid به ‌شبكه متصلند. اين سيستم‌ها همچنين مي‌توانند حاوي اطلاعات بسيار مهم و حساسي باشند. در نتيجه امنيت را مي‌توان يكي از مهم‌ترين اجزايي اين سيستم‌ها دانست كه خود حاوي اجزاي فرعي مانند احراز هويت (authentication)، اختيارات (authorization) و رمزدهي (encryption) است.

مثلاً ابزار Globus حاوي يك Component به‌ نام Grid Security Infrastructure) GSI) يا ساختار زير بنايي امنيت Grid است كه مسئوليت امنيت در محيط را برعهده دارد. GSI حاوي يك SSL باز است. در نتيجه وقتي يك استفاده كننده يك بار به‌صورت مجاز به‌ سيستم راه پيدا كرد، يك Proxy Certificate براي كاربر به‌ وجود مي‌آيد و براي آن كاربر در نظر گرفته مي‌شود. GSI در درگاه Grid قرار دارد. (شكل 2)



شكل2- GSI در Gird

استفاده كننده از يك سيستم Grid بايد از منابع موجود و قابل دسترس در سيستم اطلاع داشته باشد. مديريت كنترل كار سيستم يا Workload Management مي‌تواند اين كار را به‌ راحتي انجام دهد. درخواست‌كننده سرويس مي‌تواند با ارتباط با اين قسمت از منابع آزاد سيستم، ظرفيت هر منبع و موقعيت آن‌ها اطلاع حاصل نمايد. در سيستم‌هاي Grid كه توسط Globus هدايت مي‌شوند، زماني كه يك استفاده كننده شناسايي شد و برنامه موردنظر آن كاربر اجرا گرديد، با توجه به ‌نوع نرم‌افزار و پارامترهاي ورودي كاربر، سيستم Grid به‌دنبال منابع آزاد موجود در شبكه مي‌گردد.

اين وظيفه اغلب به‌ عهده Broker ها است. Globus به‌صورت عادي، ‌Broker ندارند، اما از سرويس‌هايي مانند
Grid Information Service) GIS) و Monitoring and Discovery Service) MDS) را پشتيباني مي‌كنند كه به‌سيستم اطلاع مي‌دهند كدام منبع يا منابع قادرند منابع خود را در اختيار بگذارند. شكل 3 موقعيت اين سرويس‌ها را نمايش مي‌دهد.



شكل 3- موقعيت سرويس‌هاي MDS در Gird

يكي ديگر از اجزايي كه در سيستم‌هاي Grid بسيار اهميت دارد، زمانبند يا Scheduler است. در اين سيستم‌ها از آن جايي كه بايد هر كاري را كامپيوتر مشخصي به‌عهده بگيرد و هر كامپيوتر بايد مدت زماني را در اختيار Grid قرار دهد، سيستم نياز به‌ يك زمانبند دارد. اين زمانبند مي‌تواند بسيار ساده باشد، اما اكثر زمانبند‌ها بايد بتوانند كارها را اولويت‌بندي كنند و سيستم را كنترل نمايند. در ابزار Globus زمانبند‌هايي با قابليت بالا وجود ندارند، اما تعدادي سازوكار زمانبند وجود دارد كه كار زمانبندهاي دقيق را تا حدي انجام مي‌دهد. شكل 4 موقعيت زمانبند‌ها را در Grid نشان مي‌دهد.



شكل 4- موقعيت زمانبند‌ها در Grid

جزء ديگر Grid‌ها، مديريت اطلاعات اين سيستم‌ها است كه وظيفه ذخيره‌سازي اطلاعات را در سيستم به عهده‌ دارد. اين بخش وظيفه محافظت از اطلاعات و جابه‌جايي اين اطلاعات در تمامي‌دستگاه‌هاي متصل به ‌Grid را عهده‌دار است. جابه‌جايي و انتقال اطلاعات كار بسيار مشكلي است و اطلاعات بايد از كانالي مطمئن منتقل شود.

با استفاده از ابزار Globus و بخش مديريت اطلاعات اين ابزار، مي‌توان محيطي امن براي انتقال اين اطلاعات به ‌وجود آورد. اين قسمت از Globus به Grid Access to Secondary Storage) GASS) معروف است كه امكاناتي مانندGridFTP را دربردارد كه مانند FTP است، اما امكانات امنيتي مانند GSI را نيز دربرمي‌گيرد. در نتيجه وقتي يك كاربرProxy Certificate را داشته‌باشد، مي‌تواند از GridFTP جهت انتقال فايل‌ها استفاده كند؛ بدون آن كه نياز داشته باشد دوباره به‌ سيستم وارد شود. شكل 5 موقعيت GASS را در Grid نشان مي‌دهد.






شكل5- GASS در Gird

از ديگر بخش‌هاي مهم Grid، بخش مديريت منابع است كه به‌ Grid Resource Allocation Manager) GRAM) شهرت دارد. اين بخش وظايف هر دستگاه را مشخص مي‌كند و باعث هماهنگي دستگاه‌هاي متصل به ‌شبكه در انجام‌دادن امور محوله است. شكل 6 محل قرار گرفتن GRAM را نشان مي‌دهد.



شكل 6- بخش مديريت منابع در Grid

Grid از ديد برنامه نويسان


از ديد برنامه‌نويسان، Grid از سازمان‌هاي مجازي‌اي تشكيل شده است كه از پروتكل‌هاي مخصوصي براي ارتباط با هم استفاده مي‌كنند. اين پروتكل‌ها به ‌استفاده‌كنندگان Grid و برنامه‌ها اجازه مي‌دهند سرويس‌هاي خود را در محيطي كنترل شده و امن اجرا كنند. اين سازمان‌هاي مجازي مي‌توانند يك كامپيوتر شخصي، سروري قدرتمند يا كامپيوترهاي متصل به‌ شبكه باشند كه از آن جا كه پروتكل يكساني دارند، مي‌توانند با هم متصل باشند و از منابع يكديگر استفاده نمايند.

گروه جهاني Grid با ارائه معماري باز سرويس‌هاي Grid يا Open Grid Services Architecture) OGSA) و جمعآوري استانداردهاي باز، مانند زبان تعريف سرويس‌هاي وب يا Web Services Description Language) WSDL) توانسته است استانداردي آسان و در عين حال دقيق براي سيستم‌هاي Grid تعريف كند. از آن گذشته، OGSA از تجربيات به‌ دست آمده از پروژه‌هاي بزرگي مانند Globus نيز بهره‌مند است. شكل 7 ساختار معماري اين استاندارد را نشان مي‌دهد.



شکل 7- ساختار معماري باز سرويس هاي Grid


استانداردهاي باز و پروتكل‌هاي اين معماري راه توليد سرويس‌ها را نشان مي‌دهند. اين سرويس‌ها قلب Grid هستند و در واقع به ‌استفاده‌كننده اجازه مي‌دهند با Grid كار كند. اين سرويس‌ها عبارتند از:

- سرويس درخواست‌هاي پردازنده مركزي

- سرويس مديريت كنترل كار سيستم و sessionها

- سرويس جست‌وجوي اطلاعات

- سرويس تعيين پهناي باند شبكه‌

- سرويس مديريت اطلاعات‌

وقتي متخصصان Grid درباره شروع شدن يك سرويس صحبت مي‌كنند، مثلاً شروع شدن سرويس جست‌وجوي اطلاعات، منظور يك نمونه يا Instance سرويس است كه مي‌تواند تكاليف بلند مدت يا موقتي داشته باشد. اين سرويس‌ها مي‌توانند به‌صورت فعال يا غير فعال باشند و زمان فعاليت را مي‌توان با زمانبند يا به‌صورت اختياري تعيين نمود. ‌سرويسي خوب است كه بتواند به‌راحتي امكانات خود را در اختيار استفاده كننده قرار دهد. مثلاً وقتي يك وسيله الكترونيكي را به ‌پريز برق متصل مي‌كنيد، براي شما هيچ اهميتي ندارد كه برق مورد نيازتان از كجا مي‌آيد؛ فقط مي‌خواهيد از برق استفاده كنيد.

سرويس خوب Grid نيز سرويسي است كه بتواند سرويس موردنظر ‌استفاده‌كننده را به‌راحتي دراختيار او قرار دهد و استفاده‌كننده بتواند به ‌سادگي از آن استفاده كند. مثلا سرويس بانك‌اطلاعاتي در Grid بايد به‌صورتي عمل كند كه استفاده كننده فقط يك جست‌وجو وارد كند و جواب جست‌وجوي خود را بگيرد؛ بدون اين‌كه از جايگاه و عمليات بانك‌اطلاعاتي خبر داشته باشد.


پيچيدگي‌ها
اگر تصور مي‌كنيد سيستم‌هاي Grid پيچيده‌اند و ممكن است كار با آن‌ها مشكل باشد، كاملاً درست فكر مي‌كنيد. مثلاً سيستم‌هاي Grid بايد به‌سرعت قادر باشند منابع سيستم‌هاي متصل به‌آن‌ها را شناسايي كنند و در عين حال نبايد از سرعت و كارايي اين سيستم‌ها بكاهند. نكته بسيار مهم ديگري كه مشخصاً ارتباطي به ‌Grid ندارد ولي در اين سيستم‌ها تأثير‌گذار است، ساختن نرم‌افزارهايي است كه بتوانند با سيستم‌هاي Gird كار كنند.

امروزه بيشتر نرم‌افزارها مي‌توانند روي كامپيوتر‌هاي شخصي يا حتي سرور‌ها كار كنند. يعني در واقع اين نرم‌افزارها از يك پردازنده مركزي استفاده مي‌كنند، اما در سيستم‌هاي Gird، ممكن است چند پردازنده اين كار را به‌عهده بگيرند و چند سيستم با هم كار كنند. البته هر سيستم يك كار را انجام مي‌دهد. سپس نتايج محاسبات جمع مي‌شود و به ‌درخواست كننده سرويس برگشت داده مي‌شود.

وقتي يك نرم‌افزار يا مجموعه‌اي از نرم‌افزارها بخواهند از Grid استفاده كنند، مسئله به‌اشتراك گذاشتن اطلاعات، تكه تكه كردن اين اطلاعات، ‌انتقال آن با امنيت كامل و مديريت اين اطلاعات كار دشواري است و كاربر Grid فقط اطلاعاتي را وارد مي‌كند و نمي‌داند در داخل سيستم چه مي‌گذرد. در نتيجه اين سيستم‌ها بايد طوري اين كار را انجام دهند كه كاربران Grid بدون نگراني از انتشار اطلاعات سري خود يا بروز اشتباه در محاسبات، به ‌Grid اطمينان كنند.

امنيت سيستم‌هاي Grid نيز بسيار حائز اهميت است. كاربران اين سيستم‌ها بايد از دسترسي به‌منابع ايشان در سيستم اطلاع حاصل كنند و بدانند كدام كاربر به‌اطلاعات آن‌ها دسترسي دارد. اضافه بر اين، قابليت اطمينان و سرعت اين سيستم‌ها بسيار اهميت دارد. اگر سيستم‌هاي Grid از سرعت كافي برخوردار نباشد، كاربران Grid از استفاده از اين سيستم‌ها دلسرد مي‌شوند.

چگونه Grid بسازيم ؟
ممكن است پس از خواندن مطالبي كه تا اينجا گفته شد، به‌ اين فكر افتاده باشيد كه آيا مي‌توانيد خودتان يك Grid بسازيد؟ البته كه مي‌توانيد! مي‌توانيد از نرم‌افزارهاي منبع آزاد يا اپن‌سورس استفاده كنيد و يك محيط Grid بسازيد. اولين قدم براي شروع، دانلود كردن ابزار Globus است. Globus همان‌طور كه قبلاً نيز بحث شد، ابزاري است قدرتمند براي ايجاد و مديريت محيط Grid. همچنين، به‌ سرويس‌هايي براي ساختن Grid نياز داريد كه شامل سرويس مديريت اطلاعات، سرويس پرس‌و‌جوي اطلاعات، درخواست‌كننده نيروي پردازشگر، زمانبند و سرويس تقسيم‌كننده پهناي‌باند ‌باشند. اين سرويس‌ها به‌سرويس‌هاي Grid معروفند و در واقع همان سرويس‌هاي وب هستند؛ البته با قابليت‌هاي بيشتر و مرتبط با Grid. برخي از كامپيوترهاي شما كه به ‌شبكه Gird متصلند، ميزبان سرويس‌هاي Grid خواهند بود و كامپيوترهاي ديگر از اين سرويس‌ها استفاده مي‌كنند.

به علا‌وه، براي ساختن يك Grid به‌ابزارهايي نيز نياز خواهيد داشت: ابزارهاي زيربنايي مثل زمانبندها، ابزارهاي مديريت منابع، مديريت امنيتي و ابزارهاي انتقال فايل مانند GridFTP كه قبلاً توضيح داده شد. ابزار ديگري كه حتما به‌آن نياز خواهيد داشت، Grid Directory Services) GDS) است كه فهرست سرويس‌هاي آماده را در اختيار دارد. به‌علا‌وه، به ‌API‌هايي نيز نياز داريد كه برنامه‌هاي شما را با Grid هماهنگ سازند و به‌برنامه‌هاي شما امكان دهند در محيط Grid كار كنند. خواندن منابع زير نيز شما را در يادگيري بيشتر Grid Computing ياري مي‌نمايد:


www.gridcomputing.com/ingplanet.com

computingplanet.com/features/article.php/3396741

www-128.ibm.com/developerworks/grid/library/grfuture.html

+ نوشته شده در  یکشنبه شانزدهم دی 1386ساعت 11:3  توسط یوسف عبدلیان باریکرسفی  | 

طریقه نصب برنامه محاسبات شبكه‌ای را با كمك ابزارهای open-source فرا بگيريد

چارچوبی برای محاسبات شبكه‌ای

 

ساخت برنامه محاسبات شبكه‌ای را با كمك ابزارهای open-source فرا بگيريد

 چكيده

چارچوب‌هاي محاسباتي شبكه‌اي در مقياس بزرگ را مي‌توان براي ايجاد زير‌ساختارهاي شبكه‌اي محاسباتي بكار برد، اما پيچيدگي اين چارچوبها مي‌تواند مانعي براي طراحان نرم‌افزار در آزمايش محاسبات شبكه‌اي سطح ورودي باشد.

اين مقاله با كمك ClassLoader سفارشي جاوا، كانتينر سرولت Tomcat، Axis SOAP (Simple object Access protocol)، چارچوب ساده‌اي را براي پشتيباني از حداقل نيازمندهاي شبكه‌اي (گرير) نظير استقلال ماشين، توزيع محاسبه فعاليت انتزاعي شده و اجرا، و زيرساختار امن و اندازه‌پذيري، تشريح مي‌كند.

محاسبات اينترنتي اصطلاحي است كه براي توصيف كاربرد چند كامپيوتر شبكه‌بندي شده براي اجراي برنامه‌هاي محاسباتي انحصاري بكار مي‌رود. پروژه The search for Extraterrestrial Intelligence SETI مشهورترين مثال اين مورد است كه در آن پروژه، نيم ميليون كاربر خانگي و سازماني از توان پردازشي براي تحليل داده‌هاي تلسكوپ راديويي براي SETI استفاده مي‌كردند.

پروژه SETI نمونه‌اي از قلمرو محاسبات اينترنتي است كه برنامه انحصاري و انسجام عمودي دارد. به عبارتي استفاده عمومي از منابع محاسباتي وجود ندارد و جريان داده‌اي بين منبع محاسبات و سرور داده‌اي از APIهاي اختصاصي استفاده مي‌كند. هنگامي كه ارتقا يك برنامه لازم است، بايد در فواصلي اجراهاي جديد download شوند، و در واقع هيچ لايه مديريتي براي قرار دادن ديناميكي فعاليت‌هاي محاسباتي جديد وجود ندارد.

تبديل: اينترنت به محاسبات شبكه‌اي

با اين تبديل كه حاصل موفقيت پروژه SETI است، محققان تصميم گرفته‌اند براي بهره‌برداري از حجم عظيم منابع محاسبات متصل به اينترنت، اما به گونه‌اي امن، قابل مديريت و قابل توسعه، كارهايي را انجام دهند. در چند سال گذشته، چارچوب‌هاي متعددي با تاكيد بر مديريت منابع اشتراكي،‌ توسعه يافتند. اين چارچوبها گونه‌هاي زير را فراهم مي‌آورند:

- استقلال ماشين در حين استفاده از جاوا و سرويس‌هاي وب

- امنيت در پياده‌سازي‌هاي سرويس وب نظير SOAP با تركيب پيش ساخته HTTP و كنترل اعتبار كاربر

- تجرد فعاليت، كه قابليت سيستم مديريت براي سپردن وظايف اختياري به منابع مبتني بر شبكه است.

- مديريت منابعي به جز پردازنده نظير فضاي ذخيره‌سازي فايل

- مديريت پوياي همه موارد فوق با ارزيابي بيدرنگ وضعيت شبكه

بعضي از چارچوب‌ها در اين زمينه موفق عمل كردند به طوري كه طراحان اينگونه چارچوبها، آنها را در قالب تول‌كيت عرضه نمودند. Globus Toolkit 3.0 نمونه‌اي از اين تول‌كيت‌هاست. اين تول‌كيت توسعه OGSA (Open Grid Services Architecture) را تحت تاثير قرار مي‌دهد. محققان سان ميكروسيستمز نيز چارچوب محاسبات ديگر مبتني بر API ارتباطي jxta peer-to-peer توسعه داده‌اند. اين چارچوبها با وجود توانمندي كه دارند نيازمند دانش بسار بالايي براي بهره‌برداري موفقيت‌آميزشان هستند. اين امر مانعي براي افراد يا گروه‌هايي است كه قصد دارند از اين طريق تجربه بيندوزند. اين چارچوب‌ها براي برنامه‌نويسان جديد همانند استفاده از struts براي اولين برنامه وب است.

 

شكل 1. توالي ساده اجراي گريد

 

 

 

 

 

 

حداقل چارچوب محاسبات شبكه‌اي

من يك چارچوب كوچكي را در اين مقاله نشان مي‌دهم كه به سادگي محيط محاسباتي شبكه‌اي را مي‌سازد. اين چارچوب را مي‌توان به سرعت با كمك TomCat، Axis توسعه داد. چارچوب مذكور با وجود سادگي، حداقل نيازمنديهاي شبكه را برآورده مي‌سازد:

 

شكل 2. خروجي فرمان IS در يونيكس

 

 

- استقلال ماشين از طريق به كار‌گيري جاوا، Tomcat و Axis حاصل مي‌شود.

- زيرساختار امن و اندازه‌پذير كه با بكارگيري سرويس‌هاي وب مبتني بر SOAP براي ارتباطات كلاينت سرور حاصل مي‌شود.

- اجراي فعاليت انتزاعي كه با بكارگيري ClassLoader به دست مي‌آيد. كلاينت با كمك ClassLoader مي‌تواند كلاسهاي thread اختياري جاوا را شناسايي و اجرا كند.

شكل 1 نماي ساده‌اي از معماري چارچوب و توالي اجرا را به تصوير مي‌كشد.

 

 

 

ساخت يك برنامه نمونه

من در اين مقاله بر ساخت و آزمايش چارچوب مذكور متمركز مي‌شوم و مثال‌هايي را به ترتيب زير ارائه مي‌دهم:

1. ساخت سرويس Server-side SOAP با كمك TomCat و Axis

2. برقراري stubs ارتباطي براي پشتيباني از كاربرد client-side سرويس SOAP.

3. ساخت ClassLoader سفارشي Client-side

4. ساخت برنامه اصلي كلاينت

5. ساخت فعاليت محاسباتي براي تمرين كردن ClassLoader

 

 

شكل 3. مشاهده WSDL از اينترنت اكسپلورر

 

ساخت سرويس SOAP

سرويس SOAP كه در اين مقاله مي‌سازم، رابطه تنگاتنگي با لايه مديريت دارد. سرويس SOAP به برنامه محاسباتي شبكه‌اي امكان مي‌دهد تا كلاسهاي مورد نياز خود را از سرور SOAP بگيرد. در حاليكه مثال من يك فايل Jar خاص را ارائه مي‌دهد، نسخه واقعي اين سرويس به چند فايل jar (كه هر يك حاوي فعاليت محاسباتي متفاوتي هستند) دسترسي خواهد داشت و منطقي براي كنترل JAR دارد.

 

شكل 4. نتايج WSDL2Java

 

 

اولين گام در فراهم آوردن سرويس SOAP، تنظيم زيرساختار SOAP است. من TomCot را به عنوان سرور كانتينر سرولت /HTTP برگزيدم، زيرا يك پروژه open-source

 قابل اعتماد و كاربرد آن آسان است. من Axis را به عنوان سرويس‌دهنده SOAP برگزيدم، زيرا از Service installer با كاربرد آن drap and drop پشتيباني مي‌كند و همراه با ابزاري است كه SOAP client-side stubs را از فايلهاي (web services Description Language) WSDL مي‌سازد.

پس از download و نصب Tomcat 4.0.6 و Axis 1.0، كلاس Grid Connection سرويس SOAP را نوشتم. اين سرويس فايل Jar شناخته شده‌اي را استخراج، آن را در آرايه بايت بارگذاري نموده و آرايه بايت را به فراخوان باز مي‌گرداند، كد زير فايل كلي Grid connection Java است:

 

////  GridConnection.java
//
import java.util.*;
import java.io.* ;

public class GridConnection {

  public byte[] getJarBytes () {

    byte[] jarBytes = null ;
          
    try {
      FileInputStream fi = new FileInputStream("/Users/tkarre/MySquare/build/MySquare.jar");
      jarBytes = new byte[fi.available()];
      fi.read(jarBytes);
      fi.close() ;
    }
    catch(Exception e) {}
    
    return jarBytes ;
  }
}

نصب سرويس SOAP

طرح نصب (Axis Java web Service) JWS، نصب سرويس جديد ما را آسان مي‌سازد. شما مي‌توانيد يك سرويس ساده (مانند كلاس GridConnection فوق) را با Axis بنويسيد، پسوند java. فايل را به JWS تغيير دهيد و آن را به دايكتوري Axis Webapp، درگ و drop كنيد. Axis، .jws جديد را شناسايي و و تفسير نموده و آن را به صورت نقطه انتهايي SOAP، در دسترس قرار مي‌دهد. شكل 2 اين فايل و فايل‌هاي ساخته شده كلاس JWS را نشان مي‌دهد. در خروجي فرمان IS يونيكس، فايل GridConnection .JWS را بيابيد.

 

ساخت Stubهاي ارتباطي Client-side

به محض اينكه سرويس جديد SOAP را نصب نمودم، بايد كد Client-side را براي استفاده از سرويس توليد مي‌كردم. من از ابزار خط فرمان Axis WSDL2Java براي توليد فايلهاي جاوا استفاده نمودم. اين فايل‌ها، stubهاي لازم براي درخواست سرويس SOAP را فراهم مي‌آورند.

اين ابزار فرايند كد‌نويسي دستي كلاسهاي مورد نياز براي پياده‌سازي client-side واسط SOAP را حذف مي‌كند. ابزار WSDL2Java به فايل WSDL نياز دارد، لذا از گونه ديگر Axis براي سرويسمان استفاده مي‌كنم. Axis مي‌تواند WSDL قابل رويت را با استفاده از مرورگر وب براي هر گونه سرويسي كه به طور محلي نصب شده است، توليد كند. من در كلاس GridConnection از URL.

http://localhost:8080/axis/GridConnection.JWS?wsdl استفاده نمودم.

شكل 3، WSDL را كه Axis براي مشاهده در اينترنت اكسپلورر توليد مي‌كند، نشان مي‌دهد. شما مي‌توانيد پس از ذخيره فايل WSDL (بدين منظور مي‌تواند از فرمان View Source استفاده و آن را ذخيره نماييد)، ساخت stub را ادامه دهيد. من WSDL را به صورت Grid Connection.wsdl ذخيره و سپس فرمان زير را انجام دادم.

 

Java org. apache. axis. wsdl. WSDL2Java - 0 -pcom. perficient. grid. client Grid Connection.wsdl

 

پارامتر –p به WSDL2Java مي‌گويد كه ساختار پكيج را براي com.perficient.grid.client بسازد. من براي ساخت برنامه واقعي كلاينت، از اين پكيج استفاده نمودم. شكل 4 اجراي اين فرمان را نشان مي‌دهد. (توجه نماييد كه مسير كلاس را به گونه‌اي تنظيم نماييد كه شامل JARهاي متعدد نصب شده با Axis باشد.) WSDL2Java در شكل 4، ساختار دايركتوري پكيج و چهار فايل جاوا ساخته است. محتواي چهار فايل‌ جاوا كه با ابزار WSDL2Java ساخته شده، در ذيل آمده است:

/**
* GridConnection.java
*
* This file was auto-generated from WSDL
* by the Apache Axis WSDL2Java emitter.
*/

package com.perficient.grid.client;

public interface GridConnection extends java.rmi.Remote {
  public byte[] getJarBytes() throws java.rmi.RemoteException;
}


/**
* GridConnectionService.java
*
* This file was auto-generated from WSDL
* by the Apache Axis WSDL2Java emitter.
*/

package com.perficient.grid.client;

public interface GridConnectionService extends javax.xml.rpc.Service {
  public java.lang.String getGridConnectionAddress();

  public com.perficient.grid.client.GridConnection getGridConnection() throws javax.xml.rpc.ServiceException;

  public com.perficient.grid.client.GridConnection getGridConnection(java.net.URL portAddress) throws javax.xml.rpc.ServiceException;
}


/**
* GridConnectionServiceLocator.java
*
* This file was auto-generated from WSDL
* by the Apache Axis WSDL2Java emitter.
*/

package com.perficient.grid.client;

public class GridConnectionServiceLocator extends org.apache.axis.client.Service implements com.perficient.grid.client.GridConnectionService {

  // Use to get a proxy class for GridConnection.
  private final java.lang.String GridConnection_address = "http://localhost:8080/axis/GridConnection.jws";

  public java.lang.String getGridConnectionAddress() {
    return GridConnection_address;
  }

  // The WSDD service name defaults to the port name.
  private java.lang.String GridConnectionWSDDServiceName = "GridConnection";

  public java.lang.String getGridConnectionWSDDServiceName() {
    return GridConnectionWSDDServiceName;
  }

  public void setGridConnectionWSDDServiceName(java.lang.String name) {
    GridConnectionWSDDServiceName = name;
  }

  public com.perficient.grid.client.GridConnection getGridConnection() throws javax.xml.rpc.ServiceException {
    java.net.URL endpoint;
      try {
        endpoint = new java.net.URL(GridConnection_address);
      }
      catch (java.net.MalformedURLException e) {
        return null; // unlikely as URL was validated in WSDL2Java
      }
      return getGridConnection(endpoint);
  }

  public com.perficient.grid.client.GridConnection getGridConnection(java.net.URL portAddress) throws javax.xml.rpc.ServiceException {
    try {
      com.perficient.grid.client.GridConnectionSoapBindingStub _stub = new com.perficient.grid.client.GridConnectionSoapBindingStub(portAddress, this);
      _stub.setPortName(getGridConnectionWSDDServiceName());
      return _stub;
    }
    catch (org.apache.axis.AxisFault e) {
      return null;
    }
  }

  /**
   * For the given interface, get the stub implementation.
   * If this service has no port for the given interface,
   * then ServiceException is thrown.
   */
  public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {
    try {
      if (com.perficient.grid.client.GridConnection.class.isAssignableFrom(serviceEndpointInterface)) {
        com.perficient.grid.client.GridConnectionSoapBindingStub _stub = new com.perficient.grid.client.GridConnectionSoapBindingStub(new java.net.URL(GridConnection_address), this);
        _stub.setPortName(getGridConnectionWSDDServiceName());
        return _stub;
      }
    }
    catch (java.lang.Throwable t) {
      throw new javax.xml.rpc.ServiceException(t);
    }
      throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface:  " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));
  }

  /**
   * For the given interface, get the stub implementation.
   * If this service has no port for the given interface,
   * then ServiceException is thrown.
   */
  public java.rmi.Remote getPort(javax.xml.namespace.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {
    java.rmi.Remote _stub = getPort(serviceEndpointInterface);
    ((org.apache.axis.client.Stub) _stub).setPortName(portName);
    return _stub;
  }

  public javax.xml.namespace.QName getServiceName() {
    return new javax.xml.namespace.QName("http://localhost:8080/axis/GridConnection.jws", "GridConnectionService");
  }

  private java.util.HashSet ports = null;

  public java.util.Iterator getPorts() {
    if (ports == null) {
      ports = new java.util.HashSet();
      ports.add(new javax.xml.namespace.QName("GridConnection"));
    }
    return ports.iterator();
  }

}


/**
* GridConnectionSoapBindingStub.java
*
* This file was auto-generated from WSDL
* by the Apache Axis WSDL2Java emitter.
*/

package com.perficient.grid.client;

public class GridConnectionSoapBindingStub extends org.apache.axis.client.Stub implements com.perficient.grid.client.GridConnection {
  private java.util.Vector cachedSerClasses = new java.util.Vector();
  private java.util.Vector cachedSerQNames = new java.util.Vector();
  private java.util.Vector cachedSerFactories = new java.util.Vector();
  private java.util.Vector cachedDeserFactories = new java.util.Vector();

  public GridConnectionSoapBindingStub() throws org.apache.axis.AxisFault {
    this(null);
  }

  public GridConnectionSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
    this(service);
    super.cachedEndpoint = endpointURL;
  }

  public GridConnectionSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
    if (service == null) {
      super.service = new org.apache.axis.client.Service();
    } else {
      super.service = service;
    }
  }

  private org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
    try {
      org.apache.axis.client.Call _call =
        (org.apache.axis.client.Call) super.service.createCall();
      if (super.maintainSessionSet) {
        _call.setMaintainSession(super.maintainSession);
      }
      if (super.cachedUsername != null) {
        _call.setUsername(super.cachedUsername);
      }
      if (super.cachedPassword != null) {
        _call.setPassword(super.cachedPassword);
      }
      if (super.cachedEndpoint != null) {
        _call.setTargetEndpointAddress(super.cachedEndpoint);
      }
      if (super.cachedTimeout != null) {
        _call.setTimeout(super.cachedTimeout);
      }
      if (super.cachedPortName != null) {
        _call.setPortName(super.cachedPortName);
      }
      java.util.Enumeration keys = super.cachedProperties.keys();
      while (keys.hasMoreElements()) {
        java.lang.String key = (java.lang.String) keys.nextElement();
        if(_call.isPropertySupported(key))
          _call.setProperty(key, super.cachedProperties.get(key));
        else
          _call.setScopedProperty(key, super.cachedProperties.get(key));
      }
      return _call;
    }
    catch (java.lang.Throwable t) {
      throw new org.apache.axis.AxisFault("Failure trying to get the Call object", t);
    }
  }

  public byte[] getJarBytes() throws java.rmi.RemoteException {
    if (super.cachedEndpoint == null) {
      throw new org.apache.axis.NoEndPointException();
    }
    org.apache.axis.client.Call _call = createCall();
    _call.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "base64Binary"), byte[].class);
    _call.setUseSOAPAction(true);
    _call.setSOAPActionURI("");
    _call.setOperationStyle("rpc");
    _call.setOperationName(new javax.xml.namespace.QName("http://localhost:8080/axis/GridConnection.jws", "getJarBytes"));

    java.lang.Object _resp = _call.invoke(new java.lang.Object[] {});

    if (_resp instanceof java.rmi.RemoteException) {
      throw (java.rmi.RemoteException)_resp;
    }
    else {
      try {
        return (byte[]) _resp;
      } catch (java.lang.Exception _exception) {
        return (byte[]) org.apache.axis.utils.JavaUtils.convert(_resp, byte[].class);
      }
    }
  }

}

اين كدها بايد با برنامه كلاينت لحاظ شوند آنها كلاسهاي لازم براي اتصال به انتهاي SOAP را فراهم مي‌آورند و ClassLoader سفارشي از آنها استفاده خواهد نمود.

 

ساخت ClassLoader سفارشي

ClassLoader سفارشي مهمترين جز برنامه كلاينت گريد است - كه فايل jar را از طريق سرويس SOAP بازيابي نموده و سپس كلاسهاي لحاظ شده در JAR را براي اجرا در دسترس قرار مي‌دهد. من با ساختار ClassLoader مستحكمي كه در ابتدا توسط كن‌مك‌كراري در Creat a Custom Java 1.2- style ClassLoader منتشر گرديد، آغاز نمودم. سپس ClassLoader را با كد ويژه‌اي براي برنامه كامل كردم. كد اصلي Grid Connection ClassLoader.Java در ذيل آمده است.

 

//
//  GridConnectionClassLoader.java
//
//  Created by Anthony Karre on
Wed Dec 11 2002.
//  Copyright (c) 2002 Perficient. All rights reserved, except for Ken McCrary stuff.
//
//  Structure of this class was kick-started by published Ken McCrary examples:
//  Here is his copyright notice:
//
/* Copyright (c) 1999 Ken McCrary, All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies.
*
* KEN MCCRARY MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. KEN MCCRARY
* SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT
* OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/


package com.perficient.grid.client ;

import java.util.Enumeration;
import java.util.NoSuchElementException;
import java.util.zip.* ;
import java.util.jar.Manifest;
import java.util.jar.JarInputStream ;
import java.util.jar.JarFile ;
import java.util.jar.JarEntry ;
import java.util.jar.Attributes;
import java.util.jar.Attributes.Name;
import java.util.Hashtable ;
import java.io.* ;
import java.net.URL ;

public class GridConnectionClassLoader extends ClassLoader {

  // Provide normal constructor.
  
  GridConnectionClassLoader() {
    super();
    init();
  }
  
  // Provide delegation constructor.

  GridConnectionClassLoader(ClassLoader parent) {
    super(parent);
    init();
  }

در اينجا اولين متد آمده است: .init() اين متد با استفاده از SOAP stubs، سعي دارد به انتهاي SOAP متصل شود. بدين ترتيب آرايه بابت محتوي فايل Jar را استخراج مي‌كند. اين متد دو فعاليت ديگر را نيز انجام مي‌دهد. مشخص نمودن اندازه هر منبع JAR به بايت و شناسايي كلاس اصلي كه بايد اجرا شود.

در اين طراحي بايد كلاس اصلي آبجكت thread جاوا باشد. و از طريق صفت Task-Thread (مشابه با مفهوم صفت Main-Class كه در كلاسهاي اصلي ايستا به كار مي‌رود) شناسايي شود.

 

  //******************************************
  // Initialize the ClassLoader by using Web

  // services (SOAP) to fetch our JAR.
  // This jar file will contain the classes that

  // compose our grid task.
  // *****************************************
  
  private void init() {
  
    byte[] localjarbytes = null ;
    File tempfile = null ;
    FileInputStream tempfis = null ;
    JarInputStream jis = null ;
    
    try {
    
      // Make a SOAP service to start the process of fetching the JAR.
        
      com.perficient.grid.client.GridConnectionService service =
        new com.perficient.grid.client.GridConnectionServiceLocator() ;
          
      // Now use the service to get a stub to the SOAP service itself.
        
      com.perficient.grid.client.GridConnection gc = service.getGridConnection() ;
        
      // Make the actual call and fetch the bytes.
          
      localjarbytes = gc.getJarBytes() ;
          
      //  If localjarbytes is null, then the grid connection failed.  One possibility
      //  is that a jar file could not be found or loaded by the grid server.
      //  Print a message and exit.
          
      if (localjarbytes == null) {
        System.out.println("Class Loader: The grid connection returned no bytes.  No Jar file is currently available.") ;
        return ;
      }
      
      //  At this point we can store our bytes into a temp file.  This temp file
      //  will be a repository for the JAR, allowing the classloader to fetch
      //  classes as necessary.
        
      System.out.println("Class Loader: the grid connection returned " + localjarbytes.length + " bytes") ;
      
      // Save the size of the JAR for later use.
      
      this.jarsize = localjarbytes.length ;
          
      try {
          
        //  Create a temp jar file for these bytes.  Having an actual file will
        //  allow us to retrieve various resources more easily.
          
        tempfile = File.createTempFile("grid", ".jar") ;
          
        //  Make sure our file is deleted when the VM exits.
          
        tempfile.deleteOnExit() ;
          
        // Get an output stream and dump our bytes to the file.
          
        FileOutputStream tempfileos = new FileOutputStream(tempfile) ;
        tempfileos.write(localjarbytes) ;
        tempfileos.close() ;
            
      }
      catch (IOException e) {
        System.out.println("Class Loader: Problem with temp Jar file: " + e.getMessage()) ;
      }
        
          
    }
    catch (Exception e) {
      System.out.println("Class Loader: a grid connection failure occurred:\n" + e.toString() + "\n" + e.getMessage()) ;
    }

      
    try {

      // Save the filename for later reference.
      
      jarfilename = new String(tempfile.getCanonicalPath()) ;
      
      // Try to get a manifest, if one exists.  This will
      // let us know what the main task thread class is.
      // The main task thread is the primary work unit
      // that we will be executing in our grid.
        
      tempfis = new FileInputStream(tempfile) ;
      jis = new JarInputStream(tempfis) ;
            
      manifest = jis.getManifest() ;
      Attributes attr = manifest.getMainAttributes();
            
      if (attr != null) {
        taskthread = attr.getValue("Task-Thread") ;
      }
        
      // Now scan all of the entries in the file and
      // get the size of each resource/class.  This is the
      // only way to get the true size when the JAR is compressed.
        
      ZipFile zipfile = new ZipFile(tempfile);
      enum = zipfile.entries() ;
                            
      while (enum.hasMoreElements()) {          
        ZipEntry ze = (ZipEntry) enum.nextElement() ;
        htSizes.put(ze.getName(), new Integer((int)ze.getSize())) ;
      }

    } // Try.
      
    catch (Exception e) {
      System.out.println("Class Loader: " + e.toString() + " : " + e.getMessage()) ;
    }
    finally {
      if ( tempfis != null ) {
        try {
          tempfis.close();
        }
        catch (Exception e){}
      }
      if ( jis != null ) {
        try {
          jis.close();
        }
        catch (Exception e){}
      }
        
    } // Finally.
        
  }

 

متد findclass() همانگونه كه در ذيل آمده است، توسط ClassLoader براي رديابي و بارگذاري كلاس خاصي بكار مي‌رود. من در اين پياده‌سازي كلاس مورد نظر را در فايل Jar جستجو مي‌كنم. در صورتي كه ان را نيابم، از ClassNot Found Exception استاندارد استفاده مي‌كنم.

 

  /**
   *  This is the method where the task of classloading
   *  is delegated to our custom loader.
   *
   * @param  name the name of the class
   * @return the resulting Class object
   * @exception ClassNotFoundException if the class could not be found
   */
  
  protected Class findClass(String name) throws ClassNotFoundException {
  
    FileInputStream fis = null ;
    ZipInputStream zis = null ;
  
    try {
    
      String path = name.replace('.', '/') + ".class" ;
      fis = new FileInputStream(jarfilename) ;
      zis = new ZipInputStream(fis) ;
      ZipEntry ze = null ;
      boolean classfound = false ;
      
      while ((ze = zis.getNextEntry()) != null) {
      
        if (path.equals(ze.getName())) {
        
          classfound = true ;
        
          // Get the size of the classfile so we know how many bytes
          // to read.  If the size appears to be -1, then the
          // jar file is compressed, and we need to consult our
          // hashtable to get the uncompressed size.
          
          int size = (int) ze.getSize() ;
          
          if (size == -1) {
            size = ((Integer) htSizes.get(path)).intValue() ;
          }
          
          // Now that we know the actual size of the class,
          // fetch the data.
          
          byte[] classBytes = new byte[size] ;
          int rb = 0 ;
          int chunk = 0 ;
          
          while ((size - rb) > 0) {
            chunk = zis.read(classBytes, rb, size - rb) ;
            if (chunk == -1) {break ;}
            rb += chunk ;
          }
          
          // Now that we have our class data, define the class.
          
          System.out.println ("Class Loader: Found class " + name) ;
          definePackage(name);
          return defineClass(name, classBytes, 0, classBytes.length);

        }
        
      }
      
      if (!classfound) {
        // We apparently failed to locate the class within the jar file,
        // so indicate the problem with an exception.
        
        throw new ClassNotFoundException(name) ;
      }
      
    }
    catch (Exception e) {
      // We could not find the class, so indicate the problem with an exception.
      throw new ClassNotFoundException(name);
    }
    finally {
      if ( fis != null ) {
        try {
          fis.close();
        }
        catch (Exception e){}
      }
      if ( zis != null ) {
        try {
          zis.close();
        }
        catch (Exception e){}
      }
    }
    
    return null ;
  }

 

متدهاي find Resource()، find Resurces() همانگونه كه در ذيل آمده‌اند، براي يافتن منابعي كه احتمالا در JAR هستند، به كار مي‌روند. از آنجاييكه همه منابع در JARهاي محصور شده، بسته‌بندي شده‌اند نه در فايل سيستم، در دسترس URL قرار دارند، لذا اين متدها همواره سودمند نيستند.

 

  /**
   *  Identify where to load a resource from.
   *  Normally the resources will be extracted

   * from a JAR and reside in a filesystem

   * somewhere.  Since we are loading our classes

   * directly from a jar file, they won't really

   * be available via URL.
   *
   *  We'll always return a null to indicate
   *  that the resource can't be found, i.e.,

   * unavailable.
   *  You could also dump all of the resources

   * into a local/temp filesystem and "find" them

   * there.
   *
   *  @param name the resource name
   *  @return URL for resource or null if not

   * found
   */
  
  protected URL findResource(String name) {
    return null;
  }

  /**
   *  Used for identifying resources from multiple URLS.
   *  We will return a null for the same reasons as above.
   *
   *  @param name the resource name
   *  @return Enumeration of one URL
   */
  
  protected Enumeration findResources(final String name) throws IOException {
    return null ;  
  }

 

متد defindpackage()، متد استاندارد نهايي را براي ClassLoader ما فراهم مي‌كند و از مثال كن مك كراري، بدون تغيير اقتباس شده است:

 

  /**
   *  Minimal package definition
   *
   */
  
  private void definePackage(String className) {
  
    // Extract the package name from the class name.
    
    String pkgName = className;
    int index = className.lastIndexOf('.');
    
    if (index != -1) {
      pkgName =  className.substring(0, index);
    }

    // Preconditions -- need a manifest and the package
    // is not previously defined.
    
    if ( null == manifest ||
      getPackage(pkgName) != null) {
        return;
    }

    String specTitle,
           specVersion,
           specVendor,
           implTitle,
           implVersion,
           implVendor;

    // Look up the versioning information.
    // This should really look for a named attribute.
    
    Attributes attr = manifest.getMainAttributes();

    if (attr != null) {
      specTitle   = attr.getValue(Name.SPECIFICATION_TITLE);
      specVersion = attr.getValue(Name.SPECIFICATION_VERSION);
      specVendor  = attr.getValue(Name.SPECIFICATION_VENDOR);
      implTitle   = attr.getValue(Name.IMPLEMENTATION_TITLE);
      implVersion = attr.getValue(Name.IMPLEMENTATION_VERSION);
      implVendor  = attr.getValue(Name.IMPLEMENTATION_VENDOR);

      definePackage(pkgName,
                    specTitle,
                    specVersion,
                    specVendor,
                    implTitle,
                    implVersion,
                    implVendor,
                    null); // No sealing for simplicity.
    }
  }

 

سه متدي كه در ذيل آمده‌اند، ClassLoaderمان را كامل مي‌كنند. متد get Task Thread Name() نام thread فعاليتي كه مايلم اجرا شود (مبتني بر اطلاعات manifest) باز مي‌گرداند. متد isloaded مشخص مي‌كند كه آيا ClassLoader با موفقيت واكنشي و در فايل Jar بارگذاري شده است يا خير. كلاس main  از اين متد براي تعيين در دسترس بودن thread فعاليت اصلي‌ كه بايد اجرا شود، استفاده مي‌كند. متد getResourceEntries()، شماره اسامي منبع را در JAR بر مي‌گرداند و براي خطايابي بكار مي‌رود.

 

  //  The getTaskThreadName is a getter for the taskthread field.
  
  public String getTaskThreadName() {
    return this.taskthread ;
  }
  
  // If a JAR has been loaded, then we will have
  // a nonzero jarsize.
  
  public boolean isLoaded() {
    return (this.jarsize > 0) ;
  }
  
  //  getResourceEntries returns an enumeration of the keys
  //  in the hashtable.  The keys are the names of the JAR
  //  entries we picked up earlier.  This is useful for
  //  printing the list of JAR resources.
  
  public Enumeration getResourceEntries() {
    return htSizes.keys() ;
  }
    
  
  
  private Manifest manifest = null ;
  private String taskthread = null ;
  private String jarfilename = null ;
  private int jarsize = 0 ;
  private Enumeration enum = null ;
  private Hashtable htSizes = new Hashtable() ;

 

ساخت برنامه اصلي كلاينت

اين برنامه مسوول آغاز نمودن فوري Classloader است، سپس از آن براي بارگذاري thread فعاليت اصلي استفاده مي‌كند. من در اين مثال thread را به يكباره بارگذاري و اجرا مي‌كنم. توليد برنامه تلاش براي آغاز مجدد thread به محض اينكه اجرا مي‌شود يا حتي آبجكت ClassLoader را خراب مي‌كند و بارگذاري thread جديد است. (احتمالا با واكنشي JAR جديد) كد برنامه اصلي در ذيل آمده است.

//
//  GridClientMain.java
//

package com.perficient.grid.client ;

import java.util.*;
import java.io.* ;

public class GridClientMain {

  public static void main (String args[]) {
    
    // Start by creating our custom classloader. The classloader, during
    // initialization, will use Web services to attempt to download a JAR
    // containing the grid task we will execute.
        
    try {
      GridConnectionClassLoader gcloader = new GridConnectionClassLoader () ;
          
      //  Check to see if any bytes of data were received.  If the classloader is not loaded,
      //  then the classloader was unable to initialize properly.
          
      if (!gcloader.isLoaded()) {
        System.out.println("GridClientMain: No bytes were loaded by the classloader, so no grid task is available to be executed.") ;
      }
          
      //  A JAR has been loaded by the classloader, but
      //  the JAR manifest may not have a registered Task-Thread attribute.  This means
      //  that we have no way of knowing which class we are supposed to run.
      //  If our classloader does not have a Task-Thread name, print a message,
      //  then print the list of resources found in the JAR for reference.
          
      else if (gcloader.getTaskThreadName() == null) {
        System.out.println("GridClientMain: The Jar manifest did not have a Task-Thread attribute.\nPlease identify the Task-Thread and re-jar the data.  Here are the known Jar resources:\n") ;
            
        Enumeration enum = gcloader.getResourceEntries() ;
    
        while (enum.hasMoreElements()) {
          System.out.println((String) enum.nextElement()) ;
        }
            
      }
      else {
          
        // We have a Task-Thread, so let's try to load it.  Again, note that we assume
        // that the Task-Thread class is a Thread class.  This is a design decision for building
        // the grid.
            
        System.out.println("GridClientMain: Attempting to load " + gcloader.getTaskThreadName()) ;
        Thread task = (Thread) gcloader.loadClass(gcloader.getTaskThreadName()).newInstance();
        System.out.println("GridClientMain: Attempting to start Thread...") ;
        task.start();
      }
    }
    catch (ClassNotFoundException e) {
      System.out.println("GridClientMain: Could not find class:\n" + e.toString() + "\n" + e.getMessage()) ;
    }
    catch (Exception e) {
      System.out.println("GridClientMain: exception:\n" + e.toString() + "\n" + e.getMessage()) ;
    }
                
  }  // Main.
    
}

ساخت thread محاسباتي آزمايشي

من براي آزمايش چارچوب گرير به thread محاسباتي آزمايشي نياز دارم. البته لازم نيست اين thread كاري انجام دهد، اما بايد به گونه‌اي ساخته شود كه بتواند Classloader را آزمايش كند. Thread، آزمايشي را به گونه‌اي طراحي نمودم كه از چند كلاس استفاده كند و حداقل يك كلاس داخلي داشته باشد. وقتي برنامه اصلي را اجرا مي‌كنم، بايد ClassLoader سفارشي در صورت لزوم درخواست شود. كد thread آزمايشي در ذيل آمده است.

//
//  TestThread.java
//

package com.perficient.tasks ;

import java.util.*;
import com.perficient.tasks.TestThreadHelper ;

public class TestThread extends Thread {

  public TestThread () {
    super() ;
  }

  public void run() {

    System.out.println("TestThread: You are now inside the TestThread thread.");
    System.out.println("TestThread: Accessing another class in this jar...") ;
      
    // Demonstrate the ability to access another class in the
    // same jar file.
      
    try {
      TestThreadHelper tth = new TestThreadHelper() ;      
      System.out.println("TestThread: tth.getDemoString() returned " + tth.getDemoString()) ;
    }
    catch (Exception e) {
      System.out.println("TestThread: Failed to create TestThreadHelper.") ;
      System.out.println(e.toString() + " : " + e.getMessage()) ;
    }
      
    System.out.println("TestThread: Exiting TestThread thread.") ;
  }

}

//
//  TestThreadHelper.java
//  TestThread
//
//  Created by Anthony Karre on Sun Jan 05 2003.
//  Copyright (c) 2003 Perficient. All rights reserved.
//

package com.perficient.tasks ;

public class TestThreadHelper {

  public String getDemoString () {
  
    // demonstrate correct inner class load
    
    TTHInnerClass myinner = new TTHInnerClass() ;    
    return myinner.getInnerClassString() ;
  }
  
  class TTHInnerClass {
  
    public String getInnerClassString () {
      return "innerclassworked" ;
    }
  
  }

}

به دليل اينكه از Apple Mac OS X Project Builder IDE براي ساخت اين برنامه استفاده نمودم، JAR آزمايشي حاوي، فايل متني ديگري به نام mainfest.txt است. شما بايد با اين ابزار به وضوح فايل مبدايي حاوي اطلاعات mainfest كه مثلا Project Builder قبلا آن را فراهم نكرده، تهيه كنيد. البته در صورتي كه بخواهيد داده‌هاي اضافي ديگري را در mainfest ادغام كنيد. اين فايل يك خطي به صورت ذيل است:

Task-Thread: com.perficient.tasks.TestThread

 

 

شكل 5. خروجي كنسول جاوا

 

 

آزمايش چارچوب محاسباتی شبكه‌ای

من اين چارچوب را با روشن كردن سرور Tomcat/Axis SOAP بر روي مكينتاش آزمايش نمودم سپس برنامه اصلي را از Apple Mac OS X project Builder IDE اجرا كردم. شرايط متعدد بروز خطا را نظير عدم وجود JARها، عدم وجود صفات Task-Thread و مشكلات. SOAP كه در اثر خطاهاي ارتباطي حاصل مي‌شوند را شبيه سازي كردم. Classloader در همه موارد همانگونه كه طراحي شده بود، رفتار كرد. شكل 5 اجراي عادي برنامه كلاينت گرير را نشان مي‌دهد. به نحوه درخواست ClassLoader براي پشتيباني از آغاز نمودن كلاس در thread توجه كنيد.

 

آغاز تجربه با محاسبات شبكه‌ای

در حاليكه تول‌كيت‌هاي محاسبات شبكه‌اي موجود و اثربخش هستند، پياده‌سازي آنها نيازمند تجربه است. شايد منحني يادگيري براي توسعه‌دهندگاني كه مي‌خواهند به سرعت معماري محاسباتي شبكه‌اي را آزمايش كنند، مانعي به شمار رود چارچوب محاسبات شبكه‌اي كه در اين مقاله تشريح شد، ابزار ساده‌اي براي تجربه اصول اينگونه محاسبات است. اين ابزار از مولفه‌هاي open-source متداول كه براي اكثر برنامه‌نويسان جاوا آشناست، استفاده مي‌كند، در حاليكه اصول اين محاسبات يعني: استقلال ماشين، اجراي فعاليت انتزاعي و زير ساختار امن و اندازه‌پذير را حفظ مي‌نمايد. t

 

 

منابع:

·         Learn about the Search for Extraterrestrial Intelligence (SETI@home) project:
http://setiathome.ssl.berkeley.edu/

·         Global Grid Forum:
http://www.ggf.org/

·         Open Grid Services Architecture Working Group (OGSA WG):
http://www.ggf.org/ogsa-wg/

·         The Globus Project:
http://www.globus.org

·         Sun Microsystems Research Paper: "Framework for Peer-to-Peer Distributed Computing in a Heterogeneous, Decentralized Environment," Jerome Verbeke, Neelakanth Nadgir, Greg Ruetsch, Ilya Sharapov:
http://wwws.sun.com/software/jxta/mdejxta-paper.pdf

·         Project Jxta:
http://wwws.sun.com/software/jxta

·         Apache Tomcat homepage:
http://jakarta.apache.org/tomcat/

·         SOAP W3C (World Wide Web Consortium) specification:
http://www.w3.org/TR/SOAP/

·         The Apache Axis SOAP implementation:
http://ws.apache.org/axis/

·         "Create a Custom Java 1.2-Style ClassLoader," Ken McCrary (JavaWorld, March 2000):
http://www.javaworld.com/javaworld/jw-03-2000/jw-03-classload.html

·         The Apache Struts Web application framework:
http://jakarta.apache.org/struts/

·         Apple Mac OS X Project Builder IDE:
http://developer.apple.com/tools/projectbuilder/index.html

·         Learn more about Macintosh OS X development:
http://developer.apple.com/macosx/

·         More JavaWorld stories on Axis:

o        "Axis-Orizing Objects for SOAP," Mitch Gitman (April 2003)

o        "Axis: The Next Generation of Apache SOAP," Tarak Modi (January 2002)

·         For SOAP basics, read "Clean Up Your Wire Protocol with SOAP," Tarak Modi (JavaWorld)

o        "Part 1: An introduction to SOAP basics" (March 2001)

o        "Part 2: Use Apache SOAP to create SOAP-based applications" (April 2001)

o        "Part 3: Create SOAP services in Apache SOAP with JavaScript" (June 2001)

o        "Part 4: Dynamic proxies make Apache SOAP client development easy" (July 2001)

·         For an overview of grid computing, read "IBM's Grid Conversion," Robert McMillan (JavaWorld, September 2002):
http://www.javaworld.com/javaworld/jw-09-2002/jw-0906-grid.html

·         Browse the Enterprise Java section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-enterprise-index.shtml

·         Browse the Java and Web Services section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-webserv-index.shtml

 

 

+ نوشته شده در  شنبه پانزدهم دی 1386ساعت 11:59  توسط یوسف عبدلیان باریکرسفی  | 

نحوه پیاده سازی گرید کامپیوتینگ(گلوباس)

با سلام

به زودی در این سایت نحوه پیاده سازی گرید کامپیوتینگ(گلوباس) را برایتان می گذارم

به دلیل  امتحانات من نتوانستم مباحث اصلی را در این سایت بارگذاری کنم که  از همه دوستان معذرت می خواهم

ما در حال نصب گلوباس هستیم و داریم مشکلاتی که در سر نصب گلوباس است را بر طرف می کنیم و بعد از امتحانات نتیجه کار خود را در این وبلاگ می گذارم

لطفا نظر دهید

 

ایمیل من

yousef_abdolian@yahoo.com

+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 13:19  توسط یوسف عبدلیان باریکرسفی  | 

کلاستر لینوکس تحت آزمایش


کلاستر لینوکس زیر بار
خوب با پیگیری و انجام مراحل شرح داده شده در بخش‌های پیشین مقاله کلاسترها، اکنون یک کلاستر آماده به کار دارید که می‌توانید قدرت آنرا آزمایش کرده و به نحوه کلی عملکرد کلاسترها پی ببرید.
برای شروع، از روی ایستگاه کاری که بعنوان مانیتور آنرا در نظر گرفته‌ام، از روی کنسول وارد گره شماره ۱ و گره شماره ۲ می‌شوم. روی گره شماره ۱ با استفاده از دستور mosmon برنامه مانیتور کلاستر را که میزان بار هر گره را بصورت نمودارهای میله‌ای نمایش می‌دهد، اجرا می‌کنم. روی گره شماره ۲، دستور زیر را در خط فرمان تايپ می‌کنم:

# for x in 1 2 3 4
do
awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &
done

دستور فوق، ۴ اسکریپت awk را که شدیدا بار CPU را بالا خواهند برد، بطور همزمان اجرا می‌کند. به کنسول گره شماره ۱ بازگشته و نمودار بار را زیر نظر می‌گیرم:




بیچاره گره شماره ۲! نمودار به سقف رسیده است! انتظار می‌رود پس از چند لحظه پردازش‌ها به گره‌های بعدی کلاستر (که ما فقط گره شماره ۱ را داریم) منتقل شوند. بسیار جالب است. پس از چند ثانیه پردازش‌ها به گره شماره ۱ منتقل شده و بار آن به سرعت بالا می‌رود:




همانطوری که در تصویر بالا مشاهده می‌کنید، میزان بار گره شماره ۱ به شدت بالا رفته و از بار گره شماره ۲ کاسته می‌شود. خوب این آزمایش بدی برای حصول اطمینان از کارکرد کلاستر نیست، ولی برای بررسی دقیق‌تر و گرفتن نتایج عملی‌تر، نیاز داریم تا تعدادی عملیات واقعی پردازشی را روی کلاستر انجام دهیم. یکی از بهترین عملیات پردازشی که می‌تواند به خوبی کارایی کلاستر را در بوته آزمایش قرار دهد، عملیات کد کردن فایل‌های موسیقی است.
به این منظور، ما دو نرم‌افزار کد کردن فایل‌های موسیقی با فرمت
wav را انتخاب کرده و آزمایشات را به کمک آنها انجام خواهیم داد.

نصب نرم‌افزارهای لازم
نرم‌افزارهای مورد نیاز را تنها در گره‌ای که مایلید آزمایشات را از طریق آن انجام دهید نصب نمایید و نصب آن در سایر گره‌ها ضروری نیست
. این قابلیت کلاستر سازی نامحسوس OpenMosix است که باعث می‌شود تا ما نیازی به نصب این نرم‌افزارها و قرار دادن فایلهای هدف روی یک اشتراک قابل دسترس در تمام شبکه نداشته باشیم.
نرم‌افزاری که ما از آن برای آزمایشات خود استفاده خواهیم کرد، نرم‌افزار کدینگ فایلهای صوتی به فرمت
MP3 به نام Lame می‌باشد که یکی از سریعترین کد کننده‌های MP3 در جهان بوده و یک نرم‌افزار بازمتن است. این نرم‌افزار را از لینک زیر دانلود نمایید. ضمنا حجم آن کمی بیشتر از ۱ مگابایت می‌باشد:

http://unc.dl.sourceforge.net/sourceforge/lame/lame-3.93.1.tar.gz

پس از دانلود بسته کد منبع، جهت نصب نرم‌افزار دستورات زیر را در خط فرمان اجرا نمایید:

# gunzip lame-3.93.1.tar.gz
# tar -xf lame-3.93.1.tar
# cd lame-3.93.1
# ./configure
# make
# make install

نرم‌افزار Lame پس از چند دقیقه کامپایل و به راحتی نصب می‌شود. من نرم‌افزار را روی هر دو گره کلاستر نصب کرده‌ام، چون می‌خواهم دقیقا نحوه عملکرد آنرا در شرایط مختلف بررسی کنم. مورد دیگری که به آن نیاز است، تعدادی فایل wav است که باید آنها را تهیه کنید. من ۵ عدد فایل wav برای انجام آزمایشات تهیه کرده‌ام که حجم آنها حدود ۱۹۶ مگابایت می‌باشد (در حقیقت فایلهای MP3 بوده‌اند که توسط XMMS به فرمت wav برگردانده شدند).
من در دایرکتوری
root هریک از گره‌ها یک دایرکتوری به نام wav ایجاد کرده و فایلهای wav را در آنجا قرار دادم. در مرحله نخست آزمایش، هر یک از گره‌ها بصورت فردی فایلهای MP3 را کد می‌کنند. برای انجام آزمایش، دستور زیر را در خط فرمان وارد می‌کنم:

# cd /root/wav
# for x in *.wav
do
lame $x
done

در حقیت یک حلقه عملیات تبدیل فایل‌ها را یک به یک انجام می‌دهد. نتیجه حاصل مطابق جدول زیر می‌باشد:

نام گره

زمان انجام

Cyber

18:46 s

Debian

5:01 s



خوب نتیجه قابل انتظار است، ماشین پنتیوم ۸۰۰ مگاهرتزی باید هم سریعتر از سلرون ۳۳۳ مگاهرتزی باشد. پس از این مرحله OpenMosix را اجرا کرده و کلاستر را زیر بار می‌گذارم. دستور عملیات به صورت زیر است:

# cd /root/wav
# for x in *.wav
do
lame $x &
done

با اضافه شدن کاراکتر & تمامی ۵ عملیات به صورت همزمان و در پس زمینه اجرا خواهند شد. اجرای همزمان ۵ پروسه باعث مهاجرت پروسه‌ها به گره دیگر کلاستر و وارد شدن کلاستر در عملیات می‌گردد. خوب همانطور که انتظار می‌رفت، کلاستر واقعا کار می‌کند! بسیار هیجان انگیز است. نتیجه کار مطابق جدول زیر می‌باشد:

نام گره آغاز کننده پروسه‌ها

زمان انجام

Cyber

4:11 s

Debian

3:36 s


همانطور که می‌بینید، نتیجه عملیات بسیار جالب است. زمان ۵ دقیقه‌ای عملیات در دستگاه قویتر به سه دقیقه و نیم و زمان ۱۸ دقیقه و ۴۶ ثانیه‌ای دستگاه ضعیف‌تر به چهار دقیقه و ۱۱ ثانیه کاهش یافته است!

+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 13:11  توسط یوسف عبدلیان باریکرسفی  | 

برپا سازی کلاسترهای OpenMosix

برپا سازی کلاسترهای OpenMosix
جهت برپا سازی یک کلاستر، شما به حداقل دو دستگاه مبتنی بر لینوکس که به یک شبکه داخلی متصل بوده و قادر به کامپایل کردن و اجرای هسته‌های سری 2.4 باشند، نیاز دارید. همچنین شبکه شما باید دارای حداقل سرعت ۱۰۰ مگابیت باشد. این سرعت به شما سرعت بسیار خوبی را اعطا خواهد نمود. سرعت اترنت استاندارد یعنی ۱۰ مگابیت به شما سرعت چندان جالب توجهی نخواهد داد. البته در صورتی که شبکه شما از این نوع است و مایل هستید تا فقط OpenMosix را تجربه نمایید، پاسخ‌گو خواهد بود. استفاده از اترنت‌های گیگابیت مفید بوده ولی انتخابی است. البته ممکن است واقعا به آن نیاز نداشته باشید و اترنت ۱۰۰ مگابیت امور شما را به خوبی انجام دهد.
اتصال گره‌های کلاستر به یک سوئیچ پرسرعت سیستم‌های شما را قادر خواهد ساخت تا در حالت Full Duplex عمل نموده و پهنای باند شما دو برابر گردد. همچنین می‌توانید در یک کلاستر ۲ یا ۳ گره‌ای از سیم کشی مخصوص جهت اتصال مستقیم گره‌ها به هم استفاده نمایید.
داشتن فضای Swap کافی قویا توصیه می‌شود. به این صورت شما قادر خواهید بود تا گره‌ها را بصورت دینامیک از کلاستر خارج نمایید بدون اینکه با کمبود حافظه مواجه شوید. این موضوع نیز انتخابی بوده و ممکن است در شرایط خاصی که کلاستر تحت فشار کاری بالایی قرار دارد، به شما کمک کند.
در کنار مطالب بالا، باز هم اضافه می‌کنم که امکان ایجاد یک کلاستر مبتنی بر فقط دو دستگاه لینوکس و یک اترنت استاندارد نیز وجود دارد.
لازم نیست که تمام کامپیوترهایی که در یک کلاستر قرار می‌گیرند قوی باشند و یا مهم نیست که دارای سخت‌افزارهای متنوعی باشند. هر قدرت پردازشی می‌تواند به سرعت جمعی کمک کند!

شروع کار
فرایند برپاسازی کلاسترهای لینوکس بسیار ساده می‌باشد. ابتدا باید هسته‌هایی که OpenMosix روی آنها فعال شده‌اند را روی گره‌های کلاسترها نصب کرده و سپس ابزارهای کاربری را روی همه آنها نصب کرده و یک تنظیم کوچک در یک فایل پیکربندی انجام دهیم.
به عنوان نخستین مرحله از کار، باید ابزارهای نرم‌افزاری لازم را فراهم آورید. نخستین چیزی که به آن نیاز دارید، کد منبع هسته‌ای است که مایلید روی آن کار کنید. کد منبع هسته خود را می‌توانید از http://kernel.org دریافت نمایید. من برای اجرای پروژه، از هسته 2.4.23 استفاده کرده‌ام. در قدم بعدی باید وصله‌های هسته OpenMosix و سپس ابزارهای نرم‌افزاری OpenMosix را دریافت نمایید. برای دانلود وصله‌های هسته OpenMosix می‌توانید به سایت رسمی آن در آدرس http://openmosix.sf.net یا http://openmosix.org مراجعه کنید و یا از لینک‌های زیر برای هسته‌های مورد نظرتان استفاده کنید:

هسته 2.4.21:http://tab.tuxfamily.org/download/openmosix/releases/patch-2.4.21-om-20030825.bz2
هسته 2.4.22:http://tab.tuxfamily.org/download/openmosix/releases/patch-2.4.22-om-20031215.bz2
هسته 2.4.23:http://tab.tuxfamily.org/download/openmosix/stable/patch-2.4.23-om-20031215.bz2
هسته 2.6.0 (آزمایشی):http://tab.tuxfamily.org/download/openmosix/unstable/patch-2.6.0-om-0.20031202.1.bz2
ابزارهای نرم‌افزاری:http://umn.dl.sourceforge.net/sourceforge/openmosix/openmosix-tools-0.3.5.tar.bz2

فراموش نکنید که همیشه می‌توانید جدیدترین نسخه‌های وصله هسته و ابزارهای نرم‌افزاری OpenMosix را از سایت رسمی آن دریافت نمایید. پس از اتمام دریافت تمامی اقلام مورد نیاز (تنها کد منبع هسته دارای حجم زیادی است و بقیه ابزارها همگی بین ۲۰۰ تا ۳۰۰ کیلوبایت ظرفیت دارند!) باید تجهیز گره‌‌های کلاستر را شروع کنید. ابتدا لازم است در شبکه محلی خود کامپیوترهایی را که مایلید به عنوان گره‌های کلاستر استفاده کنید، تعیین نمایید. من در دفتر کار خود دو دستگاه را برای این منظور انتخاب کردم. (تصویر زیر)




همانطوری که قبلا اشاره کردم، لازم نیست که گره‌های کلاستر حتما قویترین ایستگاه‌های کاری روی شبکه باشند. دستگاه‌های انتخابی من دارای مشخصات زیر هستند:

Node No.1 : Debian (LAN SERVER)
CPU : P-III 800 MHz
RAM: 128 MB SD-RAM
NIC : SIS 100 Mbps
HDD: 2x40GB
Distro : Debian GNU/Linux 3.0 (woody)
Kernel: 2.4.23 (will be 2.4.23-om)

Node No.2 : Cyber (Workstation)
CPU : Celeron 333 MHz
RAM: 160 MB SD-RAM
NIC : D-Link 100 Mbps
HDD: 1x6.4GB
Distro : Libranet GNU/Linux 2.8.1
Kernel: 2.4.21 (will be 2.4.23-om)


پس از تعیین گره‌های کلاستر، شروع به نصب نرم‌افزارهای لازم برای این کار می‌کنیم. این عملیات را برای تمام گره‌ها باید تکرار کرد. برای شروع هسته OpenMosix را نصب می‌کنیم. ابتدا کد منبع هسته را در آدرس usr/src کپی کرده و آنرا با استفاده از دستورهای زیر باز می‌کنیم:

# cd /usr/src
# bzip2 -d linux-2.4.23.tar.bz2
# tar -xf linux-2.4.23.tar
# mv linux linux.old
# ln -s linux-2.4.23 linux

سپس وصله هسته را در کد منبع خود اعمال می‌کنیم:

# cd linux
# cat /home/alan/patch-2.4.23-om-20031215.bz2 | bzip2 -d | patch -p1 -l

کد منبع هسته در چند ثانیه وصله خواهد شد. اکنون می‌توانید طبق روال‌های گذشته هسته را پیکربندی و کامپایل نمایید. فقط اطمینان حاصل کنید که گزینه‌های زیر را در بخش OpenMosix پیکربندی هسته انتخاب کنید:

[*] openMOSIX process migration support
[*] Stricter security on openMOSIX ports
[*] openMOSIX File-System
[*] Poll/Select exceptions on pipes

برای شروع پیکربندی هسته، دستور زیر را وارد نمایید:

# cd /usr/src/linux
# make menuconfig

پس از اتمام پیکربندی و ذخیره تغییرات، برای کامپایل شدن هسته دستورات زیر را وارد نمایید:

# make-kpkg clean
# make-kpkg --revision=8:MOSIX01 kernel_image

و یا خیلی ساده‌تر:

# make-kpkg clean
# make-kpkg kernel_image

این نحو عملیات کامپایل هسته به یک بسته دبیان ختم خواهد شد که قادرید آنرا به راحتی روی سیستم نصب نمایید. مدت زمان انجام عملیات کامپایل هسته به سرعت پردازنده سیستم بستگی دارد. پس از اتمام عملیات کامپایل هسته، بسته‌ای را که ایجاد شده است، نصب می‌کنیم:

# dpkg -i kernel_image-2.4.23-om_MOSIX01_i386.deb

هنگام نصب این بسته، مدیر بوت Lilo به طور خودکار پیکربندی خواهد شد. در صورتی که از گراب استفاده می‌کنید، باید تغییرات را بطور دستی در فایل پیکربندی آن اعمال نمایید. برای این منظور باید فایل boot/grub/menu.lst را ویرایش کرده و خطوط زیر را اضافه نمایید. البته مقادیری مانند پارتیشن‌های قابل بوت و سایر آدرس‌ها ممکن است روی سیستم‌های شما متفاوت باشد که آنها را باید تغییر دهید:

title Libranet GNU/Linux, kernel 2.4.23 OpenMosix
root (hd0,1)
kernel /vmlinuz-2.4.23-om root=/dev/hda3 ro hdb=scsi
savedefault
boot

پس از اتمام نصب هسته‌ها، اکنون باید ابزارهای نرم‌افزاری OpenMosix را نصب نماییم. برای این منظور، فایلی را که دانلود کرده بودیم، باز کرده و کامپایل و نصب می‌کنیم:

# bzip2 -d openmosix-tools-0.3.5.tar.bz2
# tar -xf openmosix-tools-0.3.5.tar
# cd openmosix-tools-0.3.5
# ./configure --with-kerneldir=/usr/src/linux-2.4.23/
# make
# make install

کامپایل و نصب ابزارهای نرم‌افزاری مدت زیادی طول نمی‌کشد (۱-۲ دقیقه یا کمتر روی پردازنده‌های قویتر). پس از اتمام آن، باید در یکی از فایل‌های پیکربندی مربوطه لیست گره‌های کلاستر را تعریف کرده و سپس سرویس OpenMosix را طوری تعریف کنیم تا هر بار بصورت خودکار اجرا شود. به این منظور ابتدا دستور:

# vi /etc/openmosix.map

اجرا کرده و باید مشخصات گره‌ها را بصورت <شماره گره> <آدرس IP گره> <تعداد> وارد نماییم:


1 192.168.0.1 1
1 192.168.0.7 1

آرگومان شماره هنگامی مفید است که بخواهیم چند آدرس IP پشت سرهم را تعریف نماییم. مثلا در صورتی که ۱۰ گره داشته باشیم که آدرس آنها از ۲۵ شروع می‌شود، وارد خواهیم کرد:

1 192.168.0.25 10

و عملیات تایپ ما را بسیار کمتر خواهد کرد. این فایل پیکربندی روی تمام گره‌ها یکسان است. بنابراین می‌توانید آنر روی تمام گره‌ها کپی کنید. پس از انجام این کار به راه‌اندازی خودکار OpenMosix می‌پردازیم. ابتدا باید تعیین کنید که سطح اجرایی پیش‌گزیده هر یک از گره‌ها کدام است. به این منظور دستور زیر را وارد نمایید:

# runlevel
N 2

خوب سطح اجرایی پیش‌گزیده ما ۲ است (سیستم‌های مبتنی بر دبیان). بنابراین وارد دایرکتوری etc/rc2.d می‌شویم. در صورتی که سطح اجرایی شما متفاوت شد، این عملیات را با دایرکتوری مربوط به آن که می‌تواند rc3.d، rc4.d و... باشد انجام دهید:

# cd /etc/rc2.d
# ln -s ../init.d/openmosix S20openmosix

در اینجا نمی‌خواهم فلسفه دستورات بالا را توضیح دهم زیرا از مسیر اصلی دور خواهیم شد. پس از اتمام عملیات بالا و بوت سیستم‌ها، سیستم‌هایی داریم که مبتنی بر OpenMosix بوده و سرویس آن نیز بطور خودکار اجرا می‌شود. برای بکار افتادن کلاستر، گره‌ها را بوت می‌کنیم. گره شماره ۱ با موفقیت OpenMosix را اجرا می‌کند، ولی گره شماره ۲ با پیغام Invalid Map File قادر به اتصال به کلاستر نیست. پس مقداری جستجو و بررسی فایل پیکربندی، متوجه می‌شوم که در فایل etc/hosts یک ورودی به صورت زیر موجود است:

127.0.0.1 cyber

آنرا تبدیل به ورودی زیر می‌کنم:

192.168.0.7 cyber

مجددا سرویس OpenMosix را با دستور etc/init.d/openmosix restart اجرا می‌کنم. اکنون بدون مشکل اجرا می‌شود. برای حصول اطمینان از شناخته شدن تمام گره‌های کلاستر، با دستور زیر آنها را آزمایش می‌کنم:

# mosctl status 1
up.
# mosctl status 2
up.

بسیار عالی! هر دو گره کلاستر در حال اجرا هستند. اکنون کلاستر ما آماده است. با استفاده از دستور mosmon می‌توانید وضعیت کلی کلاستر را بررسی نمایید. اینکه کدام سیستم‌ها دارای چه مقدار بار فعال هستند و با گذاشتن بار روی یکی از آنها چه اتفاقی خواهد افتاد و ...

+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 12:57  توسط یوسف عبدلیان باریکرسفی  | 

مفاهیم کلاسترها و OpenMosix

پیش‌درآمد
مبحث کلاسترها در لینوکس یکی از جذاب‌ترین و جالب‌ترین مباحث برای افراد علاقه‌مند به پردازش‌های موازی است. بدلیل علاقه بسیار زیاد خودم به این مبحث تصمیم به تهیه مقاله‌ای در این مورد گرفتم و بهتر دیدم یکی از بهترین مقالات موجود را ترجمه کرده و تجربه‌های خودم را نیز به آن اضافه کنم. مقاله حاضر برگرفته از نوشته‌های دانیل رابینز (Daniel Robbins) می‌باشد. این نوشته‌ها را می‌توانید از این نشانی دریافت نمایید. دانیل رابینز طراح و خالق لینوکس Gentoo می‌باشد. همانطور که اشاره کردم، این یک ترجمه تنها نیست. من خود تمام آنرا عملا انجام داده و بخش‌های عملی راهنمای فوق را کاملا تغییر داده و روش آسان‌تری را برای اجرای کلاستر پیشنهاد کرده‌ام. در بخش نخست این مقاله که اکنون در حال خواندن آن هستید، با مفاهیم کلاسترهای لینوکس تا حدودی آشنا خواهید شد. در بخش بعدی به طور عملی اقدام به برپاسازی یک کلاستر لینوکس خواهیم کرد.

کلاسترها چه هستند؟
به طور عمومی هنگامی که صحبت از کلاسترها می‌شود، مقصود فناوری‌هایی است که از طریق آن کامپیوترهای مختلف بتوانند با هم و با اشتراک قدرت پردازش هم، بتوانند امور پردازشی را که به آنها محول شده است، انجام دهند. این امور پردازشی همه چیز می‌تواند باشد. از پردازش‌های سنگین علمی تا تبدیل فایل‌های موسیقی و یا رندر کردن جلوه‌های ویژه فیلم‌های سینمایی. برای مثال، تمامی جلوه‌های ویژه فیلم‌های ارباب حلقه‌ها توسط کلاسترهای لینوکس رندر و پردازش شده‌اند.
انواع مختلفی از فناوری‌های کلاستر سازی برای سیستم‌عامل لینوکس وجود دارند. یکی از شناخته شده ترین آنها کلاستر Beowulf است. این کلاستر حاوی چندین ماشین است که توسط یک شبکه محلی پرسرعت به هم متصل شده‌اند. برای استفاده از این سیستم‌های کلاستر، برنامه‌های کاربردی باید مجددا برای استفاده از آن با استفاده از کتابخانه‌های کلاستر سازی نوشته شوند. عمومی‌ترین کتابخانه‌های کلاستر سازی عبارتند از PVM و MPI. هر دوی این کتابخانه‌ها بسیار عالی کار می‌کنند. با استفاده این کتابخانه‌ها، برنامه نویسان قادر به نوشتن برنامه‌هایی هستند که از منابع روی کلاستر همانند منابع روی یک کامپیوتر، بهره گیری نمایند.برای بسیاری از برنامه‌های کاربردی، PVM و MPI امکان افزایش خطی قدرت پردازش کلاسترها را با توجه به تعداد ماشین‌های روی آن فراهم می‌نمایند.

PVM و MPI به درد همه نمی‌خورد!
با اینکه کلاسترهای Beowulf بسیار قدرتمند هستند، ولی به درد همه کس نمی‌خورند! بزرگترین اشکال آنها نیاز به نرم‌افزارهای خاص می‌باشد که با استفاده از PVM و MPI نوشته شده باشند تا بتوانند از مزایای کلاستر استفاده کنند. البته این برای مراکز علمی و تحقیقاتی که برنامه‌های کاربردی خاص خود را از ابتدا می‌نویسند، اشکال مهمی نیست. آنها به راحتی قادرند تا از MPI و PVM استفاده کنند.
حقیقتا درصد افراد و موسساتی که برنامه‌های کاربردی خود را از ابتدا می‌نویسند بسیار پایین است. برای کسانی که مایل هستند تا یک کلاستر بنا کرده و از مزایای آن در اجرای برنامه‌های کاربردی عادی استفاده کنند، این یک مسئله بزرگ است! برنامه‌های کاربردی این دسته از موسسات بدون استفاده از کتابخانه‌های کلاستر سازی نوشته شده‌اند، بنابراین این گونه موسسات قادر نیستند تا از مزایای کلاسترها بهره‌گیری نمایند.
آیا جالب نیست که یک فناوری وجود داشته باشد تا بتوانید با استفاده از آن از مزایای کلاسترهای لینوکس استفاده کنید، بدون آنکه نیاز داشته باشید تا برنامه‌های کاربردی خود را از ابتدا نوشته و یا حتی آنها را مجددا کامپایل نمایید؟ خوشبختانه چنین فناوری وجود دارد و نام آن OpenMosix است!

ورود به OpenMosix
OpenMosix
قابلیت‌های کلاستر سازی را به هسته لینوکس اضافه می‌کند، بنابراین هر پروسه استاندارد لینوکس قادر خواهد بود تا از مزایای منابع کلاستر استفاده نماید. با استفاده از تکنیک‌های موازنه بار تطبیقی (Adaptive Load Balancing) پردازش‌های در حال اجرا بر روی یک گره (node) از کلاستر، قادرند تا بطور نامحسوس به یک گره دیگر از کلاستر مهاجرت کرده و بتوانند سریعتر اجرا شوند. بدلیل اینکه OpenMosix بطور کاملا نامحسوس (Transparent) عمل می‌کند، پردازش‌هایی که از یک گره به گره دیگر مهاجرت می‌کنند، حتی نمی‌دانند (لازم هم نیست بدانند) که در یک ماشین دیگر در حال اجرا هستند!
نامحسوس بودن OpenMosix به این معنی است که برای استفاده از مزایای موازنه بار تطبیقی آن، نیازی به برنامه نویسی خاصی نیست. در حقیقت، یک نصب پیش‌گزیده OpenMosix به طور خودکار پردازش‌ها را به بهترین گره منتقل خواهد کرد. این قابلیت OpenMosix را تبدیل به یک راه‌حل کلاستر سازی می‌کند که می‌تواند برای بخش عظیمی از برنامه‌ها مفید باشد.

OpenMosix دقیقا چکار می‌کند؟
بزرگترین کاری که OpenMosix انجام می‌دهد، تبدیل دسته‌ای از ماشین‌های لینوکس به یک سیستم بزرگ مجازی چند پردازنده‌ای متقارن (SMP=Symmetric MultiProcessor) است. هرچند نحوه عملکرد آن با سیستم‌های SMP واقعی مقداری تفاوت دارد. نخست اینکه سیستم‌های واقعی SMP که مبتنی بر ۲ یا چند پردازنده هستند، می‌توانند اطلاعات را با سرعت بسیار بالا تبادل نمایند، در صورتی که در OpenMosix سرعت ارتباط بین گره‌های کلاستر، محدود به سرعت شبکه محلی است که گره‌ها در آن قرار دارند. استفاده از ارتباطات اترنت گیگابیت و یا سایر انواع پر سرعت اترنت باعث خواهد شد تا تبادل داده‌ها با سرعت بالاتری صورت گرفته و کارایی کلاستر بالاتر باشد.
البته OpenMosix دارای مزایایی نسبت به سیستم‌های چند پردازنده‌ای سنتی داراست. با استفاده از OpenMosix شما قادر به ایجاد کلاسترهایی حاوی دها و حتی صدها کامپیوتر با سخت‌افزار ارزان هستید در حالی که سیستم‌های SMP که حاوی تعداد زیادی پردازنده باشند، می‌توانند بسیار گرانقیمت باشند. برای بسیاری از برنامه‌های کاربردی، OpenMosix نسبت به سیستم‌های SMP یا Mainframe، حرف بیشتری برای گفتن دارد. البته دلیلی وجود ندارد که شما نتوانید OpenMosix را بر روی سیستم‌های قدرتمند چند پردازنده‌ای اجرا نمایید. حتی این امکان وجود دارد تا OpenMosix را به همراه برنامه‌های کاربردی که با MPI یا PVM توسعه یافته‌اند، اجرا نمایید تا سرعت کلاستر خود را بهینه نمایید.
همانند سیستم‌های SMP سنتی، OpenMosix قادر نیست تا یک پروسه را روی چند پردازنده فیزیکی اجرا نماید. واضح‌تر اینکه نباید انتظار داشته باشید تا اجرای برنامه‌ای مانند مرورگر موزیلا روی یک کلاستر سریعتر از یک سیستم تک پردازنده‌ای باشد، مگر اینکه اجرا پروسه آنرا به یک گره سریعتر روی کلاستر منتقل نمایید. بعلاوه در حال حاضر OpenMosix امکان جداسازی رشته‌های متعدد به هم پیوسته را از یکدیگر فراهم نمی‌کند.
OpenMosix
قادر است تا پروسه‌های استاندارد لینوکس را بین گره‌های کلاستر بدون مشکل مهاجرت دهد. در صورتی که یک برنامه کاربردی تعداد زیادی زیر پروسه داشته باشد، آنگاه OpenMosix قادر است تا هر یک از آنها را به یک گره مناسب در کلاستر منتقل کند. شما می‌توانید از این قابلیت حتی در برنامه‌های کاربردی که دارای زیر پروسه نیستند نیز استفاده کنید. برای مثال، در صورتی که نیاز دارید تا تعدادی فایل موسیقی را از فرمت wav به mp3 تبدیل نمایید، تبدیل هر فایل یک پروسه خواهد بود. شما می‌توانید تمام این پروسه‌ها را یکجا اجرا نمایید. در آنصورت عمل پردازش بین کلاستر پخش خواهد شد (بجای اینکه عملیات تبدیل فایل‌ها را یک به یک انجام دهید). در صورتی که شما ۱۲ فایل موسیقی و ۱۲ گره همسان داشته باشید، عملیات تبدیل ۱۲ بار سریعتر انجام خواهد شد.

Mosix در برابر OpenMosix
پروژه OpenMosix جدیدترین شعبه پروژه Mosix می‌باشد که یکی از اهداف آن فراهم کردن کلاستر سازی نامحسوس روی لینوکس است. پس چرا ما از OpenMosix استفاده کنیم؟ دلایل خوبی برای این امر وجود دارد. در اواخر سال ۲۰۰۱ رهبری پروژه Mosix تصمیم به انتشار نسخه‌های جدیدی از Mosix تحت مجوزهای غیر GPL گرفت (کدهایی که قبلا GPL بودند). بنابراین نسخه‌های جدید Mosix دیگر نرم‌افزار آزاد نبودند و حقوق کاربران نیز در آنها نامشخص بود و هیچ مانعی برای نویسنده Mosix وجود نداشت تا از کاربران درخواست پرداخت وجه نماید.
این تغییر مجوز باعث ایجاد نگرانی‌هایی در میان کاربران Mosix شد و برداشته شدن کدهای منبع و حذف لیست‌های پستی Mosix بدون توضیح موجه، این نگرانی را تشدید نمود. خوشبختانه این کاربران تنها کسانی نبودند که در باره این تغییرات جدید نگران بودند. موشه بار (Moshe Bar) یکی از مدیران پروژه Mosix با این تغییر مجوز از GPL موافق نبود. بنابراین وی پروژه OpenMosix را شروع کرد تا این اطمبنان حاصل شود که ارائه نسخه آزاد و رایگان Mosix به عموم مردم ادامه پیدا خواهد کرد. سایت رسمی پروژه OpenMosix در آدرس http://openmosix.sf.net یا http://openmosix.org قرار دارد.
پس از آغاز این پروژه، تعداد زیادی از کاربران Mosix به OpenMosix روی آوردند. سیاست توسعه باز موشه باعث شد تا توسعه OpenMosix سرعت بیشتری بگیرد. در حال حاصر ۱۴ نفر بطور فعال روی پروژه OpenMosix کار می‌کنند در حالی که تعداد افراد پروژه Mosix تنها ۴ نفر است. در حال حاضر تعداد زیادی رفع اشکال، بهینه سازی سرعت و بهینه سازی در کدهای OpenMosix صورت گرفته است و تعدادی قابلیت جدید و بهینه سازی مجدد در سرعت نیز بزودی ارائه خواهند شد. در حقیت جدا شدن پروژه OpenMosix از Mosix باعث ارائه راه‌حل‌های بهتری برای کلاستر سازی تحت سیستم‌عامل لینوکس فراهم نموده است.

+ نوشته شده توسط یوسف عبدلیان باریکرسفی در پنجشنبه سیزدهم دی 1386 و ساعت 12:1 | نظر بدهید

فرض كنيد شما يك برنامه با كاربرد بسيار حرفه اي داريد كه توانايي هاي زيادي مانند حافظه ُ سرعت و غيره از كامپيوتر شما مي طلبد و شما در دفتر كار خود چند پي.سي داريد. خوب شما در آن واحد نمي توانيد معمولا با چند پي سي به طور همزمان كار كنيد مگر اين كه يك هشت پا با مغزي Multi thread باشيد. پس معمولا شما پشت فتوشاپ يا اتوكد يا هر نرم افزار كند ديگري نشسته ايد و بيشتر وقت خود را به حرص خوردن و نگاه كردن به ساعت شني ويندوز / مك يا لينوكس تان مي گذرانيد و اين در حالي است كه دو يا سه كامپيوتر ديگر در محل كار شما بيكار هستند.

البته راه حل هاي Grid Computing وجود دارند كه اجازه مي دهند شما چندين ماشين را به هم متصل كرده و از حافظه و توان محاسباتي آنها به شكل يك پارچه استفاده كنيد ولي اين راه حل ها براي كاربران عادي بسيار گران / مشكل و دور از دسترس هستند. اينجاست كه این را ه حل ساده مفهوم پیدا می کند.

هدف من اين است حالا كه اين امكان وجود ندارد كه از توان چند كامپيوتر به شكل يكپارچه براي اجراي يك برنامه - فرضا فتوشاپ - استفاده كنيم بياييم چند نسخه از آن را در چند كامپيوتر جدا گانه راه اندازي كنيم كه هر كدام منابع خودشان را مصرف كنند و در نهايت كنترل همه آنها را به دست شما بدهيم. به اين ترتيب شما در حالي كه مشغول باز كردن يك فايل بزرگ در فتوشاپ هستيد مي تواني يك نسخه ديگر فتو شاپ را به شكل از راه دور -Remote- بر روي يك كامپيوتر ديگر باز كنيد و به كار خود ادامه دهيد.

حالا نقشه اجرايي

بياييد فرض كنيد شما يك كامپيوتر Master ويندوز اكس پي و چندين ماشين Slave لينوكس ارزان قيمت داريد. قرار است شما مديريت كل سيستم را از پشت ويندوزتان كه خوش دست تر و كار با آن راحت تر است انجام دهيد. فرض مي كنيم شما يك شبكه اترنت 100 مگابيتي هم براي اتصال اين ماشين ها به يكديگر داريد و همه اين ماشين ها يكديگر را در شبكه TCP/IP شما مي بينند.


نرم افزار مورد نياز به غير از سيستم عامل

Real VNC
Client and Server Versions for Both Windows XP and Linux

Cross Over office
Linux

خوب حالا بر روي ماشين هاي لينوكس Cross Over office را نصب كرده و بر روي آن فتوشاپ نصب مي كنيم. حالا ما چندين ماشين لينوكس داريم كه فتوشاپ بر روي آنها نصب شده و بدون افت توان كار مي كند. حالا مساله اين است كه چگونه همه آنها را از ماشين ويندوزمان كنترل كنيم؟

كافيست كه سرويس VNC را بر روي ماشين هاي لينوكس اجرا كنيد :

vncserver

وي.ان.سي چند سوال ساده از شما مانند اسم و كلمه عبور و نام مشتري اكس.ويندو مي پرسد.

اين كار را بر روي تمام ماشين هاي لينوكس تكرار كرده و به هر كدام نام جديدي بدهيد.

در ماشين ويندوز VNC client را نصب و اجرا كنيد و به تمام ماشين هاي لينوكس تك تك Login كنيد. حالا كافي است كه در ترمينال TWM اين دستور را اجرا كنيد:

Photoshop

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

اكنون مي توانيد كمي از طعم شيرين Virtualization و Grid Computing را بدون داشتن سرور هاي گران قيمت بچشيد.
+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 12:56  توسط یوسف عبدلیان باریکرسفی  | 

اصول هسته Grid Computing :

تعیین و تعریف Grid Computing :

شیوه و روش Grid Computing رفتارکردن با مجموعه ای از منابعIT یکسان در حالت کلی به عنوان یک مخزن و انبار واحد ، و بهره برداری کردن از هر یک از این منابع به عنوان یک نوع مجزا و متمایز می باشد.

برای رفع مسائل و مشکلات سیستمهای یکپارچه بهمراه منابع پراکنده ، Grid Computing بک تعادل بین مزایای مدیریت منابع در دید کلی از یک سو و کنترل هر یک از منابع بطور انعطاف پذیر از سوی دیگر، برقرار می کند.

که این منابع مدیریت شده در Grid Computing عبارتند از :

* زیرساخت : مجموعه ای از سخت افزارها و نرم افزارها که محیطی را جهت ذخیره داده ها و اجرای برنامه ها فراهم می کنند.

* برنامه های کاربردی : که منطق و جرایان فرآیندهای خاص مؤسسات را تعریف می کنند.

* اطلاعات : مفاهیم اصلی در مدیریت تجارت.

اصول هسته Grid Computing :

دو اصل در هسته Grid Computing آنرا به طور منحصربفردی از دیگر روشهای Computing ازقبیل Mainframe ، Client/Server یا چند لایه ای (Multi-tier) متمایز می سازد : مجازی سازی و تأمین.

* با مجازی سازی ، منابع خاص (مانند رایانه ها ، دیسکها ، اجراء نرم افزاری و منابع اطلاعاتی) به عنوان منابع درهم آمیخته و مشترک جهت دسترسی مصرف کنندگان (از قبیل افراد و برنامه های نرم افزاری) بطور انتزاعی در نظر گرفته می شود.مجازی سازی یعنی شکستن اتصالاتی که بسختی بین ارائه کننده و مصرف کننده (مشتری) منابع برقرار شده است و مهیا ساختن منابع برای سرویس دهی به نیازهای خاص ، بدون اینکه مشتری نگران چگونگی انجام آن باشد.

* تأمین یعنی اینکه ، وقتی مشتری از طریق لایه مجازی سازی نیاز به منبع خاصی دارد ، در پشت پرده ، آن منبع جهت انجام در خواست ،شناسایی شده و به مشتری تخصیص داده شود.تأمین بعنوان بخشی از Grid Computing به این معنی است که سیستم تعیین می کند چگونه نیاز مشتری را برآورده سازد در حالیکه عملیات در کل ، به صورت بهینه انجام شود.

برای نمونه می توان از Oracle 10g به عنوان تنها DBMS پیشتاز در این زمینه یاد کرد که در مقاله بعدی این جنبه ار Oracle 10g را بررسی خواهیم نمود.
+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 12:54  توسط یوسف عبدلیان باریکرسفی  | 

سوپر کامپیوتر خانگی

سوپر کامپیوتر خانگی

سوپر کامپیوتر خانگی نرم افزار OpenMosix شبکه ای از کامپیوتر های گنو/لینوکس را تبدیل به یک کلاستر می کند. حفظ تعادل بار بین گره ها به صورت اتوماتیک انجام می شود. گره ها می توانند عضو کلاستر شوند یا از گروه خارج شوند بدون این که وقفه ای در سیستم به وجود بیاید. آدرس : http://openmosix.sourceforge.net
+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 12:50  توسط یوسف عبدلیان باریکرسفی  | 

در جستجوی ماشین مجازی ناهمگن موازی

در جستجوی ماشین مجازی ناهمگن موازی

در جستجوی ماشین مجازی ناهمگن موازی قیمت سخت افزار و سیستم های "بازمانده" -Legacy با سرعت زیادی کاهش می یابد.، این روز ها می توانید سرورهایی با چهار پردازنده پنتیوم 3 را در سایت Ebay.com با قیمت زیر هشتصد دلار بخرید. ماشین های سری ایندیگو و ایندی سیلیکان گرافیکس به قیمت های باورنکردنی پایین فروخته می شوند و هکر ها را وسوسه می کنند که چند تا از این ماشین های افسانه ای را بخرند، مگر بر روی همین ماشین ها مهم ترین اتفاقات مرتبط به رسانه و تکنولوژی اطلاعات در دهه پیش رخ نداده است؟ ولی حقیقت تلخی که وجود دارد این است که تا زمانی که یک واسط برنامه نویسی کاربرد -Application Programming Interface-API- منسجم وجود نداشته باشد که این ماشین ها را در یک کلاستر به هم متصل کند این ماشین ها تنها جنبه افسانه ای خواهد داشت و دردی را از کسی دوا نخواهند کرد. تکنولوژی موسوم به ماشین مجازی ناهمگن موازی -Heterogeneous Parallel Virtual Machine- برای حل این مساله طراحی و معرفی گردیده است. HPVM تلاش می کند مفهوم کلاسترینگ را از چنگ دانشگاه ها و مراکز تحقیقاتی خارج کرده و در اختیار همگان قرار دهد.
+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 12:49  توسط یوسف عبدلیان باریکرسفی  | 

آی.بی.ام : نرم افزار کلاسترینگ در یک سی دی

آی.بی.ام : نرم افزار کلاسترینگ در یک سی دیآی.بی.ام : نرم افزار کلاسترینگ در یک سی دی در یکی از عجیب و غریب ترین مقالاتی که به زندگی ام دیده ام، مایانک شارما -Mayank Sharma - از آی.بی.ام روشی برای راه اندازی یک سیستم کلاسترینگ را پیشنهاد می کند که نه از نرم افزار های چند هزار دلاری اچ.پی ، سان و آی.بی.ام، و نه از سرور های سوپردام، اولترا اسپارک و پاور استفاده نمی کند. نسخه مایانک شامل یک سی دی Knopix ( قابل تهیه از سوپر مارکت محل شما در تهران) و پی سی های معمولی می شود. این مقاله به طرز عجیبی من را به یاد ماجرای گداخت سرد -Cold Fusion- می اندازد. یعنی واقعا به همین سادگی است؟

Craft a load-balancing cluster with ClusterKnoppix

+ نوشته شده در  پنجشنبه سیزدهم دی 1386ساعت 12:49  توسط یوسف عبدلیان باریکرسفی  | 

مطالب قدیمی‌تر