部署KVM虚拟化平台

部署KVM虚拟化平台

KVM(Kernel-based Virtual Machine)是一个开源的虚拟化技术,集成在Linux内核中,使其能够充当Hypervisor(虚拟机监视器),允许在Linux主机上运行多个独立的虚拟机。

1. 基本概念

  • 内核模块:KVM作为Linux内核的一部分,主要由两个内核模块组成:kvm.ko(提供核心虚拟化功能)和特定于处理器的模块(如kvm-intel.kokvm-amd.ko)。
  • 用户空间工具:KVM依赖于用户空间的工具来管理和创建虚拟机,例如QEMU(一个通用的硬件模拟器和虚拟化器)。

2. 主要特点

  • 高性能:KVM通过直接在硬件上运行虚拟机(利用硬件辅助虚拟化,如Intel VT-x和AMD-V),提供接近原生的性能。
  • 安全性:KVM使用Linux内核的安全机制,如SELinux和cgroups,确保虚拟机的隔离和资源控制。
  • 可扩展性:KVM可以在多核和多处理器系统上扩展,支持大规模虚拟机部署。
  • 开放源代码:作为开源项目,KVM受益于社区的持续开发和支持。

3. 工作原理

KVM将Linux内核转变为一个Hypervisor,每个虚拟机都是一个普通的Linux进程,由标准的Linux调度器管理。KVM通过内核模块提供虚拟化功能,QEMU负责虚拟硬件的仿真和管理。

4. 使用场景

  • 服务器虚拟化:KVM广泛用于数据中心和云计算环境中,以提高资源利用率和灵活性。
  • 开发与测试:开发人员可以使用KVM在单个物理主机上运行多个操作系统环境,方便测试和开发。
  • 桌面虚拟化:用户可以在桌面环境中运行不同的操作系统实例,满足多样化需求。

5. 管理工具

  • libvirt:一个开源的API和工具集,用于管理KVM和其他虚拟化技术。
  • virt-manager:一个桌面应用,提供友好的图形界面,用于管理虚拟机。

6. 优势与挑战

  • 优势
    • 与Linux内核紧密集成,性能高。
    • 支持多种操作系统。
    • 强大的社区支持和活跃的开发。
  • 挑战
    • 对硬件的依赖性(需要支持虚拟化的CPU)。
    • 需要一定的Linux和虚拟化知识进行配置和管理。

部署

案例需求

1)安装 KVM

2)完成基本的 KVM 操作管理(创建、启动、停止等)。

3)完成 KVM 命令行操作虚拟机。

案例实现思路

1)准备 KVM 装环境。

2)安装 KVM

3)配置 KVM 桥接网络。

4)创建 KVM 存储池并安装虚拟机。

5)命令行操作虚拟机。

搭建 KVM 虚拟化平台

准备 kvm 虚拟化环境

1.安装

1YUM 安装 KVM

yum -y install qemu-kvm

yum -y install qemu-kvm-tools

yum -y install virt-install

yum -y install qemu-img

yum -y install bridge-utils

yum -y install libvirt

yum -y install virt-manager

yum -y install 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:用于访问虚拟机的磁盘映像文件提供的一组命令

(2)关机,设置CPU支持虚拟化,然后开机

(3)开机后验证

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

[root@kvm01 ~]# lsmod | grep kvm

4开启 libvirtd 服务

安装完成后还需要开启 libvirtd 服务,以开启相关支持。

[root@kvm01 ~]# systemctl start libvirtd

[root@kvm01 ~]# systemctl enable libvirtd

设置 KVM 网络

这里以 Bridge(桥接)为例进行操作演示

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

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

[root@kvm01 ~]# vim ifcfg-ens33

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

IPADDR=192.168.10.108

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

DNS1=223.6.6.6

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

DEVICE=ens33

ONBOOT=yes

BRIDGE=br0

[root@kvm01 ~]# vim ifcfg-br0

TYPE=Bridge

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

IPADDR=192.168.10.108

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

DNS1=223.6.6.6

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=br0

DEVICE=br0

ONBOOT=yes

[root@kvm01 ~]# systemctl restart network

[root@kvm01 ~]# ifconfig

备注:

在此处做个快照,为后面章节做好实验环境

在另一台kvm主机上重复以上操作,最后也做个快照

KVM 管理

[root@kvm01 ~]# virt-manager

1)创建存储池

存储池的名称为:bdqn

存储池的目录为:/data_kvm/store

2)创建存储卷

bdqn的存储池中添加存储卷

存储卷名称为:test01

卷最大容量10G

(3)将Linux系统的ISO文件拷贝到/opt目录下,并关闭存储设置

4)在kvm01的主机上新建虚拟机,名称为test01

