ืืืื ืขืจ ืคืื ืื ืืึธืืื ืคืื ืื ืืึธืกืืื ื ืฉืคึผืืึทืืขืจ ืืื ืฆื ืืึทืงืกืึทืืืื ืื ืืืืึทืืึทืืืืฉืึทื ืคืื ืืืืืกืืื ื ืืืกืจืืื ืืื ืกืืจ ืฆื ืฆืืฉืืขืื ืืืื-ืงืืืึทืืืืขื ืืื ืกื ืฆื ืกืืฃ ื ืืฆืขืจืก. ืื ืจืขืกืืจืกื ืคืื ืกืืฃ ืกืขืจืืืขืจืก ืืขื ืขื ืฉืืขื ืืืง ืืืืืืขื, ืึธืืขืจ ืื ื ืืืขืจ ืคืื ืืึธืืกืืื ืงืืืขื ื ืืึทืืื ืื ืืก, ืืื ืืื ืืื ืืืขืจ ืคืึทื ืืืจ ืจืขืื ืืืขืื ืืืคึผืก, ืงืขื ืขื ืืืื ืืืืืืืืง ืึทื ืืขืจืฉ. ืืืืขื ืขื ืืืขืื ืืื ืฆื ืงืจืืื ืืขื ืืืื ืืื ืขืกื ืึท ืืขืจืืขืจ ืืื ืืขืจ ืื ืฉื ืืึทืื.
ืงืึธืืคึผืึทืงืืื ื VPS ืืืืฃ ืึท ื ืึธืืข ืืื ืึทืืึท ืึท ืืืขื ืึทื ืงืืืืึทื ืฅ ืืึธื ื ืื ืคืืื ืขืก ืืืึท ืึทืืข ืืืืขืจ ืืขืืคึผืก ืฆื ืคืึทืจืืจืขืกืขืจื ืื ืขืงืึธื ืึธืืืฉ ืคืึธืจืฉืืขืืื ื ืคืื ืงืืื ืืึธืกืืื ื ืฉืคึผืืึทืืขืจ. ืคืื ืงืืจืก, ืึท ื ืึธืืข ืืึธื ื ืืฉื ืคึผืืึทืฆื ืืื ืื ืกืืื ืืืื ืขืก ืืื ืงืจืึทืื ืคืื ืคืื ืงืึทื ืืืื ืขืจื, ืืื ืงืืื ืกืขืจืืืฉ ืืื ืืึทืกืข ืืื ืืื ืคึผืขืืฅ ืืืจื ืึทืืข ืงืืืืึทื ืฅ.
ืืื ืคืืืข ืืืคึผืก ืงืขื ืขื ืืืื ืืึธืืกืืื ืืืืฃ ืืืื ื ืึธืืข ืืขืคึผืขื ืืก ืืืืฃ ืคืืืข ืกืืืืช, ืึทืืึท ืงืืึธืจ ืืื ืืขืจ ืืึธื ืึธื ืขืก ืืื:
1. ืืฉืึทืจืึทืงืืขืจืืกืืืงืก ืคืื ืื ืืึทืื ืืืึทืจื ืคืื ืื ื ืึธืืข ืืื
2. ืืืคึผืก ืืจืืืก
3. ื ืึทืืืจ ืคืื ืื ืืึทืกืข ืืืืฃ ืื ืืืคึผืก
4. ืืืืืืืืืจื ืืขืงื ืึทืืึทืืืฉืื ืึทื ืืขืืคื ืึทืคึผืืึทืืืื ืืขืืืืืงืืึทื
ืืื ืืขื ืคืึทื, ืืืจ ืืืขืื ืืืืื ืืื ืืืขืจ ืืขืจืคืึทืจืื ื ืคืื ื ืืฆื Pfcache ืืขืื ืึธืืึธืืืข ืคึฟืึทืจ Virtuozzo.
ืืืจ ื ืืฆื ืื 6 ืฆืืืืึทื, ืึธืืขืจ ืึทืืฅ ืืขืืึธืื ืืื ืืืื ืืืช ืคึฟืึทืจ ืื 7.
ืืื ืคืึทืงื ืขืก ืืืฉืืืื ืคืื:
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 ืจืฉืืื ืคึฟืึทืจ ืืขืจ ืืขืงืข ืืืืืื ืืืื (ืืืจ ืืขืืืคึผืืืงืึทื ืืึผืจืื) ืืื ืืื ืืืืื ืืงืขืจ ืึธืคื ืืืืขื ืขื ืคึฟืื ืืืกืง (ืฉืคึผืึธืจื ืืึธืคึผืก). ืืื ืืืขืจ ืคึผืจืึธืกื ืคืึธื ื ืืื ืืืื ืืืืฃ ืึท ืกืกื - ืึทื ื ืึธื ืืขืืืื ืขื ืืื ืืืืงืืึทื.
ืืืึทืฉืคึผืื ืคึฟืึทืจ ืงืึทืืฉืื ื ืื /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 ืืืืืืืื ืคืื ืืขืงืขืก ืืื ืงืึทื ืืืื ืขืจื; ืืื ืืืขืื ืืืื ืืึธืืืื ืคึฟืื ืื ืงืึทืฉ.
ืคึฟืึทืจ ืืขื ืืขืงืึทื ืืืึทื ืฆื ืึทืจืืขืื ืืคืืื ืืขืกืขืจ, ืขืก ืืื ื ืืืืืง ืฆื ืฉืืขืื ืื ืืขืจืกื "ืืืืขื ืืืงืึทื" ืืืคึผืก ืืืืฃ ืื ื ืึธืืข. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืื ืืืึธืก ืืขืจ ืืึทื ืืฆืขืจ ืืื ื ืืฉื ืืึธืื ืืืึธืจืฆื ืึทืงืกืขืก ืืื ืืืืฃ ืืืึธืก ืื ืกืืืืืืข ืคึฟืื ืื ืืืคึผืืืื ืืืื ืืื ืงืึทื ืคืืืืขืจื.
ืืืจ ืงืขื ืขื ืกืืจืืืขืจื pfcache ืืืจื ืื ืงืึธื ืคืื ืืขืงืข
/etc/vz/pfcache.conf
MINSIZE, MAXSIZE - ืืื ืืืื / ืืึทืงืกืืืื ืืขืงืข ืืจืืืก ืคึฟืึทืจ ืงืึทืืฉืื ื
TIMEOUT - ืืืืืึทืื ืฆืืืืฉื ืงืึทืืฉืื ื ืคืจืืืื
ืืืจ ืงืขื ืขื ืืขื ืื ืคืื ืจืฉืืื ืคืื ืคึผืึทืจืึทืืขืืขืจืก
ืืงืืจ: www.habr.com