NFS搭建部署基本使用

目录

1 NFS介绍

1.1 NFS架构概述

1.2 组成部分

1.3 工作流程

1.4 总结

2 NFS部署

2.1 server(服务端)配置详细方法

2.2 client(客户端)配置详细方法


1 NFS介绍

  1. NFS,全称Network File System,即网络文件系统,是一种分布式文件系统协议。
  2. 它允许用户在网络上共享文件,就像访问本地存储一样。
  3. NFS 主要用于 Unix/Linux 环境,但也可以通过第三方软件在 Windows 上实现支持。
  4. NFS 的核心优势在于,它能够让多台机器、多个操作系统共享彼此的数据,从而实现数据的集中管理和高效访问。
  • 在实际应用中,NFS 广泛应用于各种需要高性能文件访问的场景,如企业级数据存储、云计算环境等。

1.1 NFS架构概述

NFS架构主要由三部分组成:NFS服务器、客户端和传输协议。

这些组件共同工作,实现文件在网络中的共享和访问。

1.2 组成部分

  1. NFS服务器
    • 核心作用
      • NFS架构的核心部分,负责管理远程文件系统并将其共享给网络中的客户端。
    • 主要进程
      • nfsd
        • NFS的守护进程,监听在2049/tcp和2049/udp端口上,用于理解客户端发起的RPC请求,并将其转交给本地内核,而后存储在指定的文件系统上。
      • mountd
        • 用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,若验证通过则允许访问(发放一个令牌,持令牌去找nfsd)。
      • idmapd
        • 实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但在访问时能以本地用户的身份去访问。
      • portmapper
        • NFS服务器的RPC服务,监听于111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC),并告诉客户端NFS服务的端口号。
    • 配置文件
      • NFS的主配置文件是/etc/exports,在此文件中可以定义NFS系统的输出目录(即共享目录)、访问权限和允许访问的主机等参数。
  2. 客户端
    • 核心作用
      • 访问远程文件系统的设备,可以是计算机、手机或其他智能设备。
      • 客户端通过挂载远程文件系统,使得用户可以像访问本地文件一样访问远程文件。
    • 主要操作
      • 客户端在访问NFS服务器上的文件时,会通过RPC向服务器发送请求。这些请求包括文件的读写、修改等操作。
  3. 传输协议
    • 核心作用
      • NFS使用TCP/IP协议进行通信,并基于RPC(Remote Procedure Call,远程过程调用)协议来传输数据和控制信息。
    • RPC协议
      • RPC协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。它假定某些传输协议(如TCP或UDP)的存在,为通信程序之间携带信息数据。

1.3 工作流程

  1. 客户端发起请求
    1. 客户端需要访问NFS服务器上的文件时,通过RPC协议向服务器发送请求。
  2. 服务器处理请求
    1. NFS服务器收到请求后,由portmapper进程告诉客户端nfsd服务的端口号。
    2. 客户端通过该端口号向nfsd发送具体的文件访问请求。
  3. 验证与权限检查
    1. mountd进程验证客户端是否有权限访问请求的文件或目录。
    2. 验证通过后,nfsd进程执行请求的操作(如读写文件)。
  4. 执行操作并返回结果
    1. nfsd进程将操作结果返回给客户端。
    2. 客户端收到结果后,可以继续进行后续的文件访问操作。

1.4 总结

NFS架构通过NFS服务器、客户端和传输协议(主要是TCP/IP和RPC)的紧密协作,实现了文件在网络中的高效共享和访问。这种架构不仅提高了数据访问的灵活性和便捷性,还通过RPC协议确保了数据传输的可靠性和安全性。在实际应用中,NFS广泛应用于Unix/Linux系统之间的文件共享,特别是在需要高性能文件访问的场景中。

 


2 NFS部署

2.1 server(服务端)配置详细方法

  • 配置源仓库
[root@rehel9 ~]# cat /etc/yum.repos.d/rhel9.repo 
[rhel9_AppStream]
name=AppStream
baseurl=file:///opt/iso/AppStream
gpgcheck=1
gpgkey=file:///opt/iso/RPM-GPG-KEY-redhat-release
[rhel9_BaseOS]
name=BaseOS
baseurl=file:///opt/iso/BaseOS
gpgcheck=1
gpgkey=file:///opt/iso/RPM-GPG-KEY-redhat-release

