欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-13 22:48:22
...

最近在学习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命令查看远程的分享信息

[[email protected] 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 显示版本信息

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

[[email protected] hostpath]# cd /mnt
[[email protected] mnt]# mkdir nfs
[[email protected] 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。

相关标签: 服务器搭建