0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux配置NFS文件共享详解

马哥Linux运维 来源:51CTO 2023-12-27 09:53 次阅读

一、NFS简介

NFS是Network File System的缩写,是一种分布式文件系统协议,用于在计算机网络上共享文件。它允许客户端计算机通过网络远程访问和处理远程服务器上的文件和目录。

NFS最初由Sun Microsystems开发并在1984年发布,被设计为可在不同操作系统和硬件平台之间共享文件。它基于客户-服务器模型,客户端通过网络连接到NFS服务器,并使用NFS协议访问远程文件系统。

使用NFS,客户端可以像访问本地文件一样访问远程文件。这使得多个计算机之间可以方便地共享文件,并实现文件的统一管理。

NFS协议支持多种操作,包括读取、写入、创建、删除和修改文件和目录。它还提供了文件和目录的权限管理机制,以确保只有具有适当权限的用户才能访问和修改文件。

NFS是一个成熟、广泛应用的文件共享协议,被用于各种操作系统和应用场景,例如Unix和Linux系统中的文件共享、云存储服务和虚拟化环境中的文件传输等。

二、NFS配置

2.1 实验拓扑

如下图,两台Linux主机通过e0网卡接入到同一网络,Net1已配置NAT服务,两台主机之间互通且可以访问Internet,e1网卡接入到Mgmt网络,方便远程管理

cc511fb0-a3d8-11ee-8b88-92fbcf53809c.jpg

2.2 实验规划

主机-角色 主机名 操作系统
Rocky-Server nfs-server Rocky Linux 8.9 (Green Obsidian)
Rocky-Client nfs-client Rocky Linux 8.9 (Green Obsidian)

2.3 配置服务端

安装NFS软件包:

[root@nfs-server ~]# yum -y install nfs-utils    # 安装nfs-utils软件包
[root@nfs-server ~]# 
[root@nfs-server ~]# rpm -qa | grep nfs    # 查看nfs软件包
libnfsidmap-2.3.3-59.el8.x86_64
nfs-utils-2.3.3-59.el8.x86_64
sssd-nfs-idmap-2.9.1-4.el8_9.x86_64
[root@nfs-server ~]# 
[root@nfs-server ~]# rpm -qc nfs-utils    # 查看nfs-utils软件包的配置文件
/etc/gssproxy/24-nfs-server.conf
/etc/modprobe.d/lockd.conf
/etc/nfs.conf
/etc/nfsmount.conf
/etc/request-key.d/id_resolver.conf
/var/lib/nfs/etab
/var/lib/nfs/rmtab

在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限:

[root@nfs-server ~]# mkdir /nfsfile    # 创建目录
[root@nfs-server ~]# 
[root@nfs-server ~]# chmod 777 /nfsfile    # 赋予权限
[root@nfs-server ~]# 
[root@nfs-server ~]# ls -ld /nfsfile    # 查看目录权限
drwxrwxrwx. 2 root root 6 Dec 25 22:40 /nfsfile
[root@nfs-server ~]# 
[root@nfs-server ~]# echo 'This is a nfs shared folder.' > /nfsfile/README    # 写入一个文本文件

NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容,我们可以通过“rpm -qf”命令查看一下该配置文件是由哪个软件包安装提供的:

[root@nfs-server ~]# ls -l /etc/exports
-rw-r--r--. 1 root root 0 Sep 10  2018 /etc/exports
[root@nfs-server ~]# 
[root@nfs-server ~]# rpm -qf /etc/exports
setup-2.12.2-9.el8.noarch    # 查看到“/etc/exports”文件由这个软件包提供
[root@nfs-server ~]# 
[root@nfs-server ~]# rpm -qi setup    # 查看“setup”软件包信息
Name        : setup
Version     : 2.12.2
Release     : 9.el8
Architecture: noarch
Install Date: Thu 14 Dec 2023 01:10:40 PM CST
Group       : System Environment/Base
Size        : 724747
License     : Public Domain
Signature   : RSA/SHA256, Thu 12 Jan 2023 10:49:46 AM CST, Key ID 15af5dac6d745a60
Source RPM  : setup-2.12.2-9.el8.src.rpm
Build Date  : Wed 30 Nov 2022 01:24:15 PM CST
Build Host  : ord1-prod-a64build002.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager    : infrastructure@rockylinux.org
Vendor      : Rocky
URL         : https://pagure.io/setup/
Summary     : A set of system configuration and setup files
Description :
The setup package contains a set of important system configuration and
setup files, such as passwd, group, and profile.

