زيادة كثافة الحاوية على عقدة باستخدام تقنية PFCACHE



يتمثل أحد أهداف مقدم الاستضافة في الحد الأقصى الممكن للتخلص من المعدات الحالية لتوفير خدمة عالية الجودة للمستخدمين النهائيين. موارد الخوادم النهائية محدودة دائمًا ، ومع ذلك ، فإن عدد خدمات العملاء المستضافة ، وفي حالتنا نحن نتحدث عن VPS ، يمكن أن يختلف بشكل كبير. اقرأ عن كيفية الحصول على شجرة عيد الميلاد وتناول برغر تحت قطة.

دمج VPS على عقدة بطريقة تجعل العملاء لا يشعرون بذلك على الإطلاق يساعد كثيرًا على زيادة الأداء الاقتصادي لأي مزود استضافة. بالطبع ، لا ينبغي للعقدة التصدع في طبقات إذا كانت الحاويات مكتظة داخل مقل العيون ، ويشعر جميع العملاء على الفور بأي زيادة في الحمل.

يعتمد عدد VPS الذي يمكن وضعه على عقدة واحدة على العديد من العوامل ، مثل:

  1. خصائص الحديد من العقدة نفسها
  2. حجم VPS
  3. نمط تحميل VPS
  4. تقنيات البرمجيات التي تساعد على تحسين الكثافة

في هذه الحالة ، سنشارك تجربتنا باستخدام تقنية Pfcache لـ Virtuozzo.
نستخدم الفرع السادس ، لكن كل ما يقال صحيح بالنسبة للجزء السابع.

Pfcache هي آلية Virtuozzo التي تساعد على إلغاء تكرار IOPS وذاكرة الوصول العشوائي في حاويات ، وتخصيص نفس الملفات في حاويات لمنطقة مشتركة منفصلة.

في الواقع ، يتكون من:

  1. كود النواة
  2. مستخدم الفضاء الخفي
  3. المرافق مساحة المستخدم

على جانب العقدة ، نسلط الضوء على قسم كامل سيتم فيه إنشاء ملفات تستخدمها جميع VPS على العقدة مباشرة. جهاز بلوب بلوب مثبت في هذا القسم. علاوة على ذلك ، في بداية الحاوية ، تتلقى إشارة إلى هذا القسم:

[root@pcs13 ~]# cat /proc/mounts ... /dev/ploop62124p1 /vz/pfcache ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12 0 0 ... /dev/ploop22927p1 /vz/root/418 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0 /dev/ploop29642p1 /vz/root/264 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0 ... 

فيما يلي نماذج إحصائية عن عدد الملفات الموجودة في إحدى العقد لدينا:

 [root@pcs13 ~]# find /vz/pfcache -type f | wc -l 45851 [root@pcs13 ~]# du -sck -h /vz/pfcache 2.4G /vz/pfcache 2.4G total 

مبدأ pfcache هو كما يلي:

  • يصف البرنامج الخفي Pfcached لمساحة المستخدم تجزئة sha-1 للملف في سمة xattr لهذا الملف. لا تتم معالجة جميع الملفات ، ولكن فقط في الدلائل / usr ، / bin ، / usr / sbin ، / sbin ، / lib ، / lib64
  • من الأرجح أن الملفات الموجودة في هذه الدلائل سيتم "مشاركتها" وسيتم استخدامها من قبل عدة حاويات ؛
  • يجمع Pfcached بشكل دوري إحصائيات حول قراءة الملفات من النواة ، ويحللها ، ويضيف الملفات إلى ذاكرة التخزين المؤقت في حالة تكرار استخدامها ؛
  • قد تكون هذه الدلائل مختلفة ، ويتم تكوينها في ملفات التكوين.
  • عند قراءة ملف ، يتم التحقق مما إذا كان يحتوي على التجزئة المحدد في سمات xattr الموسعة. في حالة احتوائه ، يتم فتح الملف "الشائع" ، بدلاً من ملف الحاوية. يحدث هذا الاستبدال دون أن يلاحظها أحد رمز الحاوية ، ويخفي في النواة.
  • عند الكتابة إلى ملف ، يتم إبطال التجزئة. وبالتالي ، في الفتح التالي ، سيتم فتح ملف الحاوية مباشرةً ، وليس ذاكرة التخزين المؤقت الخاصة به.

