文章中“//”后皆为注释
NFS用于在网络上共享存储。
NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。
NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。
NFS服务的优缺点
1.2优点
a.节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问
b.简单容易上手
c.方便部署非常快速,维护十分简单
1.2缺点
a.容易发生单点故障,及server机宕机了所有客户端都不能访问
b.在高并发下NFS效率/性能有限
c.客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)
d.NFS的数据是明文的,对数据完整性不做验证
e.多台机器挂载NFS服务器时,连接管理维护麻烦
配置NFS需要准备两台虚拟机。一台服务端,一台客户端。
1.配置服务端NFS
在CentOS上使用NFS需要安装两个包。(nfs-utils和rpcbind),在使用yum安装nfs-utils时rpcbind也会一并安装。
# yum install -y nfs-utils
安装完后开始进行配置。
只需要编辑器配置文件/etc/exports。这个文件即可
# vim /etc/exports //进入到文件中是空白的什么也没有,我们只需要在里面加上一行文字即可。
/home/nfstestdir 192.168.134.0/24(rw,sync,all——squash,anonuid=1000,anongid=1000)//这个配置文件只有一行,分三部分,第一部分是本地要共享出去的目录,第二部分是允许访问的主机(可以是一个IP,也可以是一个IP段),第三部分就是括号中的权限选项。
//配置完成后的文件内容。
关于第三部分配置文件的选项有:
rw:表示读/写。
ro:表示只读。
sync:同步模式,表示内存中的数据实时写入磁盘。
async:非同步模式,表示把内存中的数据定期写入磁盘。
no_root_squash:加上这个选项后,root用户就会对共享的目录有用至高的权限控制,就像是对本机的目录操作一样。但这样安全性降低。
root_squash:表示不管使用NFS的用户是谁,其身份都会被限定为一个指定的普通用户身份。
all_squuash:表示不使用NFS的用户是谁,其身份都会被限定为一个指定的普通用户身份。
anonuid/anongid:要和root_squash以及all_squash选项一同使用,用于指定使用NFS的用户被限定后的uid和gid,但前提是本机的/etc/passwd中存在相应的uid和gid。
在编辑好配置文件后,创建相关目录并启动NFS服务。
[root@localhost ~]# mkdir /home/nfstestdir //创建相关目录
[root@localhost ~]# chmod 777 /home/nfstestdir //对相关目录的权限进行更改以免后面发生错误。
[root@localhost ~]# systemctl start rpcbind //启动rpc
[root@localhost ~]# systemctl start nfs //启动nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl stop firewalld.service //关闭防火墙,使客户端能后成功访问服务端
// 在启动NFS服务之前一定要先启动rpcbind服务。 前面已经说过NFS数据传输是基于RPC协议的,所以一定要先启动rpcbind才能使nfs正常启动。
在配置完服务端后,我们对客户端进行配置。
2.配置客户端。
我们服务端的IP地址为 192.168.134.140.客服端为192.168.134.129.
我们现在客服端安装(nfs-utils)包。
# yum install -y nfs-utils
在包安装完成后我们可以使用showmount的命令查看。
[root@localhost mnt]# showmount -e 192.168.134.140 //showmount -e IP 可以查看NFS共享的情况 IP 为服务端IP
Export list for 192.168.134.140: // 共享来自于192.168.134.140这个IP
/home/nfstestdir 192.168.134.0/24 //共享目录和信任主机的网段
然后我们需要在客户端上挂载NFS
[root@localhost mnt]# mount -t NFS 192.168.134.140:/home/nfstestdir /mnt //在挂在的时候我们必须加 [-t] nfs 这个选项用来指定挂在类型。 /mnt为挂载点。
查看挂载是否成功。
[root@localhost mnt]# df -h
我们可以看到 在/mnt目录下已经挂载成功了。
进入到/mnt/ 目录下创建测试文件。
[root@localhost mnt]# cd /mnt/
[root@localhost mnt]# touch yjlinux.txt
如果有错误提示 touch: "无法创建yjlinux.txt":权限不够说明前面没有对服务端/home/nfstestdir/进行授权。
[root@localhost mnt]# ls -l
total 0
-rw-r--r--. 1 yj yj 0 Dec 3 2020 yjlinux.txt
[root@localhost mnt]# id yj
uid=1000(yj) gid=1000(yj) groups=1000(yj)
[root@localhost mnt]#
即可