Баланд бардоштани зичии контейнер дар гиреҳ бо истифода аз технологияи PFCACHE

Баланд бардоштани зичии контейнер дар гиреҳ бо истифода аз технологияи PFCACHE

Яке аз ҳадафҳои провайдери хостинг ин ба ҳадди аксар расонидани истифодаи таҷҳизоти мавҷуда бо мақсади расонидани хидмати босифат ба корбарони ниҳоӣ мебошад. Захираҳои серверҳои ниҳоӣ ҳамеша маҳдуданд, аммо шумораи хидматҳои муштарии ҷойгиршуда ва дар ҳолати мо, ки мо дар бораи VPS гап мезанем, метавонад ба таври назаррас фарқ кунад. Дар бораи чӣ гуна ба болои дарахт баромадан ва бургер дар зери бурида хӯрдан хонед.

Фишор кардани VPS дар гиреҳ тавре, ки муштариён онро тамоман эҳсос накунанд, ба баланд бардоштани нишондиҳандаҳои иқтисодии ҳама провайдери хостинг мусоидат мекунад. Албатта, гиреҳ набояд дар дарзҳо дарояд, агар он пур аз контейнерҳо бошад ва ҳама гуна афзоиши сарборӣ аз ҷониби ҳама муштариён фавран эҳсос карда мешавад.

Чӣ қадар VPS-ро дар як гиреҳ ҷойгир кардан мумкин аст, аз бисёр омилҳо вобаста аст, ба монанди омилҳои равшан:

1. Хусусиятҳои сахтафзори худи гиреҳ
2. Андозаи VPS
3. Хусусияти сарборӣ ба VPS
4. Технологияҳои нармафзор, ки ба оптимизатсияи зич мусоидат мекунанд

Дар ин ҳолат мо таҷрибаи худро оид ба истифодаи технологияи Pfcache барои Virtuozzo мубодила хоҳем кард.
Мо шохаи 6-умро истифода мебарем, аммо ҳар чизе ки гуфта шудааст, барои 7-ум низ дуруст аст.

Pfcache - механизми Virtuozzo, ки ба нусхабардории IOPS ва RAM дар контейнерҳо кӯмак мекунад ва файлҳои якхеларо дар контейнерҳо ба як минтақаи алоҳидаи умумӣ тақсим мекунад.

Дар асл он иборат аст аз:
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 ша-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 – андозаи ҳадди ақал/максими файл барои кэш
TIMEOUT – вақти тамомшавии байни кӯшишҳои кэшкунӣ

Шумо метавонед рӯйхати пурраи параметрҳоро бинед пайванд.

Манбаъ: will.com

Илова Эзоҳ