Centos7搭建NFS文件共享服务器以及客户端连接

最近在学习Kubernetes的时候需要将pod内的数据进行持久化,既然要持久化就需要从k8s集群外引入存储,所以很自然就想到了NFS。这一节记录下Centos7中搭建NFS文件服务器的过程。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

NFS

和Windows中的SMB协议很像,NFS(Network File System)是类Unix系统中的文件共享协议。目的就是将服务端的一个目录分享到指定网络,网络内的客户端可以将共享出来的目录锚定到本地的一个目录,像对待本地磁盘一样操作远程目录。

SMB和NFS这两种协议在Windows和Linux中都可以混合使用,只不过SMB通常用作Windows,而NFS通常用作Linux。

NFS和RPC

RPC(Remote Procedure Call)是一个端口转发小插件,是NFS的一个辅助工具。

因为NFS支持的功能相当多,而不同的功能会使用不同的端口来传输数据,因此NFS的功能对应的端口很多而且并不固定。客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的一种服务。RPC会收集NFS所使用的端口,同时对外统一开放111端口。客户端访问111端口就知道要去哪个端口访问NFS服务。

所以在启动NFS之前,首先要启动RPC,否则NFS就无法向RPC服务注册。另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效。

安装

所以安装就非常简单,分别安装NFS和RPC两个服务即可

yum install -y nfs-utils rpcbind   

配置

NFS的配置文件在/etc/exports,这是一个空文件,需要手动输入内容。每一行代表一条NFS分享目录及其配置,格式如下

export host(options)

注意host和后面的括号之间没有任何空格,不然会出现权限配置问题

其中

  • export - 被分享的目录
  • host - 目标设备,通常是一个网段
  • options - 共享权限参数

如果针对不同网段要设置不同的权限,可用如下方法

export host1(options1) host2(options2) host3(options3)

其中的共享权限参数可选如下的一个或多个

参数说明
ro(默认)客户端只读权限
rw客户端有读写权限
sync(默认)如果有写动作未完成,NFS服务端不会进行读操作
async允许异步写操作
root_squash(默认)将客户端的root用户变为服务端的nfsnobody用户进行操作
no_root_squash取消root_squash操作
all_squash将客户端的所有用户都变为服务端的nfsnobody用户进行操作

首先创建用于分享的文件夹

mkdir -p /share/nfs

然后添加如下的权限到文件中

/share/nfs 172.29.0.0/16(rw,sync,root_squash)

之后就可以启动服务了,记住先启动RPC再启动NFS

systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server

看到111端口起来表明可以被连接了,同时记得防火墙允许INPUT的111端口。

Linux客户端连接

在需要访问的客户端也安装nfs-utils,但是并不需要启动。然后可以使用showmount命令查看远程的分享信息

[root@k8s-node1 hostpath]# showmount -e 172.29.56.177
Export list for 172.29.56.177:
/share/nfs 172.29.0.0/16

其中几个常用参数含义如下

参数含义
-e显示远程机器的分享信息
-a显示本机的NFS连接信息
-v显示版本信息

然后创建一个用于文件夹做为锚点

[root@k8s-node1 hostpath]# cd /mnt
[root@k8s-node1 mnt]# mkdir nfs
[root@k8s-node1 mnt]# mount -t nfs 172.29.56.177:/share/nfs /mnt/nfs

在服务端创建一个文件,如果发现客户端锚点也出现文件这说明锚定成功。并且会发现文件的权限和拥有者和组都是和服务端一样的,所以要注意权限的设置。

当然上面用mount命令的方式只是临时的,可以编辑/etc/fstab文件达到永久锚定的目的,添加如下一行

172.29.56.177:/share/nfs /mnt/nfs     nfs    defaults  0 0

Windows10客户端连接

网上有很多类似的文章,首先要打开NFS客户端服务,然后挂载网络硬盘。我试了很多方法,一直会报网络错误53。

Network Error - 53

不管我修改服务端insecure还是各种方式连接都会报错,后来放弃。告诉自己,Linux乖乖用NFS,Windows乖乖用SMB。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值