A tárhelyszolgáltató egyik célja a meglévő berendezések maximális kihasználása a végfelhasználók magas színvonalú kiszolgálása érdekében. A végszerverek erőforrásai mindig korlátozottak, de a hosztolt kliens szolgáltatások száma, és esetünkben VPS-ről beszélünk, jelentősen eltérhet. Olvassa el, hogyan mászhat fel a fára, és hogyan egyen egy hamburgert a vágás alatt.
Ha a VPS-t úgy tömörítik egy csomóponton, hogy az ügyfelek egyáltalán ne érezzék azt, ez nagyban hozzájárul bármely tárhelyszolgáltató gazdasági teljesítményének növeléséhez. Természetesen egy csomópont nem repedhet ki a varratoknál, ha tele van konténerekkel, és a terhelés megugrását minden ügyfél azonnal érezheti.
Az, hogy hány VPS tárolható egy csomóponton, számos tényezőtől függ, például:
1. Magának a csomópontnak a hardverének jellemzői
2. VPS méret
3. A VPS terhelésének jellege
4. A sűrűség optimalizálását segítő szoftvertechnológiák
Ebben az esetben megosztjuk tapasztalatainkat a Pfcache technológia használatáról a Virtuozzo számára.
Mi a 6. ágat használjuk, de a 7. ágra is igaz minden, ami elmondott.
Valójában a következőkből áll:
1. Kernel kód
2. Felhasználói tér démon
3. Felhasználói tér segédprogramok
A csomópont oldalon egy teljes szakaszt osztunk ki, amelyben a fájlok létrejönnek, amelyeket a csomóponton lévő összes VPS közvetlenül használni fog. Ebben a szakaszban egy blokk-blokkoló eszköz van felszerelve. Ezután, amikor a tároló elindul, hivatkozást kap erre a szakaszra:
[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
...
Íme hozzávetőleges statisztika az egyik csomópontunkon található fájlok számáról:
[root@pcs13 ~]# find /vz/pfcache -type f | wc -l
45851
[root@pcs13 ~]# du -sck -h /vz/pfcache
2.4G /vz/pfcache
2.4G total
A pfcache elve a következő:
• A Pfcached user-space démon a fájl sha-1 hash-jét a fájl xattr attribútumába írja. Nem minden fájl kerül feldolgozásra, csak a /usr, /bin, /usr/sbin, /sbin, /lib, /lib64 könyvtárban
• A legvalószínűbb, hogy az ezekben a könyvtárakban lévő fájlok „megosztva” lesznek, és több konténer fogja használni;
• A Pfcached időszakonként statisztikát gyűjt a fájlok kernelből való beolvasásáról, elemzi azokat, és ha gyakran használják, fájlokat ad hozzá a gyorsítótárhoz;
• Ezek a könyvtárak eltérőek lehetnek, és konfigurációs fájlokban vannak konfigurálva.
• Egy fájl beolvasásakor a rendszer ellenőrzi, hogy az tartalmazza-e a megadott hash-t az xattr kiterjesztett attribútumokban. Ha tartalmazza, akkor a konténerfájl helyett az „általános” fájl nyílik meg. Ez a helyettesítés a konténer kódja által észrevétlenül történik, és el van rejtve a kernelben;
• Fájlba írásakor a hash érvénytelenné válik. Így a következő megnyitáskor maga a tárolófájl nyílik meg, nem pedig a gyorsítótár.
Azzal, hogy a /vz/pfcache megosztott fájljait az oldal gyorsítótárában tartjuk, megtakarítást érünk el magában ebben a gyorsítótárban, valamint megtakarítást az IOPS-ben.Tíz fájl lemezről való kiolvasása helyett egyet olvasunk, ami azonnal az oldal gyorsítótárába kerül.
struct inode {
...
struct file *i_peer_file;
...
};
struct address_space {
...
struct list_head i_peer_list;
...
}
A fájl VMA-listája egyetlen marad (deduplikáljuk a memóriát), és ritkábban kerül kiolvasásra a lemezről (iops mentése). Közös alapunk SSD-n található, ami további sebességnövekedést jelent.
Példa a /bin/bash fájl gyorsítótárazására:
[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
Kiszámoljuk a felhasználás hatékonyságát
Ez a szkript végigmegy a csomópont összes tárolóján, és kiszámítja az egyes tárolók gyorsítótárazott fájljait.
[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
Így a memóriából körülbelül 40 gigabájtnyi fájlt mentünk el konténerekbe, amelyek a gyorsítótárból töltődnek be.
Ahhoz, hogy ez a mechanizmus még jobban működjön, a „legazonosabb” VPS-t kell elhelyezni a csomóponton. Például azok, amelyekhez a felhasználónak nincs root hozzáférése, és amelyeken a telepített lemezkép környezete konfigurálva van.
A pfcache-t a konfigurációs fájlon keresztül hangolhatja
/etc/vz/pfcache.conf
MINSIZE, MAXSIZE – minimális/maximális fájlméret a gyorsítótárazáshoz
TIMEOUT – időtúllépés a gyorsítótárazási kísérletek között
Megtekintheti a paraméterek teljes listáját
Forrás: will.com