Я пытаюсь настроить cachefilesd на общей папке nfs с одним из моих серверов. Это не работает.
Служба работает, мои диски смонтированы, но похоже, что опция "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 (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
В подобный, но в конечном итоге бесполезный ответ кто-то также включил вывод этого:
$ 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
У меня была такая же проблема с одним экземпляром Ubuntu 18.04 на AWS, и мне удалось исправить ее, установив том NFS в /etc/fstab
Вместо того, чтобы использовать 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.