Linux网络服务之NFS(文件共享服务)

简介: 1 NFS简介NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。

1 NFS简介


NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(远端过程调用:自己没有这种功能,调用别人的功能) NFS 也是 NAS 存储 设备必然支持的一种协议,以完成远程到本地的映射过程。

在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

NFS的特点:

  • 采用TCP/IP传输网络文件
  • 安全性低
  • 简单易操作
  • 适合局域网环境

与FTP不同,FTP是普通的文件共享软件。

而NFS 是文件系统,是操作系统内核来管理的:

[root@localhost ~]#ls /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/
 binfmt_misc.ko.xz  ceph    dlm    fat      gfs2   lockd          nfs_common  overlayfs  udf
 btrfs              cifs    exofs  fscache  isofs  mbcache.ko.xz  nfsd        pstore     xfs
 cachefiles         cramfs  ext4   fuse     jbd2   nfs            nls         squashfs
复制代码


2 NFS原理


网络异常,图片无法展示
|


NFS优势:

节省本地存储空间,将常用的数据如:/home 目录,存放在NFS服务器上且可以通过网络访问,将减少本地磁盘的使用率。


3 NFS软件介绍


软件包 (包括服务器端和客户端):

  • nfs-utils(nfs端口号 2049/tcp)
  • rpcbind(RPC端口号 111/tcp)

相关软件包(可不安装):tcp_wappers

NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
  • rpc.lockd 非必要,管理文件锁,避免同时写出错
  • rpc.statd 非必要,检查文件一致性,可修复文件


4 配置文件


配置文件位置:/etc/exports

配置文件格式:

/dir                   主机1(参数1,参数2)   主机2(参数1,参数2)...
 #分享的目录(绝对路径)       共享给谁(允许哪些主机访问)
 #示例:
 /share    *   
 #表示将/share目录共享给任何主机 ,*代表任意(注意此时未给权限)
 (内网中可以用*)
 /share  192.168.72.0/24
 #表示将/share目录共享给192.168.72.0网段内的任意主机
复制代码


配置说明:

# 一、主机:
 1.通配符:表示使用*通配所有客户端
 2.单个主机:ipv4,ipv6,FQDN
 3.网段:两种掩码格式均支持(内网情况下)
 172.18.0.0/255.255.0.0
 172.18.0.0/16
 wildcards:主机名通配,例如:*.kgc.com,IP不可以
 netgroups:NIS域的主机组,@group_name
 # 二、常用参数:(默认参数:ro,sync,root_squash,no_all_squash)
 1.读写权限
 ro,rw 只读和读写
 2.异步/同步
 async:异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性
 sync(1.0.0后为默认):同步,数据在请求时立即写入共享存储磁盘,性能低,安全性高
 3.压缩权限
 root_squash(默认):远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 
 7以前的版本为nfsnobody。
 no_root_squash :远程root映射成NFS服务器的root用户。
 all_squash :所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody。
 no_all_squash (默认):保留共享文件的UID和GID。
 anonuid和anongid:指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用。
复制代码


参数 作用
ro 只读
rw 读写
sync 同步写入。同时将数据写入到内存与硬盘中,保证不丢失数据
async 异步写入。优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
root_squash 当NFS客户端以root访问时,映射为NFS服务器的匿名用户
no_root_quash 当NFS客户端以root访问时,映射为NFS服务器的root用
all_squash 无论NFS客户端使用什么身份登录,都映射为NFS服务器的匿名用户
no_all_squash(默认) 访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
anonuid=< UID> 指定匿名访问用户的本地用户UID,默认为nfsnobody(65534)
anongid=< GID> 指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534)


exportfs 命令可用于管理 nfs

exportfs -v : 查看本机所有nfs共享目录,及其详细信息
 exportfs -r : 重新读取配置文件,重新加载配置
 showmount -e : 查看本机发布的NFS共享目录
 showmount -e 192.168.72.10 : 查看服务器192.168.72.10提供的共享目录
复制代码


5 NFS共享存储服务的操作步骤


实验环境:

服务端:192.168.72.10

客户端:192.168.72.129

实验步骤:

1、服务端设置:

#1.关闭防火墙和selinux
 [root@localhost ~]# systemctl stop firewalld
 [root@localhost ~]# setenforce 0
 setenforce: SELinux is disabled
 #2.安装nfs-utils和rpcbind软件包
 [root@localhost ~]# yum install nfs-utils rpcbind -y
 #3.新建共享目录,在目录内创建文件
 [root@localhost ~]# mkdir /share
 [root@localhost ~]# touch /share/f1.txt
 #4.编辑nfs配置文件
 [root@localhost ~]# vim /etc/exports
 /share  192.168.72.0/24
 #5.启动两个服务,查看详细的nfs信息
 [root@localhost ~]# systemctl start nfs
 [root@localhost ~]# systemctl start rpcbind
 [root@localhost ~]# showmount -e         //查看本机发布的NFS共享目录
 Export list for localhost.localdomain:
 /share 192.168.72.0/24
 [root@localhost ~]# exportfs -v       //查看NFS共享目录的详细信息
 /share          192.168.72.0/24(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


2、客户端设置:

#1.检查nfs-utils和rpcbind两个软件是否已安装。
 [root@192 ~]# rpm -q rpcbind
 rpcbind-0.2.0-42.el7.x86_64
 [root@192 ~]# rpm -q nfs-utils
 nfs-utils-1.3.0-0.48.el7.x86_64
 #2.将服务端的共享目录/share,挂载到本地的/mnt目录下。
 [root@192 ~]# mount  192.168.72.10:/share  /mnt
 [root@192 ~]# df -Th
 文件系统                类型      容量  已用  可用 已用% 挂载点
 /dev/mapper/centos-root xfs        17G  5.0G   13G   29% /
 devtmpfs                devtmpfs  897M     0  897M    0% /dev
 tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
 tmpfs                   tmpfs     912M  9.1M  903M    1% /run
 tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
 /dev/sda1               xfs      1014M  179M  836M   18% /boot
 tmpfs                   tmpfs     183M   12K  183M    1% /run/user/42
 tmpfs                   tmpfs     183M     0  183M    0% /run/user/0
 192.168.72.10:/share    nfs4       10G  4.0G  6.1G   40% /mnt
 #3.查看共享目录内的文件
 [root@192 ~]# ls /mnt
 f1.txt
复制代码


网络异常,图片无法展示
|


3、测试在服务端的共享目录中新建文件f2,观察客户端能否查看到

#1.服务端,在/share目录中新建文件f2
 [root@localhost ~]# cd /share
 [root@localhost share]# touch f2
 [root@localhost share]# ls
 f1.txt  f2
 #2.客户端,查看共享目录挂载点内的文件
 [root@192 ~]# ls /mnt
 f1.txt  f2
复制代码


6 小贴士


  1. 启动服务后,可以使用 "ss -ntuap | grep 111" 命令查看端口是否已开启,以便确认服务是否正常启动了。
  2. 使用mount命令只是临时挂载,如果想要将NFS共享目录永久挂载到本地,需要修改配置文件/etc/fstab。挂载参数为:defaults,_netdev。

网络异常,图片无法展示
|

  1. 但如果在本机配置文件/etc/fstab中写入了永久挂载,之后服务端取消了对本机的NFS共享,那么本机重启时会出现 “CRTL-D” 报错,此时需要进入但用户模式,编辑/etc/fstab,将NFS共享目录的挂载信息删除。
  2. 强制卸载 NFS:umount -lf  挂载设备/挂载点
  • 如果服务器端NFS服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行 df -h 命令卡死的现象。这个时候直接使用umount 命令是无法直接卸载的,需要加上 -lf 选项才能卸载。


相关文章
|
1月前
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
37 0
|
3天前
|
人工智能 安全 网络安全
云端防线:融合云服务与网络安全的未来策略
【5月更文挑战第3天】 在数字化时代,云计算为企业提供了弹性、可扩展的资源解决方案,同时引入了全新的安全挑战。本文深入探讨了云服务模型中的安全威胁和防御机制,分析了信息安全管理的关键要素,并提出了一套综合的网络安全策略。通过采用先进的加密技术、身份认证、入侵检测系统以及行为分析,构建了一个多层次的安全框架来保障数据和服务的完整性、可用性与机密性。文中还讨论了合规性和监管问题,以及如何通过持续的安全评估和风险评估来强化安全防护。最后,文章指出了未来云安全研究的方向,强调了人工智能与机器学习在提升云服务安全性中的作用。
|
6天前
|
安全 网络安全 Android开发
云端防御策略:融合云服务与网络安全的未来构建高效的Android应用:从内存优化到电池寿命
【4月更文挑战第30天】 随着企业加速向云计算环境转移,数据和服务的云端托管成为常态。本文探讨了在动态且复杂的云服务场景下,如何构建和实施有效的网络安全措施来保障信息资产的安全。我们将分析云计算中存在的安全挑战,并展示通过多层次、多维度的安全框架来提升整体防护能力的方法。重点关注包括数据加密、身份认证、访问控制以及威胁检测与响应等关键技术的实践应用,旨在为读者提供一种结合最新技术进展的网络安全策略视角。 【4月更文挑战第30天】 在竞争激烈的移动市场中,Android应用的性能和资源管理已成为区分优秀与平庸的关键因素。本文深入探讨了提升Android应用效率的多个方面,包括内存优化策略、电池
|
16天前
|
存储 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【4月更文挑战第20天】 随着企业数字化转型的加速,云计算已成为支撑现代业务架构的关键。然而,伴随其发展的网络安全威胁也不断演变,对信息安全提出更高要求。本文将深入探讨在动态云环境中实现网络安全防护的策略和技术,包括最新的加密技术、身份验证机制以及入侵检测系统等。通过分析当前云服务中的安全挑战,并结合前沿的网络安全技术,旨在为读者提供一个关于如何在享受云计算便利的同时保障数据安全的全面视角。
|
17天前
|
存储 数据库 虚拟化
《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)
《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)
37 2
|
19天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
21天前
|
Ubuntu Linux 开发工具
U-Boot 中使用 nfs 命令加载文件报错指南
U-Boot 中使用 nfs 命令加载文件报错指南
|
21天前
|
网络协议 Linux
基于 NFS 的文件共享实现
基于 NFS 的文件共享实现
|
21天前
|
安全 测试技术 网络安全
基于计算机网络的毕业设计 - 实现高效网络服务与安全通信
本毕业设计旨在利用计算机网络技术设计并实现一个综合性系统,以解决特定领域的问题或提供特定的服务。设计包括网络通信协议的优化、网络安全机制的设计、数据传输与处理的优化以及用户界面设计等方面。通过本设计,旨在提高学生对计算机网络及相关技术的理解和应用能力,并为用户提供高效、可靠的网络服务。
|
25天前
|
存储 安全 测试技术
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
21 0