RH354 RHEL 8 New Features for Experienced Linux Administrators

Introduction

Chapter 1: Previewing RHEL8

Section 1.1: Red Hat Enterprise Linux 8 Overview

Chapter 2: Installing or Upgrading to RHEL8

Section 2.3: Upgrading Servers to RHEL8

Chapter 3: Provisioning and Configuring Servers

Section 3.1: Performing Package Management using Yum

Section 3.2: Administering Servers with Cockpit

Chapter 4: Adapting to Core System Changes

Chapter 5: Implementing Storage Using New Features

Section 5.5: Administering NFS Enhancements

Chapter 6: Managing Containers with the New Runtime

Section 6.1: Deploying Containers with the New Container Runtime

Chapter 7: Implementing Enhanced Networking Features

Section 7.1: Managing Server Firewalls in RHEL 8

Section 7.3: Configuring Server Networking with NetworkManager

Chapter 8: Adapting to Virtualization Improvements

Section 8.1: 配置虚拟机

Introduction

Course Objectives

  • 通过了解操作系统关键功能的更改,准备部署RHEL8

  • 了解如何使用RHEL8的关键新功能,以便利用针对用例的新功能。

Prerequisites

  • (EX200 / RHCSA. RHCE certification may be beneficial.

Chapter 1: Previewing RHEL8

Section 1.1: Red Hat Enterprise Linux 8 Overview

1. Supported Architectures

Supported Processor Architectures

  • 64-bit AMD/Intel (x86_64)

  • 64-bit ARM (aarch64)

  • IBM POWER, little endian (ppc64le)

  • IBM Z (s390x)

ARMv8 Support

在RHEL7中试用了对64位ARM的支持,现在支持作为RHEL8的核心组件:

RHEL 8 for ARM64 Support

  • 适用于ARM的Red Hat Enterprise Linux(aarch64)。

  • 支持64位ARMv8处理器。

  • 针对云,超大规模,电信,HPC和边缘计算的服务器优化SoC。system-on-chip

  • RHEL8目标是跨多个ARM供应商的单一操作平台。

Little Endian IBM POWER Support

针对IBM Power Systems的RHEL8的处理器支持有一些变化:

  • IBM Power Systems的RHEL 8仅支持小端模式(ppc64le)。supports little endian mode only (ppc64le)

  • 支持POWER8和POWER9处理器。

  • 可以是Red Hat Virtualization for Power,PowerVM和PowerNV(裸机)上的KVM Guest。

备注:

  • 较早版本的RHEL使用ppc64 big endian体系结构支持IBM Power Systems。

  • RHEL8不再为big endian构建或交付。 仅支持little endian ppc64le模式。

  • 一个小端系统将数据存储在内存有序的最低有效字节中,或最后有效字节之后,与大端系统的行为相反。 x86_64架构也是小端。 在小端模式下运行POWER处理器的优势在于,它使程序员可以更轻松地将应用程序从x86_64移植到POWER。

2.主要特点和变化

Selected Changes in RHEL 8:以下是对RHEL 8中所选更改的回顾。并非涵盖RHEL 8中的所有更改或新功能。

1. Installation and Deployment

Overview of Installation Changes:

  • Restructure of channels into "BaseOS" and "AppStream".

  • "System Purpose" to indicate planned purpose for entitlement and support level.

  • Enhancements to Kickstart directives.

  • Can install and boot from NVDIMM devices (using either Anaconda and Kickstart).

2. System Startup and Management

对bootloader management引导加载程序管理的更改:

2.1. BOOM Boot Manager

  • Simplifies process of creating boot entries.

  • Adds entries, does not modify them.

  • Simplified CLI and API.

备注:

  • BOOM是一个Linux启动管理器,可以简化启动条目的创建。

  • BOOM可以引导基于LVM的快照系统映像,而不修改现有引导加载程序配置,因为BOOM仅插入其他条目,维护现有配置并像以前一样运行。

  • BOOM具有命令行界面和管理员创建引导条目的API。

2.2. Enabling Secure-boot Guests

  • RHEL 8支持使用加密签名镜像的方式安全启动客户机。

  • 镜像由受信任的第三方组织签署,以确保完整性。

3. Kernel

当前内核支持64位ARM体系结构的52位物理寻址,5级分页,Control Group v2机制,早期kdump,the deadline process scheduler,以及 seperate time namespaces的配置

3.1 Packaging Changes

  • kernel-core提供核心内核。

  • kernel-modules和kernel-modules-extra包含与kernel-core软件包版本匹配的内核模块。

  • kernel现在是一个元数据包,可确保安装内核和内核模块。

  • kernel-doc被删除。 改用内核源RPM。

备注:这种新的内核打包方法允许更细粒度和模块化的内核配置。 在当今基于云的部署中尤为重要,因为空间非常重要。

3.2 Memory Management

  • 新的5级分页模型。

  • 57位虚拟内存寻址(128 PiB可用地址空间)。

  • 52位物理内存寻址(理论上最多4个PiB RAM)。

  • 实际物理支持限制可能因硬件而异。

3.3 Enabling Early Kdump at Boot

  • RHEL 7和以前的RHEL版本,作为启动过程的multi-user.target的一部分kdump.service,在启动这个kdump.service之前, 可能无法捕获此服务事件之前发生的问题。

  • RHEL 8通过在启动内核的initramfs中存储崩溃内核的vmlinuz和initramfs来提供早期的Kdump。 这些组件在早期initramfs阶段直接加载到保留内存(crashkernel)中,允许在引导的所有阶段捕获内核崩溃转储。

3.4 Enhancing the Process Scheduler

  • CFS进程调度程序仍然是RHEL 8中的缺省进程调度程序。

  • RHEL 8支持新的截止日期进程调度程序deadline process scheduler,该调度程序为SCHED_DEADLINE调度类提供新属性截止日期,周期和运行时。

  • SCHED_DEADLINE基于最早期限优先(EDF)和恒定带宽服务器(CBS)算法。

  • SCHED_DEADLINE适用于多媒体或工业控制等实时应用,并在具有NUMA功能的机器上提供改进的性能。

  • 开发人员使用sched_setattr()和sched_getattr()系统调用来管理计划属性。

3.5 Enabling Time Namespaces

  • RHEL 8支持具有不同时钟的命名空间,作为系统当前时间视图的偏移量。

  • 启用时间命名空间允许在不同时间点运行测试。

4. Networking

RHEL 8中网络功能的增强和更改包括:

4.1 Firewall Changes

  • nftables是默认的防火墙后端。

  • nftables是iptables,ip6tables,arptables,ebtables和ipset的继承者。

  • 仍然建议使用firewall-cmd来管理防火墙; 仅将nft直接用于复杂配置。

  • iptables兼容性工具可用。

备注:

  • iptables和ebtables工具集由RHEL 8中的nftables替换.nftables框架及其核心工具nft在方便性,功能和性能方面提供了重大改进。 它统一了IPv4和IPv6工具,使用快速查找表而不是线性规则处理,支持在规则集中进行调试和跟踪,并且具有更一致和紧凑的语法。 可以使用基于旧命令名称的兼容性工具,并在xtables-translate(8)手册页中记录了将规则集从iptables和ip6tables迁移到nft的工具。

  • firewalld系统仍然是管理典型用例的本地防火墙规则的推荐方法。 在RHEL 8中,它使用nftables作为其默认后端规则系统。

  • 如果后端规则系统在以后的Red Hat Enterprise Linux版本中再次更改,则firewalld旨在轻松添加和选择可用规则后端中的默认值。

4.2 NetworkManager and Network Scripts

  • nmcli是通过NetworkManager管理网络配置的首选工具。

  • 新版本的ifup和ifdown需要NetworkManager。

  • 旧的网络脚本(如ifup-local)已弃用,默认情况下不可用。

4.3 NTP Time Synchronization

  • Chrony(chronyd)替换了ntpd,作为NTP的默认服务实现

  • Chrony在各种条件下表现更好,同步更快,精度更高。

  • 迁移工具位于 /usr/share/doc/chrony/中。

备注:

  • 在RHEL 8中,Chrony完全取代了ntpd作为操作系统提供的NTP实现。 ntpd包不再可用。

  • 在许多实际场景中,Chrony的性能优于ntpd,use case:当时间参考的访问是间歇性的,当网络频繁拥塞时,或者系统时钟受到滴答率突然变化的影响时(由于温度的变化) 晶体振荡器)。 它还有许多其他增强功能。

