yum仓库与NFS共享服务

763 阅读8分钟

YUM

(Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器 是一个基于RPM的软件包管理器,能够从指定服务器自动下载RPM包并且安装,可以处理软件之间的依赖关系,一次性安装所有依赖的软件包,无需一个个下载安装。

YUM的工作原理包括两个部分YUM服务器和客户端

YUM服务器

QQ截图20220818150612.png Linux客户端

QQ截图20220818150636.png 所有软件包由集中的YUM软件仓库提供

QQ截图20220818150954.png

扩充:

centos7  rhel7  使用的都是yum来解决安装的问题(.rpm包)
centos8  rhel8  使用的是DNF来解决安装的问题,但DNF也是基于yum来解决安装问题的
Ubuntu  debian 使用的是apt  安装包是(.deb包)也是可以一键解决安装的问题

软件仓库的提供方式

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

RPM软件包的来源

  • CentOS发布的RPM包集合
  • 第三方组织发布的RPM包集合
  • 用户自定义的RPM包集合

设置本地YUM源的格式

/etc/yum.repo.d/文件
[项目名称]
name=仓库名称
baseurl=file:///挂点       //本地源
        ftp://FTP服务器地址   //ftp源
        http://   https://URL地址   //在线源
enabled=1  开启仓库

gpgcheck=1需要验证
gpgkey=密钥的位置
gpgcheck=0不验证

本地源

如果挂载不上会显示

mount: 在 /dev/sr0 上找不到媒体

QQ截图20220818170027.png 打开终端上面找到自己的虚拟机 QQ截图20220818170303.png 连接以后就可以正常挂载了 QQ截图20220818170451.png 要把自己的光盘镜像挂载到指定的目录之中

QQ截图20220818170643.png 建立本地源仓库文件

QQ截图20220818171324.png

FTP(默认是匿名访问)

FTP服务器(File Transfer ProtocolServer)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务,FTP是File TransferProtocol (文件传输协议),顾名思义,就是专门用来传输文件的协议,简单地说,支持FTP协议的服务器就是FTP服务器

如果要使用FTP服务就要先安装软件

QQ截图20220818173202.png QQ截图20220818173307.png 如果要是用FTP协议就要用给FTP加载镜像文件

QQ截图20220818211955.png 用一台机器当做客户端使用服务端的ftp服务 QQ截图20220818214947.png baseurl=ftp:///192.168.85.10/7 /7 FTP服务提供的目录

QQ截图20220818215511.png

比如说客户端需要安装httpd那么就会使用到服务端提供的tpf服务器带来的安装协议

QQ截图20220818215734.png

centos 在线源

如果说想用http在线源的话可以在官网去下载来进行使用centos 在线源 QQ截图20220818162231.png 直接在网上搜索一个在线源来使用,安装 QQ截图20220818221709.png 安装后会默认使用自己安装的在线源 QQ截图20220818221944.png

阿里源

列如诉求: 当既有本地yum源又有aliyun源的时候,我们在装软件包的时候当然希望先用本地的yum源去安装, 本地找不到可用的包时再使用aliyun源去安装软件,这里就涉及到了优先级的问题, yum提供的插件yum-plugin-priorities.noarch可以解决这个问题

上机之前建议还是先关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

搭建本地yum源

[root@localhost ~]# mount /dev/sr0 /mnt
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mkder bak
[root@localhost yum.repos.d]# mv *.repo bak
[root@localhost yum.repos.d]# vim yum.repo
[root@localhost yum.repos.d]# yum clean all && yum makecache

打开可以连接外网的系统

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/rs-7.repo
[root@localhost yum.repos.d]# yum clean all && yum makecache    //刷新缓存,清理缓存并且生成新的缓存 

1.查看是否安装了yum-plugin优先级插件

[root@localhost yum.repos.d]# rpm -qa |grep yum-plugin
yum-plugin-fastestmirror-1.1.31-42.el7.noarch

2.如果没有安装,就安装插件

[root@localhost yum.repos.d]# yum -y install yum-plugin-priorities.noarch

3.查看插件是否启用

[root@localhost yum.repos.d]# cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1  //1为启动,0为禁止

4.修改本地yum源优先使用

QQ截图20220819231107.png 5.验证安装包的数量

Loading mirror speeds from cached hostfile

QQ截图20220819231258.png yum 命令仅下载安装包

[root@localhost ~]# yum install --downloadonly mariadb
#下载下来的安装包都是放在 /var/cache/yum/x86_64/7/ 目录下
[root@localhost ~]#yumdownloader --destdir=/opt mariadb mariadb-server
#yumdownloader 仅下载指定软件包,参数 --destdir 是用来指定存放下载的安装包的目录

NFS共享存储服务

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

NFS一般用来存储共享视频,图片等静态数据。

  • NFS网络文件系统
    • 依赖于RPC(远端过程调用)
    • 选择nfs-stils,rpcbind软件包
    • 系统服务:nfs,rpcbinf
    • 共享配置文件:/etc/exports

由于NFS没有认证机制,并且是铭文传输,所以安全性较差,一般是在局域网络环境使用

NFS挂载原理: QQ截图20220820140650.png NFS架构图

QQ截图20220820140839.png ** NFS客户端和NFS服务器通讯过程**

QQ截图20220820141007.png

  1. 首先服务器端启动RPC服务,并开启111端口

  2. 服务器端启动NFS服务,并向RPC注册端口信息

  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

所以需要安装nfs-utils   rpcbind  软件包来提供服务,前者用于NFS共享发布和访问,后者用于 RPC 支持

实验

在文件服务器使用 NFS 发布共享资源 1.客户端安装NFS共享服务(nfs-utils、rpcbind 软件包)

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

2.设置共享策略配置文件

客户机地址可以是主机名、IP 地址、网段地址,允许使用“*”、“?”通配符。
“rw” 表示允许读写,“ro” 表示为只读。
sync :表示同步写入到内存与硬盘中。
no_root_squash : 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)。
root_squash :表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户。
其它常用选项
all_squash :所有访问用户都映射为匿名用户或用户组。
async :将数据先保存在内存缓冲区中,必要时才写入磁盘。
subtree_check(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。
anonuid=xxxx :指定NFS服务器/etc/psaawd文件匿名用户的UID
anongid=xxx  :指定NFS服务器/etc/group文件匿名用的GID
sync    写入数据会同时写入内存和硬盘 (保证数据安全,数据不会丢失,写入会受到硬盘IO性能的影响,可能会影响读写速度,会大量消耗固态硬盘的寿命)
async    写入数据是会在写入内存的缓冲区里面,然后根据系统的同步策略在刷新到硬盘中(写入熟读块)
[root@localhost ~]# vim /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin    //NFS匿名用户,不指定就是这个名字
[root@localhost opt]# vim /etc/exports

QQ截图20220820150828.png rpcbind使用的是111端口

[root@localhost opt]#netstat -anpt | grep rpcbind	
[root@localhost opt]# netstat -nltup |grep 111

QQ截图20220820151148.png QQ截图20220820151750.png 手动加载NFS共享服务时,应该先启动rpcbind再启动nfs

[root@localhost opt]# systemctl start rpcbind
[root@localhost opt]# systemctl start nfs
查看共享信息
[root@localhost opt]# showmount -e
Export list for localhost.localdomain:
/opt/778 192.168.85.0/24

服务端和客户端都要关闭防火墙,不然无法共享

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

1.服务端只需要安装(rpcbind)即可

安装软件
[root@localhost ~]# yum -y install rpcbind

看一下共享目录
[root@localhost ~]# showmount -e 192.168.85.10
Export list for 192.168.85.10:

挂载
[root@localhost ~]# mount 192.168.85.10:/opt/778 /data

QQ截图20220820154207.png 直接到服务端目录中写入一些东西看看客服机是否可以收到 QQ截图20220820155735.png 客户端登录以后查看挂载目录,就可以查看到服务端写入的文件内容 QQ截图20220820155959.png 及时在让一台虚拟机加入共享文件依旧可以查看到服务端写入的文件 QQ截图20220820171958.png

客户端想写入是无法写入会提醒权限不足
[root@localhost data]# echo '9987' > 73
-bash: 73: 权限不够

虽然是写的rw可读可写,但是指定的是匿名用户
[root@localhost 778]# vim /etc/exports
/opt/778 192.168.85.0/24(rw,async)

给其他用户加上权限 QQ截图20220820173038.png 现在就可以成功写入了 QQ截图20220820173154.png 包括服务端这边也能看到是成功写入了 QQ截图20220820173317.png 可以看见客户端写入的文件是用的匿名用户 QQ截图20220820173514.png

QQ截图20220820174808.png 客户端在写入东西 就会不会再显示匿名用户了 QQ截图20220820181112.png 创建一个新的用户写入东西在服务端会显示他的UID号 QQ截图20220820181335.png 永久挂载

vim /etc/fstab

QQ截图20220820183421.png

QQ截图20220820183548.png 加一个空格就可以单独控制一台客户机 QQ截图20220820183910.png 3.强制卸载NFS 我的服务端突然死机了

客户端就会进入一个假死的状态

[root@localhost ~]# umount -lf /data

QQ截图20220820184956.png

总结

yum 仓库的搭建使用

NFS服务的使用与各种个性化设置