Começando em torno do kernel 4.14.10, notei um problema estranho acontecendo com minhas montagens NFS, onde todas as entradas em um diretório são mostradas como diretórios, se elas forem montadas com a versão 4. Aqui estão as minhas configurações:
No servidor:
nfs-utils: net-fs / nfs-utils-2.3.1-r1 :: gentoo USE="caps ipv6 libmount nfsdcld nfsidmap nfsv4 nfsv41 tcpd uuid -kerberos -ldap (-selinux)"
Kernel .config
(entradas NFS)
CONFIG_NFS_FS=m
CONFIG_NFS_V2=m
CONFIG_NFS_V3=m
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=m
# CONFIG_NFS_SWAP is not set
CONFIG_NFS_V4_1=y
CONFIG_NFS_V4_2=y
CONFIG_PNFS_FILE_LAYOUT=m
CONFIG_PNFS_FLEXFILE_LAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
# CONFIG_NFS_V4_1_MIGRATION is not set
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
CONFIG_NFS_DEBUG=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
# CONFIG_NFSD_BLOCKLAYOUT is not set
# CONFIG_NFSD_SCSILAYOUT is not set
# CONFIG_NFSD_FLEXFILELAYOUT is not set
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y
/etc/exports
/var/nfs/router/portage infrastructure(rw,no_root_squash,no_all_squash,no_subtree_check)
/var/nfs/router/kernel infrastructure(rw,no_root_squash,no_all_squash,no_subtree_check)
/var/nfs/router/temp infrastructure(rw,no_root_squash,no_all_squash,no_subtree_check)
Informações sobre partições de tune2fs -l
# tune2fs -l /dev/sdb3
tune2fs 1.43.8 (1-Jan-2018)
Filesystem volume name: root
Last mounted on: /
Filesystem UUID: bed7944c-5306-4e7e-9bfd-e6ceba8f4705
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
[...]
No cliente:
nfs-utils: net-fs / nfs-utils-2.3.1-r1 :: gentoo USE="caps ipv6 libmount nfsdcld nfsidmap nfsv4 nfsv41 tcpd uuid -kerberos-ldap (-selinux)
Kernel .config
(entradas NFS)
CONFIG_NFS_FS=m
CONFIG_NFS_V2=m
CONFIG_NFS_V3=m
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=m
# CONFIG_NFS_SWAP is not set
CONFIG_NFS_V4_1=y
CONFIG_NFS_V4_2=y
CONFIG_PNFS_FILE_LAYOUT=m
CONFIG_PNFS_FLEXFILE_LAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
# CONFIG_NFS_V4_1_MIGRATION is not set
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFSD is not set
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y
/etc/fstab
(apenas entradas do NFS mostradas)
server-fs:/var/nfs/router/portage /usr/portage nfs noauto,relatime 0 0
server-fs:/var/nfs/router/kernel /usr/src nfs noauto,relatime 0 0
server-fs:/var/nfs/router/temp /var/tmp/portage nfs noauto,relatime 0 0
rpcinfo -p server-fs
# rpcinfo -p server-calgary
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 38129 status
100024 1 tcp 52543 status
100005 1 udp 34269 mountd
100005 1 tcp 33113 mountd
100005 2 udp 60574 mountd
100005 2 tcp 37491 mountd
100005 3 udp 44763 mountd
100005 3 tcp 37033 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100021 1 udp 35592 nlockmgr
100021 3 udp 35592 nlockmgr
100021 4 udp 35592 nlockmgr
100021 1 tcp 45355 nlockmgr
100021 3 tcp 45355 nlockmgr
100021 4 tcp 45355 nlockmgr
Quando eu monto qualquer um deles com o NFSv4, acontece o seguinte:
# mount -t nfs -o nfsvers=4 /usr/src
# mount
[...]
server-fs:/var/nfs/router/kernel on /usr/src type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp6,timeo=600,retrans=2,sec=sys,clientaddr=[client_ipv6_address],local_lock=none,addr=[server_ipv6_address])
# ls -la /usr/src/linux-4.14.12-gentoo/
total 228
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .
drwxr-xr-x 14 root root 4096 Jan 7 09:50 ..
drwxr-xr-x 14 root root 4096 Jan 7 09:50 arch
drwxr-xr-x 14 root root 4096 Jan 7 09:50 block
drwxr-xr-x 14 root root 4096 Jan 7 09:50 built-in.o
drwxr-xr-x 14 root root 4096 Jan 7 09:50 certs
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .cocciconfig
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .config
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .config.old
drwxr-xr-x 14 root root 4096 Jan 7 09:50 COPYING
drwxr-xr-x 14 root root 4096 Jan 7 09:50 CREDITS
drwxr-xr-x 14 root root 4096 Jan 7 09:50 crypto
drwxr-xr-x 14 root root 4096 Jan 7 09:50 distro
drwxr-xr-x 14 root root 4096 Jan 7 09:50 Documentation
drwxr-xr-x 14 root root 4096 Jan 7 09:50 drivers
drwxr-xr-x 14 root root 4096 Jan 7 09:50 firmware
drwxr-xr-x 14 root root 4096 Jan 7 09:50 fs
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .get_maintainer.ignore
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .gitattributes
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .gitignore
drwxr-xr-x 14 root root 4096 Jan 7 09:50 include
drwxr-xr-x 14 root root 4096 Jan 7 09:50 init
drwxr-xr-x 14 root root 4096 Jan 7 09:50 ipc
drwxr-xr-x 14 root root 4096 Jan 7 09:50 Kbuild
drwxr-xr-x 14 root root 4096 Jan 7 09:50 Kconfig
drwxr-xr-x 14 root root 4096 Jan 7 09:50 kernel
drwxr-xr-x 14 root root 4096 Jan 7 09:50 lib
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .mailmap
drwxr-xr-x 14 root root 4096 Jan 7 09:50 MAINTAINERS
drwxr-xr-x 14 root root 4096 Jan 7 09:50 Makefile
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .missing-syscalls.d
drwxr-xr-x 14 root root 4096 Jan 7 09:50 mm
drwxr-xr-x 14 root root 4096 Jan 7 09:50 modules.builtin
drwxr-xr-x 14 root root 4096 Jan 7 09:50 modules.order
drwxr-xr-x 14 root root 4096 Jan 7 09:50 Module.symvers
drwxr-xr-x 14 root root 4096 Jan 7 09:50 net
drwxr-xr-x 14 root root 4096 Jan 7 09:50 README
drwxr-xr-x 14 root root 4096 Jan 7 09:50 samples
drwxr-xr-x 14 root root 4096 Jan 7 09:50 scripts
drwxr-xr-x 14 root root 4096 Jan 7 09:50 security
drwxr-xr-x 14 root root 4096 Jan 7 09:50 sound
drwxr-xr-x 14 root root 4096 Jan 7 09:50 System.map
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_kallsyms1.o
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_kallsyms1.S
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_kallsyms2.o
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_kallsyms2.S
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_System.map
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_versions
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_vmlinux1
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .tmp_vmlinux2
drwxr-xr-x 14 root root 4096 Jan 7 09:50 tools
drwxr-xr-x 14 root root 4096 Jan 7 09:50 usr
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .version
drwxr-xr-x 14 root root 4096 Jan 7 09:50 virt
drwxr-xr-x 14 root root 4096 Jan 7 09:50 vmlinux
drwxr-xr-x 14 root root 4096 Jan 7 09:50 .vmlinux.cmd
drwxr-xr-x 14 root root 4096 Jan 7 09:50 vmlinux.o
# cat /usr/src/linux-4.14.12-gentoo/.config
cat: /usr/src/linux-4.14.12-gentoo/.config: Is a directory
# cd /usr/src/linux-4.14.12-gentoo/.config
-bash: cd: /usr/src/linux-4.14.12-gentoo/.config: Permission denied
# ls /usr/src/linux-4.14.12-gentoo/.config
ls: reading directory '/usr/src/linux-4.14.12-gentoo/.config': Not a directory
total 0
(Observe a dicotomia 'É um diretório' / 'Não é um diretório'!)
Estranhamente, quando eu montei usando o NFSv3, tudo está bem:
# mount -t nfs -o nfsvers=3 /usr/src
# mount
[...]
server-calgary:/var/nfs/router/kernel on /usr/src type nfs (rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp6,timeo=600,retrans=2,sec=sys,mountaddr=[server_ipv6_address],mountvers=3,mountport=33959,mountproto=udp6,local_lock=none,addr=[server_ipv6_address])
# ls -la /usr/src/linux-4.14.12-gentoo/
total 57564
drwxr-xr-x 26 root root 4096 Jan 7 14:41 .
drwxr-xr-x 14 root root 4096 Jan 7 09:50 ..
drwxr-xr-x 33 root root 4096 Jan 7 14:34 arch
drwxr-xr-x 3 root root 4096 Jan 7 14:34 block
-rw-r--r-- 1 root root 559068 Jan 7 14:32 built-in.o
drwxr-xr-x 2 root root 4096 Jan 7 14:34 certs
-rw-r--r-- 1 root root 59 Nov 12 11:46 .cocciconfig
-rw-r--r-- 1 root root 99150 Jan 7 09:51 .config
-rw-r--r-- 1 root root 99153 Jan 7 09:50 .config.old
-rw-r--r-- 1 root root 18693 Nov 12 11:46 COPYING
-rw-r--r-- 1 root root 98556 Nov 12 11:46 CREDITS
drwxr-xr-x 4 root root 12288 Jan 7 14:35 crypto
drwxr-xr-x 2 root root 4096 Jan 7 03:41 distro
drwxr-xr-x 121 root root 12288 Jan 7 04:02 Documentation
drwxr-xr-x 131 root root 4096 Jan 7 14:34 drivers
drwxr-xr-x 2 root root 4096 Jan 7 14:34 firmware
drwxr-xr-x 74 root root 12288 Jan 7 14:34 fs
-rw-r--r-- 1 root root 31 Nov 12 11:46 .get_maintainer.ignore
-rw-r--r-- 1 root root 30 Nov 12 11:46 .gitattributes
-rw-r--r-- 1 root root 1312 Nov 12 11:46 .gitignore
drwxr-xr-x 29 root root 4096 Jan 7 09:52 include
drwxr-xr-x 2 root root 4096 Jan 7 14:34 init
drwxr-xr-x 2 root root 4096 Jan 7 14:34 ipc
-rw-r--r-- 1 root root 2293 Nov 12 11:46 Kbuild
-rw-r--r-- 1 root root 312 Jan 7 02:36 Kconfig
drwxr-xr-x 17 root root 12288 Jan 7 14:38 kernel
drwxr-xr-x 13 root root 16384 Jan 7 14:38 lib
-rw-r--r-- 1 root root 8885 Nov 12 11:46 .mailmap
-rw-r--r-- 1 root root 430471 Nov 12 11:46 MAINTAINERS
-rw-r--r-- 1 root root 59986 Jan 7 02:36 Makefile
-rw-r--r-- 1 root root 435 Jan 7 13:28 .missing-syscalls.d
drwxr-xr-x 3 root root 12288 Jan 7 14:34 mm
-rw-r--r-- 1 root root 3031 Jan 7 14:34 modules.builtin
-rw-r--r-- 1 root root 6712 Jan 7 14:34 modules.order
-rw-r--r-- 1 root root 180278 Jan 7 14:34 Module.symvers
drwxr-xr-x 69 root root 4096 Jan 7 14:34 net
-rw-r--r-- 1 root root 722 Nov 12 11:46 README
drwxr-xr-x 28 root root 4096 Jan 7 03:41 samples
drwxr-xr-x 14 root root 4096 Jan 7 09:54 scripts
drwxr-xr-x 10 root root 4096 Jan 7 14:34 security
drwxr-xr-x 24 root root 4096 Jan 7 14:41 sound
-rw-r--r-- 1 root root 1734539 Jan 7 14:33 System.map
-rw-r--r-- 1 root root 540440 Jan 7 14:32 .tmp_kallsyms1.o
-rw-r--r-- 1 root root 3158797 Jan 7 14:32 .tmp_kallsyms1.S
-rw-r--r-- 1 root root 540440 Jan 7 14:33 .tmp_kallsyms2.o
-rw-r--r-- 1 root root 3158797 Jan 7 14:32 .tmp_kallsyms2.S
-rw-r--r-- 1 root root 1734539 Jan 7 14:33 .tmp_System.map
drwxr-xr-x 2 root root 12288 Jan 7 14:30 .tmp_versions
-rwxr-xr-x 1 root root 11208760 Jan 7 14:32 .tmp_vmlinux1
-rwxr-xr-x 1 root root 11741248 Jan 7 14:32 .tmp_vmlinux2
drwxr-xr-x 30 root root 4096 Jan 7 03:46 tools
drwxr-xr-x 2 root root 4096 Jan 7 14:34 usr
-rw-r--r-- 1 root root 2 Jan 7 14:32 .version
drwxr-xr-x 4 root root 4096 Jan 7 14:34 virt
-rwxr-xr-x 1 root root 11741248 Jan 7 14:33 vmlinux
-rw-r--r-- 1 root root 99 Jan 7 14:33 .vmlinux.cmd
-rw-r--r-- 1 root root 11566632 Jan 7 14:32 vmlinux.o
# cat /usr/src/linux-4.14.12-gentoo/.config
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 4.14.12-gentoo Kernel Configuration
#
#
# Gentoo Linux
#
CONFIG_GENTOO_LINUX=y
CONFIG_GENTOO_LINUX_UDEV=y
[...]
Não vejo mensagens em dmesg
ou journalctl
em nenhum dos computadores. Isso já aconteceu com alguém antes? É um comportamento muito estranho e eu não vi isso no passado. Eu estou bem com o uso do NFSv3 por enquanto, mas eu preferiria a versão 4, se possível.