[root@rehel9 ~]# ls /opt/iso/
AppStream  BaseOS  RPM-GPG-KEY-redhat-beta  RPM-GPG-KEY-redhat-release

  • 建立源数据库缓存
[root@rehel9 ~]# dnf clean all && dnf makecache
正在更新 Subscription Management 软件仓库。
12 文件已删除
AppStream                                                                                          239 MB/s | 5.8 MB     00:00    
BaseOS                                                                                             227 MB/s | 1.7 MB     00:00    
元数据缓存已建立。
  • 查找NFS服务包
[root@rehel9 ~]# dnf search nfs
正在更新 Subscription Management 软件仓库。
上次元数据过期检查:0:02:34 前,执行于 2024年07月01日 星期一 15时26分58秒。
===================================================== 名称 和 概况 匹配:nfs ======================================================
libnfsidmap.i686 : NFSv4 User and Group ID Mapping Library
libnfsidmap.x86_64 : NFSv4 User and Group ID Mapping Library
libstoragemgmt-nfs-plugin.x86_64 : Files for NFS local filesystem support for libstoragemgmt
nfs-utils.x86_64 : NFS utilities and supporting clients and daemons for the kernel NFS server
nfs-utils-coreos.x86_64 : Minimal NFS utilities for supporting clients
nfs4-acl-tools.x86_64 : The nfs4 ACL tools
pcp-pmda-nfsclient.x86_64 : Performance Co-Pilot (PCP) metrics for NFS Clients
sssd-nfs-idmap.x86_64 : SSSD plug-in for NFSv4 rpc.idmapd
========================================================= 名称 匹配:nfs ==========================================================
texlive-mfnfss.noarch : Packages to typeset oldgerman and pandora fonts in LaTeX
texlive-psnfss.noarch : Font support for common PostScript fonts
  • 安装nfs服务
[root@rehel9 ~]# dnf install nfs-utils.x86_64 -y

[root@rehel9 ~]# rpm -qa | grep nfs
libnfsidmap-2.5.4-10.el9.x86_64
nfs-utils-2.5.4-10.el9.x86_64
sssd-nfs-idmap-2.6.2-2.el9.x86_64

  • 配置共享文件
[root@rehel9 ~]# cat >> /etc/exports << EOF
> /media *(rw)
> /rehel 192.168.210.0/24(rw)
> EOF

[root@rehel9 ~]# chmod 777 /media/
[root@rehel9 ~]# chmod 777 /rehel/

  • 查看服务状态
[root@rehel9 ~]# systemctl list-unit-files | grep nfs
proc-fs-nfsd.mount                                                        static          -
var-lib-nfs-rpc_pipefs.mount                                              static          -
nfs-blkmap.service                                                        disabled        disabled
nfs-idmapd.service                                                        static          -
nfs-mountd.service                                                        static          -
nfs-server.service                                                        disabled        disabled
nfs-utils.service                                                         static          -
nfsdcld.service                                                           static          -
nfs-client.target                                                         enabled         disabled

[root@rehel9 ~]# systemctl enable nfs-server.service --now
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

[root@rehel9 ~]# systemctl list-unit-files | grep nfs
proc-fs-nfsd.mount                                                        static          -
var-lib-nfs-rpc_pipefs.mount                                              static          -
nfs-blkmap.service                                                        disabled        disabled
nfs-idmapd.service                                                        static          -
nfs-mountd.service                                                        static          -
nfs-server.service                                                        enabled         disabled
nfs-utils.service                                                         static          -
nfsdcld.service                                                           static          -
nfs-client.target                                                         enabled         disabled
  • 配置防火墙策略
