linux中NFS的搭建

NFS的搭建

一、什么是NFS服务器
  它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
  NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;而 NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间的传输数据就要有相对应的网络端口;基本上NFS服务器的端口开在2049上,但是由于文件系统较为复杂,NFS其他程序需要开启一些额外的端口,而这些额外端口又是随机的;那么客户端如何去知道这些额外随机端口呢?
通过远程过程调用(Remote Procedure Call,RPC)协议来实现!
二、RPC与NFS如何通讯
  因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。
通讯步骤:
1)首先服务器端启动RPC服务,并开启111端口;
2)服务器端启动NFS服务,并向RPC注册端口信息;
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口;
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端;
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
三、部署前准备
测试机1(服务端):

  1. IP:192.168.100.10
  2. 系统:centos7
  3. 关闭防火墙和selinux
    测试机2(客户端):
  4. IP:192.168.100.20
  5. 系统:centos7
  6. 关闭防火墙和selinux

四、NFS服务端配置
1、安装所需安装包和依赖包

[root@ftp_nfs1 ~]# yum -y install nfs-utils rpcbind
[root@ftp_nfs1 ~]# systemctl start rpvbind
[root@ftp_nfs1 ~]# systemctl start nfs
[root@ftp_nfs1 ~]# systemctl enable rpvbind
[root@ftp_nfs1 ~]# systemctl enable nfs

2、创建挂载目录,并更改所属用户和所属组

[root@ftp_nfs1 ~]# mkdir /nfs
[root@ftp_nfs1 ~]# chown -R nobody.nobody /nfs

3、nfs配置文件/etc/exports的格式

NFS的共享目录	NFS客户端地址1(参数1,参数2,……)
NFS的共享目录	NFS客户端地址2(参数1,参数2,……)

NFS客户端地址型

客户端地址具体地址
授权单一户端访问NFS192.168.100.10
授权整个网段(最常见)192.168.100.0/24
授权某个域名客户端访问(一般不使用)nfs.linux.com
授权整个域名客户端访问(一般不使用)*.linux.com

NFS配置文件的常见参数

参数作用
rw表示可读写权限
ro表示只读权限
sync请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回,优点:数据安全不会丢,缺点:性能比不启用该参数要差
async写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)
no_root_squash访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个配置原本为无盘用户准备的。用户应避免使用!
root_squash对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。
all_squash不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用可以确保大家写入的数据的权限是一样的。但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以

例:

[root@ftp_nfs1 ~]# cat /etc/exports
/nfs/	192.168.100.0/24(rw,sync,no_root_squash)

重新加载nfs服务生效配置

[root@ftp_nfs1 ~]# systemctl reload nfs
[root@ftp_nfs1 ~]# exportfs -rv

使用showmount检查是否成功配置

[root@ftp_nfs1 ~]# showmount -e localhost
Export list for localhost:
/nfs 192.168.100.0/24

可以看到/nfs目录已经成为100网段的共享目录

五、客户端配置

1、安装所需软件(安装nfs-utils软件的目的是为了使用showmount等功能,所以客户端最好也装上,但是不启动NFS服务)

[root@ftp_nfs2 ~]# yum -y install nfs-utils rpcbind
[root@ftp_nfs2 ~]# systemctl start rpvbind
[root@ftp_nfs2 ~]# systemctl enable rpvbind

2、创建挂载目录,并更改所属用户和所属组

[root@ftp_nfs1 ~]# mkdir /nfs

3、使用showmount进行测试是否能够连接到服务端

[root@ftp_nfs2 ~]# showmount -e 192.168.100.10
Export list for 192.168.100.10:
/nfs 192.168.100.0/24

4、进行挂载使用

[root@ftp_nfs2 ~]# mount -t nfs 192.168.100.10:/nfs /nfs

六、测试是否能够同步
在客户端上执行

[root@ftp_nfs2 ~]# cd /nfs/
[root@ftp_nfs2 nfs]# touch 1.txt

到客户端上查看

[root@ftp_nfs1 ~]# ll /nfs/
total 0
-rw-r--r-- 1 root root 0 Mar 11 21:30 1.txt

七、永久挂载
方法1:
/etc/rc.local将挂载命令写到这个里面,每次开机都会自动去执行命令!

[root@ftp_nfs2 nfs]# vim /etc/rc.local

mount -e nfs 192.168.100.10:/nfs /nfs

方法2:
编辑/etc/fstab,把挂载信息写进去,每次开机后就会自动挂载上去了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值