简言
NFS 网络文件系统(Network File System)是一种分布式文件系统协议,通过网路共享远程目录。使用NFS,可以在系统上挂载远程目录,并像对待本地文件一样使用远程计算机上的文件。
默认情况下,NFS协议未加密,并且与Samba不同,它不提供用户身份验证。客户端的IP地址或主机名限制了对服务器的访问。
主机清单
HOSTNAME | IP | SYSTEM OS |
---|---|---|
nfs-server | 192.168.23.32 | CentOS Linux release 8.1.1911 |
nfs-client-linux | 192.168.4.200 | CentOS Linux release 7.6.1810 |
nfs-client-windows | 192.168.143.129 | Windows Server 2016 Datacenter |
NFS-Server
安装nfs
1 | [root@nfs-server ~]# dnf install nfs-utils |
查看nfs版本
1 | [root@nfs-server ~]# rpm -qa | grep nfs-utils |
开启nfs服务
1 | [root@nfs-server /]# systemctl start nfs-server |
查看nfs支持的版本信息
1 | [root@nfs-server /]# cat /proc/fs/nfsd/versions |
创建nfs共享目录
1 | mkdir -p /mnt/{nfs1,nfs2} |
/etc/exports 是 nfs 默认的配置文件
nfs1 读写
nfs2 只读
nfs3 只读
1 | [root@nfs-server /]# vim /etc/exports |
/etc/exports各项参数说明
1 | rw: 可读写 |
**查看当前配置为nfs共享的目录及其状态 **
exportfs参数
1 | -r: Reexport all directories: 重新导出所有目录 |
设置文件夹的权限
1 | chown -R nobody /mnt/{nfs1,nfs2} |
防火墙配置
1 | [root@nfs-server /]# firewall-cmd --add-service=nfs --permanent |
NFS-client-linux
showmount
使用showmount命令测试NFS服务器的输出目录状态,showmount命令的基本格式为:
showmount [选项] NFS服务器名称或地址
-a:显示指定的NFS服务器的所有客户端主机及其所连接的目录;
-d:显示指定的NFS服务器中已被客户端连接的所有输出目录;
-e:显示指定的NFS服务器上所有输出的共享目录。
1 | [root@kafka-node2 ~]# showmount -e 192.168.23.32 |
mount挂载
mount服务器名或IP地址:输出目录 本地挂载目录
1 | [root@kafka-node2 /]# mkdir /mnt/data |
umount卸载
1 | [root@kafka-node2 /]# umount /mnt/data/ |
NFS-client-windows
安装NFS客户端
mount -h验证客户端是否安装成功
挂载
1 | mount \\192.168.23.32\mnt\nfs1 x: |
卸载
1 | umount x: |
NFS服务器uid/gid映射
在集群环境中,每台主机相同用户账号,但是分配的uid/gid是不同的。当多主机后端的存储为同一个共享存储,这时就会遇到一个问题,NFS协议是通过uid来控制文件读写权限的,主机中用户写入的文件uid与其他主机不同,就无法被其他主机读取或修改,出现权限错误的问题。
创建用户
1 | useradd -u 1234 -s /sbin/nologin -M nfsuser |
-u : 指定用户uid
-M: –no-create-home 不创建用户home目录
-s : –shell 指定用户的shell
修改用户id和组id
1 | usermod -u 1234 nfsusergroupmod -g 1234 nfsuser |
创建nfs共享目录
1 | mkdir /data/nfschown -R nfsuser:nfsuser /data/nfs |
编辑nfs配置文件
1 | [root@nfs-server /]# vi /etc/exports |