0
点赞
收藏
分享

微信扫一扫

第七章部署DNF仓库及NFS共享服务

a.配置DNF

借助于DNF软件仓库,可以完成安装,卸载,自动升级rpm软件包等任务,能够自动给查找并解决rpm包之间的依赖关系,而无需管理员逐个手工地去安装每个rpm软件包

dnf与yum完全兼容,提供了yum兼容的命令行以及为扩展和插件提供的api

1)DNF配置文件

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

  • "main"部分保存着DNF的全局设置
  • “repository”部分保存着软件源的设置,可以有零个或多个repo源相关文件。他们也可以定义不同的“repository”

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

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

另外一种是在/etc/yum.repos.d目录下增加.repo文件

2)配置main部分

/etc/dnf/dnf.conf文件包含的“main”部分,配置示例如下:

[main]

gpgcheck=1

installonly_limit=3

clean_requirements_on_remove=True

best=True

常用选项说明:

参数名称

说明

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,不建议降低此值

3)配置repository部分

repository部分允许您定义定制化的openEuler软件仓库,各个仓库的名称不能相同,否则会引起冲突

配置repository部分有两种方式:

  • 一种是直接配置/etc/dnf/dnf.conf文件中的”repository“部分
  • 另外一种是配置/etc/yum.repos.d目录下的 .repo文件

示例:

[repository]

name=repository_name

baseurl=repository_url

选项说明:

参数

说明

name=repository_name

软件仓库(repository)描述的字符串

baseurl=repository_url

软件仓库的地址

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

配置/etc/yum.repos.d目录下的 repo文件,openEuler 提供了多种 repo 源供用户在线使用,各 repo源含义可参考系统安装

使用 root 权限添加 openEuler repo 源,示例如下:

# vi /etc/yum.repos.d/openEuler.repo

[os ]

name=openEuler-$releasever-0S

baseurl=https://repo openeuler.org/openEulen-{version}/0S/$basearch/

enabled=1                   #enabled 为是否启用该软件源仓库,可选值为1和0。缺省值为1,表示启用该软件源仓库

gpgcheck=1

gpgkey=https://repo.openeuler.org/openEuler-{version}/0s/$basearch/RPM-GPG-KEY-open Euler          #gpgkey 为验证签名用的公钥

4)显示当前配置

#显示当前的配智信息

dnf config-manager --dump

#显示相应软件源的配置,首先查询repo id:

dnf repolist

#然后执行如下命分显示对应id的软作源配repository 为查询得到的repo id:

dnf config-manager --dump repositony

#您也可以使用一个全局正则表达式来显示所有匹配部分的配置:

dnf config-manager --dump glob_expression

5)创建本地软件源仓库

要建立一个本地软件源仓库,请按照下列步骤操作:

1.安装 createrepo 软件包。

  dnf install createrepo

2.将需要的软件包复制到一个目录下,如/mnt/local_repo/

3.创建软件源

   createrepo /mnt/local_repo

6)添加、启用和禁用软件源

 1.添加软件源

  • 要定义一个新的软件源仓库,您可以在/etc/dnf/dnf.conf文件中添加“repository”部分,或者在/etc/yum.repos.d/目录下添加“.repo”文件进行说明
  • 建议通过添加“.repo”的方式,每个软件源都有自己对应的“ .repo”文件
  • 要在系统中添加一个这样的源,请在root权限下执行如下命令,执行完成之后会在/etc/yum.repos.d/日录下生成对应的repo 文件

#dnf config manager --add repo repository url

2.启用软件源

  • 要启用软件源,请在 root 权限下执行如下命令,其中 repository 为新增.repo 文件中的repo id(可通过 dnf repolist 查询):

    #dnf config-manager --set-enable repository

  • 也可以使用一个全局正则表达式,来启用所有匹配的软件源。其中glob_expression 为对应的正则表达式,用于同时匹配多个repo id:

    # dnf config-manager --set-enable glob_expression

