NFS网络文件共享服务

一.介绍

1.1NFS概念描述

什么是NFS?NFS是network file system 的缩写,它的主要功能是通过
网络让不同的主机系统之间可以彼此共享文件或目录,NFS客户端(一般为应用服务器)
可以通过挂载(mount)的方式将NFS服务器端的数据文件目录挂载到NFS客户端本地
系统中(某一个挂载点),从NFS客户端的机器本地上看,NFS服务器端共享的
目录就好像是客户端自己的磁盘分区或者目录一样,而实际上是远端的服务器目录。

1.2什么是RPC(remote procedure call)

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动

一个功能就会启动一些端口来传输数据,因此,NFS的功能所对应的端口无法固定

而是随机取用一些未被使用的端口来座位传输之用。

    因为端口不固定,这样一来就会造成NFS客户端与NFS服务端的通讯障碍,因为

NFS客户端必须要知道NFS服务端的数据传输端口才能进行通信交互数据。

    要解决上面问题,就需要远程过程调用RPC服务来帮忙,NFS的RPC服务最主要的

的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该

端口和功能对应的信息传递给请求数据的NFS客户端,从而可以确保客户端可以

连接到正确的NFS端口上去,达到实现数据传输交互数据目的,RPC就相当于NFS服务端

和客户端的一个中介。

1.3NFS挂载原理

如上图,当我们在nfs服务器设置好一个共享目录/liang后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到本地。并且能够看到服务端/data的所有数据。因为挂载在本地的/data1目录,其实就是服务器端的/liang目录。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h

1.4NFS工作流程(图片来源于网络)

1)首先服务器端启动RPC服务,并开启111端口

2)启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

二.NFS服务部署

1.两台虚拟机

服务端
主机名:nfs-server
ip:10.0.0.129
系统版本:CentOS release 6.5 (Final)
客户端
主机名:nfs-client
ip: 10.0.0.130
系统版本:CentOS release 6.5 (Final)

2.服务端操作

2.1安装所需要软件包
[root@nfs-server ~]# yum install nfs-utils rpcbind -y
2.2启动rpc
[root@nfs-server ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]
2.3查看本地的rpcinfo(现在没有NFS注册的信息)
[root@nfs-server ~]# rpcinfo -p localhost
   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
2.4启动nfs服务
[root@nfs-server ~]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@nfs-server ~]# rpcinfo -p localhost 
   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
    100005    1   udp  33728  mountd
    100005    1   tcp  54901  mountd
    100005    2   udp  41686  mountd
    100005    2   tcp  39535  mountd
    100005    3   udp  33584  mountd
    100005    3   tcp  33208  mountd
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049  nfs_acl
    100227    3   tcp   2049  nfs_acl
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049  nfs_acl
    100227    3   udp   2049  nfs_acl
    100021    1   udp  56135  nlockmgr
    100021    3   udp  56135  nlockmgr
    100021    4   udp  56135  nlockmgr
    100021    1   tcp  50291  nlockmgr
    100021    3   tcp  50291  nlockmgr
    100021    4   tcp  50291  nlockmgr
2.5设置开启自动启动
[root@nfs-server ~]# chkconfig nfs on
[root@nfs-server ~]# chkconfig rpcbind on
2.6创建共享目录
[root@nfs-server ~]# mkdir /liang
[root@nfs-server ~]# chown nfsnobody:nfsnobody /liang (或者chmod o=rwx /liang)
2.7编辑配置文件/etc/exports 
[root@nfs-server ~]# cat /etc/exports 
#shared liang
/liang 10.0.0.0/24(rw,sync)

===============================
/liang 共享的目录

10.0.0.0/24 允许访问的网段(可以是一个ip)

rw  允许读写,ro只读

sync 写入到磁盘。
2.8平滑重启nfs服务
[root@nfs-server ~]# /etc/init.d/nfs reload
2.9关闭防火墙,验证
[root@nfs-server ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@nfs-server ~]# showmount -e localhost
Export list for 10.0.0.129:
/liang 10.0.0.0/24

3.客户端操作

1.安装所需软件包
[root@nfs-client ~]# yum install nfs-utils rpcbind -y
2.启动rpcbind(nfs不需要启动)
[root@nfs-client ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]
[root@nfs-client ~]# chkconfig rpcbind on
3.验证
[root@nfs-client ~]# showmount -e 10.0.0.129
Export list for 10.0.0.129:
/liang 10.0.0.0/24
4.创建目录,挂载
[root@nfs-client ~]# mkdir /data
[root@nfs-client ~]# mount -t nfs 10.0.0.129:/liang /data

[root@nfs-client ~]# df -h|tail -1
10.0.0.129:/liang             8.4G  727M  7.3G   9% /
[root@nfs-client ~]# cd /data
[root@nfs-client data]# touch {a..d}
[root@nfs-client data]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 a
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 b
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 c
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 d
[root@nfs-server ~]# ll /liang/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 a
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 b
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 c
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 22 09:12 d

4.优化

4.1安全优化
nosuid 不允许使用suid操作
noexec 不允许执行二进制程序
4.2性能优化
rsize=131072 读取文件的每秒的大小
wsize=131072    写入文件的每秒的大小
noatime    不更新文件的时间戳
nodiratime    不更新目录的时间戳
4.3内核优化
net.core.wmem_default = 8388608#(发送套接字缓冲区大小的缺省值)
net.core.wmem_max = 166777216#(发送套接字缓冲区大小的最大值)
net.core.rmem_default = 8388608#(接受套接字缓冲区大小的缺省值)
net.core.rmem_max = 166777216#(发送套接字缓冲区大小的最大值)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值