من خلال الاحتفاظ بالملفات المشتركة في ذاكرة التخزين المؤقت للصفحة من / vz / pfcache ، فإننا نحفظ ذاكرة التخزين المؤقت هذه بالإضافة إلى حفظ IOPS ، وبدلاً من قراءة عشرة ملفات من القرص ، نقرأ ملفًا ينتقل مباشرةً إلى ذاكرة التخزين المؤقت للصفحة.

 struct inode { ... struct file *i_peer_file; ... }; struct address_space { ... struct list_head i_peer_list; ... } 

تظل قائمة VMA للملف كما هي (ذاكرة مكررة) وقراءة أقل من القرص (حفظ iops). يتم استضافة "الصندوق المشترك" الخاص بنا على SSD - وهو مكسب إضافي في السرعة.

مثال للتخزين المؤقت لملف / bin / bash:

 [root@pcs13 ~]# ls -li /vz/root/2388/bin/bash 524650 -rwxr-xr-x 1 root root 1021112 Oct 7 2018 /vz/root/2388/bin/bash [root@pcs13 ~]# pfcache dump /vz/root/2388 | grep 524650 8e3aa19fdc42e87659746f6dc8ea3af74ab30362 i:524650 g:1357611108 f:CP [root@pcs13 ~]# sha1sum /vz/root/2388/bin/bash 8e3aa19fdc42e87659746f6dc8ea3af74ab30362 /vz/root/2388/bin/bash [root@pcs13 /]# getfattr -ntrusted.pfcache /vz/root/2388/bin/bash # file: vz/root/2388/bin/bash trusted.pfcache="8e3aa19fdc42e87659746f6dc8ea3af74ab30362" [root@pcs13 ~]# sha1sum /vz/pfcache/8e/3aa19fdc42e87659746f6dc8ea3af74ab30362 8e3aa19fdc42e87659746f6dc8ea3af74ab30362 /vz/pfcache/8e/3aa19fdc42e87659746f6dc8ea3af74ab30362 

نحسب كفاءة الاستخدام باستخدام برنامج نصي جاهز .

يمر هذا البرنامج النصي عبر كافة الحاويات على العقدة ، بحساب الملفات المخزنة مؤقتًا لكل حاوية.

 [root@pcs16 ~]# /pcs/distr/pfcache-examine.pl ... Pfcache cache uses 831 MB of memory Total use of pfcached files in containers is 39837 MB of memory Pfcache effectiveness: 39006 MB 

وبالتالي ، فإننا نحفظ حوالي 40 غيغابايت من الملفات في حاويات من الذاكرة ، وسيتم تحميلها من ذاكرة التخزين المؤقت.

لكي تعمل هذه الآلية بشكل أفضل ، من الضروري وضع الحد الأقصى لمتطابقات VPS على العقدة. على سبيل المثال ، تلك التي لا يمتلك المستخدم الوصول إلى الجذر والتي تم تكوين البيئة من الصورة الموسعة عليها.

يمكنك ضبط عملية pfcache من خلال ملف التكوين
/etc/vz/pfcache.conf

MINSIZE ، MAXSIZE - الحد الأدنى / الحد الأقصى لحجم الملف للتخزين المؤقت
مهلة - مهلة بين محاولات ذاكرة التخزين المؤقت

يمكن الاطلاع على قائمة كاملة من المعلمات على الرابط .

Source: https://habr.com/ru/post/ar444696/


All Articles