3.禁用软件源

  • 要禁用软件源,请在root权限下执行如下命令:

    #dnf config-manager --set-disable repository   

  •  同样的,您也可以使用一个全局正则表达式来禁用所有匹配的软件源:

    #dnf config-manager  --set-disable glob_expression

7)管理软件包

1.搜索软件包

您可以使用rpm包名称、缩写或者描述搜索需要的RPM包,使用命令如下:

dnf search httpd

2.列出软件包清单

  • 要列出系统中所有己安装的以及可用的RPM包信息,使用命令如下:

    dnf list all

  • 要列出系统中特定的 RPM 包信息,使用命令如下:

    dnf list httpd 

3.显示 RPM 包信息

要显示一个或者多个 RPM 包信息,多个包之间以空格分隔,使用命令如下:

dnf info httpd zip(以httpd,zip两个包为例)

4.安装 RPM 包

  • 要安装一个软件包及其所有未安装的依赖,请在root权限下执行如下命令

    dnf install package_name

  • #示例如下:

    dnf install httpd

  • 也可以通过添加软件包名字同时安装多个软件包配置文件/etc/dnf/dnf.conf 添加参数strict=False,运行 dnf 命令参数添加--setopt=strict=0
  • 请在 root 权限下执行如下命令:

    dnf install package name package name... --setopt=strict=0

5.下载软件包

  • 使用 dnf 下载软件包,请在root权限输入如下命令:

    dnf download package_name

  • 如果需要同时下载未安装的依赖,则加上--resolve,使用命令如下:

    dnf download --resolve package_name

  • #示例如下:

     dnf download --resolve httpd

6.删除软件包

要卸载软件包以及相关的依赖软件包,请在root权限下执行如下命令:

dnf remove package name...

示例如下:

dnf remove totem

8)管理软件包组

软件包集合是服务于一个共同的目的一组软件包,例如系统工具集等

1.列出软件包组清单

  • 使用 summary 参数,可以列出系统中所有已安装软件包组、可用的组,可用的环境组的数量,命令如下:

    dnf groups summary

  • 要列出所有软件包组和它们的组ID,命令如下:

    dnf group list

2.显示软件包组信息

  • 要列出包含在一个软件包组中必须安装的包和可选包,使用命令如下:

    dnf group info glob_expression..

  • #例如显示 Development Tools 信息,示例如下:

    dnf group info "Development Tools"

3.安装软件包组

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

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

    dnf group install group_name

    dnf group install groupid

  • #例如安装 Development Tools 相应的软件包组,命令如下:

    dnf group install "Development Tools"

    dnf group install development

4.删除软件包组

  • 要卸载软件包组,您可以使用软什包组名称或它的ID,在root权限下执行如下命令:

    dnf group remove group_name

    dnf group remove groupid

  • 例如删除 Development Tools 相应的软件包组,命令如下

    dnf group remove "Development Tools

    dnf group remove development

5.检查并更新

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

1)检查更新

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

dnf check-update

2)升级

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

    dnf update package_name

  • #例如升级rpm包,示例如下:

    dnf update anaconda-gui.aarch64 

  • #类似的,如果您需要升级软件包组,在root权限下执行如下命令:

    dnf group update group_name

3)更新所有的包和它们的依赖

要更新所有的包和它们的依赖,在root权限下执行如下命令:

dnf update

b.NFS共享存储服务

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

1.使用 NFS 发布共享资源

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

1)安装 nfs utils、rpcbind 软件包

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

手动加载NFS 共享服务时,应该先启动rpcbind,再启动 nfs

[root@node01 ~]# dnf install -y nfs-utils rpcbind

[root@node01 ~]# systemctl enable nfs

[root@node01 ~]# systemctl enable rpcbind

2)设置共享目录

NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)

在 exports 文件中设置共享资源时,记录格式为目录位置客户机地址

例如,若要将文件夹/opt/wwwroot 共享给192.168.10.0/24 网段使用,允许读写操作,具体配置如下所示

