Hi,
When I use the nfs-ganesha with V3-stable, I found that if we use multiple clients(like 5
clients on different PC based on Vmware machine) to copy big file(like 1G) at the same
time by the NFSv4, the "Input/output error" is occured on the client. We cannot
find any log about the error in the log of the server.
But if we copy the file one by one, this error is not seen. we tried many times, include
xfs or ext4, the error occured with high
probability when: 1.multi-clients copy large files at the same time
2.mount with NFSV4
And if we use NFSv3, this error is not seen.
Could you please give us some clue about this problem?
ps: we used FSAL_VFS.
error(some clients may didnot occured, but some did with high probability):
[root@localhost kpfadmin]# cp 1G t2/ cp: error writing 't2/1G': Input/output error
cp: failed to close 't2/1G': Input/output error
OS:
Centos 8.1-1911
Linux localhost.localdomain 4.18.0-147.el8.x86_64 #1 SMP Wed Dec 4 21:51:45 UTC 2019
x86_64 x86_64 x86_64 GNU/Linux
client mount like:
10.10.1.184: mount -t nfs4 10.10.1.183:/t3 t4/ 10.10.1.185: mount -t nfs4
10.10.1.183:/t4 t4/ 10.10.1.186: mount -t nfs4 10.10.1.183:/t5 t5/ 10.10.1.187:
mount -t nfs4 10.10.1.183:/t5 t5/
server(ganesha.conf):
################################################### # # Ganesha Config Example # # This is
a commented example configuration file for Ganesha. It is not # complete, but only has
some common configuration options. See the man pages # for complete documentation. #
################################################### ## These are core parameters that
affect Ganesha as a whole. #NFS_CORE_PARAM { ## Allow NFSv3 to mount paths with the
Pseudo path, the same as NFSv4, ## instead of using the physical paths.
#mount_path_pseudo = true; ## Configure the protocols that Ganesha will listen for.
This is a hard ## limit, as this list determines which sockets are opened. This list ##
can be restricted per export, but cannot be expanded. #Protocols = 3,4,9P; #} ## These
are defaults for exports. They can be overridden per-export. #EXPORT_DEFAULTS { ##
Access type for clients. Default is None, so some access must be ## given either here or
in the export itself. #Access_Type = RW; #} ## Configure settings for the object handle
cache #MDCACHE { ## The point at which object cache entries will start being reused.
#Entries_HWMark = 100000; #} EXPORT { ## Export Id (mandatory, each EXPORT must
have a unique Export_Id) Export_Id = 1001; ## Exported path (mandatory)
Path = /home/kpfadmin/t1; ## Pseudo Path (required for NFSv4 or if
mount_path_pseudo = true) Pseudo = /t1; ## Restrict the protocols that may
use this export. This cannot allow ## access that is denied in NFS_CORE_PARAM.
Protocols = 3,4; ## Access type for clients. Default is None, so some access
must be ## given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block
Access_Type = RW; ## Whether to squash various users. Squash =
root_squash; ## Allowed security types for this export #Sectype =
sys,krb5,krb5i,krb5p; ## Exporting FSAL FSAL { Name = VFS;
} } ## Configure an export for some file tree EXPORT { ## Export Id (mandatory,
each EXPORT must have a unique Export_Id) Export_Id = 2; ## Exported path (mandatory)
Path = /home/kpfadmin/t2; ## Pseudo Path (required for NFSv4 or if mount_path_pseudo =
true) Pseudo = /t2; ## Restrict the protocols that may use this export. This cannot
allow ## access that is denied in NFS_CORE_PARAM. Protocols = 3,4; ## Access type for
clients. Default is None, so some access must be ## given. It can be here, in the
EXPORT_DEFAULTS, or in a CLIENT block Access_Type = RW; ## Whether to squash various
users. Squash = root_squash; ## Allowed security types for this export #Sectype =
sys,krb5,krb5i,krb5p; ## Exporting FSAL FSAL { Name = VFS; } } ## Configure an export
for some file tree EXPORT { ## Export Id (mandatory, each EXPORT must have a
unique Export_Id) Export_Id = 3; ## Exported path (mandatory) Path
= /home/kpfadmin/t3; ## Pseudo Path (required for NFSv4 or if mount_path_pseudo =
true) Pseudo = /t3; ## Restrict the protocols that may use this export.
This cannot allow ## access that is denied in NFS_CORE_PARAM. Protocols =
3,4; ## Access type for clients. Default is None, so some access must be
## given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block Access_Type
= RW; ## Whether to squash various users. Squash = root_squash; ##
Allowed security types for this export #Sectype = sys,krb5,krb5i,krb5p; ##
Exporting FSAL FSAL { Name = VFS; } } ## Configure an
export for some file tree EXPORT { ## Export Id (mandatory, each EXPORT must have
a unique Export_Id) Export_Id = 4; ## Exported path (mandatory)
Path = /home/kpfadmin/t4; ## Pseudo Path (required for NFSv4 or if
mount_path_pseudo = true) Pseudo = /t4; ## Restrict the protocols that may
use this export. This cannot allow ## access that is denied in NFS_CORE_PARAM.
Protocols = 3,4; ## Access type for clients. Default is None, so some access
must be ## given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block
Access_Type = RW; ## Whether to squash various users. Squash =
root_squash; ## Allowed security types for this export #Sectype =
sys,krb5,krb5i,krb5p; ## Exporting FSAL FSAL { Name = VFS;
} } ## Configure an export for some file tree EXPORT { ## Export Id
(mandatory, each EXPORT must have a unique Export_Id) Export_Id = 5; ##
Exported path (mandatory) Path = /home/kpfadmin/t5; ## Pseudo Path
(required for NFSv4 or if mount_path_pseudo = true) Pseudo = /t5; ##
Restrict the protocols that may use this export. This cannot allow ## access that
is denied in NFS_CORE_PARAM. Protocols = 3,4; ## Access type for clients.
Default is None, so some access must be ## given. It can be here, in the
EXPORT_DEFAULTS, or in a CLIENT block Access_Type = RW; ## Whether to
squash various users. Squash = root_squash; ## Allowed security types for
this export #Sectype = sys,krb5,krb5i,krb5p; ## Exporting FSAL
FSAL { Name = VFS; } } ## Configure logging. Default is to log to
Syslog. Basic logging can also be ## configured from the command line LOG { ## Default
log level for all components Default_Log_Level = WARN; ## Configure per-component log
levels. #Components { #FSAL = INFO; #NFS4 = EVENT; #} ## Where to log Facility {
name = FILE; destination = "/var/log/ganesha.log"; enable = active; } }