linux nfs服务配置挂载以及oracle使用nfs存储挂载注意事项

时间:2022-11-08 20:10:56

服务端共享目录

/home/XXX/nfs_shared 172.16.22.0/24(rw,no_root_squash)

service nfs restart

常用命令:

查看所有nfs共享目录:

# exportfs -arv
exporting 172.16.22.0/24:/tmp
exporting 172.16.22.0/24:/home/nfsdir
exportfs命令
常用选项
-a 全部挂载或者全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录

当系统管理员对/etc/exports文件进行设置修改后并不会自动在NFS服务器中生效。NFS服务器的软件包中提供了exportfs管理工具,可以对exports文件设置的内容进行管理。

  重新输出共享目录exportfs –rv

  停止输出所有目录exportfs –auv

  输出(启用)所有目录exportfs av

客户端挂载

# mount -t nfs -onolock 172.16.22.247:/tmp /mnt/tmp
-o nolock 了,即在挂载nfs服务时,不加锁。

常用命令:

查看从某台服务器挂载的目录:

# showmount -e 172.16.22.247
Export list for 172.16.22.247:
/tmp 172.16.22.0/24
/home/nfsdir 172.16.22.0/24

常见问题:

nfs 成功挂载后,写入时出现permission denied的解决

nfs服务器端 /etc/exports文件中已指定(rw),可读可写,在客户端也能正常挂载,可在向挂载目录里写入内容提示:permission denied。原因:nfs在服务器端导出的目录,也有一定权限要求,当把服务端导出目录,修改权限(chmod 777 /导出目录)后,再重启nfs服务,客户端非root用户就能读能写了。

oracle创建表空间报错无可用锁

SQL> create tablespace sdf datafile '/nfstest/adsf.dbf' size 10m extent management local;
create tablespace sdf datafile '/nfstest/adsf.dbf' size 10m extent management local
*
ERROR at line 1:
ORA-01119: error in creating database file '/nfstest/adsf.dbf'
ORA-27086: unable to lock file - already in use
Linux Error: 37: No locks available
Additional information: 10
解决方法,在mount时指定nolock,如下:
nolock,rw,bg,rsize=32768,wsize=32768,hard,vers=3,nointr,timeo=600,proto=tcp
这和oracle官方所述并不一致,官方没有说明要求nolock选项。

linux上NFS性能只有几MB速度

linux nfs客户端对于同时发起的NFS请求数量进行了控制,若该参数配置较小会导致IO性能较差,查看该参数:

cat /proc/sys/sunrpc/tcp_slot_table_entries

默认编译的内核该参数最大值为256,可适当提高该参数的值来取得较好的性能,请以root身份执行以下命令:

echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf

echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf

sysctl -w sunrpc.tcp_slot_table_entries=128

修改完成后,您需要重新挂载文件系统或重启机器。

nfs挂载错误wrong fs type, bad option, bad superblock

# mount -t nfs 192.168.0.66:/opt/data /home/XXX/nfs_shared
mount: wrong fs type, bad option, bad superblock on 192.168.0.66:/opt/data,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

解决过程:

根据错误提示,查看/sbin/mount.<type>文件,果然发现没有/sbin/mount.nfs的文件,安装nfs-utils即可

解决办法:

yum install nfs-utils

安装之后,/sbin/下面多了两个mount文件,分别是mount.nfs和mount.nfs4:

-rwsr-xr-x   1 root root  123648 7月  24 16:22 mount.nfs
lrwxrwxrwx   1 root root       9 12月  3 15:09 mount.nfs4 -> mount.nfs-rwxr-xr-x.  1 root root    1338 2月  22 2013 mount.tmpfs

启动 NFS 守护进程:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)

rpc.nfsd: unable to set any sockets for nfsd
 
解决办法就是重新启动rpcbind服务即可:
service rpcbind restart
service nfs restart

系统启动时自动挂载

  将nfs共享信息写入/etc/fstab文件,以实对nfs共享目录的自动挂载

  在fstab文件中添加以下一行

  172.16.2.91:/home/test /ebs/test nfs nolock,rsize=32768,wsize=32768 0 0

  另外,配置开机自启动nfs

nfs 4下的各种性能测试结果参考:http://alephnull.com/benchmarks/sata2012/nfsv4.html