RHCSA 系列(十五): 虚拟化基础和使用 KVM 进行虚拟机管理

假如你在词典中查一下单词 “虚拟化virtualize”,你将会发现它的意思是 “创造某些事物的一个虚拟物(而非真实的)”。在计算机行业中,术语虚拟化virtualization指的是:在相同的物理(硬件)系统上,同时运行多个操作系统,且这几个系统相互隔离的可能性,而那个硬件在虚拟化架构中被称作宿主机host。

RHCSA 系列: 虚拟化基础和使用 KVM 进行虚拟机管理 – Part 15

通过使用虚拟机监视器(也被称为虚拟机管理程序hypervisor),虚拟机(被称为 guest)由底层的硬件来供给虚拟资源(举几个例子来说,如 CPU,RAM,存储介质,网络接口等)。

考虑到这一点就可以清楚地看出,虚拟化的主要优点是节约成本(在设备和网络基础设施,及维护工作等方面)和显著地减少容纳所有必要硬件所需的物理空间。

由于这个简单的指南不能涵盖所有的虚拟化方法,我鼓励你参考在总结部分中列出的文档,以此对这个话题做更深入的了解。

请记住当前文章只是用于在 RHEL 7 中用命令行工具使用 KVM (Kernel-based Virtual Machine基于内核的虚拟机) 学习虚拟化基础知识的一个起点,而并不是对这个话题的深入探讨。

检查硬件要求并安装软件包

为了设置虚拟化,你的 CPU 必须能够支持它。你可以使用下面的命令来查看你的系统是否满足这个要求:


  1. # grep -E 'svm|vmx' /proc/cpuinfo

在下面的截图中,我们可以看到当前的系统(带有一个 AMD 的微处理器)支持虚拟化,svm 字样的存在暗示了这一点。假如我们有一个 Intel 系列的处理器,我们将会看到上面命令的结果将会出现 vmx 字样。

检查 KVM 支持

另外,你需要在你宿主机的硬件(BIOS 或 UEFI)中开启虚拟化。

现在,安装必要的软件包:

  • qemu-kvm 是一个开源的虚拟机程序,为 KVM 虚拟机监视器提供硬件仿真,而 qemu-img 则提供了一个操纵磁盘镜像的命令行工具。
  • libvirt 包含与操作系统的虚拟化功能交互的工具。
  • libvirt-python 包含一个模块,它允许用 Python 写的应用来使用由 libvirt 提供的接口。
  • libguestfs-tools 包含各式各样的针对虚拟机的系统管理员命令行工具。
  • virt-install 包含针对虚拟机管理的其他命令行工具。

命令如下:


  1. # yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install

一旦安装完成,请确保你启动并开启了 libvirtd 服务:


  1. # systemctl start libvirtd.service
  2. # systemctl enable libvirtd.service

默认情况下,每个虚拟机将只能够与放在相同的物理服务器上的虚拟机以及宿主机自身通信。要使得虚拟机能够访问位于局域网或因特网中的其他机器,我们需要像下面这样在我们的宿主机上设置一个桥接接口(比如说 br0):

1、 添加下面的一行到我们的 NIC 主配置中(类似 /etc/sysconfig/network-scripts/ifcfg-enp0s3 这样的文件):


  1. BRIDGE=br0

2、 使用下面的内容(注意,你可能需要更改 IP 地址,网关地址和 DNS 信息)为 br0 创建一个配置文件(/etc/sysconfig/network-scripts/ifcfg-br0):


  1. DEVICE=br0
  2. TYPE=Bridge
  3. BOOTPROTO=static
  4. IPADDR=192.168.0.18
  5. NETMASK=255.255.255.0
  6. GATEWAY=192.168.0.1
  7. NM_CONTROLLED=no
  8. DEFROUTE=yes
  9. PEERDNS=yes
  10. PEERROUTES=yes
  11. IPV4_FAILURE_FATAL=no
  12. IPV6INIT=yes
  13. IPV6_AUTOCONF=yes
  14. IPV6_DEFROUTE=yes
  15. IPV6_PEERDNS=yes
  16. IPV6_PEERROUTES=yes
  17. IPV6_FAILURE_FATAL=no
  18. NAME=br0
  19. ONBOOT=yes
  20. DNS1=8.8.8.8
  21. DNS2=8.8.4.4

3、 最后在文件/etc/sysctl.conf 中设置:


  1. net.ipv4.ip_forward = 1

来开启包转发并加载更改到当前的内核配置中:


  1. # sysctl -p

注意,你可能还需要告诉 firewalld 让这类的流量应当被允许通过防火墙。假如你需要这样做,记住你可以参考这个系列的 使用 firewalld 和 iptables 来控制网络流量