[root@rehel9 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  
[root@rehel9 ~]# rpcinfo -p | grep nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    
[root@rehel9 ~]# firewall-cmd --permanent --add-service=nfs
success
[root@rehel9 ~]# firewall-cmd --permanent --add-port=2049/tcp
success
[root@rehel9 ~]# firewall-cmd --permanent --add-source=192.168.210.0/24 
success
[root@rehel9 ~]# firewall-cmd --reload
success

[root@rehel9 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 192.168.210.0/24
  services: cockpit dhcpv6-client nfs ssh
  ports: 2049/tcp
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
 
[root@rehel9 ~]# setenforce 0
[root@rehel9 ~]# getenforce 
Permissive

2.2 client(客户端)配置详细方法

  • 安装nfs-utlis
[root@locahost ~]# dnf update -y

[root@locahost ~]# yum install nfs-utils.x86_64 -y

[root@locahost ~]# rpm -qa | grep nfs
libnfsidmap-2.5.4-25.el9.x86_64
nfs-utils-2.5.4-25.el9.x86_64
sssd-nfs-idmap-2.9.4-6.el9_4.x86_64

  • 查看服务状态
[root@locahost ~]# systemctl list-unit-files --type=service | grep nfs
nfs-blkmap.service                         disabled        disabled
nfs-idmapd.service                         static          -
nfs-mountd.service                         static          -
nfs-server.service                         disabled        disabled
nfs-utils.service                          static          -
nfsdcld.service                            static          -

[root@locahost ~]# systemctl enable nfs-server.service --now
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

[root@locahost ~]# systemctl list-unit-files --type=service | grep nfs
nfs-blkmap.service                         disabled        disabled
nfs-idmapd.service                         static          -
nfs-mountd.service                         static          -
nfs-server.service                         enabled         disabled
nfs-utils.service                          static          -
nfsdcld.service                            static          -
  • 设置防火墙状态
[root@locahost ~]# rpcinfo -p | grep nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl


[root@locahost ~]# firewall-cmd --permanent --add-service=nfs
success
[root@locahost ~]# firewall-cmd --permanent --add-port=2049/tcp
success
[root@locahost ~]# firewall-cmd --permanent --add-source=192.168.210.0/24
success
[root@locahost ~]# firewall-cmd --reload 
success

[root@locahost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 192.168.210.0/24
  services: cockpit dhcpv6-client nfs ssh
  ports: 2049/tcp
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

  • 挂在共享目录到本地
[root@locahost ~]# mount 192.168.210.129:/media /mnt
[root@locahost ~]# mount 192.168.210.129:/rehel /media

  1. 查看磁盘空间
[root@locahost ~]# df -Th
Filesystem                   Type      Size  Used Avail Use% Mounted on
devtmpfs                     devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs                        tmpfs     3.8G     0  3.8G   0% /dev/shm
tmpfs                        tmpfs     1.5G  9.7M  1.5G   1% /run
/dev/sda4                    xfs        96G   13G   83G  14% /
/dev/sda2                    xfs       495M  238M  258M  48% /boot
/dev/sda1                    vfat      200M  7.0M  193M   4% /boot/efi
tmpfs                        tmpfs     766M  104K  766M   1% /run/user/0
192.168.210.134:/rhome/alice nfs4       96G   13G   83G  14% /home/alice
  • 查看时都可用
#cliten(客户端)
[root@locahost ~]# mkdir /{mnt/txt,media/txt}
[root@locahost ~]# touch /{mnt/txt/abc_1.txt,media/txt/abc_2.txt}
[root@locahost ~]# ls /{mnt/txt/,media/txt}
/media/txt:
abc_2.txt

/mnt/txt/:
abc_1.txt

#service(服务端)
[root@rehel9 ~]# ls /{rehel,media}
/media:
txt

/rehel:
txt

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu上部署NFS,你可以按照以下步骤进行操作: 1. 首先,确保你的系统已经安装了NFS服务。你可以使用以下命令安装NFS服务: ``` sudo apt install nfs-kernel-server portmap ``` 2. 创建一个用于共享的目录。你可以使用以下命令创建一个目录: ``` mkdir /home/XXX/nfs-shared ``` 3. 修改共享目录的权限。你可以使用以下命令将目录权限设置为777: ``` sudo chmod -R 777 /home/XXX/nfs-shared ``` 4. 启动NFS服务。你可以使用以下命令启动NFS服务: ``` sudo /etc/init.d/nfs-kernel-server start ``` 5. 在客户端上挂载NFS共享目录。你可以使用以下命令将NFS共享目录挂载到客户端的/mnt目录: ``` sudo mount -t nfs <服务器IP地址>:/home/XXX/nfs-shared /mnt -o nolock ``` 其中,<服务器IP地址>应替换为你的服务器的IP地址。 请注意,以上步骤仅供参考,具体操作可能因系统版本和配置而有所不同。在进行部署之前,请确保你已经仔细阅读了相关文档并了解了你的系统环境。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Ubuntu下搭建NFS](https://blog.csdn.net/vivo01/article/details/126967376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ubuntu: 搭建 NFS 服务器](https://blog.csdn.net/JiMoKuangXiangQu/article/details/130562573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值