我们可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数”的格式,定义要共享的目录与相应的权限。

例如,如果想要把/nfsfile目录共享给172.16.0.0/24网段内的所有主机,让这些主机都拥有读写权限,在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失,以及把来访客户端root管理员映射为本地的匿名用户等,则可以按照下面命令中的格式,将下表中的参数写到NFS服务程序的配置文件中

用于配置NFS服务程序配置文件的参数

参数 作用
ro 只读
rw 读写
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

编辑"/etc/exports”配置文件,注意:NFS客户端地址与权限之间没有空格

[root@nfs-server ~]# vim /etc/exports
/nfsfile 172.16.0.*(rw,sync,root_squash)

在NFS服务的配置文件中巧用通配符能够实现很多便捷功能,就比如匹配IP地址就有三种方法——第一种是直接写*号,代表任何主机都可以访问;第二种则是实验中采用的192.168.10.*通配格式,代表来自192.168.10.0/24网段的主机;第三种则是直接写对方的IP地址,如192.168.10.20,代表仅允许某个主机进行访问

启动和启用NFS服务程序。由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中

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

防火墙放行NFS共享相关的服务:

[root@nfs-server ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@nfs-server ~]# firewall-cmd --add-service=rpc-bind --permanent 
success
[root@nfs-server ~]# firewall-cmd --add-service=mountd --permanent 
success
[root@nfs-server ~]# firewall-cmd --reload 
success

2.4 配置客户端

先使用showmount命令查询NFS服务器的远程共享信息,必要的参数下表,其输出格式为“共享的目录名称 允许使用客户端地址”

showmount命令中可用的参数以及作用

参数 作用
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源的情况NFS资源的情况
-v 显示版本号

[root@nfs-client ~]# yum provides showmount    # 查找showmount命令是由哪个软件包提供的
Last metadata expiration check: 0:45:12 ago on Mon 25 Dec 2023 10:25:00 PM CST.
nfs-utils-1:2.3.3-59.el8.x86_64 : NFS utilities and supporting clients and daemons for the kernel NFS server
Repo        : baseos
Matched from:
Provide    : showmount = 1:2.3.3-59.el8
[root@nfs-client ~]# yum -y install nfs-utils    # 安装nfs-utils软件包
[root@nfs-client ~]# showmount -e 172.16.0.100  # 显示nfs服务器的共享列表
Export list for 172.16.0.100:
/nfsfile 172.16.0.*

在NFS客户端创建一个挂载目录。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录

[root@nfs-client ~]# mkdir /nfsfile
[root@nfs-client ~]# mount -t nfs 172.16.0.100:/nfsfile /nfsfile
[root@nfs-client ~]# df -Th
Filesystem            Type      Size  Used Avail Use% Mounted on
devtmpfs              devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                 tmpfs     3.9G  8.5M  3.9G   1% /run
tmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rl-root   xfs        37G  2.2G   35G   6% /
/dev/mapper/rl-home   xfs        19G  162M   18G   1% /home
/dev/vda1             xfs      1014M  172M  843M  17% /boot
tmpfs                 tmpfs     794M     0  794M   0% /run/user/0
172.16.0.100:/nfsfile nfs4       37G  2.2G   35G   6% /nfsfile

挂载成功后就应该能够顺利地看到在执行前面的操作时写入的文件内容了。如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:

[root@nfs-client ~]# cat /nfsfile/README 
This is a nfs shared folder.
[root@nfs-client ~]# 
[root@nfs-client ~]# vim /etc/fstab


# 
# /etc/fstab
# Created by anaconda on Thu Dec 14 0552 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=e629f80e-7773-478a-90bb-2071e248cf79 /boot                   xfs     defaults        0 0
/dev/mapper/rl-home     /home                   xfs     defaults        0 0
/dev/mapper/rl-swap     none                    swap    defaults        0 0
172.16.0.100:/nfsfile   /nfsfile                nfs     defaults        0 0      # 添加这一行
[root@nfs-client ~]# 
[root@nfs-client ~]# mount -a