创建虚拟机镜像

默认情况下,虚拟机镜像将会被创建到 /var/lib/libvirt/images 中,且强烈建议你不要更改这个设定,除非你真的需要那么做且知道你在做什么,并能自己处理有关 SELinux 的设定(这个话题已经超出了本教程的讨论范畴,但你可以参考这个系列的第 13 部分 使用 SELinux 来进行强制访问控制,假如你想更新你的知识的话)。

这意味着你需要确保你在文件系统中分配了必要的空间来容纳你的虚拟机。

下面的命令将使用位于 /home/gacanepa/ISOs目录下的 rhel-server-7.0-x86_64-dvd.iso 镜像文件和 br0 这个网桥来创建一个名为 tecmint-virt01 的虚拟机,它有一个虚拟 CPU,1 GB(=1024 MB)的 RAM,20 GB 的磁盘空间(由/var/lib/libvirt/images/tecmint-virt01.img所代表):


  1. # virt-install \
  2. --network bridge=br0
  3. --name tecmint-virt01 \
  4. --ram=1024 \
  5. --vcpus=1 \
  6. --disk path=/var/lib/libvirt/images/tecmint-virt01.img,size=20 \
  7. --graphics none \
  8. --cdrom /home/gacanepa/ISOs/rhel-server-7.0-x86_64-dvd.iso
  9. --extra-args="console=tty0 console=ttyS0,115200"

假如安装文件位于一个 HTTP 服务器上,而不是存储在你磁盘中的镜像中,你必须将上面的 -cdrom 替换为 -location,并明确地指出在线存储仓库的地址。

至于上面的 –graphics none 选项,它告诉安装程序只以文本模式执行安装过程。假如你使用一个 GUI 界面和一个 VNC 窗口来访问主虚拟机控制台,则可以省略这个选项。最后,使用 –extra-args 参数,我们将传递内核启动参数给安装程序,以此来设置一个串行的虚拟机控制台。

现在,所安装的虚拟机应当可以作为一个正常的(真实的)服务来运行了。假如没有,请查看上面列出的步骤。

管理虚拟机

作为一个系统管理员,还有一些典型的管理任务需要你在虚拟机上去完成。注:下面所有的命令都需要在你的宿主机上运行:

1. 列出所有的虚拟机:


  1. # virsh list --all

你必须留意上面命令输出中的虚拟机 ID(尽管上面的命令还会返回虚拟机的名称和当前的状态),因为你需要它来执行有关某个虚拟机的大多数管理任务。

2. 显示某个虚拟机的信息:


  1. # virsh dominfo [VM Id]

3. 开启,重启或停止一个虚拟机操作系统:


  1. # virsh start | reboot | shutdown [VM Id]

4. 假如网络无法连接且在宿主机上没有运行 X 服务器,可以使用下面的命令来访问虚拟机的串行控制台:


  1. # virsh console [VM Id]

注:这需要你添加一个串行控制台配置信息到 /etc/grub.conf 文件中(参考刚才创建虚拟机时传递给-extra-args选项的参数)。

5. 修改分配的内存或虚拟 CPU:

首先,关闭虚拟机:


  1. # virsh shutdown [VM Id]

为 RAM 编辑虚拟机的配置:


  1. # virsh edit [VM Id]

然后更改


  1. <memory>[内存大小,注意不要加上方括号]</memory>

使用新的设定重启虚拟机:


  1. # virsh create /etc/libvirt/qemu/tecmint-virt01.xml

最后,可以使用下面的命令来动态地改变内存的大小:


  1. # virsh setmem [VM Id] [内存大小,这里没有括号]

对于 CPU,使用:


  1. # virsh edit [VM Id]

然后更改


  1. <cpu>[CPU 数目,这里没有括号]</cpu>

至于更深入的命令和细节,请参考 RHEL 5 虚拟化指南(这个指南尽管有些陈旧,但包括了用于管理虚拟机的 virsh 命令的详尽清单)的第 26 章里的表 26.1。

总结

在这篇文章中,我们涵盖了在 RHEL 7 中如何使用 KVM 和虚拟化的一些基本概念,这个话题是一个广泛且令人着迷的话题。并且我希望它能成为你在随后阅读官方的 RHEL 虚拟化入门 和 RHEL 虚拟化部署和管理指南 ,探索更高级的主题时的起点教程,并给你带来帮助。

本文来自合作伙伴“Linux中国”,原文发布日期:2015-10-07

时间: 2024-12-24 20:43:50

RHCSA 系列(十五): 虚拟化基础和使用 KVM 进行虚拟机管理的相关文章

WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置