4.4 Enhancements to TCP

  • TCP stack更新到 4.16版。

  • 改进了具有高入口连接速率的TCP服务器的性能。

  • 新的BBR和NV拥塞控制算法。

4.5 Removed Network Drivers

  • 某些过时的网络驱动程序已从RHEL 8中删除。

  • e1000驱动程序已删除,但仍支持e1000e。

  • tulip driver郁金香驱动程序被删除,这将影响Microsoft Hyper-V上的“第1代”虚拟机。

备注:

  • 基于PCI的英特尔千兆以太网设备的e1000驱动程序已被删除。 这种常见的网卡系列是使用i440fx机器类型的KVM虚拟机的默认驱动程序。 Red Hat现在推荐使用RHEL 8中的q35机器类型。

  • 基于PCIe的英特尔千兆以太网设备的相关e1000e驱动程序仍然可用并受支持。

5. Software Management

A new Yum feature is the package grouping method called modules.

5.1 Modules

  • 模块的安装独立于底层操作系统主要版本。

  • 模块系统同时支持多个版本的应用程序。

  • 模块绑定到应用程序流。

5.2 Updates to RPM and YUM

  • DNF是Yum的技术改写,是RHEL 8中RPM软件包的新标准软件包管理功能。

  • yum命令(v4)保留为推荐的命令行实用程序,符号链接到dnf以便于向后脚本和操作员兼容性。

  • Yum v4支持支持软件模块化的模块。

  • Yum v4现在了解weak和布尔依赖。

  • Yum v4提供了大量插件和附加工具。

6. Storage

新的本地存储管理器使用共享存储池提供卷管理的文件系统。

6.1 Stratis Storage Manager

  • 能够创建一个或多个块设备的池。

  • 在这些池中创建动态且灵活的文件系统。

  • Stratis支持文件系统快照。 快照独立于源文件系统。

6.2 Virtual Data Optimizer (VDO)

  • VDO在三个阶段减少了存储上的数据占用空间:(zero-block elimination) 零块消除,冗余块的重复数据删除 (deduplication of redundant blocks) 和 数据压缩 (data compression)。

  • VDO删除仅包含零的块,并保留其元数据。

  • 虚拟机的虚拟磁盘是VDO卷的一个很好的用例。

6.3 XFS Copy-on-Write Extents

  • 创建文件系统时,默认情况下启用写时复制(CoW)

  • 添加对XFS的支持,以允许两个或多个文件共享相同的数据块。

  • 如果一个文件发生更改,则会中断共享并跟踪单独的块。

  • 高效的文件克隆,每个文件的快照以及NFS和Overlayfs的操作。

  • RHEL 7只能以只读模式安装带有CoW扩展区的XFS。

备注:共享的CoW写时复制数据扩展区功能允许多个文件共享一组公共数据块。

6.4 Supporting SCSI-3 Persistent Reservations with Virtio-SCSI

  • 在RHEL 8上,qemu和libvirt都支持存储设备上的SCSI-3持久保留,这些持久保留通过direct-attached LUNs所支持的Virtio-SCSI向VM呈现。

  • 虚拟机可以共享Virtio-SCSI存储设备,并使用SCSI-3 PR来控制访问。

  • 使用device-mapper-multipath管理的存储设备可以传递给VM以使用SCSI-3 PR,主机可以管理所有路径上的PR操作。

6.5 Other Storage Features

  • 用于加密存储的新LUKS2磁盘格式取代了LUKS1。

  • 块设备现在使用多队列调度,默认情况下启用scsi-mq驱动程序以获得更好的SSD性能。

6.6 Removed Storage Features

  • 已删除许多旧的存储驱动程序和对过时适配器的支持。

  • Btrfs文件系统已被删除。

  • 软件管理的以太网光纤通道(FCoE)支持已被删除。

7. Security Features

RHEL 8中引入了许多新的或增强的安全相关功能。重要更改包括:

7.1 System-wide Cryptographic Policy

  • 实现全系统级别的TLS/IPSec/SSH/DNSSEC/Kerberos加密策略

  • 允许管理员更新协议和算法列表,以便始终遵循许多服务的建议实践。

  • 提供了一些策略,可以使用update-crypto-policies命令应用这些策略。

  • DEFAULT策略提供与PCI-DSS兼容的合理默认值。

7.2 Improving sosreport Capabilities

  • RHEL 8包含3.6版本的sosreport工具,它支持新的配置文件,例如容器,用户和策略定义的命令行预设,以及外部命令的大小限制

  • 此版本的sosreport还支持大量新插件,例如ansible,buildah和runc

  • sos-collector实用程序在RHEL 8中可用,并从多主机环境(如RHV群集或RHEL高可用性群集)收集sosreport

7.3 Other Security Changes

  • Audit subsystem审计子系统已更新至3.0版。

  • rsyslog使用其他新功能和修复程序更新到8.37.0。

  • OpenSSH 7.8p1 rebase,删除了对弱密码和过时的SSH版本1协议的支持。

  • OpenSCAP CLI改进,草案为RHEL 8的OSPP配置文件版本4.2。

  • tcp_wrappers支持已被删除。

8. User Environment

GNOME现在是唯一可用的显示管理器。 KDE已完全从发行版中删除。 Wayland是默认的显示服务器,提供多种优势和改进,包括更强大的安全模型,改进的多显示器处理和改进的用户界面扩展。

8.1 Graphical Desktop Changes

  • Wayland是默认的显示服务器; Xorg仍然可用。

  • 已更新至GNOME 3.28。

  • KDE已从发行版中删除

9. Virtualization

在此版本中,QEMU现在可以模拟Intel Q35主板芯片组,该芯片组为现代虚拟化操作系统提供了更好的硬件平台。

9.1 Virtual Machine Management

  • Packages for virtualization are in the virt module stream.

  • Cockpit Web管理工具中的新界面,用于管理虚拟机。

  • virt-manager已弃用但仍可用。

9.2 Updated KVM Hardware Model

  • KVM现在默认为Q35硬件模型(较新的硬件仿真)。

  • 更好地支持PCI Express直通,支持安全启动。

  • 以前的英特尔440FX仿真仍可用于较旧的操作系统。

10. Updates to HA Clustering

  • Pacemaker升级到2.0.0版

  • pcs具有新功能,支持Corosync 3,一些语法得到更改

11. Linux Containers

RHEL 8包括一个新的包模块,它提供了一个名为Podman的新容器引擎来取代Docker和Moby。 与Docker相比,Docker依赖于守护进程来构建和运行容器,这个新的工具集和容器引擎允许构建和运行没有守护进程的容器。

11.1 New Container Tools

  • Podman容器引擎是守护进程并支持容器的执行。

  • Buildah支持容器映像的构建,包括从头开始构建这些映像,或者从Dockerfile构建映像。

  • 您可以使用Skopeo在注册表中复制和检查容器images。