链接:https://blog.51cto.com/min2000/8973419








审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    6649

    浏览量

    84531
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26913
  • RPC
    RPC
    +关注

    关注

    0

    文章

    102

    浏览量

    11422
  • NFS
    NFS
    +关注

    关注

    1

    文章

    52

    浏览量

    25956

原文标题:一文精通Linux配置NFS文件共享

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详细说明如何配置嵌入式linuxnfs开发环境

    对于嵌入式开发者而言开发效率非常重要,nfs的是嵌入式linux 开发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式linuxnfs
    发表于 07-28 16:14 2206次阅读

    【AWorks试用体验】搭建 nfs 文件系统 和 运行 hello world

    -kernel-server.sudo apt-get install nfs-kernel-server编辑配置文件,指定共享目录. 我就直接共享整个 /home 目录.sudo v
    发表于 08-10 22:04

    TQ210 NFS服务器的配置和使用

      这一讲将介绍怎么在虚拟机的Linux系统上安装NFS服务器,然后在TQ210v6开发板上的Linux上挂载nfs共享
    发表于 11-23 15:35

    Ubuntu 15下NFS安装配置

    Ubuntu 15.10下NFS安装配置参考:http://www.linuxidc.com/Linux/2013-08/89154.htm1、执行命令:sudo apt-get install
    发表于 12-30 08:59

    【NanoPi NEO2试用体验】nfs文件系统

    极大地方便开发。1. nfs文件系统nfs需要主机端以及板端的nfs服务支持。1.1. 主机端nfs配置
    发表于 07-04 14:11

    [RK3399] [Firefly-Ubuntu] 搭建NFS服务实现共享目录

    1、搭建NFS服务实现共享目录服务器端(PC 机)我的 PC 机使用的是 Ubuntu 20.04,其他 Linux 系统方法也是类似的!安装nfs-kernel-server创建
    发表于 04-12 18:07

    【米尔王牌产品MYD-Y6ULX-V2开发板试用体验】挂载NFS网络文件系统

    测试。搭建NFS环境如何利用NFS搭建NFS环境。主要包含连接网络、主机开启NFS服务 以及开发板挂载文件系统三个步骤。在虚拟机上创建
    发表于 12-04 22:28

    嵌入式LINUX的编程操作步骤

    做好了NFS 环境,步聚是:安装(现在好多linux都默认安装的),确定它能正常工作-->创建共享目录(mkdir /mnt/nfs)-->编辑共享
    发表于 07-10 09:55 1480次阅读

    嵌入式LINUX下的简述步骤

    看了linux 编程书,了解他的程序用方法,做好了NFS 环境,步聚是:安装(现在好多linux都默认安装的),确定它能正常工作-->创建共享目录(mkdir /mnt/
    发表于 01-09 11:30 874次阅读

    linux下网卡配置详解

    linux下网卡配置详解
    发表于 12-15 22:38 0次下载

    嵌入式Linux NFS挂载

    nfs-kernel-server2、打开配置vi /etc/exports在最后一行增加以下命令,将/mnt/nfs设置为共享目录/mnt/nf
    发表于 10-20 15:06 2次下载
    嵌入式<b class='flag-5'>Linux</b> <b class='flag-5'>NFS</b>挂载

    嵌入式开发板挂载linux文件

    install nfs-kernel-server2.再进行配置共享文件夹sudo vim /etc/exports 或sudo gedit /etc/exports 我更喜欢后者,
    发表于 11-02 19:21 20次下载
    嵌入式开发板挂载<b class='flag-5'>linux</b>上<b class='flag-5'>文件</b>夹

    如何在Linux卸载NFS共享目录

    NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录。
    的头像 发表于 12-07 09:38 9499次阅读

    如何在Linux挂载NFS共享

    NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录。
    的头像 发表于 12-07 09:39 2930次阅读

    Linux下部署NFS服务

    NFS是 Network File System的缩写,即网络文件存储系统,最早是由Sun 公司发展出来的,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件
    的头像 发表于 04-17 14:58 799次阅读
    <b class='flag-5'>Linux</b>下部署<b class='flag-5'>NFS</b>服务