بخشی از مقاله
مديريت سيستم در لينوكس
مقوله مديريت سيستم همواره از مباحث سطح بالا در يك سيستم عامل به حساب ميآيد. مديران سيستم معمولاً از پرمشغلهترين دستاندركاران سيستمهاي اطلاعاتي به حساب ميآيند. در اين شماره و شمارههاي آينده ماهنامه شبكه به برخي مسائل و ابزارهاي مديريتي در سيستم عامل لينوكس خواهيم پرداخت.
مفهوم مديريت سيستم
مديريت سيستم در لينوكس همواره جايگاه ويژهاي را در ميان مشاغل و تخصصهاي مرتبط با فناوري اطلاعات دارا بوده است. در حال حاضر بسياري از متخصصان IT در نرمافزارهاي مربوط به اين سيستمعامل كه امروزه به نام نرمافزارهاي اپنسورس شناخته ميشوند، داراي مهارتها و تجارب خوبي هستند. مثلاً عدهاي از آنها به خوبي قادرند يك وب سرور مبتني بر آپاچي را پيكربندي و راهاندازي كنند يا برخي ديگر ميخواهند لينوكس را در نقش يك سرور ميزبان دامنه (DNS) يا سرور اختصاص آدرس IP در يك شبكه (DHCP) تنظيم كنند و به كار گمارند.
بهطور كلي مشغله اين دسته از ادارهكنندگان سيستم، راهاندازي سرورهاي لينوكسي در نقشهاي مختلف و ارائه سرويسهاي گوناگون شبكهاي است. اما آيا واقعاً مديريت سيستم در لينوكس به همين موارد محدود ميشود؟ يا آيا اين مسائل اصولاً جزء وظايف يك مدير سيستم محسوب ميگردد؟ در يك كلمه ميتوان گفت: خير. دليل آن هم كاملاً روشن است. يك سرويس شبكهاي يا يك سرويس شبكه ممكن است فقط يك بار نصب و راهاندازي شود، اما صدها بار در طول سال مورد بازبيني و عمليات نگهداري (Maintenance) براي بهبود كارايي يا رفع اشكال قرار گيرد.
در واقع واژه <مديريت سيستم> نيز به اينگونه امورِ مربوط به تعمير و نگهداري بسيار نزديكتر است تا به مسائل مربوط به تنظيم و راهاندازي. بنابراين بسيار واضح است كه براي يك مدير سيستم، آشنايي با مباحث مربوط به نصب و راهاندازي و تسلط بر امور مربوط به نگهداري سيستم مثل مديريت كاربران، فايلها، امنيت، فايل سيستم، سرعت و كارايي سيستم شرط لازم و كافي براي تصدي اين پست شغلي است.
به عنوان مثال، در يك وبسايت كه روزانه هزاران بار مورد بازديد كاربران اينترنت قرار ميگيرد، امكان بروز رويدادي كه سرور ميزبان را به شدت دچار افت سرعت و كارايي كند، بسيار محتمل است. در اين وضعيت شايد مدير سيستمي كه چندان به مسائل مربوط به نگهداري و كنترل ترافيك مسلط نباشد، راهحل را در توقف و راهاندازي مجدد سرور يا همان Reset كردن بيابد، اما كاملاً روشن است كه بسياري از ايرادات ممكن است با اين روش مقابله، سازگار يا قابل رفع نباشند.
بنابراين يك مدير سيستم مسلط به امور مانيتورينگ و نگهداري سيستم، ميتواند عمكرد سرور را در ساعات اوج ترافيك مشخص نمايد و با توجه به ميزان كاركرد پردازنده (CPU) يا تعداد عمل خواندن و نوشتن اطلاعات در هاردديسك (R/W)، مشكل را مكانيابي كند. پس از طي اين مراحل، وي قادر است مثلاً با افزايش ظرفيت محاسباتي يا سرعت عملR/W يا راهاندازي يك سرور مجازي كمكي مشكل را تا حد مطلوبي كاهش دهد يا حتي در برخي موارد بدون صرف هزينهاي براي تعويض پردازنده، هاردديسك و امثال آن يا اضافه نمودن سرور، با استفاده از نرمافزارهاي مديريت سيستم مثل Xen ميتواند به هر برنامه قابل اجرا روي سرور، حد معيني را جهت استفاده از پردازنده يا ساير منابع سيستم اختصاص دهد تا از تداخل برنامههاي مختلف و همزمان، در كارايي يكديگر جلوگيري كند.
اما اگر بخواهيم وظايف روزانه يك مدير سيستم را برشماريم، اين مسئله بستگي به نوع محيطي دارد كه وي در آن مشغول به كار است. طبيعي است كه وظايف روزانه مديرسيستم يك شبكه محلي كوچك، با مدير يك سرويسدهنده اينترنتي با تعداد زيادي وبسرور كاملاً متفاوت باشد، اما اين تفاوت را شايد بتوان به گونهاي، در تعداد و حجم اين وظايف (به دليل بيشتر بودن تعداد كامپيوترهاي موجود در شبكه، سرورها يا كلاينتهاي قابل اتصال و استفاده از شبكه) دانست. البته بسياري از وظايف مدير سيستم نيز مستقل از نوع محيط هستند و به عبارتي، بين تمام مديران سيستمهاي كوچك و بزرگ مشتركند.
يكي از اين وظايف، مانيتورينگ و پيشگيري يا حداكثر رفع ايراد زودهنگام از مشكلات قابل بروز در سطح شبكه است. به عنوان مثال، كشف مشكل مربوط به اشتراك فايل يا چاپگر در سطح يك شبكه محلي كوچك يا مشكل سرويس بانك اطلاعاتي در وب سرور يك سايت مهم را نبايد تا هنگام مراجعه و گلايه كاربران به تعويق انداخت. اين يكي از وظايف مهم يك مدير سيستم است كه با كنترل و مانيتورينگ منظم و متناوبِ عملكرد سيستم و شبكه، بروز مشكل را تا حد امكان پيشبيني ميكند يا درصورت وقوع، آن را در همان ساعات اوليه و با استفاده از راهكارهاي از پيش تعيين شده برطرف نمايد.
در محيط لينوكس، امروزه بسياري از مديران سيستم قادرند با استفاده از ابزارهاي مختلف كه براي مانيتورينگ سيستم در جامعه اپنسورس طراحي و ساخته شده، از عهده اين امر مهم برآيند؛ ضمن اينكه هنوز هم بسياري از دستورات مديريتي خط فرمان در لينوكس، كاربرد مناسبي در اين زمينه دارند.
شكل 1
LinuxConf
اين برنامه يك ابزار بصري يا ويژوال براي مديريت در محيط لينوكس است. اين ابزار در برخي توزيعهاي لينوكس موجود است. بهعلاوه، فايلهاي قابل كامپايل يا پچهاي قابلنصب آن به دو صورت بستههاي ردهت (RPM) و دبيان قابل دسترس است و ميتوان آن را با هر دو واسط كاربر Gnome و KDE نصب و اجرا كرد.
(شكل 1) اين برنامه قادر است تنظيماتي در سطح شبكه يا روي كامپيوتر ميزبان به عنوان سرور يا كلاينت شبكه انجام دهد. و داراي سه زبانه يا Tab اصلي است كه به نامهاي Config ،Control و Status، محل اعمال تنظيمات، كنترل و مديريت و مانيتورينگ وضعيت سيستم، سرور وسرويسهاي شبكهاي هستند.
LinuxConf طوري طراحي شده است كه مدير سيستم ميتواند با خاطري آسوده، تنظيمات مورد نظر خود را انجام دهد و پس از آن با كليك دكمه Accept، يكباره تمام تنظيمات انجام شده را با هم به سيستم منتقل نمايد.
شكل 2
Webmin
همان طور كه از نام آن برميآيد، ابزاري تحت وب براي مديريت لينوكس است كه ميتوان از آن براي مديريت اين سيستم عامل و شبكه تحت آن از راه دور، استفاده نمود.
اين برنامه نيز به نوبه خود قادر است بسياري از وظايف مديريتي سيستم يا شبكه مثل مديريت كاربران و گروههاي كاربري، كنترل سرويسهاي شبكهاي چون وبسرور، ايميل سرور، كنترل سختافزارهاي سرور مثل پارتيشنهاي هاردديسك، RAID و امثال آن، مديريت فايلها و بسياري امور ديگر را انجام دهد.
اين برنامه نخستينبار و با مجوز نرمافزار آزاد BSD در لينوكس Caldera به كاربران عرضه گرديد، اما در حال حاضر، توسعهدهندگان و شركتهاي توسعهدهنده يا توزيعكننده لينوكس قادرند با استفاده از مجوز GPL ماجولهاي موردنظر خود را به صورت برنامههاي كامپايل شده CGI، به آن اضافه كنند. اين ويژگي يعني قابليت اضافه نمودن Plug inهاي ساخت توسعهدهندگان به هسته اصلي Webmin، از نقاط مثبت اين ابزار است. (شكل 2)
شكل 3
YAST
شايد بتوان گفت كه يكي از زيباترين و جالبترين برنامههاي مديريت در محيط لينوكس،برنامهاي به نامYet Another System Tool) YAST) است كه اولين بار با لينوكس آلماني SUSE به كاربران معرفي شد.
نسخه اوليه YAST صرفاً يك برنامه ساده بود كه بيشتر براي مديريت پارتيشنها، بستههاي نرمافزاري و برخي تنظيمات سيستمي ديگر مورداستفاده قرار ميگرفت، اما اكنون نسخههاي جديد YAST2 برنامههاي بصري بسيار قدرتمندي هستند كه تمام ابزار لازم براي مديريت سيستمعامل لينوكس را در اختيار مديرسيستم قرار ميدهند. (شكل 3)
اين برنامه داراي قسمتها و ماجولهاي مختلفي است كه مديريت سيستم و شبكه را به نحو بسيار مطلوبي در يك واسط كاربر مشترك، متمركز نموده و كار را براي مديرسيستم آسان كرده است.
لينوكس SUSE به دليل بهرهگيري از برنامه YAST سالها است در برابر رقباي ديرينهاي چون ردهت يا فدورا، از لحاظ آساني در مديريت سيستم و شبكه، خودنمايي ميكند. همانطوركه در شكل نيز مشاهده ميكنيد، زبانههاي مختلف موجود در اين ابزار، ماجولهاي مربوط به مديريت سيستم را به بهترين و شفافترين شيوه، دستهبندي مينمايد و مديرسيستم را از درگير شدن بيمورد با فرامين پيچيده و وقتگير خط فرمان معاف ميكند. YAST ابزاري است كه بررسي آن، مقالهاي مفصلتر را ميطلبد كه در آينده به آن خواهيم پرداخت.
مجازيسازي در لينوكس
مجازيسازي و به ويژه پروژه Xen، يكي از مهمترين موضوعاتي هستند كه در راس وقايع يك ساله اخير دنياي اپنسورس بودهاند. پشتيباني سه توزيع قدرتمند لينوكس (فدوراكور، دبيان و OpenSuSE) از اين پروژه، همكاري گروه توسعهدهنده برنامه مجازيسازي VMWare با پروژه Xen، تمايل شركتهاي بزرگي مانند اينتل و سانمايكروسيستمز به توسعه Xen، و نهايتاً بهبود چشمگير كارايي اين برنامه در نسخههاي جديد، روي هم رفته باعث جلب توجه محافل و صنعت مجازيسازي به سوي اين برنامه اپنسورس شد و هزاران شركت اقدام به آزمايش و به كارگيري آن نمودند كه حاصل آن، انتشار هزاران گزارش، بررسي، مقاله و اسناد علمي معتبر درباره Xen و نهايتاً پيشرفت بيشتر در توسعه آن شد. در اين نوشتار ابتداً نگاهي به اين پروژه و ويژگيهاي آن خواهيم انداخت و در ادامه راهاندازي يك ماشينمجازي در لينوكس را بررسي مينماييم.
Xen چيست؟
Xen Virtual Machine Monitor) Xen VMM) يك پروژه اپنسورس است كه در آزمايشگاههاي كامپيوتر دانشگاه كمبريج انگليس توسعه داده ميشود. خروجي اين پروژه يك برنامه مجازيسازي به نام Xen است كه امكان ساخت و برپاسازي چندين ماشين مجازي با قابليت اجرا توسط سيستمعاملهاي مختلف روي يك سختافزار واحد را فراهم ميكند. با اين ابزار، سيستمعاملهاي ميهمان به هسته لينوكس (نسخههاي 2.4 و 2.6) متصل ميشوند و امكان يكپارچهسازي آنها براي هسته سيستمعاملهاي NetBSD/FreeBSD نيز وجود دارد. نتيجتاً كاربران قادر خواهند بود با برنامه Xen چندين سيستمعامل ميهمان را روي سيستمعاملهاي خانواده يونيكس بدون نياز به تغيير و اصلاح كد و ساختار هسته سيستمعامل مادر راهاندازي نمايند. در اين ميان شركت سانمايكروسيستمز نيز تلاش ميكند Xen را براي سيستمعامل سولاريس سازگار نمايد.
جالب است به اين نكته اشاره شود كه پروژه توسعه برنامه Xen از ابتدا منبعباز نبود و چندين سال يك پروژه اصطلاحاً كد بسته تلقي ميشد در عوض پروژههاي منبعبازي مانند Bochs IA-32 Emulator و qemu در دنياي اپنسورس مطرح بودند كه عمدتاً برنامههاي شبيهسازي معماريهاي سختافزاري بوده و ابداً از كارايي و قابليتهاي مورد انتظار برخوردار نبودهاند. در حقيقت موفقيت پروژه Xen در مقايسه با ديگر پروژههاي منبعباز، سازگاري و يكپارچهسازي با هسته سيستمعامل لينوكس و فراهمسازي بستري براي پشتيباني سختافزار سيستمهاي كامپيوتري مانند اينتل و ايامدي است.
جهش ديگر Xen در آگوست 2005 بود كه شركت XenSource (شركت رسمي پشتيبان و توسعهدهنده تجاري پروژه Xen اقدام به انتشار Intel Developer Forum) IDF) نمود كه امكان استفاده Xen روي سكوهاي سختافزاري مبتني بر Intel TV را فراهم نمود و در پي آن امكان اجراي مجازي ويندوز اكسپي سرويسپك دو، در كنار لينوكس فراهم شد. در چنين شرايطي برنامه مجازيسازي تجاري VMWare كه براي سرورهاي ESX نيز توسعه داده ميشود، همكاري جديدي را با توسعهدهندگان Xen براي دسترسي به كدهاي منبع VMware ESX Server و رابط كاربري آن آغاز كرد. مزيت برجسته برنامه VMWare در عدم يكپارچهسازي و اتصال سيستمعامل ميهمان و ارائه راهكارهاي اجراي سيستمعاملهاي ميهمان روي ويندوز است.
در اين زمان واقعه مهم ديگري نيز براي Xen روي داد و آن، پشتيباني توزيع لينوكس Fedora Core4، دبيان و SuSE Professional9.3 از اين برنامه و اضافهشدن آن به توزيع لينوكس سرور RHEL5 بود. پروژه فدورا حتي به ارائه بستههاي نرمافزاري RPM برنامه Xen پرداخت. تمام اين وقايع موجب شد برنامه Xen به عنوان گزينه اول برنامه مجازيسازي براي لينوكس و دنياي اپنسورس مطرح شود و شركتهاي سختافزاري مانند IBM و HP به سوي اين محصول حركت نمايند و ديگر توزيعها و برنامههاي اپنسورس Xen را در محصولات خود به كار بگيرند.
ساختار لايهاي Xen
روش مجازيسازي
تفاوت عمده Xen با ديگر برنامههاي مجازيسازي و شبيهساز در شيوه پيادهسازي ماشينهاي مجازي روي يك سيستم است. برنامه Xen از تكنيك Paravirtualization براي پيادهسازي سيستمعاملهاي ميهمان بهره ميگيرد.
Paravirtualization سيستمعامل و سختافزار مادر را در يك سطح و ماشينهاي مجازي را در سطحهاي ديگر پيادهسازي ميكند. مزيت اين روش، عدم تداخل فرايندهاي اجرايي سيستمعامل و امكان افزودن پروسههاي جديد به هسته سيستمعامل بدون كامپايل هسته يا دستكاري آن است.