系统虚拟机管理
一、KVM虚拟化概述
基于内核的虚拟机(英语:Kernel-based Virtual Machine,简称KVM),是一种用于Linux内核中的虚拟化基础设施。KVM 目前支持Intel VT及AMD-V的原生虚拟技术。 1)是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。 2)它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。 3)KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。 4)在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。 5)KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
可以对kvm进行控制管理的组件主要有两个:
QEMU-KVM:
在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时 自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控 制内核模块去做事情,还必须有一个用户空间的工具。关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软 件 QEMU。QEMU 是一个强大的虚拟化软件,它可以虚拟不同的 CPU 构架。比如说在 x86 的 CPU 上虚拟一个 Power 的 CPU,并利用它编译出可运行在 Power 上的程序。KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。所以 Linux 发行版中分为 kernel 部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。Libvirt/Virsh/Virt-manager:
尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更通用的辅助工具libvirt。Libvirt 是一套提供了 多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使 用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不 仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。同时 还能使用图形界面进行管理操作,其工具是 Virt-manager。它是一套用 python 编写的虚拟机管理图形界面,用户可以通过它 直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。二.安装虚拟机
virt-manager ####调出虚拟机图形化管理界面
编写一个shell脚本再用命令调用以执行安装虚拟机过程:
#!/bin/bash ##命令运行环境的指定
virt-install \ ##安装虚拟机
--name $1 \ ##虚拟机名称指定,$1表示脚本后的第一串字符
--ram 1000 \ ##内存
--file /var/lib/libvirt/images/rhel7.1.qcow2 \ ##硬盘文件
--file-size 8 \ ##硬盘文件大小
--cdrom /home/kiosk/Desktop/rhel-server-7.2-x86_64-dvd.iso & ##安装源指定 光盘文件
三.虚拟机管理
virt-manager ##开启图形管理工具
virt-viewer vmname ##显示虚拟机,vmname表示虚拟机名称
virsh list ##列出正在运行的vm
virsh list --all ##列出所有vm
virsh start vmname ##运行指定vm
virsh shutdown vmname ##正常关闭指定vm
virsh destroy vmname ##强行结束指定vm
virsh create vmname.xml ##临时恢复指定vm,vmname.xml表示前端管理文件
virsh define vmname.xml ##永久恢复vm
virsh undefine vmname ##删除vm的前端管理(图形控制界面),不会删除存储
四.虚拟机快照
qemu-img create -f qcow2 -b vm2.qcow2 node1.qcow2
—————— ——————
母盘文件 快照文件
###编写一个shell脚本再用命令调用以执行安装虚拟机过程:
#!/bin/bash ##命令运行环境的指定
virsh destroy $1 &> /dev/null
virsh undefine $1 &> /dev/null
qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.qcow2 /var/lib/libvirt/images/$2.qcow2 &> /dev/null
virt-install \ ###生成快照并且安装虚拟机
--name $2 \ ###名称
###$
2
是传递给该shell脚本的第二个参数
###$
2
是传递给该shell脚本的第二个参数
--ram 1024 \ ###内存
--disk /var/lib/libvirt/images/$2.qcow2 \
--import &> /dev/null & ###重定向导入到回收站 并且后台运行