KVM简介
kvm全称是Kernel-based Virtual Machine,即基于内核的虚拟机,是采用硬件虚拟化技术的全虚拟化解决方案。
KVM最初是由Qumranet公司的Avi Kivity开发的,作为他们的VDI产品的后台虚拟化解决方案。
为了简化开发,Avi Kivity并没有选择从底层开始新写一个Hypervisor,而是选择了基于linux kernel,通过加载模块使linux kernel本身变成一个Hypervisor。
2006年10月,在先后完成了基本功能、动态迁移以及主要的性能优化之后,Qumranet正式对外宣布了KVM的诞生。
同月,KVM模块的源代码被正式纳入linux kernel,成为内核源代码的一部分。
安装KVM
带有图形界面安装。
windows使用vmware程序操作,先建立一个带有图形的操作系统,方便拷贝文件。
创建一个新的虚拟机,最低要求,cpu:1核心、内存:8GB、硬盘:50GB。
安装完成后点击重启按钮。重启虚拟机,根据提示选择协议文件等。
选择root用户登陆到系统。
拷贝桌面图标到桌面生成快捷方式。
[root@KVM0 ~]# mv /usr/share/applications/firewall-config.desktop ~/桌面/
[root@KVM0 ~]# mv /usr/share/applications/virt-manager.desktop ~/桌面/
[root@KVM0 ~]# mv /usr/share/applications/firefox.desktop ~/桌面/
创建ISO文件夹
[root@KVM0 ~]# mkdir /ISO
通过xftp程序上传镜像文件。
[root@KVM0 ~]# cd /ISO
双击桌面虚拟系统管理器,打开虚拟管理系统,新建一个虚拟机。
新建步骤和vmware差不多。
将网络设置成DHCP模式,自动获取ip地址。
设置终端字符,方便virsh工具管理,禁用selinux,防火墙。
[root@KVM0 ISO]# sed -i '7s/enforcing/disabled/' /etc/selinux/config
[root@KVM0 ISO]# systemctl stop firewalld.service && systemctl disable firewalld.service
[root@KVM0 ISO]# ssh 192.168.122.188
……
[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"
[root@localhost ~]# poweroff
……
[root@KVM0 ISO]# grubby --update-kernel=ALL --args="console=ttyS0"
检查新建的虚拟机文件。
[root@KVM0 images]# cd /var/lib/libvirt/images/ && ls -lh
总用量 21G
-rw-------. 1 root root 21G 4月 1 15:41 centos7.0.qcow2
[root@KVM0 images]# cd /etc/libvirt/qemu/ && ls -lh
总用量 8.0K
-rw-------. 1 root root 4.4K 4月 1 15:28 centos7.0.xml
drwx------. 3 root root 42 4月 1 15:11 networks
重启系统检查。
[root@KVM0 qemu]# reboot
……
[root@KVM0 ~]# virsh
欢迎使用 virsh,虚拟化的交互式终端。
输入:'help' 来获得命令的帮助信息
'quit' 退出
virsh # list --all
Id 名称 状态
----------------------------------------------------
- centos7.0 关闭
virsh # start centos7.0
域 centos7.0 已开始
virsh # console centos7.0
连接到域 centos7.0
换码符为 ^]
[ OK ] Started Show Plymouth Boot Screen.
……
localhost login: root
密码:
Last login: Mon Apr 1 15:39:31 from gateway
[root@localhost ~]# poweroff
将虚拟机关机降低配置,开始最小化安装KVM系统。
virsh # quit
[root@KVM0 ~]# poweroff
新建一台虚拟机,最小化安装操作系统,将配置调到最大。
禁用防火墙、selinux,安装必备的软件。
[root@KVM4 ~]# sed -i '7s/enforcing/disabled/' /etc/selinux/config
[root@KVM4 ~]# grubby --update-kernel=ALL --args="console=ttyS0"
[root@KVM4 ~]# systemctl stop firewalld
[root@KVM4 ~]# systemctl disable firewalld
……
[root@KVM4 ~]# yum repolist && yum list|grep bash
……
[root@KVM4 ~]# yum -y install bash-completion.noarch vim wget && reboot
安装KVM
检查系统是否支持虚拟化,有结果表示支持
[root@KVM4 ~]# cat /proc/cpuinfo |egrep 'vmx|svm' | wc -l
4
安装KVM软件
[root@KVM4 ~]# yum -y groups install Virtualization\ Client Virtualization\ Tools Virtualization\ Hypervisor Virtualization\ Platform
启动虚拟网卡
[root@KVM4 ~]# yum -y install net-tools.x86_64
[root@KVM4 ~]# systemctl start libvirtd
[root@KVM4 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 74a83d65-799e-4b7d-b5b2-86dc27d45223 ethernet ens33
virbr0 d3f469b3-4b56-4c46-bf34-7ad556d4ec57 bridge virbr0
添加两个磁盘分别挂载到/var/lib/libvirt/images/、/etc/libvirt/qemu/
[root@KVM4 ~]# fdisk /dev/sdb
……
[root@KVM4 ~]# fdisk /dev/sdc
……
[root@KVM4 ~]# mkfs.xfs /dev/sdb1
……
[root@KVM4 ~]# mkfs.xfs /dev/sdc1
……
[root@KVM4 ~]# blkid /dev/sdb1 /dev/sdc1
/dev/sdb1: UUID="d1853338-bf02-4e95-8709-b6779461fea7" TYPE="xfs"
/dev/sdc1: UUID="74b3dd92-7a74-472b-b63f-577ec1d83232" TYPE="xfs"
[root@KVM4 ~]# vim /etc/fstab
UUID="d1853338-bf02-4e95-8709-b6779461fea7" /var/lib/libvirt/images/ xfs defaults 0 0
UUID="74b3dd92-7a74-472b-b63f-577ec1d83232" /etc/libvirt/qemu/ xfs defaults 0 0
[root@KVM4 ~]# mount -a
从有图形界面的镜像文件拷贝到新的虚拟机里面。
[root@KVM0 ~]# scp /var/lib/libvirt/images/centos7.0.qcow2 [email protected]:/var/lib/libvirt/images/
[root@KVM0 ~]# scp -r /etc/libvirt/qemu/* [email protected]:/etc/libvirt/qemu/
利用镜像文件新建一台kvm虚拟机
[root@KVM4 ~]# cd /var/lib/libvirt/images/
[root@KVM4 images]# cp centos7.0.qcow2 www.qcow2
[root@KVM4 ~]# cd /etc/libvirt/qemu/
[root@KVM4 qemu]# cp centos7.0.xml www.xml
[root@KVM4 qemu]# vim www.xml
修改虚拟机的名字,UUID,磁盘文件位置,MAC地址,不知道修改的可以删除。
导入虚拟机
[root@KVM4 qemu]# virsh define /etc/libvirt/qemu/www.xml
定义域 www(从 /etc/libvirt/qemu/www.xml)
[root@KVM4 qemu]# virsh list --all
Id 名称 状态
----------------------------------------------------
- www 关闭
利用virsh工具控制虚拟机
[root@KVM4 qemu]# virsh
欢迎使用 virsh,虚拟化的交互式终端。
输入:'help' 来获得命令的帮助信息
'quit' 退出
virsh # start www
域 www 已开始
virsh # console www
连接到域 www
换码符为 ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64
localhost login: root
密码:
Last login: Mon Apr 1 15:46:19 on ttyS0