WorldWind学习系列十四中我从代码上分析如何加载DEM数据,里面涉及了算法,有学习和借鉴意义.但对于只求应用或者说是急于求成的网友来说,实用价值不是太大!我们分析代码是一种学习过程,不是目的,终究要落在如何应用自己的影像和DEM数据.如何基于自己的数据开发满足自己项目需求的新的WW插件.这是一过程,需要循序渐进,今天只跟大家分享一下如何切割自己的影像或DEM,及如何设置相应的XML配置. 我的学习和实践,主要是参考http://worldwindcentral.com/wiki/Dstil

RHCSA 系列(五): RHEL7 中的进程管理:开机,关机

我们将概括和简要地复习从你按开机按钮来打开你的 RHEL 7 服务器到呈现出命令行界面的登录屏幕之间所发生的所有事情,以此来作为这篇文章的开始. Linux 开机过程 请注意: 相同的基本原则也可以应用到其他的 Linux 发行版本中,但可能需要较小的更改,并且 下面的描述并不是旨在给出开机过程的一个详尽的解释,而只是介绍一些基础的东西 Linux 开机过程 初始化 POST(加电自检)并执行硬件检查: 当 POST 完成后,系统的控制权将移交给启动管理器的第一阶段first stage,它存储

AD数据库备份[为企业部署Windows Server 2008系列十五]

通过前面几篇文章的学习大家了解到了活动目录服务的部署,那么这次主要介绍windows server 2008下备份软件的安装以及如何备份活动目录数据库. 首先,windows server 2008中不再集成ntbackup工具了,而是使用windows server backup工具软件实现备份的,windows server backup(windows server 2008 中)是需要手动安装的. 安装:打开"服务器管理器",选择"功能",找到"w

【玩转数据系列十五】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)

背景 最近互联网上出现一个热词就是"freestyle",源于一个比拼rap的综艺节目.在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的根据一段主题讲一串rap.freestyle除了考验一个人rap的技巧,其实我觉得最难的是如何在短时间内在脑海中浮现出有韵律的歌词. 本文会介绍如何自动生成歌词,到底什么工具有这样的功效呢?答案是PAI.PAI平台是阿里云人工智能平台,在上面可以通过最简单的拖拉拽的方式,完成对各种结构化以及非结构化数据的处理

MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用

DBUtils简介: commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernate的公司的首选(嗯~商业竞争-..). commons-dbutilsAPI介绍: org.apache.commons.dbutils.QueryRunner org.apache.commons.dbutils.Res

RHCE 系列(五):如何在 RHEL 7 中管理系统日志(配置、轮换以及导入到数据库)

为了确保你的 RHEL 7 系统安全,你需要通过查看日志文件来监控系统中发生的所有活动.这样,你就可以检测到任何不正常或有潜在破坏的活动并进行系统故障排除或者其它恰当的操作. RHCE 考试 - 第五部分:使用 Rsyslog 和 Logrotate 管理系统日志 在 RHEL 7 中,rsyslogd 守护进程负责系统日志,它从 /etc/rsyslog.conf(该文件指定所有系统日志的默认路径)和 /etc/rsyslog.d 中的所有文件(如果有的话)读取配置信息. Rsyslogd 配

RHCSA 系列(一): 回顾基础命令及系统文档

RHCSA (红帽认证系统工程师) 是由 RedHat 公司举行的认证考试,这家公司给商业公司提供开源操作系统和软件,除此之外,还为这些企业和机构提供支持.训练以及咨询服务等. RHCSA 考试准备指南 RHCSA 考试(考试编号 EX200)通过后可以获取由 RedHat 公司颁发的证书. RHCSA 考试是 RHCT(红帽认证技师)的升级版,而且 RHCSA 必须在新的 Red Hat Enterprise Linux(红帽企业版)下完成.RHCT 和 RHCSA 的主要变化就是 RHCT

《深入学习VMware vSphere 6》——第1章 vSphere虚拟化基础与规划 1.1虚拟化基础概念

第1章 vSphere虚拟化基础与规划 本章介绍虚拟化基础知识,介绍在虚拟化项目中服务器.存储.交换机的选择与规划,介绍常用网络配置命令.主流服务器的RAID配置等内容.初次学习虚拟化的用户,需要仔细阅读本章内容. 1.1 虚拟化基础概念 如果第一次接触虚拟机并想尝试使用虚拟机软件,可能有许多的疑问.本节主要回答初学者容易混淆或者不清楚的问题,让初学者了解虚拟机.虚拟化与云计算的基础知识. 1.1.1 什么是虚拟机 虚拟机是一台"软件"计算机,确切地说,虚拟机是一种严密隔离的软件容器,

xen虚拟化实战系列(十)之xen虚拟机双网卡配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1286463 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x