使用 KVM 命令集管理虚拟机

KVM 基本功能管理

1)查看命令帮助

[root@kvm01 ~]# virsh -h

2)查看 KVM 的配置文件存放目录

[root@kvm01 ~]# ls /etc/libvirt/qemu/

3)查看虚拟机状态

[root@kvm01 ~]# virsh list --all

4)虚拟机关机与开机

[root@kvm01 ~]# virsh shutdown test01

[root@kvm01 ~]# virsh start test01

5)强制实例系统关闭电源

[root@kvm01 ~]# virsh destroy test01

6)通过配置文件启动虚拟机系统实例

[root@kvm01 ~]# virsh create /etc/libvirt/qemu/test01.xml

[root@kvm01 ~]# virsh list --all

7)挂起虚拟机

[root@kvm01 ~]# virsh suspend test01

[root@kvm01 ~]# virsh list --all

8)恢复虚拟机

[root@kvm01 ~]# virsh resume test01

[root@kvm01 ~]# virsh list --all

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

[root@kvm01 ~]# virsh autostart test01

10)导出虚拟机配置

[root@kvm01 ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml

11)虚拟机的删除与添加

删除虚拟机。

[root@kvm01 ~]# virsh shutdown test01

[root@kvm01 ~]# virsh undefine test01

查看删除结果,test01 的配置文件被删除,但是磁盘文件不会被删除。

[root@kvm01 ~]# ls /etc/libvirt/qemu/

通过 virsh list --all 查看不到 test01 的信息,说明此虚拟机被删除。

[root@kvm01 ~]# virsh list --all

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

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

[root@bdqn qemu]# mv test02.xml test01.xml

重新定义虚拟机。

[root@bdqn qemu]# virsh define test01.xml

查看虚拟机信息。

[root@bdqn qemu]# virsh list --all

12)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)

直接通过 vim 命令修改。

[root@kvm01 ~]# vim /etc/libvirt/qemu/test01.xml

通过 virsh 命令修改。

[root@kvm01 ~]# virsh edit test01

3. KVM 文件管理

1)查看当前磁盘格式

[root@kvm01 ~]# qemu-img info /data_kvm/store/test01.qcow2

备注:

如果虚拟机磁盘文件不是 qcow2 格式,可以通过 qemu-img 命令转换磁盘文件格式,

如执行以下操作可以将 test01 虚拟机 raw 格式磁盘转换至 qcow2 格式。

[root@kvm01 ~]# virsh shutdown test01

[root@kvm01 ~]# qemu-img convert -f raw -O qcow2 /data_kvm/store/test01.img /data_kvm/store/test01.qcow2

执行转换磁盘格式的命令后还需要修改 test01 xml 配置文件中磁盘的类型与磁盘文件名。

[root@kvm01 ~]# virsh edit test01

…… //省略部分内容

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='none'/>

<source file='/data_KVM/store/test01.qcow2'/>

<target dev='vda' bus='virtio'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

</disk>

2virt-cat 命令,类似于 cat 命令

使用这个命令需要安装 libguestfs-tools-c 工具包。

[root@kvm01 ~]# virt-cat -a /data_kvm/store/test01.qcow2 /etc/sysconfig/grub

3virt-edit 命令

virt-edit 命令,用于编辑文件,用法与 vim 基本一致。

[root@kvm01 ~]# virt-edit -a /data_kvm/store/test01.qcow2 /etc/resolv.conf

4virt-df 命令

virt-df 命令用于查看虚拟机磁盘信息。

[root@kvm01 ~]# virt-df -h test01

虚拟机克隆

1)查看虚拟机状态

[root@kvm01 ~]# virsh list --all

2)从 test01 克隆 test02

[root@kvm01 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2

3)查看虚拟机状态

[root@kvm01 ~]# virsh list --all

4)启动虚拟机

[root@kvm01 ~]# virsh start test02

5. 虚拟机快照

KVM 虚拟机要使用镜像功能,磁盘格式必须为 qcow2。下面介绍 KVM 虚拟机快照备

份的过程。

1)对 test01 创建快照

[root@kvm01 ~]# virsh snapshot-create test01

已生成域快照 1503494464

2)查看虚拟机快照版本信息

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

3)查看快照信息

[root@kvm01 ~]# virsh snapshot-list test01

4)创建新快照

[root@kvm01 ~]# virsh snapshot-create test01

5)查看快照信息

[root@kvm01 ~]# virsh snapshot-list test01

6)恢复虚拟机状态

[root@kvm01 ~]# virsh snapshot-revert test01 1503494464

7)查看虚拟机快照版本信息

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

8)删除快照

[root@kvm01 ~]# virsh snapshot-delete test01 1503494464

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值