PFCACHE तकनीक का उपयोग कर एक नोड पर कंटेनर घनत्व बढ़ाएँ



होस्टिंग प्रदाता के लक्ष्यों में से एक अंतिम उपकरण है जो उपयोगकर्ताओं को गुणवत्ता सेवा प्रदान करने के लिए मौजूदा उपकरणों का अधिकतम संभव निपटान है। अंतिम सर्वर के संसाधन हमेशा सीमित होते हैं, हालांकि, होस्ट किए गए क्लाइंट सेवाओं की संख्या, और हमारे मामले में हम वीपीएस के बारे में बात कर रहे हैं, काफी भिन्न हो सकते हैं। क्रिसमस के पेड़ पर कैसे जाएं और बर्गर खाएं, बिल्ली के नीचे पढ़ें।

एक नोड पर एक VPS को इस तरह से समेकित करना कि ग्राहकों को यह बिल्कुल भी महसूस न हो, किसी भी होस्टिंग प्रदाता के आर्थिक प्रदर्शन को बढ़ाने में बहुत मदद करता है। बेशक, एक सीम को सीम पर दरार नहीं करना चाहिए यदि कंटेनर को नेत्रगोलक में उतारा जाता है, और सभी ग्राहकों को तुरंत लोड में कोई वृद्धि महसूस होती है।

कितने VPS को एक नोड पर रखा जा सकता है, कई कारकों पर निर्भर करता है, जैसे कि स्पष्ट:

  1. नोड के लोहे के लक्षण
  2. वीपीएस आकार
  3. वीपीएस लोड पैटर्न
  4. सॉफ्टवेयर टेक्नोलॉजीज जो घनत्व को ऑप्टिमाइज़ करने में मदद करती है

इस मामले में, हम Virtuozzo के लिए Pfcache तकनीक का उपयोग करके अपने अनुभव को साझा करेंगे।
हम 6 वीं शाखा का उपयोग करते हैं, लेकिन 7 वीं के लिए कहा गया सब कुछ सच है।

Pfcache एक Virtuozzo तंत्र है जो कंटेनरों में IOPS और RAM को कम करने में मदद करता है, कंटेनरों में समान फ़ाइलों को एक अलग कॉमन ज़ोन में आवंटित करता है।

वास्तव में, इसमें निम्न शामिल हैं:

  1. कर्नेल कोड
  2. उपयोगकर्ता-अंतरिक्ष डेमॉन
  3. उपयोगकर्ता-स्थान उपयोगिताओं

नोड पक्ष पर, हम एक पूरे खंड को हाइलाइट करते हैं जिसमें फाइलें बनाई जाएंगी कि नोड पर सभी वीपीएस सीधे उपयोग करेंगे। इस खंड में प्लूप ब्लॉक डिवाइस को माउंट किया गया है। इसके अलावा, कंटेनर की शुरुआत में, इस खंड का संदर्भ प्राप्त होता है:

[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 daemon इस फाइल की xattr विशेषता के लिए sha-1 फाइल हैश लिखता है। फ़ाइलें सभी संसाधित नहीं हैं, लेकिन केवल निर्देशिकाओं / 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 सहेजें)। हमारे "आम फंड" को एसएसडी पर होस्ट किया जाता है - गति में अतिरिक्त लाभ।

कैशिंग / बिन / बैश फ़ाइल के लिए उदाहरण:

 [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 गीगाबाइट फ़ाइलों को सहेजते हैं, उन्हें कैश से लोड किया जाएगा।

इस तंत्र के और भी बेहतर काम करने के लिए, नोड पर अधिकतम "समान" वीपीएस रखना आवश्यक है। उदाहरण के लिए, जिनके लिए उपयोगकर्ता की रूट एक्सेस नहीं है और जिस पर विस्तारित छवि से पर्यावरण कॉन्फ़िगर किया गया है।

आप कॉन्फ़िगर फ़ाइल के माध्यम से pfcache ऑपरेशन को ट्यून कर सकते हैं
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE - कैशिंग के लिए न्यूनतम / अधिकतम फ़ाइल आकार
समय-समय - कैश प्रयासों के बीच का समय

लिंक पर मापदंडों की एक पूरी सूची मिल सकती है।

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


All Articles