NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。
优点:
a.提供透明文件访问以及文件传输;
b.容易扩充新的资源或软件,不需要改变现有的工作环境;
c.高性能,可灵活配置。
缺点
a.局限性容易发生单点故障,及server机宕机了所有客户端都不能访问
b.在高并发下NFS效率/性能有限
c.客户端没用用户认证机制,且数据是通过明文传送,安全性一般
d.NFS的数据是明文的,对数据完整性不做验证
e.多台机器挂载NFS服务器时,连接管理维护麻烦
操作命令
安装NFS服务
nfs-server节点:
[root@nfs-server ~]# yum -y install nfs-utils rpcbind
- 1
nfs-client节点:
[root@nfs-client ~]# yum -y install nfs-utils rpcbind
- 1
NFS服务使用
在nfs-server节点创建一个用于共享的目录,命令如下:
[root@nfs-server ~]# mkdir /mnt/test
- 1
编辑NFS服务的配置文件/etc/exports,在配置文件中加入一行代码,命令如下(此IP为虚拟机对应IP):
[root@nfs-server ~]# vi /etc/exports
[root@nfs-server ~]# cat /etc/exports
/mnt/test 192.168.23.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
- 1
- 2
- 3
生效配置,命令如下:
[root@nfs-server ~]# exportfs -r
- 1
nfs-server端启动NFS服务,命令如下:
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# systemctl start nfs
- 1
- 2
nfs-server端查看可挂载目录,命令如下:
[root@nfs- server ~]# setenforce 0
[root@nfs- server ~]# systemctl stop firewalld
[root@nfs-server ~]# showmount -e 192.168.23.10
Export list for 192.168.23.10:
/mnt/test 192.168.23.0/24
- 1
- 2
- 3
- 4
- 5
查看
可以查看到共享的目录。
转到nfs-client端,在客户端挂载前,先要将服务器的SELinux服务和防火墙服务关闭,命令如下:
[root@nfs-client ~]# setenforce 0
[root@nfs-client ~]# systemctl stop firewalld
- 1
- 2
在nfs-client节点,进行NFS共享目录的挂载,命令如下:
[root@nfs-client ~]# mount -t nfs 192.168.23.10:/mnt/test /mnt/
- 1
无提示信息则表示成功,查看挂载情况。命令如下:
[root@nfs-client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 100G 9.5G 91G 10% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 17M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 783M 0 783M 0% /run/user/0
10.24.2.26:/mnt/test 100G 9.5G 91G 10% /mnt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
验证
验证NFS共享存储
在nfs-client节点的/mnt目录下创建一个abc.txt的文件并计算MD5值,命令如下:
[root@nfs-client ~]# cd /mnt/
[root@nfs-client mnt]# ll
total 0
[root@nfs-client mnt]# touch abc.txt
[root@nfs-client mnt]# md5sum abc.txt
d41d8cd98f00b204e9800998ecf8427e abc.txt
- 1
- 2
- 3
- 4
- 5
- 6
回到nfs-server节点进行验证,命令如下:
[root@nfs-server ~]# cd /mnt/test/
[root@nfs-server test]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 30 07:18 abc.txt
[root@nfs-server test]# md5sum abc.txt
d41d8cd98f00b204e9800998ecf8427e abc.txt
- 1
- 2
- 3
- 4
- 5
- 6