1

I'm trying to set up cachefilesd on an nfs share with one of my servers. It's not working.

The service is running, my drives are mounted, but it seems as if the "fsc" option is completely ignored.

My fstab (specific folder-names edited for privacy and relevancy):

$ cat /etc/fstab
# <device>                                       <dir>                  <type> <options>                                                            <dump> <fsck>
UUID=c456dea4-e0c6-42f5-a206-d0ed2e94bc6a        /                      ext4   rw,relatime,discard,data=ordered                                     0      1
UUID=693dee2e-78bb-4d4d-84e4-082328488cfe        /boot                  ext4   rw,relatime,discard,data=ordered                                     0      2
UUID=843c20a9-258a-4078-bb78-0549217623e4        none                   swap   defaults                                                             0      0
192.168.200.20:/mnt/tank/share1                  /mnt/share1            nfs4   nolock,noatime,context="system_u:object_r:httpd_sys_content_rw_t:s0" 0      0
192.168.200.20:/mnt/tank/share2                  /mnt/sub/share2        nfs4   fsc,nolock,noatime                                                   0      0
192.168.200.20:/mnt/tank/share3                  /mnt/sub/share3        nfs4   nolock,noatime                                                       0      0
192.168.200.20:/mnt/tank/share4                  /mnt/sub/share4        nfs4   fsc,nolock,noatime                                                   0      0

The Problem

No matter what I do, even mounting the shares manually (mount -t -o fsc...) the FSC option is not enabled:

$ cat /proc/fs/nfsfs/volumes
NV SERVER   PORT DEV          FSID                              FSC
v4 c0a8c814  801 0:55         c7d8b1ef:bb64cbde                 no
v4 c0a8c814  801 0:54         d9a63e22:cc9a3fde                 no
v4 c0a8c814  801 0:57         5a567c31:75f052de                 no
v4 c0a8c814  801 0:59         1673eeb4:b0583de                  no
v4 c0a8c814  801 0:60         9acb69e2:fb267bde                 no
v4 c0a8c814  801 0:58         a367662d:5b53a6de                 no
v4 c0a8c814  801 0:61         69fdc16c:c38e18de                 no
v4 c0a8c814  801 0:63         706408fe:60f412de                 no
v4 c0a8c814  801 0:64         af123987:8f7131de                 no

And looking at nfsstat you can see that the fsc option was totally ignored:

$ nfsstat -m
/mnt/sub/share4 from 192.168.200.20:/mnt/tank/share4
 Flags: rw,noatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.200.10,local_lock=none,addr=192.168.200.20

/mnt/sub/share3 from 192.168.200.20:/mnt/tank/share3
 Flags: rw,noatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.200.10,local_lock=none,addr=192.168.200.20

/mnt/share1 from 192.168.200.20:/mnt/tank/share1
 Flags: rw,noatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.200.10,local_lock=none,addr=192.168.200.20

/mnt/sub/share2 from 192.168.200.20:/mnt/tank/share2
 Flags: rw,noatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.200.10,local_lock=none,addr=192.168.200.20

Troubleshooting info

Service is running:

$ sudo systemctl status cachefilesd.service
● cachefilesd.service - LSB: CacheFiles daemon
   Loaded: loaded (/etc/init.d/cachefilesd; generated)
   Active: active (running) since Tue 2019-04-30 04:05:28 UTC; 5min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 21405 ExecStop=/etc/init.d/cachefilesd stop (code=exited, status=0/SUCCESS)
  Process: 22001 ExecStart=/etc/init.d/cachefilesd start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/cachefilesd.service
           └─22022 /sbin/cachefilesd

Apr 30 04:05:28 orochi systemd[1]: Starting LSB: CacheFiles daemon...
Apr 30 04:05:28 orochi cachefilesd[22001]:  * Starting FilesCache daemon  cachefilesd
Apr 30 04:05:28 orochi cachefilesd[22020]: About to bind cache
Apr 30 04:05:28 orochi cachefilesd[22020]: Bound cache
Apr 30 04:05:28 orochi cachefilesd[22022]: Daemon Started
Apr 30 04:05:28 orochi cachefilesd[22001]:    ...done.
Apr 30 04:05:28 orochi systemd[1]: Started LSB: CacheFiles daemon.

the RUN=yes option is uncommented:

$ cat /etc/default/cachefilesd
# Defaults for cachefilesd initscript
# sourced by /etc/init.d/cachefilesd

# You must uncomment the run=yes line below for cachefilesd to start.
# Before doing so, please read /usr/share/doc/cachefilesd/howto.txt.gz as
# extended user attributes need to be enabled on the cache filesystem.
RUN=yes

# Additional options that are passed to the Daemon.
DAEMON_OPTS=""

The secctx system_u:system_r:cachefiles_kernel_t:s0 option is uncomented (tried it both with and without):

$ cat /etc/cachefilesd.conf
###############################################################################
#
# Copyright (C) 2006,2010 Red Hat, Inc. All Rights Reserved.
# Written by David Howells (dhowells@redhat.com)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
#
###############################################################################

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

# Assuming you're using SELinux with the default security policy included in
# this package
secctx system_u:system_r:cachefiles_kernel_t:s0

In a similar but ultimately unhelpful answer someone also included the output of this:

$ lsmod | grep cachefiles
cachefiles             45056  1
fscache                61440  3 cachefiles,nfsv4,nfs

and this:

$ grep CONFIG_NFS_FSCACHE /boot/config-4.15.0-20-generic
CONFIG_NFS_FSCACHE=y
Tal Bull
  • 111
  • 1
  • 3

2 Answers2

1

I ran into the same issue. Accidentally ran into something that worked for me.

It looks like there is something with the default rsize that prevents fsc option to take effect. If I provide a rsize value of 524288 (instead of the default 1048576), the fsc option takes effect.

sudo mount -t nfs4 hex:/mnt/hexhd /mnt/hexhd  -o fsc,rsize=524288
nfsstat -m
/mnt/hexhd from hex:/mnt/hexhd
 Flags: rw,relatime,vers=4.2,rsize=524288,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.50.216,fsc,local_lock=none,addr=192.168.50.185
uname -a
Linux tri 5.4.0-72-generic #80-Ubuntu SMP Mon Apr 12 17:35:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
0

I had the same issue with one Ubuntu 18.04 instance on AWS and have managed to fix it mounting NFS volume in /etc/fstab instead of using mount command after boot. This is my working /etc/fstab line:

fs-xxxxx.efs.eu-west-1.amazonaws.com:/       /var/www/site/blahblah        nfs4    nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,fsc,noresvport,_netdev 0 0 

I tried with other OS like Amazon Linux 2 and Ubuntu 16.04 and fsc option worked like a charm with mount command.

Anton Danilov
  • 5,082
  • 2
  • 13
  • 23
Israel
  • 1
  • 1