设为首页 收藏本站
查看: 1550|回复: 0

[经验分享] NFS文件系统挂载与优化

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-7 14:12:13 | 显示全部楼层 |阅读模式
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
1、         安装NFS
1.1  安装服务器软件
1
2
3
4
5
6
7
[iyunv@fileserver ~]yum install –y nfs-utilsrpcbind
[iyunv@fileserver ~]chkconfig nfs on
[iyunv@fileserver ~]chkconfig rpcbind on
[iyunv@fileserver ~]# 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查看帮助)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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  创建挂载目录
1
2
mkdir –p /www/appData/upload
chownnfsnobody:nfsnobody /www/appData/upload



2.3  启动nfs服务
1
2
[iyunv@fileserver ~]#/etc/init.d/rpcbind start
[iyunv@fileserver ~]#/etc/init.d/nfs start



查看nfs发布情况
1
2
3
4
5
6
[iyunv@fileserver ~]#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)
[iyunv@fileserver ~]#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加入开机自启动
1
2
chkconfig nfs on
chkconfig rpcbind on



启动rpcbind和nfs
1
2
/etc/init.d/rpcbindstart
/etc/init.d/nfs start



查看fileserver端的NFS文件情况
1
2
3
# showmount -e172.16.11.15
Export list for172.16.11.15:
/www/appData/upload172.16.11.0/24



挂载参数介绍(可以使用man 8 mount查看帮助)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 设置请求的超时时间(以十分之一秒为单位)。




命令提示符中挂载:
1
2
3
4
5
6
7
8
# 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使其开机自动生效
1
172.16.11.15:/www/appData/upload         /www/appData/upload nfs  noatime,nosuid,noexec,nodev        0 0



挂载测试
1
2
3
4
5
6
7
8
9
# 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  查看挂载状态和参数
1
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的状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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选项查看网络状态
1
nfsstat –o net



3.3  NFS挂载优化
1
2
3
4
noexec:不允许执行二进制文件
nodev:不读文件系统上的字符或块设备
nosuid:关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位
noatime:每次存取时不更新inode的存取时间




优化内核参数:/etc/sysctl.conf
1
2
3
4
5
6
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  性能测试
读取文件速度测试
1
2
3
4
5
6
7
# 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



写入文件测试
1
2
3
4
5
6
7
[iyunv@wcweb01upload]# 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






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-269006-1-1.html 上篇帖子: 运行第一个Vagrant主机 下篇帖子: radware Alten系列的HA配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表