پاسخ : کلاسترینگ در لینوکس
شروع کار
فرایند برپاسازی کلاسترهای لینوکس بسیار ساده می باشد. ابتدا باید هسته هایی که OpenMosix روی آنها فعال شده اند را روی گره های کلاسترها نصب کرده و سپس ابزارهای کاربری را روی همه آنها نصب کرده و یک تنظیم کوچک در یک فایل پیکربندی انجام دهیم.
به عنوان نخستین مرحله از کار، باید ابزارهای نرم افزاری لازم را فراهم آورید. نخستین چیزی که به آن نیاز دارید، کد منبع هسته ای است که مایلید روی آن کار کنید. کد منبع هسته خود را می توانید از http://kernel.org/ دریافت نمایید. در قدم بعدی باید وصله های هسته 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 را از سایت رسمی آن دریافت نمایید. پس از اتمام دریافت تمامی اقلام مورد نیاز (تنها کد منبع هسته دارای حجم زیادی است و بقیه ابزارها همگی بین ۲۰۰ تا ۳۰۰ کیلوبایت ظرفیت دارند!) باید تجهیز گره های کلاستر را شروع کنید. ابتدا لازم است در شبکه محلی خود کامپیوترهایی را که مایلید به عنوان گره های کلاستر استفاده کنید، تعیین نمایید. :
پس از تعیین گره های کلاستر، شروع به نصب نرم افزارهای لازم برای این کار می کنیم. این عملیات را برای تمام گره ها باید تکرار کرد. برای شروع هسته 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 گره> وارد نماییم:
<Node No.> <Node IP Address> <Node QTY>
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 می توانید وضعیت کلی کلاستر را بررسی نمایید. اینکه کدام سیستم ها دارای چه مقدار بار فعال هستند و با گذاشتن بار روی یکی از آنها چه اتفاقی خواهد افتاد و ...
پاسخ : کلاسترینگ در لینوکس
کلاستر لینوکس زیر بار
با پیگیری و انجام مراحل شرح داده شده در بخش های پیشین مقاله کلاسترها، اکنون یک کلاستر آماده به کار دارید که می توانید قدرت آنرا آزمایش کرده و به نحوه کلی عملکرد کلاسترها پی ببرید.
برای شروع، از روی ایستگاه کاری که بعنوان مانیتور آنرا در نظر گرفته ایم، از روی کنسول وارد گره شماره ۱ و گره شماره ۲ می شویم. روی گره شماره ۱ با استفاده از دستور 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 در جهان بوده و یک نرم افزار بازمتن است. این نرم افزار را از لینک زیر دانلود نمایید. حجم آن کمی بیشتر از ۱ مگابایت می باشد:پس از دانلود بسته کد منبع، جهت نصب نرم افزار دستورات زیر را در خط فرمان اجرا نمایید:
# 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:46s
Debian<<<<<<<<<5:01s
پس از این مرحله OpenMosix را اجرا کرده و کلاستر را زیر بار می گذارم. دستور عملیات به صورت زیر است:
cd /root/wav
# for x in .wav
do
lame $x &
done
با اضافه شدن کاراکتر & تمامی ۵ عملیات به صورت همزمان و در پس زمینه اجرا خواهند شد. اجرای همزمان ۵ پروسه باعث مهاجرت پروسه ها به گره دیگر کلاستر و وارد شدن کلاستر در عملیات می گردد. خوب همانطور که انتظار می رفت، کلاستر کار می کند. نتیجه کار مطابق جدول زیر است:cyber>>>>>>>4:11s
Debian>>>>>>3:36s
همانطور که می بینید، نتیجه عملیات بسیار جالب است. زمان ۵ دقیقه ای عملیات در دستگاه قویتر به سه دقیقه و نیم و زمان ۱۸ دقیقه و ۴۶ ثانیه ای دستگاه ضعیف تر به چهار دقیقه و ۱۱ ثانیه کاهش یافته است!!