2-8单元-文件服务器三剑客之三 NFS 服务器

NFS 文件服务器简介

1.1)NFS (Network File System) —— 可以通过网络,让不同的机器,不同的操作系统可以共享彼此的的文件(share file)

NFS 服务的端口号 —— 2049

NFS 其他程序启动的额外端口号 —— 小于 1024 的端口 (默认 NFS 用来传输的端口是随机选择的)

备注:

  • Unix Like 主机连接到另外一台 Unix Like 主机来共享彼此的文件时,使用 NFS 要不 SAMBA 服务器快速且方便的多。
  • NFS 的配置很简单,只要启动 RPC (Remote Procedure Call,即 rpcbind 软件)远程过程调用协议,就能够搭建。

 

1.2)RPC (Remote Procedure Call)远程过程调用协议 的主要功能:

指定每个 NFS 功能所对应的 prot number ,并通知给客户端,让客户端可以连接到正确的端口上去。

RPC 固定使用 port 111 来监听客户端的需求,并向客户端响应正确的端口。

注意:

  • 启动 NFS 之前,RPC 就需要先启动,否则 NFS 会无法向 RPC 注册。
  • 若 RPC 重新启动,原先注册的数据会不见了,以此 RPC 重新启动后,它管理的所有服务都需要重新启动以重新向 RPC 注册。

 客户端 有访问 NFS 文件需求时,它向 NFS 服务器端 请求数据流程:

  1. 客户端会向服务器端的 FPC (port 111)发出文件访问功能的查询需求
  2. 服务器端找到对应的已注册的 NFS daemon 端口后,通知给客户端
  3. 客户端了解正确端口后,可直接与 NFS daemon 连接

注意: 不论是 客户端,还是 服务器端 ,要使用 NFS 时,两者都需要启动 RPC 才行!!

 

1.3)NFS 启动的 RPC  daemons

  • rpc.nfsd :管理客户端是否能够使用服务器文件系统挂载信息等,还包含判断这个登录用户的 ID
  • rpc.mount:管理 NFS 的文件系统,管理 NFS 共享目录的权限与安全设置的地方

服务启动脚本 —— /etc/init.d/nfs

1.4)NFS 的文件访问权限

在客户端已 NFS 使用服务器端的文件系统,还需具备:

  • NFS 服务器已经开放可写入的权限 (与 /etc/exports 设置有关)。
  • 实际的文件权限具有可写入 (w) 的权限。
  • 用户账号,即 UID 的相关身份。

注意: NFS 本身的服务并没有进行用户身份验证,所以 NFS 通常需要与 NIS 这个可以确认客户端与服务器端身份一致的服搭配使用,以免身份的错乱。

 

NFS Server 端的配置

2.1)所需软件

  • RPC 主程序:rpcbind
  • NFS 主程序:nfs-utils

软件安装:

  • rpm -qa | grep nfs
  • rpm -qa | grep rpcbind
  • dns install rpcbind
  • dns install nfs

2.2) NFS 的软件结构

  • 主要配置文件:/etc/exports                                         # 使用 vim 主动建立
  • NFS 文件系统维护命令:/usr/sbin/exportfs                # NFS Server 共享的目录卸载或重新共享等
  • 共享资源的日志文件:/var/lib/nfs/*tab                         # etab ,记录NFS 共享出来的目录的完整权限设定值;xtab,曾连接到此NFS 服务器的相关客户端的数据
  • 客户端查询服务器共享资源的命令:/usr/sbin/showmount          # 查看 NFS 共享出来的资源

2.3)启动 NFS

NFS 服务器端

  • systemctl start nfs-server.service                                            # 启动 nfs-sever 服务脚本
  • systemctl start firewalld.service                                               # 启动 火墙
  • firewall-cmd --permanent  --add-service=rpc-bind                  # 永久 添加信任服务 - rpc-bind
  • firewall-cmd --permanent  --add-service=mountd                   # 永久 添加信任服务 - mountd
  • firewall-cmd --permanent  --add-service=nfs                          # 永久 添加信任服务 - nfs 
  • firewall-cmd --reload                                                               # 重启 火墙
  • firewall-cmd --list-all                                                                # 列出 所有 火墙信息

services: cockpit dhcpv6-client mountd nfs rpc-bind ssh

客户端测试

  • showmount -e 172.25.254.20

Export list for 172.25.254.20:

2.4) /etc/exports 配置文件的语法参数

vim 主动建立主要配置文件:/etc/exports

  • vim /etc/exports

1 ) NFS 共享目录

NFS 服务器端

  • mkdir /nfs_westos                                         # 创建共享目录 /nfs_westos 
  • vim /etc/exports                                            # 编辑配置文件,权限设置

/nfs_westos     172.25.254.0(ro) 172.25.254.10(rw)         # 172.25.254.0 网段 (ro 只读)  172.25.254.10 主机(rw 可读写)

  • exportfs -rv                                                   # 生成 共享目录
  • chmod 777 /nfs_westos                               # 添加 共享目录权限

客户端测试

  • showmount -e 172.25.254.20

Export list for 172.25.254.20:
/nfs_westos 172.25.254.10,172.25.254.0

  • mount 172.25.254.20:/nfs_westos /mnt        # 挂载 NFS 共享目录 到客户端 /mnt
  • touch /mnt/file                                               # 172.25.254.20 对于 NFS 共享目录/nfs_westos 具有 rw 权限
  • ls -l /mnt/file

-rw-r--r-- 1 nobody nobody 0 Jun 25 15:49 file    # 默认访问的用户身份 nobody

 

2) 参数 no_root_squash   —— root 用户身份不再 映射为 nobody

  • vim /etc/exports                                            # 编辑配置文件,参数设置

/nfs_westos     172.25.254.0(ro) 172.25.254.10(rw,no_root_squash)

  • exportfs -rv                                                   #  修改生效

 客户端测试

3) 参数  anonuid=xxx,anongid=xxx   —— 指定用户身份

  • vim /etc/exports                                            # 编辑配置文件,参数设置

/nfs_westos     172.25.254.0(ro) 172.25.254.10(rw,anonuid=1000,anongid=1000)

  • exportfs -rv                                                   #  修改生效

客户端测试

4 )参数 sync —— 更改生效后,同步数据到服务器

5 )参数 async —— 实时同步数据到服务器

NFS + autofs

安装 autofs

  • dnf install autofs -y                      # 安装 autofs 服务,使用某共享目录时,自动挂载与卸载

测试 autofs 服务

  • ls -ld /net

ls: cannot access '/net': No such file or directory

  • systemctl start autofs.service                      # 启动 autofs.service 服务 之后
  • ls -ld /net

drwxr-xr-x 2 root root 0 Jun 25 16:43 /net         # 自动生成了 /net  目录

  • cd /net                                                           # 位于 /net  目录 中
  • ls
  • cd 172.25.254.20                                           #  直接自动挂载,访问 172.25.254.20

nfs_westos

  • cd nfs_westos
  • ls

file  file1  file3

自定义 NFS 共享目录的 挂载点 /westos/nfs

  • mkdir /westos/nfs                          # 创建 自定义挂载点目录
  • vim /etc/auto.master

/westos /etc/auto.nfs

  • vim /etc/auto.nfs

nfs -rw  172.25.254.20:/nfs_westos

  • systemctl restart autofs.service     # 重启 autofs 服务

测试

  • cd /westos/nfs                              # 自定义 挂载点 可以访问 NFS 共享目录
  • ls

file  file1  file3

  • cd                                               # 退出 autofs

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值