RHCSARHCE 红帽Linux认证学习指南(第7版)EX200 & EX300
上QQ阅读APP看书,第一时间看更新

认证目标2.01 配置Red Hat KVM

在第1章中,我们使用了安装VM所需要的软件包配置了物理的64位RHEL 7系统。如果其他都失败,则此配置步骤可以帮助你创建RHEL 7的多个安装模式。但是如果RHEL安装系统没有所需要的程序包,那该怎么办呢?

有了正确的程序包,就可以建立KVM模块、访问虚拟机配置命令,并且可以为一组虚拟机创建详细的配置命令。本节介绍的一些命令在某种程度是后面几章内容的预览。例如,与更新有关的工具将在第7章介绍。但是首先必须讨论这样一个问题:既然真实的物理硬件系统触手可得,为什么很多人还想使用虚拟机。

考试内幕

管理虚拟机

RHCSA考试认证目标要求考生掌握以下内容:

● 访问虚拟机的控制台。

● 启动和退出虚拟机。

● 将系统配置为在系统引导时启动虚拟机。

● 安装Red Hat企业版Linux系统作为虚拟客户机。

有充足的理由认为讨论中的虚拟机采用了Red Hat默认的虚拟机解决方案,即KVM解决方案。虽然在第1章中已经在64位系统的RHEL 7安装过程中安装了此解决方案,但是考试可能会要求在真实系统上安装相关的程序包。此外,Red Hat提供了一个虚拟机管理器图形控制台用来管理虚拟机。当然,这个虚拟机管理器工具是libvirt库提供的管理API的一个前端。它也可以用来安装和配置系统,使得系统在引导过程中可以自动启动。

虽然在第1章曾提到,Red Hat博客指出考生将在预安装系统上进行考试,但是并没有把虚拟机的安装操作排除在考试之外。因此在本章中要学习如何在KVM上建立RHEL 7的安装模式。

Kickstart安装方法

RHCSA认证目标要求考生掌握:

● 用Kickstart方法自动安装Red Hat企业版Linux。

为此,每个RHEL安装模式都包含一个Kickstart文件示例,该文件是以给定的安装模式为基础的。本章将学习如何用这个文件自动完成安装。这比我们想象的要难一些,因为首先要修改Kickstart样本文件,暂时不考虑不同系统的独特配置参数。但是系统配置后,就以此Kickstart文件为基线,根据需要生成任意多个RHEL安装系统。

访问远程系统和安全传输文件

RHCSA认证目标要求考生掌握以下内容:

● 用SSH访问远程系统。

● 在系统间安全传输文件。

如果系统管理员都要亲自跑到他们所管理的每个系统那里,则他们的大部分时间都要浪费在从这个系统到另一个系统的路上。有了安全Shell(Secure Shell, SSH)这样的工具,系统管理员可以远程执行管理操作和安全地传输文件。虽然SSH是RHEL 7标准配置中自动安装的,但是本章后面也会介绍自定义配置选项,如基于密钥的身份验证。

2.1.1 选择虚拟机的理由

好像每个人都想进入虚拟机这个世界。是的,他们应该进入这个虚拟机世界。过去,许多企业都要为每个服务分配一个不同的专用物理系统。实际上,为了保证系统的可靠性,企业可能为每个服务分配两个或两个以上的系统。当然,也可以在单个系统上配置多个服务。事实上,在Red Hat考试中就是这么做的。但是在关注系统安全的企业中,为降低风险,系统常常专门用于单个服务。

如果系统经过正确配置,则每个服务都能配置在其专用的虚拟机上。可在一个本地的物理计算机上安装10个虚拟机。由于不同的服务通常在不同的时刻使用内存和CPU周期,因此超额分配本地物理系统上的内存和CPU资源是一个合理的想法。例如,在一个内存为256GB的系统中,经常可以给此系统的20个虚拟机各分配16GB的内存。

实际上,系统管理员可能用两个物理系统代替老式网络上的20个物理系统。这20个虚拟机将安装到一个共享存储卷上,使用集群文件系统(如GFS2)进行格式化,并挂载到每个物理系统上。当然,这两个物理系统需要功能强大的硬件系统的支持,但是其节省的费用是相当可观的。不仅节省了硬件成本,也节省了附加设备费用、能源消耗和其他费用。

2.1.2 假设必须安装KVM

如果你需要在RHEL 7上安装任何类型的软件,则GNOME Software工具可以大显身手。先以普通用户登录到GUI环境。为了从GUI环境打开这个工具,单击Applications | System Tools |Software。只要已经与RHN网络或第三方重构发行版的程序库建立了正确的连接,就需要花一些时间进行搜索。在左侧窗格中单击Virtualization旁边的箭头,就会出现4个虚拟程序包组。单击Virtualization Hypervisor程序包组并选择这个组中的第一个程序包,将显示如图2-1所示的屏幕。

图2-1 添加/删除软件工具

要安装KVM程序,你要做的只是从Virtualization Hypervisor、Virtualization Client、Virtualization Platform等程序包组中选择合适的程序包,如果不记得如表2-1所示的列表,就选择所有虚拟程序包的最新版本即可。

