1、NFS服务简介
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 NFS最早是由Sun公司发展出来的,简单的来说:它就是是可以透过网络,让不同的主机、不同的操作系统可以共享存储。
2、NFS工作原理图
3、NFS的安装和配置
(1)准备阶段
nfs网络文件系统一般需要的是两个服务器,一个是客户端,一个为服务端。客户端和服务端处在同一个网络段内。同时我们也可以是使用我们的本地笔记本或者台式机进行测试。但是在测试的阶段我们需要输入mount nfs服务端的IP地址:服务端系统挂载目录名称 nfs文件盘符名称:
(2)下载安装
在客户端和服务端都需要安装nfs-utils 和rpcbind两个文件。我们可以使用yum的安装方式进行安装或者是下载rpm文件包进行安装;命令如下:
yum install -y nfs-utils rpcbind;一般来说在linux系统下面nfs-utils是默认安装的,我们这里只需要安装rpcbind即可。
如果不知道服务器上是否安装了nfs-utils和rpcbind两个文件,我们可以使用
rpm -qa nfs-utils rpcbind查看服务器上是否安装了该文件,如果安装则显示如下图所示:出现如下图所示的文件,证明你的服务端上已经将两个文件都安装好;
(3)编辑配置文件
#编辑exports文件
[root@localhost ~]# vim /etc/exports
#添加一行如下内容
/home/nfstestdir 192.168.1.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
#指定共享的机器ip地址段
#:wq 保存退出
#创分享出去的目录
[root@localhost ~]# mkdir /home/nfstestdir
#设置权限
[root@localhost ~]# chmod 777 /home/nfstestdir/
- 启动服务
#查看端口
[root@localhost ~]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
#监听111 端口
#可以确定服务启动了
#启动nfs服务
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# ps aux | grep nfs
root 1552 0.0 0.0 0 0 ? S< 17:05 0:00 [nfsd4_callbacks]
root 1558 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1559 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1560 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1561 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1562 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1563 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1564 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1565 0.0 0.0 0 0 ? S 17:05 0:00 [nfsd]
root 1569 0.0 0.0 112676 980 pts/0 S+ 17:05 0:00 grep --color=auto nfs
[root@localhost ~]# ps aux | grep rpc
root 503 0.0 0.0 0 0 ? S< 16:51 0:00 [rpciod]
rpcuser 1538 0.0 0.0 42376 1752 ? Ss 17:04 0:00 /usr/sbin/rpc.statd
rpc 1539 0.0 0.0 64956 1352 ? Ss 17:04 0:00 /sbin/rpcbind -w
root 1540 0.0 0.0 42564 944 ? Ss 17:04 0:00 /usr/sbin/rpc.mountd
root 1541 0.0 0.0 43844 644 ? Ss 17:05 0:00 /usr/sbin/rpc.idmapd
root 1571 0.0 0.0 112680 980 pts/0 S+ 17:06 0:00 grep --color=auto rpc
#rpc是nfs关联服务
#设置开机启动
[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
NFS配置选项说明:
[root@localhost ~]# cat /etc/exports
/home/nfstestdir 192.168.1.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
含义:
rw: 读写
ro: 只读
sync: 同步模式,内存数据实时写入磁盘
async :非同步模式
no_root_squash: 客户端挂载NFS共享目录后,root用户不受约束,权限很大
root_squash: 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
all_squash: 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
anonuid/anongid: 和上面几个选项搭配使用,定义被限定用户的uid和gid
客户端挂载(linux服务器版本)
- 安装 nfs-utils
- 设置IP为NFS服务端ip
[root@taoyun ~]# showmount -e 192.168.1.142
Export list for 192.168.1.142:
/home/nfstestdir 192.168.1.0/24
#查看是否有权限
#需要关闭防火墙 两边都关闭
#systemctl stop firewalld
#getenforce
- 挂载
[root@localhost ~]# mount -t nfs 192.168.1.142:/home/nfstestdir /mnt/
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 125M 890M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.1.142:/home/nfstestdir 17G 6.8G 11G 40% /mnt
#最后一行为远程服务端
测试(windows客户端挂载):
根据以上不走进行安装完成之后,我们需要对我们的配置好的nfs进行测试,我们可以在进行我们使用的初始化笔记本的上进行初始化测试,输入mount nfs服务器的ip地址:文件存放路劲 盘符名称:结束即可在我们的笔记本上出现一个类似于C盘一样的盘符,这样我们就可以找到我们的想要找的文件,如下图所示;