揭秘KVM虚拟化:性能与安全的完美结合

KVM虚拟化

目录

KVM虚拟化

一、KVM 概述

二、KVM工作原理

三、KVM应用场景

四、KVM 安装

1、升级系统、不升级内核

2、安装 KVM 及依赖

3、配置网络转发

4、修改网卡配置

5、服务启停

重启 network 服务

libvirtd 服务配置

6、KVM 创建虚拟机

准备工作

存放目录创建

虚拟机系统磁盘准备

系统镜像准备

virt-install 安装

7、KVM 虚拟机添加磁盘

查看虚拟机信息

查看所有虚拟机

查看虚拟机磁盘信息

为虚拟机增加磁盘

新建磁盘文件

将磁盘添加到虚拟机中

查看虚拟机磁盘信息

进入虚拟机查看

8、KVM 虚拟机快照操作

KVM 虚拟机快照 – 查看

KVM 虚拟机快照 – 创建

创建快照

查看创建结果

查看快照详细信息

KVM 虚拟机快照 – 恢复

KVM 虚拟机快照 – 删除

9、KVM 常用命令

虚拟机启停

启动虚拟机

停止虚拟机

查看虚拟机状态

进入虚拟机

虚拟机关机

虚拟机重启

强制停止虚拟机

彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘

设置宿主机开机时该虚拟机也开机

退出虚拟终端


一、KVM 概述

KVM 是 Kernelbased Virtual Machine 的缩写,是一种用于虚拟化的开源硬件虚拟化技术。

它使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。

KVM 允许虚拟机直接访问物理硬件资源,从而提供出色的性能和稳定性,同时还支持许多常见的操作系统和应用程序。

KVM 使用了 QEMU (Quick Emulator) 作为其默认的虚拟机监控程序。

除此之外,KVM 还支持多种嵌入式和云计算场景,并且得到了广泛的应用。

二、KVM工作原理

KVM 的工作原理是使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。

具体来说,它在 Linux 内核之上构建一个虚拟化层,该虚拟化层允许多个虚拟机共享物理服务器上的计算资源(如 CPU、内存和 0 设备)。在此虚拟化层中,每个虚拟机都被视为单独的计算机,每个虚拟机可以运行不同的操作系统和应用程序。

KVM使用硬件虚拟化技术,即通过 intel VTx 和 AMDV 等 CPU 虚拟化指集的支持,将虚拟化性能提升到接近原生性能。

此外,KVM 还使用 QEMU 作为其虚拟机监控程序,QEMU为每个虚拟机提供了一个虚拟化的环境,在该环境中,虚拟机可以访问它需要的资源(如磁盘、网络和其他I/0 设备)。

同时,KVM 利用 Linux 内核的强大功能,如分时调度和内存管理,来确保多个虚拟机之间的隔离性和安全性。

综上所述,KVM 的工作原理是结合硬件虚拟化技术和 Linux 内核的虚拟化模块,创建出一个虚拟化层,将物理服务器划分为多个虚拟机,并为每个虚拟机提供一个虚拟化的环境,从而实现资源共享和隔离。

三、KVM应用场景

KVM 作为一种强大的硬件虚拟化技术,在许多场景下都具有广泛的应用,以下是几个主要的应用场景:

1.云计算: KVM 在云计算中表现优异,可用于构建虚拟私有云、虚拟机托管服务等。KVM可以帮助企业实现资源共享、高可用性和快速部署的目标,同时还可以提高数据安全性和隔离性。

2.Web 托管: KVM 可以用于 Web 服务器的虚拟化,通过将多个虚拟机分配在一个物理服务器上,可以极大地提高服务器的利用率和性能。同时,KVM 还提供了快速备份和恢复数据的功能,保证了服务器的高可靠性。

3.测试和开发:KVM 可以帮助开发者创建多个虚拟机进行测试和开发,从而提高软件开发周期的效率和速度。开发者可以在虚拟机中运行不同的操作系统和应用程序,隔离他们的开发环境,同时可以在开发过程中随时备份和还原虚拟机。

4.HPC(高性能计算): KVM 可以用于构建 HPC 集群系统。通过虚拟化技术,HPC 集群系统可以实现资源共享和高效管理,同时保证计算资源的隔离性和安全性。

5.VDI(虚拟桌面基础设施): KVM 可以用于构建VDI 系统,将多个桌面虚拟机部署在一个物理服务器上,实现桌面虚拟化。VDI 系统可以提供远程访问、资源共享和快速部署的功能,同时可以保证数据隔离和安全性。

四、KVM 安装

1、升级系统、不升级内核

[root@kvm ~]# yum -y update --exclude=kernel* --exclude=centos-release*

2、安装 KVM 及依赖

[root@kvm ~]# yum -y install  virt-manager libvirt virt-install qemu-kvm xauth dejavu-lgc-sans-fonts 
  • Virt-Manager

A desktop user interface for managing virtual machines through libvirt.
  • Libvirt

A toolkit to interact with the virtualization capabilities of recent versions of Linux.
  • Virt-Install

A command line tool for creating new KVM container guests using the "libvirt"hypervisor management library.
  • Qemu-kvm

A Linux kernel module that allows a user space program to utilize the hardware virtualization features of various processors.
  • Dejavu-lgc-sans-fonts

A font family based on the Vera Fonts.
  • virt-viewer

