网络文件系统NFS用法详解以及NFS-nginx搭建

1.NFS

  • NFS:Network File System 网络文件系统,NFS和其他文件系统一样,是在Linux内核中实现的,因此NFS很难做到与Windows兼容。NFS共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。
  • NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。
  • 因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。
  • 那RPC和NFS之间又是如何之间相互通讯的?
    首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。

2.构建NFS远程共享储存

实验环境准备两台机器,支持多节点同时挂载以及并发写入
服务端:nfs-server 192.168.221.136
客户端:web1 192.168.221.138
centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)

#systemctl stop firewalld
#systemctl disable firewalld    
#setenforce 0

2.1.NFS-server操作

[root@nfs-server ~]# yum -y install rpcbind  //安装rpc协议的包
[root@nfs-server ~]# yum -y install nfs-utils //安装nfs服务。

启动服务

[root@nfs-server ~]# systemctl start nfs && systemctl enable nfs
[root@nfs-server ~]# systemctl start rpcbind && systemctl enable rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   //创建存储目录
[root@nfs-server ~]# vim /etc/exports   //编辑共享文件
/nfs-dir        192.168.221.0/24(rw,no_root_squash,sync)
这里表示共享给192.168.221.0/24网络地址段的所有IP读写的权限。

可选参数注释
ro:只读
rw:读写
* :表示共享给所有网段。
sync:所有数据在请求时写入共享
root_squash: 对于使用分享目录的使用者,如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者。
no_root_squash:使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。

[root@nfs-server ~]# exportfs -rv //刷新并输出详细配置。
[root@nfs-server ~]# systemctl enable nfs-server //制作开机启动

2.2.Web1操作

[root@web1 ~]# yum -y install rpcbind nfs-utils 
[root@web1 ~]# mkdir /qf //创建挂载点
[root@web1 ~]# mount -t nfs 192.168.221.136:/nfs-dir /qf  //挂载
-t:指定文件系统类型
[root@web1 ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  xfs        17G  1.1G   16G   7% /
tmpfs                    tmpfs      98M     0   98M   0% /run/user/0
192.168.221.136:/nfs-dir nfs4       36G  1.9G   34G   6% /qf
[root@web1 ~]# touch  /qf/test.txt
[root@web1 ~]# umount /qf  //取消挂载

制作开机挂载(fstab开机挂载)
[root@web1 ~]# cat >>/etc/fstab<<EOF
192.168.221.136:/nfs-dir  /qf   nfs  defaults   0 0
EOF
[root@web1 ~]# mount -a

rc.local开机自启动挂载(推荐)
[root@web1 ~]# chmod o+x /etc/rc.local 
[root@web1 ~]# echo '/usr/bin/mount -t nfs 192.168.221.136:/nfs-dir /qf' >>/etc/rc.local 
[root@web1 ~]# systemctl enable rc-local
[root@web1 ~]# df -Th
查看rpc信息
[root@web1 ~]# rpcinfo -p
查看NFS共享目录
[root@web1 ~]# showmount -e 192.168.221.136

3.NFS和FTP的区别

1

FTP和NFS是两种不同的网络文件传输协议,具有以下区别:

3.1.文件系统类型

FTP是一种基于客户端—服务器的协议,用于文件传输。NFS则是一种分布式文件系统协议,作为本地操作系统和远程文件系统之间的桥梁,可以实现跨平台文件共享。

3.2.传输速度和效率

由于FTP是基于客户端—服务器的协议,所以需要进行连接的建立和关闭,因此相对于NFS,FTP传输的速度较慢,效率也较低。而NFS则是通过一些标准和规定管理远程文件系统的,直接访问远程文件系统,传输速度和效率更高。

3.3.安全性

FTP协议的安全性比较差,数据传输时通常不加密,可能会被非法获取。而NFS使用一些安全机制来实现远程文件系统的访问和传输,因此相对于FTP,NFS更加安全可靠。

3.4.传输方式

FTP协议是通过FTP客户端和FTP服务器进行文件传输。而NFS通过共享文件系统的方式使用本地文件系统来挂载远程文件系统,实现文件共享。

3.5.支持的平台

FTP协议是一种常见的文件传输协议,广泛应用于所有操作系统平台。而NFS多用于UNIX和Linux中,虽然现在也有一些移植到其他平台的版本,但是还是没有FTP使用广泛。

4.NFS案例(NFS-nginx)

2

4.1.NFS-server操作

nfs-server:存放代码应用
安装组件:rpcbind,nfs-utils
IP:192.168.221.136

[root@nfs-server ~]# yum -y install rpcbind nfs-utils
启动服务
[root@nfs-server ~]# systemctl start nfs && systemctl enable nfs
[root@nfs-server ~]# systemctl start rpcbind && systemctl enable rpcbind
[root@nfs-server ~]# mkdir /nfs-data   //创建存储目录
[root@nfs-server ~]# vim /etc/exports  //编辑共享文件
/nfs-data        192.168.221.0/24(rw,no_root_squash,sync)
[root@nfs-server ~]#exportfs -rv

4.2.web:运行web服务

安装组件:nginx,rpcbind,nfs-utils
IP: 192.168.221.138

  1. 安装nginx
上传nginx源码包
[root@web1 ~]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
[root@web1 ~]# tar xzf nginx-1.22.1.tar.gz && cd nginx-1.22.1
[root@web1 ~]# ./configure --prefix=/usr/local/nginx
[root@web1 ~]# make && make install
[root@web1 ~]# /usr/local/nginx/sbin/nginx
  1. 安装nfs-utils,rcpbind
[root@web1 ~]# yum -y install rpcbind   nfs-utils
[root@web1 ~]# mkdir -p /data/wwwroot
[root@web1 ~]# showmount -e 192.168.221.136
[root@web1 ~]# mount -t nfs 192.168.221.136:/nfs-data /data/wwwroot
  1. 开机自启动
rc.local开机自启动挂载
[root@web1 ~]#chmod o+x /etc/rc.local 
[root@web1 ~]#echo '/usr/bin/mount -t nfs 192.168.221.136:/nfs-data /data/wwwroot' >>/etc/rc.local 
[root@web1 ~]#systemctl enable rc-local
  1. 在/data/wwwroot下写入数据,在nfs-server中看查存储情况
[root@nfs-server ~]# cat >>/data/wwwroot/index.html<<EOF
hello
EOF
  1. 修改nginx.conf配置,将挂载目录改为nginx网页工作目录
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
修改root  html;为 root /data/wwwroot;
location / {
  root   html;
  index  index.html index.htm;
}
如下:
location / {
 root   /data/wwwroot;
 index  index.html index.htm;
 }
  1. 保存,退出,重启nginx
[root@web1 ~]# /usr/local/nginx/sbin/nginx  -t
[root@web1 ~]# /usr/local/nginx/sbin/nginx  -s reload
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA548464

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值