表2-1 与虚拟化相关的程序包

这里仅列出了7个程序包。当然,在大多数配置中还需要依赖于其他相关的程序包。但是,在物理RHEL 7系统上配置虚拟机,真正需要的就是这7个程序包。虽然Virtualization Tools组没有任何强制安装的程序包,但是它包含的软件在实际工作中可能非常有用,例如用于读取和管理虚拟机磁盘映像的工具。如果想要显示虚拟机磁盘的内容或者在超级监视程序主机上管理虚拟机分区和文件系统,需要使用libguestsfs-tools程序包。

用GNOME Software工具安装软件十分容易,只需要选取(或取消)需要的程序包并单击Apply按钮。如果还需要安装它们相关的程序包,则出现一个完整列表,列出这些程序包,让用户选择。当然,在命令行接口要用yum install packagename命令一次安装一个程序包。另一种方法是安装Virtualization Host和Virtualization Client程序包组,如下所示:

        # yum group install "Virtualization Host" "Virtualization Client"

第7章将详细介绍yum和程序包组。

2.1.3 选择正确的KVM模块

大多数情况下,只要选择了正确的程序包即可。系统会自动加载合适的内核模块。在KVM工作之前,必须加载相关的内核模块。因此要运行以下命令:

        # lsmod | grep kvm

如果KVM模块正确载入,则会看到如下两组模块:

        kvm_intel  138567 0
        kvm         441119 1 kvm_intel

        kvm_amd   59887   0
        kvm       261575  1 kvm_amd

从模块的名字可以知道,输出结果取决于CPU制造商。如果没有看到这个输出信息,则首先要保证已经选择了正确的硬件。第1章中曾指出,在/proc/cpuinfo文件中必须有svm或vmx标志。否则,需要对系统的BIOS或UEFI菜单进行额外的配置。有些菜单包含了与硬件虚拟技术有关的具体选项,应该启动这些选项。

如果/proc/cpuinfo文件有前面提到的两个标志中的一个,下一步的操作是载入可应用的模块。最简单的方法是使用modprobe命令,下面这个命令也会载入其他相关的模块。如果系统使用AMD处理器,则将kvm_intel替换为kvm_amd:

        # modprobe kvm_intel

2.1.4 配置虚拟机管理器

虚拟机管理器(Virtual Machine Manager)是virt-manager程序包的一部分。在GUI工具中,可以利用同名的一个命令启动这个程序。或者在GNOME桌面环境中,选择Applications | System Tools | Virtual Machine Manager菜单,这个命令会打开如图2-2所示的Virtual Machine Manager窗口。

图2-2 Virtual Machine Manager窗口

需要时也可以远程配置和管理基于KVM的虚拟机。所需要的全部操作只是连接到远程的超级监视程序。为此,单击File | Add Connection,打开Add Connection窗口,在这个窗口中选择:

● Linux容器或超级监视程序(Hypervisor),通常为KVM或Xen(Xen是RHEL 5的默认超级监视程序,但从RHEL 6起不再支持它)。

● 连接可以是本地的,也可以是使用SSH等连接方法的远程连接。

如果选择远程连接,需要提供远程系统的主机名或IP地址。

2.1.5 用超级监视程序进行配置

每个超级监视程序都需要详细配置。右击本地主机(QEMU)超级监视程序,从弹出的菜单中选择Details,它打开一个根据本地系统的主机命名的详细信息窗口,如图2-3所示。

图2-3 虚拟机主机详细信息

从表2-2可以看出,Overview选项卡列出虚拟机配置的基本参数。下一节继续讨论当前超级监视程序的主机详细信息窗口。

表2-2 虚拟机主机详细参数说明

2.1.6 超级监视程序的虚拟网络

现在我们来分析在虚拟机管理器中为虚拟机配置的网络。在当前超级监视程序的主机详细信息窗口中,单击Virtual Networks标签,默认的虚拟网络如图2-4所示,它是用超级监视程序为虚拟机创建的标准网络。

图2-4 虚拟机主机详细信息

你会注意到,根据配置,这个给定的网络在虚拟机引导时会自动启动。因此,如果在虚拟机上配置了合适的虚拟网卡,并利用动态主机配置协议(DHCP)的一个客户端命令,就可以自动从给定的IP地址段中分配得到一个IP地址。从图中可以看到,当把流量转发给物理网卡时,这个给定的IP地址还可以用网络地址转换技术(Network Address Translation, NAT)进行转换。

利用图中左下角的按钮可以添加新的虚拟网络、启动或停止一个正在工作的虚拟网络以及删除这个网络。练习2-1要求建立第二个虚拟网络。

2.1.7 练习2-1:创建第二个虚拟网络

本练习将利用GUI虚拟机管理器在标准KVM超级监视程序上创建第二个虚拟网络。这个练习需要将RHEL 7系统配置为虚拟主机,如本章前面所述。

(1)如果详细信息窗口没有打开,则右击标准本地主机(QEMU)超级监视程序,在弹出的菜单中选择Details。

(2)在以本地系统名称表示的Host Details窗口中,选择Virtual Networks标签。

