尝试在 ubuntu 18.04 上使用 cachefilesd 时,fsc 选项被忽略

尝试在 ubuntu 18.04 上使用 cachefilesd 时,fsc 选项被忽略

我正在尝试在我的其中一台服务器上设置 nfs 共享的 cachefilesd。但是没有成功。

服务正在运行,我的驱动器已安装,但似乎“fsc”选项被完全忽略。

我的 fstab(出于隐私和相关性的考虑,特定文件夹名称已被编辑):

$ 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

问题

无论我做什么,即使手动安装共享(mount -t -o fsc ...),FSC 选项也未启用:

$ 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

查看 nfsstat 你会发现 fsc 选项被完全忽略了:

$ 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

故障排除信息

服务正在运行:

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

RUN=yes 选项已取消注释:

$ 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=""

secctx system_u:system_r:cachefiles_kernel_t:s0 选项已取消注释(带和不带都试过):

$ cat /etc/cachefilesd.conf
###############################################################################
#
# Copyright (C) 2006,2010 Red Hat, Inc. All Rights Reserved.
# Written by David Howells ([email protected])
#
# 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

在一个类似但最终无益的答案中,有人还包括了这样的输出:

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

和这个:

$ grep CONFIG_NFS_FSCACHE /boot/config-4.15.0-20-generic
CONFIG_NFS_FSCACHE=y

答案1

我遇到了同样的问题。偶然发现了对我有用的东西。

看起来默认 rsize 存在问题,导致 fsc 选项无法生效。如果我提供的 rsize 值为 524288(而不是默认的 1048576),则 fsc 选项会生效。

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

答案2

/etc/fstab我在 AWS 上的一个 Ubuntu 18.04 实例上遇到了同样的问题,并设法通过安装 NFS 卷而不是mount在启动后使用命令来修复它。这是我的工作/etc/fstab线路:

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 

我尝试使用其他操作系统,例如 Amazon Linux 2 和 Ubuntu 16.04,并且 fsc 选项与 mount 命令配合使用效果很好。

相关内容