Säiliön tiheyden lisääminen solmussa PFCACHE-tekniikalla

Säiliön tiheyden lisääminen solmussa PFCACHE-tekniikalla

Yksi isännöintipalveluntarjoajan tavoitteista on maksimoida olemassa olevien laitteiden hyödyntäminen korkealaatuisen palvelun tarjoamiseksi loppukäyttäjille. Loppupalvelimien resurssit ovat aina rajalliset, mutta isännöityjen asiakaspalvelujen määrä, ja meidän tapauksessamme puhumme VPS:stä, voi vaihdella merkittävästi. Lue kuinka kiivetä puuhun ja syödä hampurilainen leikkauksen alla.

VPS:n tiivistäminen solmussa siten, että asiakkaat eivät tunne sitä ollenkaan, auttaa suuresti parantamaan minkä tahansa hosting-palveluntarjoajan taloudellista suorituskykyä. Tietenkään solmun ei pitäisi räjähtää saumoista, jos se on täynnä kontteja, ja kaikki asiakkaat tuntevat välittömästi mahdollisen kuormituksen nousun.

Kuinka monta VPS:ää voidaan isännöidä yhdessä solmussa, riippuu monista tekijöistä, kuten ilmeisistä tekijöistä:

1. Itse solmun laitteiston ominaisuudet
2. VPS-koko
3. VPS:n kuormituksen luonne
4. Ohjelmistoteknologiat, jotka auttavat optimoimaan tiheyden

Tässä tapauksessa jaamme kokemuksemme Pfcache-tekniikan käyttämisestä Virtuozzon kanssa.
Käytämme kuudetta haaraa, mutta kaikki sanottu pätee myös seitsemänteen.

Pfcache – Virtuozzo-mekanismi, joka auttaa poistamaan IOPS:n ja RAM:n kaksoiskappaleet säilöissä ja varaamalla identtiset tiedostot säilöissä erilliselle yhteiselle alueelle.

Itse asiassa se koostuu:
1. Ytimen koodi
2. Käyttäjä-avaruuden demoni
3. Käyttäjätilan apuohjelmat

Solmun puolella varaamme kokonaisen osan, johon luodaan tiedostoja, joita kaikki solmun VPS käyttävät suoraan. Tähän osioon on asennettu lohkokytkentälaite. Sitten, kun säilö käynnistyy, se saa viitteen tähän osioon:

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

Tässä on likimääräiset tilastot yhdessä solmumme tiedostojen määrästä:

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

pfcachen periaate on seuraava:
• User-space daemon Pfcached kirjoittaa tiedoston sha-1 hashin tämän tiedoston xattr-attribuutiksi. Kaikkia tiedostoja ei käsitellä, vaan vain hakemistoissa /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• On mitä todennäköisimmin näiden hakemistojen tiedostot "jaettuja" ja niitä käytetään useissa säilöissä;

• Pfcached kerää säännöllisesti tilastoja tiedostojen lukemisesta ytimestä, analysoi ne ja lisää tiedostoja välimuistiin, jos niitä käytetään usein;

• Nämä hakemistot voivat olla erilaisia ​​ja ne on määritetty asetustiedostoissa.

• Kun tiedostoa luetaan, tarkistetaan, sisältääkö se xattr Extended -määritteissä määritetyn hajautusarvon. Jos se sisältää, "yleinen" tiedosto avataan säilötiedoston sijaan. Tämä korvaaminen tapahtuu konttikoodin huomaamatta ja on piilotettu ytimeen;

• Kun kirjoitetaan tiedostoon, hash mitätöidään. Siten, kun seuraavan kerran avaat sen, itse säilötiedosto avataan, ei sen välimuisti.

Säilyttämällä jaetut tiedostot /vz/pfcachesta sivun välimuistissa saavutamme säästöjä tässä välimuistissa sekä säästöjä IOPS:ssä. Sen sijaan, että lukisimme kymmenen tiedostoa levyltä, luemme yhden, joka menee välittömästi sivun välimuistiin.

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

Tiedoston VMA-luettelo pysyy yhtenä (poistamme muistin kaksoiskappaleet) ja sitä luetaan levyltä harvemmin (säästö iops). Sijoitusrahastomme sijaitsee SSD-levyllä, mikä lisää nopeutta.

Esimerkki /bin/bash-tiedoston välimuistiin tallentamisesta:

[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

Laskemme käytön tehokkuuden valmis käsikirjoitus.

Tämä komentosarja käy läpi kaikki solmun säilöt ja laskee kunkin säilön välimuistissa olevat tiedostot.

[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

Tallennamme siis muistista noin 40 gigatavua tiedostoja säilöihin, ne ladataan välimuistista.

Jotta tämä mekanismi toimisi vielä paremmin, on välttämätöntä sijoittaa "identtisin" VPS solmuun. Esimerkiksi ne, joihin käyttäjällä ei ole pääkäyttäjän oikeuksia ja joille on määritetty ympäristö käyttöönotetusta näköistiedostosta.

Voit virittää pfcachen asetustiedoston kautta
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – pienin/maksimi tiedostokoko välimuistiin
TIMEOUT – aikakatkaisu välimuistiyritysten välillä

Voit tarkastella koko luetteloa parametreista по ссылке.

Lähde: will.com

Lisää kommentti