(3)单击Virtual Network标签左下角的加号(+)按钮,打开Create A New Virtual Network Wizard。

(4)阅读操作指示,接下来要按照出现的指示进行操作。单击Forward继续。

(5)给新的虚拟网络指定一个名字。本书使用outsider名字。单击Forward继续。

(6)如果还没有输入IP地址,则在Network文本框中输入192.168.100.0/24 IP地址。系统会自动为其他网络信息计算正确记录,如图2-5所示。

图2-5 定义IPv4地址

实际经验

注意,要防止输入的IP地址与本地网络上的现有硬件(如路由器或无线接入点)的IP地址发生冲突。例如,如果电缆“调制解调器”在接口中使用192.168.100.1 IP地址,则超级监视程序上使用的192.168.100.0/24网络地址就会使Linux主机无法访问这个电缆调制解调器。如果遇到这样的硬件,则要改变网络地址,如图2-5所示。

(7)现在可以在这个已配置的网络中选择可分配给DHCP客户端的IP地址段。按照第1章的表1-2,我们为此网络上的outsider1.example.org系统分配了一个静态IP地址。只要前面提到的192.168.100.100这个IP地址在DHCP可分配的IP地址段之外,就不需要做任何改变。修改后单击Forward继续下一步。

(8)作为可选项,可以定义一个IPv6地址段。IPv6是RHCE考试的内容,第12章将进行介绍。单击Forward继续下一步。

(9)现在,我们想要得到这样一个系统,它可以把网络流量转发给物理网络,因为这是此网络与其他虚拟网络(可能在其他虚拟主机上)上的系统进行通信的方法。目标可以是任何工作于NAT模式的物理设备,以便向远程主机隐藏这些系统。如果我们不把来自虚拟机的路由消息限制到某个特定物理网卡,则使用Forwarding to Physical Network下的默认设置就可以了。这些选项在本章后面讨论Network Interfaces标签时讨论。做适当的选择后单击Forward继续下一步操作。

(9)检查所做配置的摘要。如果满意,单击Finish按钮。现在新建的虚拟机系统和网卡可以使用该outsider网络。

1.超级监视程序的虚拟存储

现在来介绍为虚拟机管理器中的虚拟机配置的虚拟存储空间。在当前超级监视程序的主机详细信息窗口中单击Storage标签。在图2-6所示的默认文件系统目录中,把/var/lib/libvirt/images目录配置为虚拟映像。这样的映像文件实质上是一个非常大的文件,它们从硬盘中保留了存储空间供虚拟机用。

图2-6 虚拟机存储详细信息

这些大型文件会很容易摧毁很多系统。控制这些文件的一个办法是给/var/lib/libvirt/images目录分配一个专用的分区或逻辑卷。

由于我们已经把一个分区的绝大部分可用空间分配给/home目录,因此选择在这个目录下创建一个专用存储区。例如,用户“michael”有一个/home/michael/KVM目录,用来保存虚拟硬盘驱动器所需要用到的VM文件。

下面的命令首先要以普通用户的身份建立一个目录,然后以root用户身份登录到系统,给这个目录设置合适的SELinux安全上下文,再删除/var/lib/libvirt/images目录,最后重建这个目录并连接到用户的目录上。

        $ mkdir /home/michael/KVM
        $ su - root
        # semanage fcontext -a -t virt_image_t '/home/michael/KVM(/.*)? '
        # restorecon /home/michael/KVM
        # rmdir /var/lib/libvirt/images
        # ln -s /home/michael/KVM /var/lib/libvirt/images

这样配置的一个优点是,保留了/var/lib/libvirt/images目录的默认SELinux配置,这些配置参数是由/etc/selinux/targeted/contexts/files目录中的file_contexts文件定义的。换言之,该配置在SELinux的relabel之后仍然有效。有关SELinux的重新标志(relabel)将在第4章介绍。

2.超级监视程序的网络接口

现在分析在虚拟机管理器中为虚拟机配置的网络接口。在当前超级监视程序的主机详细信息窗口中,单击Network Interfaces标签。图2-7所示的网络接口设备仅指定了回环接口。如果系统上还安装了其他接口,如以太网适配器,也会看到这些接口。

图2-7 虚拟机网卡

如果本地系统通过一个标准以太网卡或无线适配器进行连接,则默认配置就足够了。一个正确配置的虚拟机即使考虑到第1章提到的防火墙、IP地址转发选项,也应该能够访问外部网络。在RHEL 7中,每个虚拟网络都关联着一个虚拟开关,如virbr0。当流量转发到物理主机之外时,虚拟开关默认在NAT模式下操作。

采用与Virtual Network和Storage标签相同的方法添加另一个网络接口,方法是单击Network Interface标签左下角的加号按钮,打开Configure Network Interfaces窗口,这个窗口可用于配置4种不同类型的网络接口中的任何一个:

Bridge(桥接) 把一个物理接口与一个虚拟接口绑定在一起。

Bond(绑定) 连接两个或两个以上的网络接口,就像它们是一个接口一样。

Ethernet(以太网方式) 配置一个接口。

VLAN 配置一个接口,使其带有IEEE 802.1Q VLAN标记。