نواصل دراسة المجموعات. في Red Hat Enterprise Linux 7 ، يتم تمكينها افتراضيًا ، لأنها تستخدم systemd ، وهو بدوره ، لديه بالفعل مجموعات مدمجة. مع Red Hat ، يختلف Red Hat Enterprise Linux 6 قليلاً. في الواقع ، كانت وحدات التحكم cgroups موجودة في البداية ، ولكن تم إصدار هذا الإصدار ، أذكر في يناير 2010 ، أي قبل بضعة قرون من حيث سنوات الكمبيوتر.

ومع ذلك ، فإن cgroups في Red Hat Enterprise Linux 6 قادرة حتى اليوم ، وهو ما سنوضحه اليوم.
دعنا نحلل قدرات المجموعات في Red Hat Enterprise Linux 6 باستخدام مثال افتراضي بحت ، يعتمد بالكامل على الأحداث الحقيقية. ولكن بالنسبة للمبتدئين ، حسب التقليد ، انحراف صغير.
لم تكن هناك مشكلات عديدة تتعلق بأمن تكنولوجيا المعلومات كما هي الآن. هذا ليس مفاجئًا ، لأنه اليوم لا ترتبط جميع أجهزة الكمبيوتر والهواتف بالشبكة فحسب ، بل أيضًا بالثلاجات والمكانس الكهربائية ومجموعة من الأشياء الأخرى المختلفة - إن نطاق التهديدات بالشبكة كبير بكل بساطة. ومحاربة هذه التهديدات ، كقاعدة ، تبدأ فورًا على جميع الجبهات. التثبيت السريع للرقع الأمنية؟ نعم بالتأكيد! تعزيز أمن النظام - جدران الحماية ، SELinux ، المصادقة الذكية ، هل هذا كل شيء؟ بالطبع! ماسحات مكافحة الفيروسات على أجهزة لينكس؟ حسنا ، كيف أقول ...
على أجهزة Linux ، تتسبب برامج مكافحة الفيروسات في بعض الأحيان في ضرر أكثر من نفعها. ومع ذلك ، فإن حراس الأمن لديهم أسبابهم الخاصة ، وغالبًا ما يطلبون منك إجراء فحوصات مكافحة الفيروسات بانتظام ، دون التفكير حقاً في سلامتهم من وجهة نظر فنية. وهذه حقيقة يجب على المرء أن يتحملها ، ويواجه معها ، عاجلاً أم آجلاً ، تقريبًا أي متخصص في تكنولوجيا المعلومات.
النقطة الثانية هي أن Red Hat Enterprise Linux 7 بالطبع عصري ومتقدم ورائع ، ولكن لا يزال الكثيرون يستخدمون Red Hat Enterprise Linux 6 ولا يفكرون في رفضه. في الواقع ، لهذا السبب يختار الناس Red Hat - يمكنك الجلوس على نفس الإصدار لسنوات ولا يزال لديهم أحدث التصحيحات والتحديثات والدعم.
دعنا نعود إلى مثالنا ... تخيل أن هناك رجل يدعى جيري. يعمل جيري في مكتب كبير وهو مسؤول عن خادم Red Hat Enterprise Linux 6. وهو راضٍ تمامًا عن طريقة عملها ، ولا يحتاج إلى مشاكل جديدة.
ولكن بعد ذلك قرر الرجال من قسم الأمن أنه على جميع خوادمه تحتاج إلى وضع شيء واحد يسمى ScanIT. وبما أن هذا الشيء سيتحقق بشكل دوري من الأقراص والذاكرة بحثًا عن الفيروسات والبرامج الضارة الأخرى ، فإنه يحتاج إلى وصول كامل إلى الجذر.
يتنهد جيري ، ويضع الغيتار الخاص به ويذهب لوضع ScanIT على آلة اختبار. بسرعة كبيرة اتضح هذا:
- عند إجراء فحص مكافحة الفيروسات ، يلتهم المسح (هذا برنامج نصي لبدء العملية) كل وقت المعالج الذي يمكنه الوصول إليه. وهذا يؤثر بشكل سيء للغاية على عمل آلة الاختبار - بمجرد أن لم يتمكن جيري من الوصول إليه على ssh.
- بالإضافة إلى ذلك ، فإن عملية المسح تلتهم الذاكرة من وقت لآخر كما لو كانت في حد ذاتها. ونتيجة لذلك ، يستيقظ OOM Killer ويبدأ في قتل أي عمليات بخلاف المسح نفسه.
بشكل عام ، هناك شيء يجب القيام به مع هذا.
يلتقط `` جيري '' الغيتار ، ويبدأ في لعب دور Grateful Dead ، في التفكير. سرعان ما حدث له أن من المحتمل أن نفس المجموعات من Red Hat Enterprise Linux 7 يمكن أن تساعد هنا ، والتي حولها صديق يدعى أليكس طنين من أذنيه. يضع جيري مرة أخرى الغيتار الخاص به ويبدأ قراءة
الأحواض التي أرسلها أليكس
على Red Hat Enterprise Linux 6 . اتضح أن أول شيء يحتاج إليه هو libcgroup.
لا يوجد libcgroup على آلة الاختبار ، لذلك يبدأ جيري بتثبيته:
بالإضافة إلى ذلك ، يشمل جيري خدمتين ضروريتين لعمل المجموعات الدائمة (المستمرة):
- cgconfig - يوفر واجهة بسيطة إلى حد ما للعمل مع أشجار cgroup. من المؤكد أن جيري يمكنه تركيب مجموعات cgroups وتكوينها يدويًا ، ولكن لماذا ، إذا كان بإمكانك توفير الوقت؟
- cgred - هذا الشيء هو محرك قاعدة cgroup: عندما تبدأ العملية ، تضعها هذه الخدمة في cgroup واحدة أو أخرى وفقًا للقواعد المحددة.
بعد تثبيت كل هذا وتكوينه ، يمكن لـ Jerry أخيرًا الانتقال مباشرة إلى المشكلة نفسها. بعد التفكير مليًا في الأمر ، اتخذ القرار التالي:
- ينبغي ألا تستهلك عمليات المسح والعمليات التابعة لها أكثر من 20٪ من موارد وحدة المعالجة المركزية. في الواقع ، حتى أقل - لا يزيد عن 20 ٪ من موارد نواة معالج واحدة ، حتى على جهاز متعدد النواة. في مجموعات cgroups ، يتم ذلك باستخدام الحصص النسبية لوحدة المعالجة المركزية.
- أما بالنسبة للذاكرة ، فيجب ألا تستهلك عمليات المسح والعمليات التابعة لها أكثر من 512 ميجابايت من ذاكرة النظام. إذا كانوا يعبرون هذا الخط ، فيجب أن يقتلهم النظام ، وليس أي عمليات أخرى.
لا حاجة لتخبرني ماذا أفعل!
سيتعين على جيري التعامل مع مجموعتين من ملفات التكوين:
- /etc/cgconfig.conf - يتم إنشاؤه تلقائيًا عند تثبيت libcgroup.
- • /etc/cgrules.conf - يحتوي على مجموعة من قواعد مجموعة القواعد ، والتي بموجبها يقوم cgred بفرز العمليات التي تشغلها مجموعات cgroups.
إليك ما يبدو عليه ملف cgconfig.conf الافتراضي:
كان من الممكن أن يكون جيري قد أجرى التغييرات اللازمة عليه مباشرة ، ولكن من الأفضل استخدام ملفات conf المنسدلة لهذا الغرض. كيف يعمل؟ إذا وضعت (eng. drop-in - drop) في المجلد /etc/cgconfig.d أي ملف بامتداد .conf ، سيقوم النظام بمعالجته وإجراء التغييرات المناسبة على التكوين. يعد هذا ملائمًا لأنه يمكنك إنشاء عمليات إسقاط لمهام مختلفة وإضافتها أو إزالتها من التكوين باستخدام الأدوات التي تفضلها (على سبيل المثال ، Ansible ، حسنًا ، لا تزال مدونة Red Hat).
يقوم جيري أولاً بإنشاء ملف استقبال لوحدة المعالجة المركزية:
نحن ننظر إلى ما لدينا هنا وكيف يعمل.
تحدد الكلمة الأساسية للمجموعة ببساطة اسم المجموعة الجديدة ، في حالتنا ، المسح الضوئي. داخل الأقواس المتعرجة ، نحدد عناصر التحكم cgroup التي نريد استخدامها. هنا ، cpu.cfs_period_us و cpu.cfs_quota_us ، يسمحان لك بتعيين الحدود المقابلة في المجدول الكامل تمامًا ، جدولة النواة المستخدمة افتراضيًا في Red Hat Enterprise Linux 6. دعونا نرى ما هو مكتوب عنهم في
Red Hat Enterprise Linux Resource Guide Guide 6 :
وبعبارة أخرى ، كتب جيري هذا في القائمة المنسدلة: "لكل عملية تتعلق بمجموعة cgroup المسماة scanit ، تحقق مرة واحدة من كمية موارد وحدة المعالجة المركزية المخصصة لها. إذا كان إجمالي وقت المعالج لجميع العمليات في هذه المجموعة أكثر من 200،000 مللي ثانية ، فتوقف تمامًا عن منح وقت المعالج لهذه العمليات. " حسنًا ، هذا هو ، للتخصيص لجميع العمليات في مجموعة cgroup للمسح الضوئي ، بالإضافة إلى العمليات الفرعية الخاصة بهم ، ما مجموعه لا يزيد عن 20 ٪ من وقت المعالج.
بعد إعادة تشغيل cgconfig ، سيقوم الخادم بتحديث التكوين ، وإذا دخلت إلى نظام الملفات ، سنرى أن المسح الضوئي موجود الآن في دليل وحدة تحكم وحدة المعالجة المركزية:
هذا أمر جيد بالطبع ، لكننا ما زلنا بحاجة إلى دفع المسح بطريقة أو بأخرى إلى هذه المجموعة. Crged مفيد هنا ، بشكل افتراضي يبدو شيئًا مثل هذا:
استخدام هذا الملف أسهل أو أقل. ومع ذلك ، سيتعين علينا تعديل ملف cgrules.conf مباشرةً ، لأن آلية الإيداع غير مدعومة هنا. نشير إلى المستخدم أو المجموعة التي تمتلك العملية ، بالإضافة إلى اسم العملية المحددة - إذا كنت تريد - بالإضافة إلى وحدة تحكم مخصصة ومجموعة وجهة cgroup.
في مثالنا ، بدلاً من المسح الضوئي الحقيقي لمكافحة الفيروسات ، نستخدم برنامجًا نصيًا يسمى أيضًا المسح الضوئي ، ولكنه في الواقع يحاكي الحمل فقط. بدون cgroup ، يبدو كل شيء كما يلي:
وحدة المعالجة المركزية مشغولة بالكامل ، بشكل أساسي من خلال مساحة المستخدم وقليل من النظام.
جيري يخدش لحيته. يبدأ vi ويؤدي ، باستخدام إصبع السبابة ، إلى إجراء بعض التغييرات وإعادة تشغيل البرنامج الخفي:
ثم يبدأ المسح يدويًا ...:
و - هتاف! النصر
كما ترى ، تستهلك عمليات محاكاة الحمل (العمليات الفرعية لعمليات الفحص) الآن 20٪ من موارد وحدة المعالجة المركزية بشكل إجمالي ، بشكل أساسي في مساحة المستخدم وقليلًا في النظام. لذا ، لن يقوم برنامج مكافحة الفيروسات هذا بتحميل السيارة إلى الجنون الكامل.
تذكر ما هي الخطوة التالية؟
فرحاً بالنجاح ، كاد جيري أن ينسى ذاكرته. ولكن بعد ذلك لا يزال يتذكر ويبدأ السادس مرة أخرى لإصلاح ملف التكوين الخاص به.
الآن يضيف إعدادين بخصوص الذاكرة هناك:
- الذاكرة. الحد الأقصى في الحد الأقصى - الحد الأقصى. مقدار ذاكرة الوصول العشوائي (RAM) التي يمكن لجميع العمليات في مجموعة المسح الضوئي استخدامها. وباستثناء مساحة المبادلة. يحده جيري بـ 256 ميجابايت
- Memory.memsw.limit_in_bytes - الحد الأقصى. حجم ذاكرة الوصول العشوائي ، بالإضافة إلى مساحة في ملف المبادلة ، والتي يمكن تخصيصها لجميع العمليات في مجموعة cgroup المسح الضوئي في المجموع. إذا تم تجاوز هذه العتبة ، سيتم قتل العمليات من قبل قاتل OOM. يقوم جيري بتعيينها على 512 ميجابايت.
أوه لا! ما الخطب؟
ينظر جيري إلى القمة ويرى أن عمليات المسح الضوئي للأطفال لا تزال جارية. نظرًا لأن هذه المجموعة قيد الاستخدام حاليًا ، لا يمكن لجيري بدء الخدمة. لذلك ، فإنه يقتل العمليات التابعة يدويًا ويعيد تشغيل هذه الخدمات.
الآن تحرير بسيط في cgred.conf:
للتحقق ، يقوم جيري بتشغيل العديد من مهام المسح في وقت واحد ، حتى يعمل قاتل OOM بالتأكيد.
ثم ينظر جيري إلى سجل النظام ويومئ برأسه - لم يعد المسح الضوئي يترك الذاكرة بأي كميات مع الإفلات من العقاب.
نأمل أن تساعدك سلسلة مقالات cgroups الخاصة بنا على فهم ماهيتها ، وكيفية استخدامها في Red Hat Enterprise Linux 7 ، وكيفية إنشائها في Red Hat Enterprise Linux 6 ، وكيفية استخدامها في بيئتك.