REFERENCES

  • https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8-beta/html/8.0_beta_release_notes/

  • Knowledgebase: "What is early kdump support and how do I configure it?"

  • Knowledgebase: "Pacemaker 2.0 upgrade in Red Hat Enterprise Linux 8"

  • XFS Copy-On-Write Data Extents

  • Consistent security by crypto policies in Red Hat Enterprise Linux 8

  • Five-level page tables

  • Time namespaces

  • Zero-copy networking

  • Boom Boot Manager

  • Deadline Task Scheduling

  • chrony: Comparison of NTP implementations

  • BBR: Congestion-Based Congestion Control

  • TCP-NV: An Update to TCP-Vegas

  • Linux Multi-Queue Block IO Queueing Mechanism (blk-mq)

  • Sysreport sos-3.6

Summary

  • Red Hat的多架构计划旨在为各种处理器和机器架构提供软件支持,这些架构由基于Red Hat Enterprise Linux构建的通用操作平台提供支持。

  • 更新的内核支持64位ARM体系结构的52位物理寻址,5级分页和Control Group v2机制。

  • nftables将iptables替换为firewalld后端。

  • nmcli是管理网络配置的首选工具。

  • Chrony(chronyd)完全取代ntpd作为NTP实现。

  • 已从RHEL 8中删除了许多过时的网络驱动程序。

  • Yum的一个新功能是称为模块的包分组方法。

  • KVM现在默认为Q35硬件模型(提供更新的硬件仿真)。

============================================================================

Chapter 2: Installing or Upgrading to RHEL8

Section 2.1: Installing RHEL8

1. Repository Structure

  • 红帽企业Linux改变了包被划分为channels渠道或repositories存储库的方式。

  • 包被重组为基本操作系统(BaseOS)和应用程序流(AppStream)存储库。

  • 还重新构建了专用存储库以支持新的AppStream和模块化上下文。

RHEL 8 Repositories and Contents

  • BaseOS:最小操作系统安装所需的软件包。

  • AppStream:大多数其他软件包,除了那些需要附加组件权限的软件包。

  • CodeReady Linux Builder:提供编程语言构建时依赖性的包; 由应用程序开发者使用

  • Extras和Optional存储库已被删除。 AppStream设计不需要额外的存储库。 包已移至AppStream或已删除。 适当的丢弃包可能最终出现在EPEL中。

  • Supplemental:存在并在RHEL 8中保留相同的角色。

  • 有针对NFV的高可用性,弹性存储,实时和实时的附加存储库。 附加产品需要额外的entitlements。

2. Installation Media Structure

安装介质选择决定了启动安装的方法。 媒体选择与以前的RHEL版本保持一致。 存储库更改确定安装包的位置。 AppStream的模块化改变了在基本操作系统上对包进行分组和分层的方式。

Available Installation Media Formats

  • Netboot ISO:仅包含Anaconda安装程序。 此方法需要配置的网络才能访问HTTP,FTP或NFS可用的软件包存储库。

  • 二进制DVD:包含Anaconda,以及BaseOS和AppStream存储库。

  • QCOW2映像:预构建的系统磁盘已准备好在云或虚拟环境中作为VM部署。

包模块化

Module Features

  • 模块可以独立于底层操作系统主要版本安装。

  • 模块系统设计同时支持多个应用程序版本。

  • 模块可以包含多个流,以使多个应用程序版本可供安装。

  • stream 流表示与先前版本大不相同

  • 当较新的应用程序版本不向后兼容时,可以创建stream 流。

  • 无论是升级还是降级,安装流都会完全取代以前安装的stream 流。 将此与旧版程序包升级进行对比,后者仅添加或删除已更改的程序包文件。

备注:

  1. 例如,您可以安装Perl 5.24流,即使Perl 5.26软件包可用,也不会列出或应用任何更新。 您可以随时切换到Perl 5.26流。 模块功能取代了Red Hat Software Collections。

  2. 完整模块命名规范采用以下形式名称name:stream:version:context:architecture/profile。 当默认值可接受时,可以使用更短的规格。

Module Naming Specification

  • name

  • name:stream

  • name:stream:version

  • Any of the above specifications with ::architecture appended.

  • name:stream:version:context:architecture

  • Any of the above specifications with /profile appended.

Describing the System Purpose Configuration

System Purpose Dialog Box

角色:服务器,工作站,计算节点或客户端的选择。

服务水平协议:该系统所需的支持级别。

用法:选择生产,开发或灾难恢复。

这些选择决定了安装期间如何处理订阅附件和权利消耗。

System Purpose Kickstart Directives

  • syspurpose --role=

  • syspurpose --sla=

  • syspurpose --usage=

Section 2.3: Upgrading Servers to RHEL8

1. Describing LeApp

LeApp是一个可扩展的框架,旨在帮助管理员进行应用程序现代化。 它支持Red Hat Enterprise Linux,CentOS和Fedora,是从RHEL 7到RHEL 8的就地升级的首选方法。

LeApp现代化框架

  • 使用户能够在不中断现有工作负载的情况下对其进行现代化。

  • 三种方法:升级到位,迁移到新的地方,或容器化。

  • 设计模块化架构,以取代预升级辅助工具。

  • 各种迁移策略和特定于应用程序的逻辑保存在独立的模块或插件中。

  • LeApp是消息驱动的,用于在actor之间传递数据。 actor的执行取决于在其之前运行的其他actor生成的数据。

LeApp是新设计的模块化架构,用于取代预升级辅助工具,其架构对于现代应用程序升级要求的复杂性而言过于严格。 Actors将分别指定它们所需的数据类型并在其输入和输出端口上提供,并且依赖性求解器将生成依赖关系图以满足这些要求,即将输出端口连接到适当的输入端口。 actor的实现是在shell中完成的,使用Python包装器为(基于Python的)框架提供适当的接口。 shell部分使用Ansible(作为Ansible模块)执行,并使用JSON进行通信。

有关各种迁移策略和特定于应用程序的逻辑的信息保存在独立模块或插件中,而不是单个源文件中。模块和插件可由特定应用程序的专家维护,与核心LeApp应用程序的维护无关。 LeApp通过添加模块依赖关系和模块之间传递信息的方法来解决preupgrade-assistant限制。 LeApp是消息驱动的,用于在actor之间传递数据。 actor的执行取决于在其之前运行的其他actor生成的数据。这与Ansible形成对比,其中参数必须在执行前在剧本中指定。

LeApp Components

  • Workflow: describes an entire upgrade process.

  • Phase: a section of the workflow dedicated to a specific part of the upgrade.

  • Stage: phases are broken into stages, Before, Main, and After.

  • Actor: a step in the workflow that performs a task. Actors can be tagged which allows them to be included in a workflow automatically by the framework.

  • Tag: allows the framework to locate and execute actors.

  • Message: used to transfer information between actors.

  • Model: defines the structure of the data sent in messages. Models use Topics to group the data.

  • Topic: defines the subject area for Model data.

  • Repository: holds the definitions for all Actors, Tags, Topics, and Workflows.

世上最强Linux系统全功能大揭秘_java

LeApp Status

LeApp正在大力开发,目前不适合所有升级。

LeApp Limitations

  • 目前,LeApp仅适用于最小的Red Hat Enterprise Linux 7安装。

  • LeApp仅支持具有单一网络接口的系统; 没有bridges, bonds, or teams.

  • LeApp仅支持具有简单存储配置的系统; 没有RAID,多路径,UEFI或加密。

  • LeApp不支持分层产品; 但模块可以由任何专家编写。

  • 唯一受支持的体系结构是x86_64

Chapter 3: Provisioning and Configuring Servers

