欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 部署YUM仓库及NFS共享服务

部署YUM仓库及NFS共享服务

2025/9/27 23:12:07 来源:https://blog.csdn.net/qq_63994746/article/details/140350150  浏览:    关键词:部署YUM仓库及NFS共享服务

目录

一、yum仓库服务

1.1 yum背景及概述

1.2 yum源的提供方式

1.2.1 配置本地yum源

1.2.2 配置ftp源

1.2.3 配置http服务源

二、NFS共享存储

2.1 NFS共享存储服务

①NFS(NetworkFile System)网络文件系统

②概述

③NAS存储

④NAS的特点

⑤应用场景

⑥NFS实现原理

2.2 NFS文件共享系统实验步骤

理论:

示例:


一、yum仓库服务

1.1 yum背景及概述

背景:

YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由 TSS 公司 (Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(Duck University)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater,Modified)。要成功使用 YUM 机制来 更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供 软件仓库的服务器也称为“源”服务器。在客户机中只 要正确指定软件仓库的地址等信息,就可以通过对 应的“源”服务器来安装或更新软件。

概述:

  • 基于RPM包构建的软件更新机制
  • 可以自动解决依赖关系
  • 所有软件包由集中的YUM软件仓库提供

1.2 yum源的提供方式

  • FTP服务:ftp://.
  • HTTP服务:http://..
  • 本地目录:file://..

1.2.1 配置本地yum源

:cd /etc/yum.repos.d/
:mkdir repos.bak
:mv *.repo repos.bak
:vim local.repo
[local]                                                      #仓库类别
name=local                                             #仓库名称
baseurl=file:///mnt                                  #指定URL 访问路径为光盘挂载目录      本地yum源
enabled=1                                               #开启此yum源,此为默认项,可省略
gpgcheck=0                                            #不验证软件包的签名

yum clean all && yum makecache       #删除yum缓存并更新

1.2.2 配置ftp源

思路:

服务端:

  • 安装vsftpd服务端软件
  • 创建并制作yum远程ftp站点的源
  • 启动ftp服务

客户端:

  • 创建远程yum源的配置文件
  • yum安装软件验证结果

配置:

服务端

:rpm -qa|grep vsftpd

:yum -y install vsftpd

:mkdir /var/ftp/centos7                                                  #创建挂盘挂载目录

:mount /dev/sr0 /mnt                                                     #镜像挂载

