مفاهیم کلاسترها و OpenMosix(1859 مجموع کلمات موجود در متن) (9267 بار مطالعه شده است)  مفاهیم
کلاسترها و 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
باعث
ارائه راهحلهای بهتری برای کلاستر
سازی تحت سیستمعامل لینوکس فراهم نموده
است. |