CentOS/RHEL 如何使用CacheFS加速网络文件系统(NFS)的访问速度

时间:2019-11-20 08:52:43  来源:igfitidea点击:

问题

在Red Hat Enterprise Linux或CentOS下如何为NFS配置CacheFS,以加快文件访问速度并减少NFS服务器上的负载?

解决方案

需要安装一个软件包cachefilesd,它是CacheFiles用户空间管理守护程序。
cachefilesd守护程序管理诸如AFS和NFS之类的网络文件系统用来对本地磁盘进行持久缓存的缓存文件和目录。

步骤1:安装cachefilesd

使用yum命令安装cachefilesd:

# yum -y install cachefilesd

步骤2:配置cachefilesd

# vi /etc/cachefilesd.conf

示例:

dir /tmp/fscache
tag mycache
brun 10%
bcull 7%
bstop 3%
frun 10%
fcull 7%
fstop 3%

# 如果使用了SELinux,需要设置下面这行:
secctx system_u:system_r:cachefiles_kernel_t:s0

其中

  • dir /tmp/fscache该目录是缓存的根目录。默认目录的目录是/var/cache/fscache。
  • tag mycache指定一个标签,用于区分多个缓存。默认值为CacheFiles。
  • secctx system_u:system_r:cachefiles_kernel_t:s0指定一个LSM安全上下文,内核将在该上下文中执行访问缓存的操作。缺省值为使用cachefilesds安全上下文。
  • brun 10%,bcull 7%,bstop 3%,frun 10%,fcull 7%,fstop 3%。缓存有时可能需要剔除以腾出空间。这里设置相应的值

步骤3:如何启动/停止/重新启动cachefilesd?

执行下面的命令

/sbin/service cachefilesd  start
/sbin/service cachefilesd  stop
/sbin/service cachefilesd  restart
/sbin/service cachefilesd  status

或者

/etc/init.d/cachefilesd start
/etc/init.d/cachefilesd restart

步骤4:如何安装支持CacheFS的nfs客户端?

挂载时指定fsc选项

mount -t nfs -o fsc,optio2 nas01:/export/dir1/ /destination/mnt/point

示例:

# mount -t nfs4 -o rsize=32768,wsize=32768,intr,hard,proto=tcp,sync,fsc nas042:/var/www/html /var/www/html

步骤5:如何检查nfs客户端是否正在使用CacheFS?

检查缓存目录:

# cd /tmp/fscache
# ls -Z

输出示例:

drwx------. root root system_u:object_r:cachefiles_var_t:s0 cache
drwx------. root root system_u:object_r:cachefiles_var_t:s0 graveyard

查看列出文件和缓存大小:

# find
# du -sh

如何查看FS-Cache的统计信息?

执行下面的命令:

# cat /proc/fs/fscache/stats
# cat /proc/fs/nfsfs/servers
# cat /proc/fs/nfsfs/volumes

输出示例:

FS-Cache statistics
Cookies: idx=30 dat=7895 spc=0
Objects: alc=7164 nal=0 avl=7164 ded=4261
ChkAux : non=0 ok=3727 upd=0 obs=3
Pages  : mrk=59000 unc=37195
Acquire: n=7925 nul=0 noc=0 ok=7925 nbf=0 oom=0
Lookups: n=7164 neg=3429 pos=3735 crt=3429 tmo=0
Updates: n=0 nul=0 run=0
Relinqs: n=5022 nul=0 wcr=0 rtr=22
AttrChg: n=0 ok=0 nbf=0 oom=0 run=0
Allocs : n=0 ok=0 wt=0 nbf=0 int=0
Allocs : ops=0 owt=0 abt=0
Retrvls: n=7307 ok=3324 wt=1540 nod=3243 nbf=740 int=0 oom=0
Retrvls: ops=6567 owt=1672 abt=0
Stores : n=32683 ok=32683 agn=0 nbf=0 oom=0
Stores : ops=5842 run=38525 pgs=32683 rxd=32683 olm=0
VmScan : nos=181 gon=0 bsy=0 can=0
Ops    : pend=1695 run=12409 enq=38525 can=0 rej=0
Ops    : dfr=21 rel=12409 gc=21
CacheOp: alo=0 luo=0 luc=0 gro=0
CacheOp: upo=0 dro=0 pto=0 atc=0 syn=0
CacheOp: rap=0 ras=0 alp=0 als=0 wrp=0 ucp=0 dsp=0

如何测试CacheFS?

我们可以查看大文件拷贝的时间:

time cp /nfs/bigdata.gz /tmp

再次从nfs中拷贝文件,作为比较:

time cp /nfs/bigdata.gz /tmp2