NFS文件系统挂载与优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFS文件系统挂载与优化相关的知识,希望对你有一定的参考价值。
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
1、 安装NFS
1.1 安装服务器软件
[[email protected] ~]yum install –y nfs-utilsrpcbind [[email protected] ~]chkconfig nfs on [[email protected] ~]chkconfig rpcbind on [[email protected] ~]# chkconfig --list |egrep"nfs|rpcbind" nfs 0:off1:off2:on3:on4:on5:on6:off nfslock 0:off1:off2:off3:on4:on5:on6:off rpcbind 0:off1:off2:on3:on4:on5:on6:off
2、 服务端配置
2.1 服务端配置文件详解
服务端配置文件为/etc/exports,格式如下:
/www/appData/upload/172.16.11.0/24(rw,async,all_squash)
/www/appData/upload/为本地要发布的目录,172.16.11.0/24为将此NFS目录发布给指定范围内的主机,支持单个主机、网络用户组@group,通配符*,?等、IP网络,本例中就是使用的IP网络
括号内的参数说明如下所示(可以使用manexports查看帮助)
ro:共享目录只读; rw:共享目录可读可写; all_squash:所有访问用户都映射为匿名用户或用户组; no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组; root_squash(默认):将来访的root用户映射为匿名用户或用户组; no_root_squash:来访的root用户保持root帐号权限; anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534); anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534); secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器; insecure:允许客户端从大于1024的tcp/ip端口连接服务器; sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; async:将数据先保存在内存缓冲区中,必要时才写入磁盘; wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率; no_wdelay:若有写操作则立即执行,应与sync配合使用; subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限; no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
2.2 创建挂载目录
mkdir –p /www/appData/upload chownnfsnobody:nfsnobody /www/appData/upload
2.3 启动nfs服务
[[email protected] ~]#/etc/init.d/rpcbind start [[email protected] ~]#/etc/init.d/nfs start
查看nfs发布情况
[[email protected] ~]#exportfs -v /www/appData/upload 172.16.11.0/24(rw,async,wdelay,root_squash,all_squash,no_subtree_check,sec=sys,rw,root_squash,all_squash) [[email protected] ~]#showmount -e 172.16.11.15 Export list for172.16.11.15: /www/appData/upload172.16.11.0/24
exportfs –r可以在不重启nfs服务的情况下重读配置文件
本地查看无误后可以转到客户端配置
3、 客户端配置
3.1 客户端环境配置
将nfs和rpcbind加入开机自启动
chkconfig nfs on chkconfig rpcbind on
启动rpcbind和nfs
/etc/init.d/rpcbindstart /etc/init.d/nfs start
查看fileserver端的NFS文件情况
# showmount -e172.16.11.15 Export list for172.16.11.15: /www/appData/upload172.16.11.0/24
挂载参数介绍(可以使用man 8 mount查看帮助)
ro 以只读模式加载。 rw 以可读写模式加载。 sync 以同步方式执行文件系统的输入输出动作。 async 以非同步的方式执行文件系统的输入输出动作。 defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。 atime 每次存取都更新inode的存取时间,默认设置,取消选项为noatime。 noatime 每次存取时不更新inode的存取时间。 dev 可读文件系统上的字符或块设备,取消选项为nodev。 nodev 不读文件系统上的字符或块设备。 exec 可执行二进制文件,取消选项为noexec。 noexec 无法执行二进制文件。 auto 必须在/etc/fstab文件中指定此选项。执行-a参数时,会加载设置为auto的设备,取消选取为noauto。 noauto 无法使用-a参数来加载。 suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。 nosuid 关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。 user 普通用户可以执行加载操作。 nouser 普通用户无法执行加载操作,默认设置。 remount 重新加载设备。通常用于改变设备的设置状态。 rsize 读取数据缓冲大小,默认设置1048576(rhel6.6)。 wsize 写入数据缓冲大小,默认设置1048576(rhel6.6)。 fg 以前台形式执行挂载操作,默认设置。在挂载失败时会影响正常操作响应。 bg 以后台形式执行挂载操作。 hard 硬式挂载,默认设置。如果与服务器通讯失败,让试图访问它的操作被阻塞,直到服务器恢复为止。 soft 软式挂载。如果服务器通讯失败,让试图访问它的操作失败,返回一条出错消息。这项功能对于避免进程“挂”在无关紧要的安装操作上来说非常有用。 retrans=n 指定在以软方式安装的文件系统上,在返回一条出错消息之前重复发出请求的次数。 nointr 不允许用户中断,默认设置。 intr 允许用户中断被阻塞的操作(并且让它们返回一条出错消息)。 timeo=n 设置请求的超时时间(以十分之一秒为单位)。
命令提示符中挂载:
# mount -t nfs -onoexec,nosuid,nodev,noatime 172.16.11.15:/www/appData/upload /www/appData/upload/ # df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 243G 4.8G 226G 3% / tmpfs 101G 0 101G 0% /dev/shm /dev/sda1 772M 32M 700M 5% /boot 172.16.11.15:/www/appData/upload 2.7T 5.8G 2.6T 1% /www/appData/upload
写入/etc/fstab使其开机自动生效
172.16.11.15:/www/appData/upload /www/appData/upload nfs noatime,nosuid,noexec,nodev 0 0
挂载测试
# umount/www/appData/upload/ # mount -a # df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 243G 4.8G 226G 3% / tmpfs 101G 0 101G 0% /dev/shm /dev/sda1 772M 32M 700M 5% /boot 172.16.11.15:/www/appData/upload 2.7T 5.8G 2.6T 1% /www/appData/upload
3.2 查看挂载状态和参数
# cat/proc/mounts|grep upload 172.16.11.15:/www/appData/upload/www/appData/upload nfs4rw,nosuid,nodev,noexec,noatime,vers=4,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.11.10,minorversion=0,local_lock=none,addr=172.16.11.150 0
使用rpcinfo查看rpc信息
使用nfsstat查看nfs的状态
#nfsstat -l nfs v4 client total: 110127 -------------------------- -------- nfs v4 client write: 1 nfs v4 client open: 55000 nfs v4 client open_conf: 3 nfs v4 client close: 55000 nfs v4 client setattr: 2 nfs v4 client fsinfo: 9 nfs v4 client renew: 25 nfs v4 client setclntid: 2 nfs v4 client confirm: 2 nfs v4 client access: 17 nfs v4 client getattr: 20 nfs v4 client lookup: 13 nfs v4 client lookup_root: 3 nfs v4 client remove: 1 nfs v4 client pathconf: 6 nfs v4 client statfs: 4 nfs v4 client readdir: 4 nfs v4 client server_caps: 15
使用-o选项查看网络状态
nfsstat –o net
3.3 NFS挂载优化
noexec:不允许执行二进制文件 nodev:不读文件系统上的字符或块设备 nosuid:关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位 noatime:每次存取时不更新inode的存取时间
优化内核参数:/etc/sysctl.conf
cat >>/etc/sysctl.conf<<EOF net.core.rmem_default=8838608 net.core.wmem_default=262144 net.core.rmem_max=16777216 net.core.wmem_max=1048576 EOF
3.4 性能测试
读取文件速度测试
# ll -h/www/appData/upload/services -rw-r--r-- 1nfsnobody nfsnobody 626K 9月 6 14:53 /www/appData/upload/services cp /etc/services/www/appData/upload # time for((i=1;i<500;i++));do cat /www/appData/upload/services >/dev/null;done real 0m1.562s user 0m0.227s sys 0m0.654s
写入文件测试
[[email protected]]# time dd if=/dev/zero of=/www/appData/upload/testbigfile bs=1Mcount=1000 记录了1000+0 的读入 记录了1000+0 的写出 1048576000字节(1.0 GB)已复制,10.1055 秒,104 MB/秒 real 0m10.109s user 0m0.002s sys 0m1.599s
本文出自 “sunny” 博客,请务必保留此出处http://francis198.blog.51cto.com/720670/1847103
以上是关于NFS文件系统挂载与优化的主要内容,如果未能解决你的问题,请参考以下文章