Linux系统入门第七章 --部署DNF仓库及NFS共享服务

一、配置DNF

借助于DNF软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个、手工地去安装每个rpm包,使管理员在维护大量Linux服务器时更加轻松自如。特别是在拥有大量Linux主机的本地网络中,构建一台“源”服务器可以大大缓解软件安装、升级等对Internet的依赖。DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供的API。使用DNF需要管理员权限,本章所有命令需要在管理员权限下执行。

1、DNF配置文件的

DNF的主要配置文件是/etc/dnf/dnf.conf,该文件包含两部分:

main保存着DNF的全局设置
repository保存着软件源的设置,可以有零个或多个“repository”。
另外,在/etc/yum.repos.d目录中保存着零个或多个repo源相关文件,它们也可以定义不同的“repository”

所以openEuler软件源的配置一般有两种方式:

直接配置/etc/dnf/dnf.conf文件中的“repository”部分

在/etc/yum.repos.d目录下增加.repo文件

1.1、配置main部分

例子:

vim /etc/dnf/dnf.conf

常见选项

参数名称说明
cachedir缓存目录,该目录用于存储RPM包和数据库文件
keepcache可选值是1和0,表示是否要缓存已安装成功的那些RPM包及头文件,缺省值为0,即不缓存
debuglevel设置dnf生成的debug信息。取值范围:[0-10],数值越大会输出越详细的debug信息。缺省值为2,设置为0表示不输出debug信息
clean_requirements_on_remove删除在dnf remove期间不再使用的依赖项,如果软件包是通过DNF安装的,而不是通过显式用户请求安装的,则只能通过clean_requirements_on_remove删除软件包,即它是作为依赖项引入的。缺省值为True
best升级包时,总是尝试安装其最高版本,如果最高版本无法安装,则提示无法安装的原因并停止安装。缺省值为True
obsoletes可选值1和0,设置是否允许更新陈旧的RPM包。缺省值为1,表示允许更新
gpgcheck可选值1和0,设置是否进行gpg校验。缺省值为1,表示需要进行校验
plugins可选值1和0,表示启用或禁用dnf插件。缺省值为1,表示启用dnf插件
installonly_limit设置可以同时安装“installonlypkgs”指令列出包的数量。缺省值为3,不建议降低此值

1.2、 配置 repository部分

repository部分允许您定义定制化的openEuler软件源仓库,各个仓库的名称不能相同,否则会引起冲突。配置repository部分有两种方式:

一种是直接配置/etc/dnf/dnf.conf文件中的“repository”部分。

另一种是配置/etc/yum.repos.d目录下的.repo文件。

直接配置/etc/dnf/dnf.conf文件中的“repository”部分时,需要遵循以下格式:

name代表仓库的名称

baseurl代表仓库的基础URL。

openEuler提供在线的镜像源,地址为https://repo.openeuler.org/。以openEuler 23.09的aarch64版本为例,baseurl可配置为https://repo.openeuler.org/openEuler-23.09/OS/aarch64/

1.3、配置/etc/yum.repos.d目录下的.repo文件

openEuler提供了多种repo源供用户在线使用。使用root权限添加openEuler repo源的示例如下

1.4、dnf命令的使用

例子:

#显示当前的配置信息
dnf config-manager --dump

#以列表的形式显示软件源的配置
dnf repolist

#查询指定软件源的信息
dnf config-manager --dump os

#正则表达式的方式进行模糊查询
dnf config-manager --dump o*

1.4、创建dnf本地源仓库

1.4.1、安装软件包:
dnf -y install createrepo

1.4.2、下载一些软件包到目标目录

1.4.3、生成仓库数据

1.4.4、编写配置文件

1.4.5、删除原有的dnf仓库,创建新的本地仓库,并测试

2、添加、启用和禁用软件源

2.1、添加软件源

要定义一个新的软件源仓库,您可以在/etc/dnf/dnf.conf文件中添加“repository”部分,或者在/etc/yum.repos.d/目录下添加“.repo”文件进行说明。建议您通过添加“.repo”的方式,每个软件源都有自己对应的“.repo”文件

使用http协议的网络位置:例如http://path/to/repo
使用ftp协议的网络位置:例如ftp://path/to/repo
本地位置:例如file:///path/to/local/repo

2.2、启动软件源

#启用软件源
dnf config-manager --set-enable 软件源ID

2.3、禁用软件源

#禁用软件源
dnf config-manager --set-disable 软件源ID

3、管理软件包

3.1、搜索软件包

搜索软件包 您可以使用rpm包名称、缩写或者描述搜索需要的RPM包

例子:

3.2、列出软件包清单

3.2.1、列出所有的软件包清单
dnf list all
3.2.2、列出指定服务
dnf list httpd

3.3、显示rpm包信息

rpm info 服务名

3.4、安装rpm包

dnf -y install httpd

3.5、下载软件包

dnf download --resolve gcc*

3.6、删除软件包

dnf -y remove gcc*

4、管理软件包组

软件包集合是服务于一个共同的目的的一组软件包,例如系统工具集等。使用dnf可以对软件包组进行安装/删除等操作,使相关操作更高效。

4.1、列出软件包组清单的方法:

