PFCACHE texnologiyasidan foydalangan holda tugundagi konteyner zichligini oshirish

PFCACHE texnologiyasidan foydalangan holda tugundagi konteyner zichligini oshirish

Xosting provayderining maqsadlaridan biri oxirgi foydalanuvchilarga yuqori sifatli xizmat ko'rsatish uchun mavjud uskunalardan maksimal darajada foydalanishdir. Yakuniy serverlarning resurslari har doim cheklangan, ammo joylashtirilgan mijoz xizmatlari soni va bizning holatlarimizda biz VPS haqida gapiramiz, sezilarli darajada farq qilishi mumkin. Qanday qilib daraxtga ko'tarilish va kesma ostida burger yeyish haqida o'qing.

Tugundagi VPS-ni mijozlar buni umuman sezmaydigan tarzda siqish har qanday hosting provayderining iqtisodiy samaradorligini oshirishga yordam beradi. Albatta, agar tugun idishlarga to'la bo'lsa, tikuvlarda yorilib ketmasligi kerak va yukning ko'tarilishi barcha mijozlar tomonidan darhol seziladi.

Bitta tugunga qancha VPS joylashtirilishi mumkinligi ko'plab omillarga bog'liq, masalan:

1. Tugunning o'zi apparatining xususiyatlari
2. VPS hajmi
3. VPS dagi yukning tabiati
4. Zichlikni optimallashtirishga yordam beruvchi dasturiy texnologiyalar

Bunday holda biz Virtuozzo uchun Pfcache texnologiyasidan foydalanish tajribamiz bilan o'rtoqlashamiz.
Biz 6-chi filialdan foydalanamiz, ammo aytilganlarning barchasi 7-chi uchun ham to'g'ri.

Pfcache - Virtuozzo mexanizmi konteynerlardagi IOPS va operativ xotirani deduplikatsiya qilishga yordam beradi, konteynerlardagi bir xil fayllarni alohida umumiy maydonga ajratadi.

Aslida u quyidagilardan iborat:
1. Yadro kodi
2. Foydalanuvchi-kosmik iblis
3. Foydalanuvchi-kosmik yordamchi dasturlar

Tugun tomonida biz tugundagi barcha VPS tomonidan bevosita foydalaniladigan fayllar yaratiladigan butun bo'limni ajratamiz. Ushbu bo'limda blokli ploop qurilmasi o'rnatilgan. Keyin, konteyner ishga tushganda, u ushbu bo'lim uchun havola oladi:

[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
...

Mana bizning tugunlarimizdan biridagi fayllar soni bo'yicha taxminiy statistik ma'lumotlar:

[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 printsipi quyidagicha:
β€’ Pfcached foydalanuvchi fazosi daemoni faylning sha-1 xeshini ushbu faylning xattr atributiga yozadi. Barcha fayllar qayta ishlanmaydi, faqat /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 kataloglarida.

β€’ Katta ehtimol bilan bu kataloglardagi fayllar "umumiy" bo'ladi va bir nechta konteynerlar tomonidan ishlatiladi;

β€’ Pfcached vaqti-vaqti bilan yadrodan fayllarni o'qish bo'yicha statistik ma'lumotlarni to'playdi, ularni tahlil qiladi va agar ular tez-tez ishlatilsa, ularni keshga qo'shadi;

β€’ Bu kataloglar har xil bo'lishi mumkin va konfiguratsiya fayllarida sozlangan.

β€’ Faylni o'qiyotganda xattr kengaytirilgan atributlarida ko'rsatilgan xeshni o'z ichiga olganligi tekshiriladi. Agar u mavjud bo'lsa, konteyner fayli o'rniga "umumiy" fayl ochiladi. Bu almashtirish konteyner kodi tomonidan sezilmasdan sodir bo'ladi va yadroda yashiringan;

β€’ Faylga yozishda xesh bekor qilinadi. Shunday qilib, keyingi safar uni ochganingizda, kesh emas, balki konteyner faylining o'zi ochiladi.

Sahifa keshida /vz/pfcache-dan umumiy fayllarni saqlash orqali biz ushbu keshning o'zida, shuningdek, IOPS-da tejashga erishamiz.Diskdan o'nta faylni o'qish o'rniga, biz darhol sahifa keshiga o'tadigan bitta faylni o'qiymiz.

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

Fayl uchun VMA ro'yxati yagona bo'lib qoladi (biz xotirani takrorlaymiz) va diskdan kamroq o'qiladi (iopsni saqlash). Bizning umumiy fondimiz SSD-da joylashgan - bu qo'shimcha tezlikni oshiradi.

/bin/bash faylini keshlash uchun misol:

[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

Foydalanish samaradorligini hisoblaymiz tayyor skript.

Ushbu skript har bir konteynerning keshlangan fayllarini hisoblab, tugundagi barcha konteynerlardan o'tadi.

[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

Shunday qilib, biz xotiradan taxminan 40 gigabayt fayllarni konteynerlarda saqlaymiz, ular keshdan yuklanadi.

Ushbu mexanizm yanada yaxshi ishlashi uchun tugunga eng "bir xil" VPS joylashtirish kerak. Masalan, foydalanuvchi ildizga kirish huquqiga ega bo'lmagan va joylashtirilgan tasvirdagi muhit sozlanganlar.

Siz pfcache-ni konfiguratsiya fayli orqali sozlashingiz mumkin
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – keshlash uchun minimal/maksimal fayl hajmi
TIMEOUT - keshlash urinishlari orasidagi vaqt tugashi

Siz parametrlarning to'liq ro'yxatini ko'rishingiz mumkin aloqa.

Manba: www.habr.com

a Izoh qo'shish