[root@node01 ~l# mkdir -p /opt/wwwroot

[root@node01 ~l# vim /etc/exports

/opt/wwwroot 192.168.10.0/24(rw,sync,no root squash)

其中客户机地址可以是主机名、IP地址、网段地址,允许使用*、?通配符

权限选项中:

  • rw表示允许读写(ro 为只读)
  • sync 表示同步写入
  • norootsquash 表示当客户机以root身份访问时赋予本地 root 权限(默认是 root squash,将作为 nfsnobody 用户降权对待)

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

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

[root@localhost ~l# vi /etc/exports

/var/ftp/pub 192.168.10.101(ro) 192.168.10.102(rw)

3)启动 NES 服务程序

[root@node01 ~]# systemctl start rpcbind

[root@node01 ~]# systemctl start nfs-server

[root@node01 ~]# dnf install net-tools -y   

 #安装网络工具,否则无法使用netstat

[root@node01 ~]#netstat anpt l grep rpc

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

[root@node01 ~l# showmount -e

Export list for node1:

/opt/wwwroot 192.168.10.0/24

/var/ftp/pub 192.168.10.102,192.168.10.101

2.在客户机中访问 NFS 共享资源

NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载,对应的文件系统类型为 nfs

既可以手动挂载,也可以加入 fstab 配置文件来实现开机自动挂载

1)安装并启动 rpcbind

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

[root@node02 ~]# dnf install -y rpcbind nfs-utils

[root@node02 ~]# systemctl enable rpcbind

[root@node02 ~]# systemctl start rpcbind

如果已经安装了 nfs-utils 软件包,则客户机也可以使用 showount 查看 NFS 服务器端共享了哪些目录,查询格式为“showmount-e服务器地址”

[root@node02 # showmount -e 192.168.10.101

Export list for 192.168.10.101:

/var/ftp/pub 192.168.10.101(ro) 192.168.10.102(rw)   *

/opt/wwwroot 192.168.10.0/24(rw,sync,no root squash)    *

2)手动挂载 NFS 共享目录

以 root 用户身份执行 mount 操作,将 NFS 服务器共享的/opt/wwwroot 目录挂载到本地目录/var/www/html

与挂载本地文件系统不同的是,设备位置处应指出服务器地址

[root@node02 ~l# mount 192.168.10.101:/opt/wwwroot /var/www/html/

[root@node02 w# tail -1 /etc/mtab                                   //确认挂载结果

192.168.10,101 :/opt/wwwroot /var/www/html nfs4 mw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo-600,metrans=2,sec-sys,clientaddr=192.16810.102,local lock=none,addr=192.168.10.101 0 0

[root@node02 ~l# vim /var/www/html/index.html                                             //在客户机创建测试文件

test web document

完成挂载以后,访问客户机的/var/www/html 文件夹,实际上就相当于访问 NFS 服务器中的/opt/wwwroot 文件夹,其中的网络映射过程对于用户程序来说是透明的

3)fstab 自动挂载设置

  • 修改/etc/fstab 配置文件,加入 NFS 共享日录的挂载设置
  • 注意将文件系统类型设为 nfs,挂载参数建议添加 netdev(设备需要网络)
  • 若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载
  • 这样客户机就可以在每次开机后自动挂载NFS共享资源了

[root@node02 ~l#vim /etc/fstab                            //省略部分信息......

192.168.10.101:/opt/wwwroot /var/www/html nfs defaults, netdev 0 0

4)强制卸载 NFS

如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象

这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载

当出现卡死现象时,要重新开一个终端,执行cat/ete/rc.local命令,查看挂载点

然后使用umount命令卸载,其中

  • -1表示解除正在繁忙的文件系统
  • -f表示强制

[root@localhost ~]# umount /var/www/html

umount.nfs4:  /var/www/html:device is busy

[root@localhost ~l# umount -lf /var/www/htmI


举报

相关推荐

0 条评论