1. NFS服务介绍
1.1 什么是NFS服务
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样,也就是说客户端PC可以挂载NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。
1.2 NFS服务的有优缺点
优点:
- 节省本地存储空间,将常用的数据存放在一台可以通过网络访问的服务器上
- 简单容易上手
- 方便部署非常快速,维护十分简单
缺点:
- 容易发生单点故障,需要做备份处理
- 在高并发环境中效率性能有限
- 客户端没有认证机制,数据通过明文传输,缺乏安全性
- 对数据的完整性不做验证
- 多台机器挂载NFS服务器时,连接管理维护比较麻烦
2. NFS工作原理介绍
需要基于RPC服务
2.1 RPC简单介绍
RPC(Remote Procedure Call)远程过程调用。
主要功能:在指定每个NFS功能所对应的端口号,并且汇报给客户端,让客户端正确的连接到端口号上去。
- a.执行顺序:1(注册端口)--à2(达成协议)-à3(直接建立联系)--à4(达成协议)--à5(建立连接)
- b.那为啥rpc能够找到对应的port呢?这是因为当服务器在启动NFS时会随机取用数个port,并且主动的向RPC注册,因此RPC可以知道每个NFS的port对应的NFS功能,然后RPC又是固定使用port111来监听客户端的需求并汇报客户端的正确的port。
3. NFS Server安装
3.1 服务器系统初始化
- 主机名hostname修改
- IP地址设定
- 防火墙iptables关闭
- 关闭selinux
3.2 yum安装nfs服务和rpc服务
[root@nfs-server ~]# yum install nfs* rpcbind -y
3.3 检查是否已经安装nfs和rpc服务
[root@nfs-server ~]# rpm -qa nfs* rpcbind
rpcbind-0.2.0-12.el6.x86_64
nfs-utils-1.2.3-70.el6_8.2.x86_64
nfsometer-1.6-1.el6.noarch
nfs-ganesha-utils-2.3.2-1.el6.x86_64
nfs-ganesha-proxy-2.3.2-1.el6.x86_64
nfs-ganesha-mount-9P-2.3.2-1.el6.x86_64
nfs-utils-lib-1.1.5-11.el6.x86_64
nfs-ganesha-2.3.2-1.el6.x86_64
nfs-ganesha-vfs-2.3.2-1.el6.x86_64
nfs-ganesha-nullfs-2.3.2-1.el6.x86_64
nfs-utils-lib-devel-1.1.5-11.el6.x86_64
nfs4-acl-tools-0.3.3-8.el6.x86_64
3.4 启动rpc服务和nfs服务(先启动rpc后启动nfs)
[root@nfs-server ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@nfs-server ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
3.5 设置开机自启动
[root@nfs-server ~]# chkconfig rpcbind on
[root@nfs-server ~]# chkconfig nfs on
[root@nfs-server ~]# chkconfig --list | egrep "nfs|rpcbind"
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfs-rdma 0:off 1:off 2:off 3:off 4:off 5:off 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3.6 建立和配置共享目录
[root@nfs-server ~]# mkdir /data
[root@nfs-server ~]# vim /etc/exports
/data 192.168.84.1/24(rw,sync,no_all_squash)
3.7 平滑加载nfs服务并检查
[root@nfs-server ~]# /etc/init.d/nfs reload
[root@nfs-server ~]# showmount -e localhost
Export list for localhost:
/data 192.168.84.1/24
4. NFS Client 安装
4.1 安装rpcbind服务
[root@nfs-client ~]# yum install rpcbinid -y
4.2 启动并检查服务,设置开机自动启动
[root@nfs-client ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@nfs-client ~]# chkconfig rpcbind on
[root@nfs-client ~]# chkconfig --list | grep rpcbind
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
4.3 挂载server端共享的文件
[root@nfs-client ~]# mount -t nfs 192.168.84.102:/data /tmp/
4.4 查看是否挂载成功
[root@nfs-client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
8.4G 1.1G 6.9G 14% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 477M 33M 419M 8% /boot
192.168.84.102:/data 8.4G 1.1G 6.9G 14% /tmp