欢迎,来自IP地址为:44.222.82.133 的朋友
在 Linux 世界里,有一对网络文件共享协议的卧龙凤雏,就是 samba 和 nfs。
samba 是一款开源的应用程序,工作在客户端、服务器架构下,提供跨平台的文件共享服务。即在 Linux 系统共享的文件,可以无差别的在 Windows 和 macOS 系统访问和使用。
nfs 是另一款应用非常广泛的共享协议,是(Network File Share)的缩写。与 samba 类似,nfs 也同样工作在客户端、服务器架构下,可以为多个远程用户提供文件共享服务。
本教程将演示如何在 RHEL 系 Linux 发行版(例如 CentOS、Fedora、Rocky Linux)系统安装配置 nfs 服务器。
NFS 服务
目前,nfs 服务有三个版本,最新版为 NFSv4,这个版本包含了一些新特性,例如互联网共享以及防火墙穿透等。另外,NFSv2 和 NFSv3 是较早的版本。
nfs 服务包含服务端和客户端,服务端包含以下主要文件:
- nfs-server:提供共享服务,允许 nfs 客户端连接至共享文件
- rpcbind:将 rpc 程序转换成通用地址
- nfs-idmap:完成用户名、组名至对应 ID 的互转
- portmap:将 rpc 程序号映射成 TCP 端口
- nfslock:一旦 nfs 服务器崩溃,则由 nfslock 接管 rpc 程序
配置 nfs 服务
以下是配置 nfs 服务的几个核心文件:
- /etc/exports:主要的配置文件,用于指定哪些文件或目录可以被远程访问
- /etc/fstab:此文件用于设置分区挂载,在 nfs 中用于指定共享文件的挂载点
- /etc/sysconfig/nfs:定义在运行 rpc 时使用的端口
安装 nfs 服务器
首先,使用如下命令安装所需要的软件包:
# dnf update # dnf install rpc-bind nfs-utils -y
安装成功后,使用如下命令启动服务、设置开机自动启动并查看服务状态:
# systemctl enable nfs-server rpcbind # systemctl start nfs-server rpcbind # systemctl status nfs-server rpcbind
可以看到,两个服务已经正常启用。
由于系统默认启用了防火墙软件,使用如下命令开启动 nfs 服务对应端口:
# firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} # firewall-cmd --reload
创建共享目录
nfs 的各项服务启动正常后,就可以创建共享目录了,这个目录可以被远程的 nfs 客户端所访问到。
示例我们将共享目录设置在”/data/nfs”,并且将该目录设置为全局读写权限,以方便进行演示,示例命令如下:
# mkdir -p /data/nfs # chmod -R 777 /data/nfs
发布共享目录
最后,我们要做的就是将共享目录发布出去以便 nfs 客户端连接。为了实现目录发布,我们需要创建一个”/etc/exports”文件,用于指定网络共享目录,文件内容如下:
/data/nfs 192.168.9.253/24(rw,no_root_squash)
此发布文件中设置的 nfs 服务器地址为示例服务器的地址,可以根据实际情况进行修改。而”no_root_squash”选项则表示如果客户端使用 root 权限连接共享目录时,不会对该用户进行权限降级。这样做的好处就是使用比较方便,当然缺点就是不安全。
文件创建成功,使用如下命令发布目录并且查看共享信息,命令如下:
# exportfs -rv # showmount -e localhost
配置 nfs 客户端
需要连接 nfs 服务器的主机,首先要安装 nfs 客户端工具,然后使用如下命令创建 nfs 共享的挂载目录并挂截共享:
# mkdir -p /data/nfsshare # mount -t nfs 192.168.209.253:/data/nfs /data/nfsshare/
挂载成功后,就可以在系统中查看该目录了,示例如下:
为了在开机时就将此共享目录连接至客户机系统,可以修改”/etc/fstab”文件,增加如下内容即可:
192.168.209.253:/data/nfs /data/nfsshare nfs defaluts 0 0
最后,可以验证共享目录。在客户机”/data/nfsshare”目录中创建一个文件 text.txt,之后,在服务端”/data/nfs”目录就可以看到该文件了,说明共享目录设置成功。