مقال اليوم يخص واحدة من أكثر المواضيع الجدلية والمعروفة في عالم لينكس، الكلام هنا سيكون عن Systemd!
نحاول فهم أساس هذه التقنية عن قرب ولماذا وُجدت من الأساس وسبب الجدل حولها في مجتمع المصادر المفتوحة.
إدارة الخدمات قبل ظهور systemd #
قبل ظهور systemd كان SysVinit مستخدما على نطاق واسع في توزيعات لينكس مع وجود بدائل أخرى وفكرته ببساطة أن يقوم بتشغيل الخدمات بشكل متسلسل ومقروء عبر سكريبتات نصية، بمعنى الخدمة تعمل وتنتظر حتى تنتهي لتبدأ الخدمة التي تليها لكن المشكلة كانت في البطء وصعوبة إدارة الاعتماديات (Dependencies).
هنا ظهر systemd في سنة 2010 والهدف منه كان تشغيل الخدمات بالتوازي مع بعض في نفس الوقت وبالتالي أصبح وقت الإقلاع سريع والجهاز يُفتح في ثواني ومع تطور المشروع الوضع أصبح لا يقتصر على مرحلة الإقلاع بل وصل لإدارة الخدمات أثناء تشغيل النظام.
كيف يعمل systemd؟ #
تشغيل الخدمات بالتوازي #
كما ذكرنا سابقا، systemd لا ينتظر خدمة لتنتهي لتبدأ الخدمة التي تليها. هو يقوم بتشغيل عدة خدمات في نفس الوقت أثناء الإقلاع وبالتالي هذا يُقلل وقت الإقلاع (Boot time) بشكل ملحوظ.
لكن وجب ذكر أن النتيجة تعتمد على العتاد والخدمات والإعدادات ولا تعني أن كل جهاز سيقلع خلال ثوان معدودة.
تشغيل الخدمات عند الحاجة #
أيضا بدلا من تشغيل كل الخدمات في الخلفية واستهلاك موارد الجهاز يمكنه تأجيل تشغيل خدمة معينة حتى يتم طلبها فعليا عبر مسار معين (Sockets).
تتبع العمليات باستخدام Cgroups #
يستخدم systemd مجموعات التحكم في نواة لينكس (cgroups) لتتبع العمليات التابعة لكل خدمة ويساعد ذلك على إنهاء العمليات التابعة للخدمة عند إيقافها وفقا لإعدادات الإيقاف الخاصة بها.
إدارة السجلات باستخدام journald #
بدل البحث في ملفات نصية متفرقة لمعرفة سبب تعطل خدمة ما، تم تجميع السجلات في مكان واحد (journald) يمكن البحث فيه بسهولة وقراءته بأدوات موحدة.
هذا بخلاف تفاصيل تقنية أخرى لا يمكن حصرها هنا.
لماذا يثير systemd الجدل؟ #
يرتبط جانب من الجدل بتفسير فلسفة Unix التي تشجع على بناء أدوات صغيرة ذات مهام محددة وهي فلسفة تصميمية يمكن الاختلاف في تطبيقها وليست قاعدة تقنية تحسم جودة مشروع ما وحدها.
يدور الجدل حول اتساع مسؤوليات المشروع ودرجة الترابط بين مكوناته. يرى مؤيدوه أن التكامل يوفر أدوات متناسقة لإدارة النظام بينما يفضل منتقدوه أدوات أصغر وأكثر استقلالية ويهتمون بحرية اختيار المكونات وقابلية نقلها إلى أنظمة أخرى.
ماذا يقدم systemd للمستخدم العادي؟ #
إذا كنت تستخدم توزيعة تعتمد على systemd مثل Ubuntu أو Fedora فيمكنك استخدام systemctl لمعرفة حالة الخدمات وتشغيلها وإيقافها وضبط تفعيلها عند بدء النظام بحسب نوع الوحدة وإعداداتها.
من المهم التمييز بين بدء الخدمة الآن باستخدام start وتفعيلها ضمن إعدادات بدء التشغيل باستخدام enable فالتفعيل وحده لا يبدأ الخدمة فورا وإيقافها باستخدام stop لا يعطل تفعيلها في الإقلاعات اللاحقة.
وقد يستفيد المستخدم من اتساق أدوات الإدارة وتشخيص المشكلات مع بقاء الأداء والبساطة وحرية اختيار المكونات عوامل تختلف أهميتها من مستخدم لآخر.
في الختام نتمنى أن تكون الصورة قد وصلت ولو بالشيء القليل.
روابط ذات صلة #
- التوثيق الرسمي لـ systemd
- وجهة نظر أحد مطوري systemd حول تصميم المشروع
- مشروع Devuan: حرية اختيار نظام التهيئة