:cp -rf /mnt/* /var/ftp/centos7/ &

:mkdir /var/ftp/other                                                      #创建目录repodata 数据文件

:cd /var/ftp/other/

:createrepo -g /mnt/repodata/repomd.xml ./               #工具建立仓库数据文件

:systemctl start vsftpd

客户端

:vi /etc/yum.repos.d/centos7.repo

[root@kgc14 yum.repos.d]# cat centos7.repo

[centos7]                                                                                       #仓库类别

name=centos7                                                                              #仓库名称(说明)

baseurl=ftp://192.168.10.17/centos7                                           #URL 访问路径

enabled=1                                                                                      #启用此软件仓库

gpgcheck=1                                                                                   #验证软件包的签名

gpgkey=ftp://192.168.10.17/centos/RPM-GPG-KEY-CentOS-7  #GPG 公钥文件的位置

[other]

name=other

baseurl=ftp://192.168.10.17/other

enabled=1                                                                                       #启用此软件仓库

gpgcheck=0                                                                                    #验证软件包的签名

示例:

1.2.3 配置http服务源

我们需要安装http服务,所以我们需要先搭建一个本地源

#首先创建一个文件用来挂载镜像

yum -y install httpd

mkdir /var/www/html/centos7                                             #创建镜像目录

mount /dev/sr0 /mnt                                                             #镜像挂载

cp -rf /mnt/* /var/www/htmlcentos7/ &                                #拷贝镜像文件

mkdir /var/www/html/other                                                  # 创建目录repodata 数据文件

生成 YUM 源索引:进入软件包所在目录,使用 createrepo 命令生成 YUM 源所需的索引文件: createrepo /var/www/html/centos7

这将在 /var/www/html/centos7 目录下生成一个名为 repodata 的子目录,里面包含有关软件包的索 引信息。

[root@benet23 yum.repos.d]# cat centos7.repo

这就是http源,照着做就行,就修改ip即可,其他不要变

[centos7]

name=centos7                                                           #我们yum 源命名

baseurl=http://192.168.10.22/centos7                     #是服务器设置中最重要的部分,只有                                                                                         设置正确,才能 从 上面获取软件

enabled=1                                                                  #启用yum源,0为不启用,1为启用

gpgcheck=1                                                               #检查GPG-KEY,0为不检查,1为检查

gpgkey=http://192.168.10.22/centos7/RPM-GPG-KEY-CentOS-7

[other]

name=centos7

baseurl=http://192.168.10.22/other

enabled=1

gpgcheck=0

下面3个命令 按顺序执行一遍

yum clean all                                                            #清除yum缓存

yum makecache                                                       #缓存本地yum源中的软件包信息

yum repolist                                                              #查看源软件包

正常情况呢,就是执行yum repolist以后有我们定义的http源名称,且有相应的数量,如果数量为0,则哪 个步骤出问题了

二、NFS共享存储

2.1 NFS共享存储服务

①NFS(NetworkFile System)网络文件系统

  • 依赖于RPC(远端过程调用)
  • 需安装nfs-utils、rpcbind软件包
  • 系统服务:nfs、rpcbind
  • 共享配置文件:/etc/exports

②概述

  • NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之 间可以共享文件或目录
  • NFS(Network File System 网络文件服务)
  • NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机 可以像访问本地目录一样访问远程服务器中的共享资源
  • NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。 NFS 也是 NAS 存储 设备必 然支持的一种协议

③NAS存储

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射 过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持

手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs(因为nfs要向rpc注册端口)

nfs端口号2049

RPC端口号111

④NAS的特点

优势:

  • 透明性:NFS 提供了透明的文件共享,用户可以像访问本地文件系统一样访问远程文件系统,无需关心具体的物理位置或网络细节。
  • 跨平台支持:NFS 可以在不同的操作系统之间进行文件共享,包括 UNIX/Linux、Windows 和 macOS 等。不同平台也可以共享。
  • 效率:NFS 通过使用缓存和异步写入等技术来提高性能和效率。它可以减少网络传输的开销,并允许客户端在本地缓存文件以减少对服务器的频繁访问。
  • 安全性:NFS 支持基于主机名和 IP 地址的访问控制,可以根据需要进行配置以限制对文件系统的访问。此外,可以使用额外的安全机制如 Kerberos 或 SSL/TLS 进行加密和认证。
  • 扩展性:NFS 支持在服务器端导出(共享)多个目录,并允许客户端挂载这些共享目录。这使得可以轻松地扩展文件系统的容量和访问范围。

劣势:

  • 安全性问题:由于 NFS 设计时考虑到了开放式网络环境的需求,因此默认情况下没有提供强大的安全保障措施。例如,NFS v3 不支持加密,而 NFS v4 的加密和认证机制比较复杂
  • 性能问题:尽管 NFS 采用了缓存等技术来提高性能,但在高负载的场景下,仍然可能出现瓶颈和延迟。特别是在跨地理位置的网络上运行 NFS 时,网络延迟会对性能产生很大影响
  • 故障恢复问题:如果 NFS 服务器发生故障或网络连接中断,则客户端可能无法访问共享文件系统。NFS 支持使用备份服务器进行故障恢复,但需要额外的管理和配置
  • 兼容性问题:不同版本的 NFS 实现之间存在一些差异和兼容性问题,这可能导致不同操作系统之间的互操作性受到限制
  • 存储管理问题:NFS 不支持对数据进行块级别的存储管理,这使得在处理大型、密集的 I/O 工作负载时,其可扩展性受到一定限制

⑤应用场景

  • 无集群没有共享服务

  • A用户上传图片经过负载均衡,负载均衡将上传请求调度至WEB1服务器上。
  • B用户访问A用户上传的图片,此时B用户被负载均衡调度至WEB2上,因为WEB2上没有这张图片,所以B用户无法看到A用户传的图片

  • 集群有共享存储

  • A用户上传图片无论被负载均衡调度至WEB1还是WEB2, 最终数据都被写入至共享存储
  • B用户访问A用户上传图片时,无论调度至WEB1还是WEB2,最终都会上共享存储访问对应的文件,这样就可以访问到资源了

⑥NFS实现原理

  • 假如访问的是NFS客户端,先调用不同的函数(例如Read()函数,读功能、Write()函数,写功能、 Create()函数,创建功能、Remove()函数、删除功能、Rename()函数,重命名功能)对数据进行处理。
  • 调用完函数后,首先NFS客户端会建立TCP连接,通过TCP/IP的方式传递给NFS服务端,连上远端的 服务器。
  • 接着NFS服务端接收到请求后,NFS服务器会做3步系列操作(环环相扣,先映射端口,然后验证是 否能登录服务器,最后验证文件使用权限),如下: 首先,调用portmap进程进行端口映射。 接着,调用Rpc.nfsd进程来验证NFS客户端是否拥有对应的权限连接NFS服务端。 最后,调用Rpc.mount进程来验证客户端是否拥有对应的文件使用权限;
  • Portmap进程实现用户映射和压缩
  • 最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件

2.2 NFS文件共享系统实验步骤

理论:

配置思路

  • 安装nfs和rpcbind软件
  • 修改配置文件设置共享
  • 创建共享目录
  • 开启服务
  • 客户端验证共享目录可访问

:rpm -q rpcbind nfs-utils

:yum install -y nfs-utils rpcbind

:vim /etc/exports #NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享) :/opt/web 192.168.10.0/24(rw,sync,no_root_squash)

常用选项:

  • rw 表示允许读写
  • ro 表示为只读
  • sync 表示同步写入到内存与硬盘中
  • no_root_squash 表示当客户机以root身份访问时赋予本地root权限(默认是 root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限
  • root_squash 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户

其它常用选项:

  • all_squash 所有访问用户都映射为匿名用户或用户组
  • async 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
  • subtree_check(默认) 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
  • no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可 以提高效率

systemctl start rpcbind                            //需要先启动rpc服务,因为nfs要向rpc注册端口

systemctl start nfs

systemctl enable rpcbind

systemctl enable nfs

[root@localhost web]# netstat -anpu | grep rpc

udp            0               0 0.0.0.0:111                     0.0.0.0:* 24525/rpcbind

[root@localhost web]# rpcinfo -p localhost                              //查看nfs向rpc注册的端口信息      program              vers             proto                     port                service

    100000                  4                 tcp                        111               portmapper

    100000                  3                 tcp                        111                portmapper

    100000                  2                 tcp                        111                portmapper 

    100000                  4                 udp                       111                portmapper

    100000                  3                 udp                       111                portmapper

    100000                  2                 udp                       111                portmapper

    100024                  1                 udp                       55627           status

     ……

[root@localhost web]# exportfs -v                                 //验证结果

/web 192.168.245.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squ ash,no_all_squash)

exportfs -r                                                                          //刷新结果

[root@localhost web]# showmount -e localhost            //验证共享 

Export list for localhost:

/web 192.168.245.0/24

切换到客户端:

[root@localhost ~]# yum install -y nfs-utils rpcbind

[root@localhost ~]# showmount -e 192.168.10.17        //客户端验证共享

Export list for 192.168.245.100:

/web 192.168.245.0/24

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# mount -t nfs 192.168.10.17:/web /var/www/html     //将共享目录挂载到网页目录

[root@localhost ~]# systemctl start httpd                       //启动web服务

[root@localhost ~]# curl 127.0.0.1                                   //成功访问主页内容

hello world!

[root@localhost ~]# echo "this is kgc " >> /var/www/html/index.html //客户端修改主页文件 [root@localhost web]# cat index.html                       //服务器端会同步

this is kgc nihao 同理可得,服务端写入或修改内容,客户端也会同步

df -h                         #查看挂载情况

修改/etc/fstab实现自动挂载:

192.168.10.17:/opt/web /var/www/html nfs defaults,_netdev 0 0

defaults,_netdev说明这是一个网络设备

注意:NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停 掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载 的,需要加上 -lf 才能卸载

-l 表示解除正在繁忙的文件系统,-f 表示强制。

[root@localhost web]# systemctl stop nfs                                //服务器端模拟nfs挂掉

[root@localhost ~]# umount /var/www/html                             //客户端卸载时会卡住

^C

[root@localhost ~]# umount -lf /var/www/html                       //加lf参数成功卸载

其他nfs文件:

/var/lib/nfs/etab                                                  记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab                                                  记录曾经登录过的客户端信息

示例:

服务端:

客户端:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词