世上最強Linux系統全功能大揭祕

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.

圖片

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包模塊提供新的容器運行時工具集和引擎。

圖片

Describing the new Container Runtime Toolset

  • podman容器引擎是守護進程並支持容器的執行。

  • podman語法類似於docker命令,也支持Dockerfile使用。

  • Buildah從頭開始或從Dockerfile構建容器映像。

  • 使用Skopeo複製和檢查註冊表中的容器映像。

  • Skopeo支持Docker和私有註冊表,Atomic註冊表和本地目錄,包括那些使用OCI的目錄。

圖片

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中操作系統的選擇。

圖片

從具有舊版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操作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章