ubuntu下使用KVM
简介:KVM(kernel-based virtual machine,基于内核的虚拟主机),KVM自身是一个Linux内核模块,当安装有Linux系统的物理机装载了KVM这个内核模块后,可以在用户空间创建虚拟机,但是每个虚拟机运行在Linux内核上的一个系统进程,可用kill命令杀死。
特性:嵌入到linux正式kenel(提高兼容性)
代码级调用(提高性能)
创建的虚拟机为一个进程(便于管理)
开源模式,RedHat收购后提供商业支持
qumu+kvm--------》虚拟机:QEMU为一个开源的硬件模拟器项目,支持模拟支持的设备,缺点速度较慢;KVM为内核模块,提供CPU和内存资源。
部署使用:
qumu-kvm:为KVM管理程序提供硬件模拟的软件程序
libvirt-bin:管理虚拟化平台的软件
bridge-utils:配置网络桥接的命令行工具
virtinst:创建虚拟机的命令行工具
virt-manager:提供图形界面,通过libvirt支持管理虚拟机的命令行工具
root@test:~# apt install qemu-kvm libvirt-bin bridge-utils virtinst virt-manager ##安装完成后libvirtd自动启动
创建虚拟磁盘:root@test:/data# qemu-img create -f qcow2 /data/Centos1.qcow2 20G
-f [raw/qcow2]:raw为全镜像格式,特点是一次性分配预设空间,写入速度快,方便转换为其他格式,性能最优,但是占用空间大。
qcow2为稀疏格式,支持压缩、快照、镜像,更小的存储空间(用多少占多少)
查看虚拟磁盘信息:root@test:/data# qemu-img info /data/Centos1.qcow2
创建虚拟机:root@test:/data# virt-install --name test-li --virt-type kvm --ram 1024 --cdrom /data/CentOS-7-x86_64-Minimal-1810.iso --disk path=/data/Centos1.qcow2 --network default --graphics vnc,listen=0.0.0.0 --noautoconsole
--name:虚拟机名称
--noautoconsole:禁止自动连接至虚拟机的控制台;
--virt-type:虚拟机类型(kvm,xen,exsi)
执行完该命令后,qemu会开启一个5900端口,使用VNC软件连接,便可正常安装虚拟机。
安装完成后,因为使用默认网络,所以虚拟机无法通过dhcp获取IP地址,可自己手动配置:
在宿主机中安装完成bridge-utils工具时已经默认生成一张虚拟网桥,在虚拟机配置一个与该IP在同一局域网的IP即可:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 ##主要修改以下几项配置
BOOTPROTO=static IPADDR=192.168.122.2 NETMASK=255.255.255.0 GATEWAY=192.168.122.1 ONBOOT=yes
修改完成后重启网络,便可上网
克隆虚拟机:
查看被克隆虚拟机磁盘位置:root@test:/data# cat /etc/libvirt/qemu/test-li.xml | grep source
虚拟机需要处于关闭状态:root@test:/data# virsh shutdown k8s-master
克隆虚拟机:root@test:/data# virt-clone -o k8s-master -n k8s1 -f /data/k8s1.qcow2
Virsh常用命令:
查看kvm虚拟机:root@test:/data# virsh list ##创建的虚拟机相关配置文件存放在/etc/libvirt/qemu下。
查看网络列表:root@test:/data# virsh net-list
启动虚拟机:root@test:~# virsh start test-li
正常关闭虚拟机:root@test:~# virsh shutdown test-li
强制关机:root@test:~# virsh destroy test-li
查看虚拟机配置信息:root@test:~# virsh dumpxml test-li
彻底删除虚拟机:root@test:~# virsh undefine test-li