小阿轩yx-部署 KVM 虚拟化平台

小阿轩yx-部署 KVM 虚拟化平台

案例前置知识点

KVM

  • 自 Linux 2.6.20 版本之后就直接整合到 Linux 内核
  • 依托 CPU 虚拟化指令(如Intel-VT、AMD-V)实现高性能的虚拟化支持
  • 与 Linux 内核高度整合,在性能、安全性、兼容性、稳定性上都有很好的表现

KVM 虚拟化架构图

  • 环境中运行的每个虚拟化操作系统都表现为单个独立的系统进程
  • 可以很方便的与 Linux 系统中的安全模块进行整合(SELiinux)
  • 可以灵活的实现资源管理及分配

KVM 原理简介

广义 KVM 实际包含两部分

  • 基于 Linux 内核支持的 KVM 内核模块
  • 经过简化和修改的 Qemu

KVM 内核模块

  • 模拟处理器和内存以支持虚拟机的运行
  • 两者相互结合、相辅相成,构成了一个完整虚拟化平台

Qemu

  • 本身不是 KVM 的一部分
  • 主要处理 I/O 以及为用户提供一个用户空间工具进行虚拟机的管理
  • 是一套完整的虚拟化解决方案
  • 是纯软件实现虚拟化
  • 包括处理器虚拟化、内存虚拟化以及各种虚拟设备的模拟

缺点

  • 模拟出来的,性能比较低

KVM 运行时的三种模式

  • 让 Linux 主机成为一个虚拟机监视器(VMM)
  • 且在原有 Linux 内核模式和用户模式的两种执行模式基础上增加了客户模式

客户模式

  • 可以理解成客户机在操作系统运行中的模式
  • 又分为内核模式和用户模式

内核模式

  • 模拟 CPU 以及内存实现客户模式切换,处理从客户模式的退出

用户模式

  • 为以后提供虚拟机管理的用户空间工具以及代表用户执行 I/O,Qemu 运行在这个模式之下

三种模式层次关系图

KVM 工作原理

  • 用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。
  • KVM Driver 为虚拟机创建虚拟 CPU 和虚拟内存,然后执行 VMLAUNCH 指令进入客户模式,装载 GuestOS 并运行。
  • Guest OS 运行过程中如果发生中断或者影子缺页等异常,将暂停 Guest OS的运行并保存当前上下文退出到内核模式来处理这些异常。
  • 内核模式处理这些异常时如果不需要 I/0 则处理完成后重新进入客户模式。
  • 如果需要 1/0 则进入到用户模式,由 Qemu 来处理 I/O,处理完成后进入内核模式,再进入客户模式

案例实验环境

  • 采用 CentOS7.9 操作系统,并开启虚拟化支持

主机

.  操作系统

IP地址

主要软件

kvm201

CentOS 7.9 x86_64

192.168.10.211

KVM 虚拟机

kvm202

CentOS 7.9 x86_64

192.168.10.212

案例需求

  • 安装 KVM
  • 完成基本的 KVM 操作管理(创建、启动、停止等)
  • 完成 KVM 命令行操作虚拟机

案例实现思路

  • 准备 KVM 装环境
  • 安装 KVM
  • 配置 KVM 桥接网络
  • 创建 KVM 存储池并安装虚拟机
  • 命令行操作虚拟机
搭建 KVM 虚拟化平台
准备 kvm 虚拟化环境

YUM 安装 KVM

[root@localhost ~]# yum -y install qemu-kvm
[root@localhost ~]# yum -y install qemu-kvm-tools
[root@localhost ~]# yum -y install virt-install
[root@localhost ~]# yum -y install bridge-utils
[root@localhost ~]# yum -y install libvirt virt-manager libguestfs-tools
  • qemu-kvm:kvm 核心包-虚拟操作系统模拟器加速模块

  • qemu-kvm-tools:qemu-kvm 的工具包

  • virt-install:虚拟机安装工具

  • qemu-img :是QEMU的磁盘管理工具

  • bridge-utils:虚拟机与外界通信的命令管理工具

  • libvirt:必须要装的核心工具

  • virt-manager:虚拟机图形管理工具(宿主机有桌面环境时可以考虑安装,命令操作或者远程控制则不需要)

  • QEMU是“Quick Emulator”的缩写,是一个用C语言编写的开源虚拟化软件。

  • QEMU(Quick Emulator)快速仿真器

  • libguestfs-tools:用于访问虚拟机的磁盘映像文件提供的一组命令

永久关闭防火墙、内核机制

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/selinux
//修改前
SELINUX=enforcing
//修改后
SELINUX=disabled

修改主机名

[root@localhost ~]# hostnamectl set-hostname kvm01
[root@localhost ~]# bash

修改 hosts 文件

[root@kvm01 ~]# vim /etc/hosts
//添加地址
192.168.10.201 kvm01
192.168.10.202 kvm02

关闭虚拟机

[root@kvm01 ~]# poweroff

增加处理器数量,设置 CPU 支持虚拟化,然后开机

开机后验证

[root@kvm01 ~]# cat /proc/cpuinfo | grep vmx

查看内核模块

[root@kvm01 ~]# lsmod | grep kvm
kvm_intel    188740    0
kvm          637289    1    kvm_intel
irqbypass    13503     1    kvm

设置 KVM 网络

[root@kvm01 ~]# cd /etc/sysconfig/network-scripts/

拷贝配置文件

[root@kvm01 network-scripts]# cp ifcfg-ens33 ifcfg-br0

修改物理网卡为桥接模式

[root@kvm01 network-scripts]# vim ifcfg-ens33
//添加配置
BRIDGE=br0