Section 3.1: Performing Package Management using Yum

1. Using Yum v4

RHEL8包含yum第4版,它使用DNF技术作为后端。 虽然版本4中yum的后端已更改,但命令的典型选项保持不变。

DNF Technology in Yum v4

  • DNF取代YUM作为Red Hat Enterprise Linux 8中RPM包的包管理技术。

  • DNF API增强了集成,并解决了Yum v3 API的稳定性问题。

  • Yum v4包含DNF提供的新功能。

  • 推荐的yum命令是到dnf的链接。

Enhancements in Yum v4

  • 支持启用软件AppStreams的模块。

  • 现在理解weak和布尔依赖。

  • 提供更广泛的插件和附加工具集合。

  • 提高Yum的性能,这是云,CI / CD和容器工作负载的关键。

Modules, Streams, and Profiles

模块是一起安装的软件包的集合。 模块解决以前与旧版或新版软件包相关的问题。 模块可以包括一个或多个流,这些流是由模块提供的软件的不同版本。 模块一次只有一个活动流,默认情况下是包含最新版本软件的流。 模块还包括配置文件,这些配置文件是支持用例的软件包列表,例如,用于部署最小安装。

Section 3.2: Administering Servers with Cockpit

1. Introducing Cockpit

RHEL服务器可以远程配置和访问的方式发生了一些重大变化。 所有与GUI相关的system-config- *工具都已删除。 无需手动配置,文件编辑或执行多个命令。 所有这些工具或命令都被Cockpit取代。 Cockpit是一个交互式服务器管理界面。 Cockpit从浏览器中的真实Linux会话直接与操作系统交互,取代了对X转发会话的需求。

Cockpit as a Troubleshooting Tool

  • Graphs of system statistics in real-time

  • Inspecting and filtering syslog events

  • Configuring SELinux and reviewing SELinux access control errors

  • Creating diagnostic reports for Red Hat Support

  • Enabling and configuring kernel crash dumps

  • Running commands from a terminal session

Cockpit as a Management Tool

  • Controlling running system services

  • Configuring network interfaces and firewalld

  • Administering user accounts

  • Monitoring and configuring storage devices

  • Managing system subscriptions and software updates

  • Managing containers and virtual machines

2. Basic system administration using Cockpit

Basic system operations

  • Shutting down or restarting the system

  • Accessing hardware information

  • Changing performance profiles

  • Configuring host name

  • Connecting to a realmd domain

Figure 3.2: Changing system profile

Figure 3.3: Accessing system logs

Figure 3.4: Changing network configuration

Figure 3.5: Creating new user accounts

Figure 3.6: Controlling services

Figure 3.7: Creating diagnostic report

Figure 3.8: Registering a system

Figure 3.9: Accessing the terminal

Section 3.3: Building System Images with Composer

1.Composer

Composer是RHEL8中作为技术预览提供的新工具。 它允许管理员创建Red Hat Enterprise Linux的自定义系统映像。 Composer在Cockpit中有一个图形用户界面。 也可以使用composer-cli命令从终端访问它。

Composer Output Formats

  • QEMU QCOW2 Image (*.qcow2)

  • Ext4 File System Image (*.img)

  • Raw Partitioned Disk Image (*.img)

  • Live Bootable ISO (*.iso)

  • TAR Archive (*.tar)

  • Amazon Machine Image Disk (*.ami)

  • n Azure Disk Image (*.vhd)

  • VMware Virtual Machine Disk (*.vmdk)

2.Composer Blueprints

Composer基于蓝图Blueprints创建系统镜像。 蓝图通过列出将成为系统一部分的软件包,用户,SSH密钥和其他可能的资源来定义映像。 蓝图已版本化并可进行编辑。 使用Cockpit从蓝图创建新图像时,镜像与蓝图相关联。

Composer System Requirements

  • Dedicated virtual machine with SELinux in permissive mode

  • CPU with 2 cores

  • 4 GB RAM

  • 20 GiB disk space

  • Connectivity to Internet and to another server with repository mirrors.

Section 3.4: Automating with RHEL System Roles

1.System Roles in RHEL8

Red Hat Enterprise Linux 8包含Ansible系统角色,可简化复杂任务的自动化以及Red Hat Enterprise Linux子系统的配置。 您可以使用Ansible playbook运行角色,Ansible playbook是Ansible Play的集合。 每个Play都可以使用角色部分中定义角色的角色。 Play还可以包括其他部分作为post_tasks部分来定义在Play的正常任务之后要执行的任务,或者包含用于定义处理程序的处理程序部分。 您可以使用Red Hat Ansible Engine中包含的ansible-playbook命令运行playbooks。 Red Hat Enterprise Linux 8 Beta默认不安装Red Hat Ansible Engine。

Ansible System Roles in RHEL 8

  • Includes rhel-system-roles.kdumprhel-system-roles.networkrhel-system-roles.postfixrhel-system-roles.selinux, and rhel-system-roles.timesync

  • Available in the rhel-system-roles package

  • Additional system roles planned: storage, logging, metrics, hardware management, and host inspection.

Chapter 4: Adapting to Core System Changes

Section 4.1: Displaying the Desktop with Wayland and X

1.Wayland Windowing System

Wayland是一个 client/server窗口系统,旨在取代X11。 Wayland在X11上的性能改进源于架构的简化。

Wayland Components

  • Wayland Compositor - 结合了显示服务器和合成器角色。

  • Wayland Client - 与Wayland Compositor通信的图形应用程序。 Wayland客户负责执行自己的渲染。

  • Linux内核 - 负责Wayland Compositor,处理输入和输出设备的事件设备驱动程序(evdev)以及用于分辨率,深度和刷新的内核模式设置API(KMS)之间的通信。

Switching to Wayland

Wayland不是X11窗口系统的扩展,而是它的替代品。

Reasons to Switch to Wayland

  • X display server 已成为客户端,合成器和内核之间的瓶颈;

  • X具有遗留代码,例如很少使用的渲染API但必须保持符合X11协议。

  • 大多数图形桌面都可以选择合成器,这会增加延迟,因为X显示服务器必须将内容发送到合成器进程进行渲染,然后将呈现的内容返回到X服务器进行显示。

X11 Application Compatibility

尚未迁移到Wayland的X11应用程序仍然可以在Wayland合成器中运行。 XWayland是一个作为Wayland客户端运行的Xorg服务器。 启动X11应用程序后,Wayland Compositor将调用XWayland来处理应用程序的请求。 XWayland由xorg-x11-server-Xwayland软件包提供。

Remote Rendering 远程渲染

Wayland不是网络透明的,不支持远程渲染。 相反,远程渲染服务器(如RDP或VNC桌面协议)可以在Wayland之上运行。 预计还将创建包含远程协议的上游Wayland合成器。

Verify Wayland is Being Used

使用以下步骤确定您的桌面是否使用Wayland。

[user@demo ~]$ loginctlSESSION  UID USER  SEAT  TTY      2 1000 user  seat0 tty2     c1   42 gdm   seat0 tty1 2 sessions listed.[user@demo ~]$ loginctl show-session 2 -p Type Type=wayland

Gnome 3默认使用Wayland。 但是,并非所有Red Hat Enterprise Linux 8中的应用程序都已迁移。 未迁移的应用程序使用XWayland驱动程序进行管理,以提供其X服务器要求。

如果Wayland与您的图形硬件或应用程序不兼容,则恢复使用Xorg是一个简单的过程。 取消注释/etc/gdm/custom.conf中的以下行,然后重新启动计算机。

#WaylandEnable=false

这会强制GDM使用Xorg并将默认会话设置为Xorg。

Section 4.2: Managing User Authentication with Authselect