A minimal tool for displaying the graphical console of a virtual machine.

3、配置网络转发

[root@kvm ~]# echo "net.ipv4.ip_forward = 1"|sudo tee /etc/sysctl.d/99-ipforward.conf
[root@kvm ~]# sudo sysctl -p /etc/sysctl.d/99-ipforward.conf

4、修改网卡配置

sudo nmcli connection add type bridge ifname br0
sudo nmcli connection modify br0 ipv4.method auto
sudo nmcli connection up br0
sudo nmcli connection add type bridge-slave ifname eth0 master br0

5、服务启停

重启 network 服务

[root@kvm ~]# systemctl restart NetworkManager

libvirtd 服务配置

[root@kvm ~]# systemctl start libvirtd
[root@kvm ~]# systemctl enable libvirtd

6、KVM 创建虚拟机

准备工作

存放目录创建
[root@kvm ~]# mkdir -p /home/virsh_workstation
虚拟机系统磁盘准备
[root@kvm ~]# qemu-img create -f qcow2 /home/virsh_workstation/test/test.qcow2 50G
Formatting '/home/virsh_workstation/test/test.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off
系统镜像准备
[root@kvm ~]# ll | grep CentOS
-rw-r--r--      1 root          root     8280604672 Sep  9 16:56 CentOS-7-x86_64-Everything-1611.iso

virt-install 安装

[root@kvm ~]# virt-install \
> --virt-type=kvm \
> --name=virsh_host_online_keyan06 \
> --os-type=linux \
> --os-variant=rhel7 \
> --vcpus=4 \
> --ram=51200 \
> --cdrom=/home/CentOS-7-x86_64-Everything-1611.iso \
> --disk=/home/virsh_workstation/virsh_host_online_keyan06/virsh_host_online_keyan06.qcow2,format=qcow2 \
> --network bridge=br0 \
> --graphics vnc,listen=0.0.0.0 \
> --force

会调用安装窗口,通过界面进行 CentOS 7 虚拟机安装

7、KVM 虚拟机添加磁盘

查看虚拟机信息

查看所有虚拟机
[root@kvm ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     test                            shut off
查看虚拟机磁盘信息
[root@kvm ~]# virsh domblklist test 
Target     Source
------------------------------------------------
vda        /home/virsh_workstation/test/test.qcow2
hda        -
为虚拟机增加磁盘
新建磁盘文件
[root@kvm ~]# qemu-img create -f qcow2 /home/virsh_workstation/test/test_data.qcow2 500G
Formatting '/home/virsh_workstation/test/test_data.qcow2', fmt=qcow2 size=536870912000 encryption=off cluster_size=65536 lazy_refcounts=off
将磁盘添加到虚拟机中
[root@kvm ~]# virsh attach-disk test --source /home/virsh_workstation/test/test_data.qcow2 --target vdb --subdriver qcow2 --persistent
Disk attached successfully

删除磁盘

[root@kvm ~]# virsh detach-disk test /home/virsh_workstation/test/test_data.qcow2
查看虚拟机磁盘信息
[root@kvm ~]# virsh domblklist test 
Target     Source
------------------------------------------------
vda        /home/virsh_workstation/test/test.qcow2
vdb        /home/virsh_workstation/test/test_data.qcow2
hda        -
进入虚拟机查看
[root@kvm ~]# fdisk -l | grep vdb
Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors

8、KVM 虚拟机快照操作

KVM 虚拟机快照 – 查看

[root@kvm ~]# virsh snapshot-list test
Name                 Creation Time             State
------------------------------------------------------------

KVM 虚拟机快照 – 创建

创建快照
[root@kvm ~]# virsh snapshot-create-as --domain test --name test_snapshot --description "system clear"
Domain snapshot test_snapshot created
查看创建结果
[root@kvm ~]# virsh snapshot-list virsh_host_online_keyan06 
 Name                 Creation Time             State
------------------------------------------------------------
 test_snapshot      2020-09-09 18:35:20 +0800   running
查看快照详细信息
[root@kvm ~]# virsh snapshot-dumpxml --domain test --snapshotname test_snapshot
--domain:指定虚拟机
--snapshotname:指定虚拟机快照名称

KVM 虚拟机快照 – 恢复

[root@kvm ~]# virsh snapshot-revert test test_snapshot
virsh snapshot-revert 虚拟机名称 虚拟机快照名称

KVM 虚拟机快照 – 删除

[root@kvm ~]# virsh snapshot-delete --domain test --snapshotname test_snapshot
Domain snapshot test_snapshot deleted

9、KVM 常用命令

虚拟机启停

启动虚拟机
[root@kvm ~]# virsh start test
停止虚拟机
[root@kvm ~]# virsh shutdown test

查看虚拟机状态

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

进入虚拟机

[root@kvm ~]# virsh console test 

虚拟机关机

[root@kvm ~]# virsh shutdown test

虚拟机重启

[root@kvm ~]# virsh reboot test

强制停止虚拟机

[root@kvm ~]# virsh destroy test 

彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘

[root@kvm ~]# virsh undefine test 

设置宿主机开机时该虚拟机也开机

[root@kvm ~]# virsh autostart test 

解除开机启动

[root@kvm ~]# virsh autostart --disable test  

退出虚拟终端

[root@kvm ~]# Ctrl + ]