使用summary参数,可以列出系统中所有已安装软件包组、可用的组,可用的环境组的数据。

dnf group summary

4.2、要列出所有软件包组和它们的组ID,需使用以下命令:

dnf group list

4.3、显示软件包组信息的方式:

要列出包含在一个软件包组中必须安装的包和可选包,需使用对应的命令

dnf group info 包组名

4.4、安装软件包组

dnf group install 包组名 -y

每一个软件包组都有自己的名称以及相应的ID (groupid),您可以使用软件包组名称或它的ID进行安装

要安装一个软件包组,请在root权限下执行相应命令

4.5、删除软件包组

dnf group remove 包组名 -y

4.6、 检查并更新

dnf 可以检查您的系统中是否有软件包需要更新。您可以通过 dnf 列出需要更新的软件包,并可以选择一次性全部更新或者只对指定包进行更新。

4.6.1、检查更新:

如果您需要显示当前系统可用的更新,使用命令如下:

dnf check-update
4.6.2、升级:

如果您需要升级单个软件包,在 root 权限下执行如下命令:

#更新所有的包及他们的依赖包

dnf update

#更新指定的包
dnf update 软件包名

二、NFS共享存储服务

NFS是一种基于TCP/IP传输的网络文件系统协议,最初由Sun公司开发。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。

下面将学习NFS共享服务的基本配置和访问方法:

1、使用NFS发布共享资源:

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

1.1、安装nfs-utils、rpcbind软件包:

dnf -y install nfs-utils rpcbind

提供RPC支持的服务为rpcbind,提供NFS共享的服务为nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs。

1.2、NFS与RPC的依赖关系

RPC的核心作用‌
NFS服务的文件操作请求通过RPC协议传输,而RPC的实现依赖于rpcbind服务。rpcbind默认监听‌111端口‌,负责将客户端请求动态映射到NFS的实际服务端口

‌NFS服务的设计机制‌
NFS服务(如nfsdmountd等)在启动时向rpcbind注册动态端口,自身不固定监听端口。因此直接通过netstatss命令可能看不到NFS的独立监听端口

NFS服务的“无监听”现象源于其依赖RPC的动态端口分配机制,实际网络通信通过rpcbind管理的端口完成。排查时应优先验证RPC服务状态及端口配置

2、设置共享目录

NFS 的配置文件为 /etc/exports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)”。例如,若要将文件夹 /opt/wwvroot 共享给 192.168.10.0/24 网段使用,允许读写操作,具体配置如下所示:

其中客户机地址可以是主机名、IP 地址、网段地址,允许使用*、?通配符;权限选项中的 rw 表示允许读写(ro 为只读),sync 表示同步写入;no_root_squash 表示当客户机以 root 身份访问时赋予本地 root 权限(默认是 root_squash,将作为 nfsnobody 用户降权对待)。

当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可

例子:

以下操作将 /var/ftp/public 目录共享给两个客户机,并分别给予只读、读写执行权限。

3、启动NFS服务程序

systemctl start rpcbind

systemctl start nfs

4、查看本机发布的NFS共享目录

showmount -e

5、在客户端访问

NFS协议的目标是提供一种网络文件系统,因此对NFS共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs。既可以手动挂载,也可以加入fstab配置文件来实现开机自动挂载。

若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind系统服务。另外,为了使用showmount查询工具,建议将nfs-utils软件包也一并装上

5.1、手动挂载NFS共享目录

以root用户身份执行mount操作,将NFS服务器共享的/opt/wwwroot目录挂载到本地目录/aaa。与挂载本地文件系统不同的是,设备位置处应指出服务器地址

5.1.1、创建挂载点并挂载

5.1.2、以root的身份创建文件

5.1.3、创建普通测试用户ABC(UID:2000)

5.1.4、切换到普通用户并创建测试文件

5.1.5、在服务端查看:

5.2、强制卸载 NFS 

NFS 客户端与服务器端的耦合度非常高。如果客户端正在挂载使用,而服务器端 NFS 服务突然停止,那么在客户端执行 df -h 命令时可能会出现卡死现象。

此时,使用 umount 命令无法直接卸载,需要加上 -lf 参数才能卸载。具体步骤如下:

1、重新开一个终端。

2、执行 cat /etc/rc.local 命令,查看挂载点。

3、使用 umount 命令卸载,其中 -l 表示解除正在繁忙的文件系统,-f 表示强制卸载

总结:

本章系统阐述了DNF软件仓库与NFS共享服务的配置与管理方法。DNF部分,从全局配置到本地/远程仓库的搭建,详细解析了软件源添加、启用、禁用及软件包安装、更新、删除等操作,强调通过createrepo创建本地仓库及dnf config-manager管理源的灵活性。NFS部分,通过安装nfs-utils和rpcbind,配置共享目录权限,并结合systemctl启停服务,实现跨主机的文件共享;客户端的挂载与自动加载(/etc/fstab)进一步提升了资源访问的便捷性。同时,针对NFS卸载异常场景,介绍了强制卸载(umount -lf)的解决方案。通过本章学习,同学们可掌握从软件包自动化管理到分布式存储服务的全链路技能,为构建高效、稳定的IT基础设施奠定坚实基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值