1.Introducing Authselect

RHEL8附带Authselect,它简化了用户身份验证的配置,并取代了Authconfig。Authselect使用不同且更安全的方法,基于使配置更改对系统管理员更简单的配置文件。 Authselect用于配置常用的身份验证参数,如密码,证书,智能卡和指纹。

Features of Authselect

  • 调整PAM,NSS和GNOME dconf设置。

  • 有三个即用型配置文件:sssd,winbind和nis。

  • 默认情况下启用pam_pwquality以对本地用户强制实施密码质量限制。

Comparing Authselect and Authconfig

  • Authselect使用经过测试的配置文件,而不是直接修改系统认证配置文件。

  • Authselect仅修改/etc/nsswitch.conf,/etc/pam.d/*和/etc/dconf/db/distro.d/*中的文件。

How to Use Authselect

  • Use the authselect list command to list the default and custom profiles.

  • The default profiles are stored in /usr/share/authselect/default

  • Use the authselect create-profile command to create new custom profiles.

  • Custom profiles are stored in the /etc/authselect/custom/ directory.

When to use Authselect

  • 在本地和半集中式身份管理环境中使用authselect,例如Winbind或NIS。

  • 加入红帽企业Linux身份管理或Active Directory域时,继续使用ipa-client或realmd。 这些工具可以自行正确配置主机身份验证参数。

For more information, refer to the Configuring authentication on a Red Hat Enterprise Linux host chapter in the Red Hat Enterprise Linux 8 Installing Identity Management and Access Control Guide athttps://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8-beta/html-single/installing_identity_management_and_access_control/#configuring-authentication

Section 4.3: Configuring NTP with Chrony

1.Chrony Replaces ntpd

在Red Hat Enterprise Linux 8中,Chrony是唯一可用的NTP服务器实现。 在Red Hat Enterprise Linux 7上与Chrony一起提供的ntpd实现已不再可用。

Using Chrony as the Default NTP Implementation

  • Chrony取代了不再可用的ntpd。

  • Chrony使用不同的配置文件,格式不同。

  • /usr/share/doc/chrony/ntp2chrony.py脚本将您的/etc/ntp.conf文件转换为/etc/chrony.conf。

  • timedatectl显示当前时间相关系统设置的概述。

  • 使用timedatectl set-timezone定义系统时区。

Introducing Chrony

  • chronyd服务通过将本地硬件时钟(RTC)与配置的NTP服务器同步来保持其正常运行。 如果没有可用的网络连接,它将与计算的RTC时钟漂移同步,该漂移记录在/etc/chrony.conf配置文件中指定的driftfile变量中。

  • 默认情况下,chronyd使用NTP池项目中的服务器进行时间同步,不需要其他配置。 当有问题的计算机位于隔离网络上时,更改NTP服务器可能很有用。

  • /etc/chrony.conf配置文件中的服务器行提供NTP服务器的IP地址或DNS名称。 在服务器IP地址或名称之后,您可以列出服务器的一系列选项。 Red Hat建议使用iburst选项,因为在服务启动后,Chrony会在短时间内进行四次测量,以获得更准确的初始时钟同步。

[user@demo ~]$ cat /etc/chrony.conf

# Use public servers from the pool.ntp.org project.

# Please consider joining the pool (http://www.pool.ntp.org/join.html).

# pool 2.rhel.pool.ntp.org iburst

server 192.168.122.14 iburst

server tick.example.com iburst

server tock.example.com iburst

# Record the rate at which the system clock gains/losses time.

driftfile /var/lib/chrony/drift

...output omitted...

备注:

  • pool指令类似于server指令,但它不是指示单个NTP服务器,而是指示解析为可能随时间变化的多个地址的DNS名称。

  • 更新/etc/chrony.conf配置文件后,重新启动该服务。

Converting the NTPd Configuration to Chrony

Chrony配置文件/etc/chrony.conf类似于ntpd配置文件/etc/ntp.conf。某些配置指令特定于Chrony,因为这两个程序具有不同的功能。

值得注意的是,Chrony中没有以下ntpd功能。

  1. Chrony没有实现广播和多播客户端功能。因此,chrony.conf中不存在broadcastclient和multicastclient指令。这些NTPd功能可以接收广播或组播NTP服务器发送的NTP消息。

  2. chrony.conf中没有autokey指令。在ntp.conf中,该指令激活NTP客户端和服务器之间的数据包身份验证的公钥算法。

  3. 在使用对称对等指令时,Chrony不支持短暂关联。例如,peer指令允许同一级别的两个服务器同步其时钟。当只有一个服务器定义对等指令时,另一个服务器接受该连接并建立短暂关联。 Chrony不允许这种隐式配置;两个服务器必须包含peer指令。

  4. 为了帮助您将ntp.conf文件转换为chrony.conf,chrony包 /usr/share/doc/chrony/中提供了ntp2chrony.py脚本。使用--ntp-conf选项指定要转换的ntp.conf文件。 --chrony-conf选项指定输出chrony.conf文件。 --chrony-keys选项指定输出文件的路径,该文件包含需要身份验证的服务器的密钥对。在重新启动chronyd服务之前,请查看已转换的配置文件。

Setting the Time Zone

[user@demo ~]$ timedatectl

[user@demo ~]$ timedatectl list-timezones

[root@demo ~]# timedatectl set-timezone America/Phoeni

Section 4.4: Managing Python Versions in Red Hat Enterprise Linux 8

1.Python 2 to Python 3 Transition

RHEL 8默认最小安装不会安装用户级Python二进制文件,只安装操作系统工具的版本。 Python 2.7和Python 3.6应用程序二进制文件可从Red Hat Enterprise Linux 8的Application Stream(AppStream)存储库中获得。

Installing Python on RHEL 8

  • RHEL 8包括用于Python 2.7和Python 3.6的Yum模块。

  • Python 3.6是默认值。 Python 2.7是一个短生命周期版本,可以帮助用户在将应用程序移植到python3时迁移到RHEL 8。

  • Python 3.x的未来版本将作为名为python3x的Yum模块从AppStream存储库中获得

Working with Python in Red Hat Enterprise Linux 8

  • 默认情况下,Red Hat Enterprise Linux 8不提供/usr/bin/python命令。 使用alternatives命令链接到所需的发行版,以简化命令行。

  • 不要在脚本中使用/usr/bin/python。 始终使用/usr/bin/python3或/usr/bin/python2编写脚本,因为它们的行为始终依赖于版本。

  • 用Python编写的系统工具使用单独的python3安装,名为/usr/libexec/platform-python。不要在脚本中使用此版本,因为它只包含操作系统工具所需的python模块。

Setting up Alternative Python Versions

The Python 2.7 module installs the /usr/bin/python2 binary. Python 3.6 installs the /usr/bin/python3 binary. Use the alternatives command to link /usr/bin/python to either /usr/bin/python2, or /usr/bin/python3, recommended only for interactive use.

Chapter 5: Implementing Storage Using New Features

Section 5.1: Managing Layered Storage with Stratis

1.Stratis Storage Manager

  • Red Hat Enterprise Linux 8包括Stratis存储管理器,它支持管理块设备集合以创建灵活的文件系统。

  • 首先在ZFS或Btrfs中的组合文件系统和卷管理功能现在可在Stratis中使用。

  • Red Hat Enterprise Linux 8中不再提供Btrfs和ZFS文件系统。

  • Stratis还提供高级存储功能,如精简配置,快照和监控。

用Stratis实现卷管理文件系统

  1. Stratis是一个卷管理文件系统(VMF)。

  2. 卷管理文件系统将文件系统集成在卷本身中,而LVM则卷需要文件系统。

  3. Stratis的设计将SSD视为默认存储类型,或者至少作为缓存层,因此设计的重点是提高灵活性和可靠性。

  4. Red Hat Enterprise Linux 8不再支持或提供BtrFS和ZFS。

  5. Stratis提供精简配置,快照和监控等高级功能。

Describing Stratis Layers

  1. Stratis管理的池是块设备的集合。 在这些池中创建Stratis文件系统。 默认情况下,这些文件系统包含卷和文件系统XFS。

  2. 在内部,Stratis使用Backstore子系统来管理块设备,使用Thinpool子系统来管理精简配置池。

  3. Backstore有一个数据层data tier,用于维护块设备上的磁盘上元数据,并检测和纠正数据损坏。

  4. 缓存层cache tier使用高性能块设备作为数据层之上的缓存。

  5. Thinpool子系统管理与Stratis文件系统关联的精简配置卷。 此子系统使用dm-thin设备映射程序驱动程序替换虚拟卷大小和管理上的LVM。 这些卷使用较大的虚拟大小创建,并使用XFS格式化。 如果接近Stratis文件系统的虚拟大小,则会自动放大文件系统。

使用Stratis Storage Manager管理卷管理文件系统

  • 使用stratis pool create命令创建一个或多个块设备的池。

  • 使用stratis pool add-data命令将其他块设备添加到池中。

  • 使用stratis filesystem create命令在池之上创建动态且灵活的文件系统。

  • Stratis使用stratis fs snapshot命令支持文件系统快照。 快照独立于源文件系统。

  • 您可以使用D-Bus API与stratisd守护程序进行通信。

Stratis simplifies the storage stack

Stratis简化了本地存储配置和配置的许多方面。 例如,使用Anaconda将操作系统安装到Stratis池。 选择要用于池的磁盘后,将省略文件系统大小调整工作流程。 Anaconda可以直接使用Stratis API,而不需要在Blivet中工作以在命令行工具之上构建API。 其他工具和产品(如Cockpit,RHEV和Atomic)使用Stratis进行存储和快照会更简单,更不容易出错,因为它们不会担心每个文件系统的大小,而只会担心池有足够的“后备存储”。 与以编程方式使用任何CLI相比,API允许更好的工具到工具集成。

Section 5.3: Compressing and Deduplicating Storage with VDO

Virtual Data Optimizer

RHEL 8包括虚拟数据优化器(VDO)驱动程序,可优化块设备上的数据占用空间。 VDO包括两个实用程序,

  • vdo用于管理和配置VDO卷,

  • vdostats用于显示VDO卷的使用情况和块I / O.

使用VDO减少数据占用空间

  • 虚拟数据优化器(VDO)是一种Linux设备映射驱动程序,可减少块设备上的磁盘空间使用,并最大限度地减少复制带宽。

  • VDO包括两个内核模块,用于控制数据压缩的kvdo模块和用于重复数据删除的uds模块。

  • VDO支持内联重复数据删除和压缩。

虚拟数据优化阶段

  • VDO分三个阶段减少了存储上的数据占用空间:零块消除,冗余块重复数据删除和数据压缩。

  • VDO删除仅包含零的块,并保留其元数据。

  • 通用重复数据删除服务 universal deduplication service(UDS)内核模块检查可用的VDO元数据以检测重复的块。 如果找到重复的块,则该块指向已经可用的块的元数据。

  • 完成零块消除和重复数据删除后,kvdo内核模块使用LZ4压缩压缩块并将它们分组到4 KB块上。

VDO卷的结构

  • VDO卷包含两部分:UDS和VDO

  • UDS部分包括每个块的名称和位置,以支持块重复数据删除

  • VDO部分包括VDO卷数据和元数据

Section 5.5: Administering NFS Enhancements

1. Using NFS on Red Hat Enterprise Linux 8

RHEL8支持使用网络文件系统(NFS)4.2。

Red Hat Enterprise Linux 8 NFS Enhancements

  • Red Hat Enterprise Linux 8中的默认NFS版本为4.2,支持NFSv4和NFSv3主要版本,不再支持NFSv2。

  • NFS配置文件是/etc/nfs.conf。 不推荐使用/etc/sysconfig/nfs配置文件。

  • 引入新的nfsconf工具来管理NFS配置文件。

  • autofs服务使用/etc/auto.master(主映射)作为其默认配置文件。 amd格式也被识别。

  • RHEL8删除了nfsnobody用户,并将nobody用户和组的UID和GID更改为65534.任何不存在的UID或GID都映射到nobody用户和组。

  • NFSv4不再需要rpcbind服务来运行,从而无需UDP连接。

NFS 4.2 Features

  • 服务器端复制使NFS客户端能够有效地复制NFS文件系统内的数据,而不会浪费网络资源。

  • 稀疏文件,使文件具有多个孔,这些孔是仅由零组成的数据块。 它们作为零传输,提高了整体速度。

  • 空间预留允许在NFS服务器上保留可用空间,从而防止它们空间不足。

  • 标记的NFS,强制执行数据访问权限并在NFS文件系统上启用SELinux。

The nfsconf tool

  1. RHEL8引入了nfsconf工具来管理NFS客户端和服务器配置文件。

  2. 使用nfsconf工具获取,设置或测试NFS配置文件。

  3. nfsconf工具处理NFSv4和NFSv3配置。

  4. 默认的nfsconf配置文件是/etc/nfs.conf。

  5. 使用nfsconf --file加载备用配置文件位置。

Chapter 6: Managing Containers with the New Runtime

Section 6.1: Deploying Containers with the New Container Runtime

1.Deploying Containers with the New Container Runtime

The Podman Container Engine

RHEL8包含container-tools包模块,它提供了一个名为Podman的新容器引擎,它取代了Docker和Moby。

container-tools包模块还包含其他工具,

  • 例如Buildah用于构建容器映像,

  • Skopeo用于管理注册表上的容器映像,

  • 以及runc。

与Docker相比,Docker依赖于守护进程来构建和运行容器,这个新的工具集和容器引擎允许构建和运行没有守护进程的容器。

The New Container Runtime Toolset

  • RHEL 8将Docker替换为支持大多数Docker功能的新容器运行时。

  • RHEL 8的容器运行时工具集支持Open Container Initiative(OCI)标准,例如,它可以重用第三方容器映像。

  • 容器运行时提供无守护容器引擎。 此体系结构不需要活动的root权限守护程序来运行容器。 用户运行没有root权限的容器。

  • 此体系结构使用fork-exec模型与Docker客户端 - 服务器模型的审计集成,该模型依赖于未设置的审计UID。

  • container-tools包模块提供新的容器运行时工具集和引擎。

世上最强Linux系统全功能大揭秘_java_02

Describing the new Container Runtime Toolset

  • podman容器引擎是守护进程并支持容器的执行。

  • podman语法类似于docker命令,也支持Dockerfile使用。

  • Buildah从头开始或从Dockerfile构建容器映像。

  • 使用Skopeo复制和检查注册表中的容器映像。

  • Skopeo支持Docker和私有注册表,Atomic注册表和本地目录,包括那些使用OCI的目录。

世上最强Linux系统全功能大揭秘_java_03

2.Pacemaker Resource Bundles

Describing Pacemaker Resource Bundles

  • RHEL 8包括Pacemaker容器捆绑包和podman作为技术预览

  • Pacemaker软件包支持在所有与特定节点类型相关的主机上执行相同的容器,例如OpenStack控制器节点。

  • 捆绑包还会映射容器目录中的所需存储,并自定义容器中的特定属性。

  • 红帽OpenStack平台目前支持Pacemaker捆绑包。

Chapter 7: Implementing Enhanced Networking Features

Section 7.1: Managing Server Firewalls in RHEL 8

1.Introducing Nftables

Firewalld是Red Hat Enterprise Linux中的防火墙管理工具,它使用nftables作为其新的默认防火墙后端。 在RHEL8中,nftables替换了iptables,后者已弃用。

nft命令将iptables命令iptables,ip6tables,arptables和ebtables替换为统一,一致且简单的命令。 此外,nftables更高效,可以在单个规则中执行多个操作。

介绍Nftables作为Firewalld的新后端

  • Firewalld使用nftables作为后端。

  • nft命令替换iptables,ip6tables,arptables和ebtables命令。

  • Firewalld是通过低级别nft命令管理防火墙的推荐方法。

  • iptables命令是指向xtables-nft-multi命令的链接,该命令接受iptables语法,但会创建nftables规则。

Red Hat建议在管理防火墙时使用firewalld。 尽管firewalld现在使用nftables后端,但它的行为与之前的版本相同。 它的语法是相同的,即使对于直接和丰富的规则也是如此。 除了firewall-cmd和firewall-config命令之外,您还可以使用Cockpit Web界面管理firewalld。

比较Nftables和Iptables

  • 有关性能,代码维护,易用性和可伸缩性的iptables问题由nftables解决。

  • 虽然您应该使用firewalld检查防火墙规则,但您可以使用单个基础工具查看所有防火墙信息:nft。

  • 您只需要IPv4和IPv6的单一规则,而不是使用iptables和ip6tables复制规则。

  • 您可以为每个规则添加多个操作。 例如,您可以在同一规则中记录和拒绝。

2.Create nftables tables, Chains, and Rules using the nft Command Line Tool

Red Hat建议使用Firewalld来管理防火墙。 作为替代方案,对于复杂的用例,您还可以直接使用nft命令行工具来创建nftables表,链和规则。

Nftables Objects

  • 在nftables中,表是逻辑上组织防火墙配置的顶级对象。

  • 在内部表中,链将您的防火墙规则分组。

  • 规则可以有多个条件和多个操作。

  • 使用nft命令创建和查看所有这些nftables对象。

  • 对于持久性,请在/etc/sysconfig/nftables.conf中定义对象并启用systemd nftables服务。

Introducing the Table Object

在nftables中,表是用于对防火墙规则进行分组的顶级对象。 要列出表,请使用nft list tables命令。

[root@demo ~]# nft list tables

table ip filter

table ip6 filter

...output omitted...

table inet firewalld

table ip firewalld

table ip6 firewalld

  • 当firewalld服务启动时,它会从先前的输出创建表。 请注意,firewalld创建自己的表名为firewalld,以对其规则进行分组。 它还会创建其他表,例如filter,因此您可以使用nft命令添加自己的表。

  • 每个表都有一个地址族,例如ip,ip6或inet,表示它正在处理的数据包类型。 inet是一个结合了IPv4和IPv6的特殊地址族。 这对适用于两个系列的规则很有用。 这样,您不必为IPv4编写相同的规则,也不必为IPV6编写相同的规则。

  • 使用nft add table family name命令创建新表,并使用nft delete table系列名称删除表。

[root@demo ~]# nft add table inet mytable

使用nftables,管理员可以根据需要创建任意数量的表来组织防火墙配置。 另一方面,iptables具有无法更改的预定义表。

Introducing nftables Chains

在内部表中,链对防火墙规则进行分组。 使用nft list table family name列出表的内容。

[root@demo ~]# nft list table inet filter

table inet filter {

 chain input {

   type filter hook input priority 0; policy drop;

 }

 chain forward {

   type filter hook forward priority 0; policy accept;

 }

 chain output {

   type filter hook output priority 0; policy accept;

 }

}

此输出显示过滤器表中的三个链。 链具有特殊属性:

name

创建链时,您可以为其指定一个名称。 选择上一个输出,输入,转发和输出中的名称来帮助您从iptables过渡。 他们没有其他意义

type

该类型表示链的目的。 这可以过滤以过滤流量,nat可以执行网络地址转换,或路由以标记数据包。

hook

钩子将链连接到内核中的包处理阶段。 钩子值可以是prerouting, input, output, forward, or postrouting.

priority

当两个或多个链具有相同的挂钩值时,优先级指示首先处理哪个链。 首先处理具有最低优先级值的链。

在所有表中全局评估优先级。 在下面的示例中,系统评估来自myinput1链的规则,然后来自Input_ch链,最后来自myinput2链。

[root@demo ~]# nft list table inet mytable1

table inet mytable1 {

 chain myinput1 {

   type filter hook input priority -10; policy accept;

 }

 chain myinput2 {

   type filter hook input priority 100; policy accept;

 }

}

[root@demo ~]# nft list table inet mytable2

table inet mytable2 {

 chain Input_ch {

   type filter hook input priority 50; policy accept;

 }

}

policy

当没有规则匹配时,策略会建立链的默认行为。 该策略是可选的,默认为接受。

You create a new chain with the nft add chain familytable_namechain_name { attributes } command and you delete chains with nft delete chain familytable_name chain_name.

[root@demo ~]# nft add chain inet mytable go_in \{ type filter hook input priority 10 \; policy drop \;}

Remember to protect the ; character from Bash with \.

Writing nftables Rules

这些链将防火墙规则分组。 每个规则都有两部分:匹配部分给出数据包必须满足的条件,语句部分表示条件匹配时要执行的操作。 使用nft add rule family table_name chain_name match ... statement ...命令将规则添加到链中。

[root@demo ~]# nft add rule inet mytable go_in ct state established,related accept

[root@demo ~]# nft add rule inet mytable go_in iifname lo accept

[root@demo ~]# nft add rule inet mytable go_in icmp type echo-request accept

[root@demo ~]# nft add rule inet mytable go_in tcp dport {ssh, http, https} accept

[root@demo ~]# nft list table inet mytable

table inet mytable {

 chain go_in {

   type filter hook input priority 10; policy accept;

   ct state established,related accept

   iifname "lo" accept

   icmp type echo-request accept

   tcp dport { ssh, http, https } accept

 }

}

3.Describing Nftables and Iptables Persistent Configuration

Red Hat建议使用Firewalld来管理系统防火墙。 作为替代方案,使用复杂的规则,您可以禁用firewalld并通过nft命令直接使用nftables。 此外,为了与先前版本兼容,iptables命令和Systemd服务仍然可用,但已弃用。

  • Red Hat建议使用firewalld来管理系统防火墙。

  • 对于复杂配置,您可以禁用firewalld并直接使用nftables。

  • 使用iptables-restore-translate命令将iptables规则迁移到nftables。

  • 作为替代方案,使用iptables兼容层来重用旧的iptables规则。

Translating Iptables Rules to Nftables

查看规则并将iptables-restore-translate -f命令输出重定向到/etc/sysconfig/nftables.conf以获取nftables服务。 不要忘记在文件顶部添加 #!/usr/sbin/nft -f 行。

Replacing Nftables by Iptables

nftables为iptables提供兼容层。 iptables和ip6tables命令仍然可用,但它们是指向nftables xtables-nft-multi命令的链接。 该命令接受iptables语法,但改为创建nftables对象。

此外,iptables-services包提供了Systemd iptables服务以及相关的/etc/sysconfig/iptables和/etc/sysconfig/iptables-config配置文件。 因此,您可以重用以前的Red Hat Enterprise Linux版本中的配置。

以下示例显示如何将配置切换到现已弃用的iptables基础结构。

Section 7.3: Configuring Server Networking with NetworkManager

1.Introducing NetworkManager

NetworkManager是RHEL8中首选的网络配置工具。它可以处理复杂的配置,OpenStack,OpenShift和Red Hat Virtualization等分层产品现在依赖它。

Configuring the Network with NetworkManager

  • Red Hat建议使用NetworkManager进行网络配置。

  • NetworkManager现在可以处理复杂的配置,例如Open vSwitch或SR-IOV。

  • 分层产品,如OpenStack,正在使用NetworkManager。

  • 提供多个前端:Cockpit,nmcli,nmtui和网络RHEL系统角色。

  • Systemd网络服务和网络脚本不再可用。

  • ifup和ifdown是NetworkManager脚本的链接。

Configuring System Networks with NetworkManager

NetworkManager提供了统一的方法来跨不同的Red Hat Enterprise Linux版本配置系统网络。 由于Network Red Hat Enterprise Linux系统角色依赖于NetworkManager,因此您通常可以将单个Playbook用于多个RHEL版本。

在RHEL 8中,系统不安装传统的Systemd网络服务。 但是,NetworkManager仍然依赖于 /etc/sysconfig/network-scripts/目录中的配置文件。 您仍然可以编辑这些文件,并使用ifup命令对NetworkManager重新读取接口配置。

Chapter 8: Adapting to Virtualization Improvements

Section 8.1: 配置虚拟机

1.Updated QEMU Emulation

基于内核的虚拟机(KVM)内核模块和QEMU仿真器是红帽企业Linux 8中虚拟化的基础。在此版本中,QEMU现在可以模拟英特尔Q35主板芯片组,为现代虚拟化提供更好的硬件平台 操作系统。

New Q35 Virtual Machine Type

  • 除了之前的英特尔440FX机器类型,QEMU现在还模拟了英特尔Q35芯片组和功能。

  • Q35芯片组仿真提供了比以前更多的当前硬件设备。

  • Q35提供PCI Express总线并支持安全启动。

  • Q35支持PCI Express直通,简化了物理到虚拟(p2v)迁移。

#备注:

  • QEMU现在模拟Intel Q35芯片组及其相关的Intel ICH9(I / O控制器集线器)芯片组。

  • 之前的芯片组仅提供PCI端口(难以映射到物理PCI-E端口),但ICH9芯片组提供PCI Express(PCI-E)总线。 这通过直接将虚拟机内的PCI-E端口映射到主机系统上的PCI-E端口来支持PCI-E直通。

  • 选择要在创建虚拟机时模拟的芯片组。 如果使用Cockpit,virt-install或virt-manager,该工具会在选择最近支持的操作系统时自动选择Q35芯片组。

  • Cockpit取代了不推荐使用的virt-manager。 Red Hat推荐Cockpit用于虚拟机管理。 在随后的版本中,将删除virt-manager。

  • 对于RHEL 7,RHEL 8,Microsoft Windows 2016和Microsoft Windows 10虚拟机,QEMU模拟Q35芯片组。 对于RHEL 6虚拟机,QEMU模拟Intel 440FX芯片组。 以下屏幕截图显示了Cockpit中操作系统的选择。

世上最强Linux系统全功能大揭秘_java_04

从具有旧版QEMU的系统导入虚拟机时,可能必须强制执行先前的Intel 440FX芯片组仿真。 这是因为虚拟化操作系统已经使用该芯片组的驱动程序。 如果选择Q35芯片组仿真(提供新的硬件型号),则虚拟化操作系统可能没有安装适当的驱动程序来使用仿真硬件。

您可以在os部分中获得虚拟机在其XML文件定义中使用的芯片组仿真。 以下示例显示了使用新Q35芯片组仿真的虚拟机。

[user@demo ~]$ virsh dumpxml webserver1<domain type='kvm' id='5'>  <name>webserver1</name>  <uuid>f6fbe32f-ef6c-4d8a-8db0-96551c82444b</uuid>  <metadata>    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">      <libosinfo:os id="http://redhat.com/rhel/8.0"/>    </libosinfo:libosinfo>  </metadata>  <memory unit='KiB'>8388608</memory>  <currentMemory unit='KiB'>8388608</currentMemory>  <vcpu placement='static'>1</vcpu>  <resource>    <partition>/machine</partition>  </resource>  <os>    <type arch='x86_64' machine='pc-q35-rhel7.6.0'>hvm</type>    <boot dev='cdrom'/>    <boot dev='hd'/>  </os> ...output omitted...

以下示例显示了使用旧的Intel 440FX芯片组仿真的虚拟机。

[user@demo ~]$ virsh dumpxml myrhel6<domain type='kvm' id='7'>  <name>myrhel6</name>  <uuid>51ffc808-d3d0-4220-adc9-32adea33d218</uuid>  <metadata>    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">      <libosinfo:os id="http://redhat.com/rhel/5.0"/>    </libosinfo:libosinfo>  </metadata>  <memory unit='KiB'>1048576</memory>  <currentMemory unit='KiB'>1048576</currentMemory>  <vcpu placement='static'>1</vcpu>  <resource>    <partition>/machine</partition>  </resource>  <os>    <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>    <boot dev='cdrom'/>    <boot dev='hd'/>  </os> ...output omitted...

使用virsh capabilities命令列出支持的芯片组仿真

[user@demo ~]# virsh capabilities  <guest>    <os_type>hvm</os_type>    <arch name='x86_64'>      <wordsize>64</wordsize>      <emulator>/usr/libexec/qemu-kvm</emulator>      <machine maxCpus='240'>pc-i440fx-rhel7.6.0</machine>      <machine canonical='pc-i440fx-rhel7.6.0' maxCpus='240'>pc</machine>      <machine maxCpus='240'>pc-i440fx-rhel7.0.0</machine>      <machine maxCpus='384'>pc-q35-rhel7.6.0</machine>      <machine canonical='pc-q35-rhel7.6.0' maxCpus='384'>q35</machine> ...output omitted...

RHEL 8系统的先前输出显示QEMU支持Q35和Intel 440FX芯片组仿真。 pc机类型是i440FX仿真的别名,q35机器类型是Q35仿真的别名。

Virtual Machines Management in Cockpit

  • RHEL 8中的Cockpit提供了管理虚拟机的基本功能。 安装cockpit-machines软件包以启用Cockpit组件来管理虚拟机。

  • 对于更高级的配置,请使用libvirt工具,例如virsh或virt-install。

  • virt-manager图形界面仍然可用但已弃用,将在后续版本中删除。

RHEL Virtualization Available as a Module

  • 为方便起见,您可以使用新的yum module命令安装虚拟化软件。

  • virt Yum模块有一个名为rhel的流和一个默认配置文件。

  • 一个单独的virt流将在另一个存储库中提供,用于分层产品,例如Red Hat Virtualization(RHV),它们能够以不同于RHEL主要版本通常允许的节奏接收主要更新。

  • 您还可以使用传统的yum命令单独安装虚拟化软件包。

The virt Yum module has one stream called rhel and a single default profile.

[user@demo ~]$ yum module list

Name          Stream           Profiles            Summary

virt          rhel [d][e]      common [d]          Virtualization module

...output omitted..

2.SCSI-3 Persistent Reservations with Virtio-SCSI

使用Virtio-SCSI支持SCSI-3持久保留

  • 在Red Hat Enterprise Linux 8上,QEMU和libvirt都支持通过直接连接LUN支持的Virtio-SCSI向VM提供的存储设备上的SCSI-3持久保留。

  • 虚拟机可以共享Virtio-SCSI存储设备,并使用SCSI-3 PR来控制访问。

  • 使用device-mapper-multipath管理的存储设备可以传递给VM以使用SCSI-3 PR,主机可以管理所有路径上的PR操作。