修改 br0 网卡

[root@kvm01 network-scripts]# vim /ifcfg-br0
//修改配置
TYPE=Bridge
NAME=br0
DEVICE=br0

重启网络并退出

[root@kvm01 network-scripts]# systemctl restart network
[root@kvm01 network-scripts]# cd

到这里做一个 KVM 快照

KVM 管理工具

[root@kvm01 ~]# virt-manager

这一步修改页面字体大小

创建存储池

双击

自定义名称

为存储池指定路径

为存储池添加卷

打开 XShell 连接上服务器用 ftp 上传镜像

鼠标右键,然后点击新建 

选本地安装

选完之后前进 

直接前进

开始安装 ,切换到 Install 选项

最小安装、自动分区 

设置 ROOT 密码

登录,然后查看地址,ping 一下外网 

新开一个服务器测试

列出所有虚拟机运行状态

[root@kvm01 ~]# virsh list --all
Id    名称        状态
-----------------------
2    test01    running

虚拟机关机与开机

[root@kvm01 ~]# virsh shutdown test01
域    test01    被关闭
[root@kvm01 ~]# virsh start test01
域    test01    已开始

强制系统关闭电源

[root@kvm01 ~]# virsh destroy test01
域    test01    被删除

 切换到 qemu 目录下

[root@kvm01 ~]# cd /data_kvm/store
[root@kvm01 store]# cd /etc/libvirt/
[root@kvm01 libvirt]# cd qemu/

 通过配置文件启动虚拟机

[root@kvm01 qemu]# virsh create test01.xml
域 test01被创建 (从 test01.xml)

挂起虚拟机

[root@kvm01 qemu]# virsh suspend test01
域    test01 被挂起

恢复虚拟机

[root@kvm01 qemu]# virsh resume test01
域    test01 被重新恢复

配置虚拟机实例伴随宿主机自动启动

[root@kvm01 qemu]# virsh autostart test01
域    test01标记为自动开始

导出虚拟机配置

[root@kvm01 qemu]# virsh dumpxml test01>test02.xml

虚拟机的删除与添加

[root@kvm01 qemu]# virsh shutdown test01
域     test01 被关闭
[root@kvm01 qemu]# virsh undefine test01
域    test01 已经被取消定义

通过备份的配置文件重新定义虚拟机

[root@kvm01 ~]# cd /qemu 
[root@kvm01 qemu]# mv test02.xml test01.xml

重新定义虚拟机

[root@kvm01 qemu]# virsh define test01.xml
定义域    test01 (从 test01.xml)

启动

[root@kvm01 qemu]# virsh start test01
域    test01 已开始
KVM 文件管理

查看当前磁盘格式

[root@kvm01 qemu]# qemu-img info /data_kvm/store/test01.qcow2
image: /data_kvm/store/test01.qcow2
file format: qcow2
virtual size:20G(21474836480 bytes)
disk size: 1.6G
cluster size:65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
  • 如果虚拟机磁盘不是 qcow2 格式,可以通过 qemu-img 命令转换磁盘文件格式

特殊属性

[root@kvm01 qemu]# virsh shutdown test01
域    test01 被关闭

关机状态下管理磁盘文件

[root@kvm01 qemu]# virt-cat -a /data_kvm/store/test01.qcow2 /etc/hosts
127.0.0.1    localhost    localhost.localdomain    localhost4    localhost4.localdomain4    ::1          localhost    localhost.localdomain    localhost6    localhost6.localdomain6

编辑配置文件

[root@kvm01 qemu]# virt-edit -a /data_kvm/store/test01.qcow2 /etc/hosts
//添加配置
192.168.10.201 kvm01

查看磁盘信息

[root@kvm01 qemu]# virt-df test01
文件系统                    1K-blocks    已用空间    可用空间    使用百分比%
test01:/dev/sda1           1038336       107452     930884          11%
test01:/dev/centos/root    17811456      1254740    16556716        8%
虚拟机克隆

从 test01 克隆 test02

[root@kvm01 qemu]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2
正在分配    'test02.qcow2'    |    20GB    00:03
成功克隆    'test02'。

查看虚拟机状态

[root@kvm01 qemu]# virsh list --all
Id        名称        状态
---------------------------
-        testo1       关闭
-        test02       关闭

启动虚拟机

[root@kvm01 qemu]# virsh start test02
域    test02 已开始

查看状态

[root@kvm01 qemu]# virsh list --all
Id        名称            状态
---------------------------------
9        test02           running
-        testo1           关闭

这里再拍个快照

虚拟机快照

[root@kvm01 qemu]# virsh snapshot-create test01
已生成域快照    1722309693
[root@kvm01 qemu]# virsh snapshot-create test01
已生成域快照    1722309704

查看当前虚拟机快照版本信息

[root@kvm01 qemu]# virsh snapshot-current test01

列出有几个快照

[root@kvm01 qemu]# virsh snapshot-list test01
名称            生成时间            状态
---------------------------------------------
1722309693     2024-07-30 11:21:33 +0800 shutoff
1722309704     2024-07-30 11:21:44 +0800 shutoff

恢复快照

[root@kvm01 qemu]# virsh snapshot-revert test01 1722309704

查看当前快照版本信息

[root@kvm01 qemu]# virsh snapshot-current test01

删除快照

[root@kvm01 qemu]# virsh snapshot-delete test01 1722309704
已删除域快照    1722309704

查看状态

[root@kvm01 qemu]# virsh snapshot-list test01
名称            生成时间                    状态
-------------------------------------------------
1722309693      2024-07-30 11:21:33 +0800 shutoff

小阿轩yx-部署 KVM 虚拟化平台

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值