KVM虚拟化简介
KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。关于KVM提以下六点:
1)KVM是开源软件。
2)是x86架构且硬件支持虚拟化技术(如intel VT或AMD-V)的Linux全虚拟化解决方案。
3)它包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
4)KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
5)KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
6)KVM是linux内核包含的东西,负责CPU和内存的虚拟;QEMU主要作为上层管理(命令行),负责I/O设备的虚拟,对各种虚拟设备的创建,调用进行管理。
相关链接:
KVM的官方地址:http://www.linux-kvm.org/page/Main_Page
KVM的Howto文档:http://www.linux-kvm.org/page/HOWTO
Kqemu源码地址:http://sourceforge.net/projects/kqemu/
Qemu下载地址:http://wiki.qemu.org/Main_Page
一、KVM安装
检查CPU是否支持虚拟化
# grep -E 'svm|vmx' /proc/cpuinfo
vmx为Intel的CPU指令集svm为AMD的CPU指令集
安装kvm必要的软件包
# yum install -y qemu-kvm libvirt virt-install bridge-utils
二、基本配置
激活并启动libvirt服务
# chkconfig libvirtd on
# service libvirtd start
配置桥接网络
默认情况下所有虚拟机只能够在host内部互相通信,如果需要通过局域网访问虚拟机,需要创建一个桥接网络。
1.修改以太网卡配置文件
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BRIDGE=br0
ONBOOT=yes
TYPE=Ethernet
原有的以太网络不需要配置IP地址,指定桥接的网卡设备(如br0)即可。
2.修改桥接网卡配置文件
# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
DEVICE=br0
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.0.0.60
GATEWAY=10.0.0.2
NETMASK=255.255.255.0
桥接网卡的需要配置IP地址,当然也可以用DHCP。需要注意的是桥接网卡br0中DEVICE的名字一定要与以太网卡eth0中BRIDGE对应。
3、开启转发功能并修改ulimit参数,重要
# echo 1 > /proc/sys/net/ipv4/ip_forward
# /bin/echo "* soft nproc 65500" >>/etc/security/limits.conf
# /bin/echo "* hard nproc 65500" >>/etc/security/limits.conf
# /bin/echo "* soft nofile 65500" >>/etc/security/limits.conf
# /bin/echo "* hard nofile 65500" >>/etc/security/limits.conf
4、重启网卡使之生效。
#service network restart
三、验证模块
# lsmod |grep kvm
#
说明模块没有加载,需要加载kvm模块。kvm,只是Linux内核的一个模块,不需要安装,只需要加载。加载命令如下
# modprobe kvm
# modprobe kvm_intel
连接hypervisor,可以使用如下命令:
# virsh -c qemu:///system list
###此命令需要重启服务器后使用,否则会报错error: failed to connect to the hypervisor error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory # reboot # virsh -c qemu:///system listId Name State ---------------------------------------------------- (由于没有创建虚拟机,所以没有条目显示)
四、创建虚拟机
创建ISO镜像:
# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso
或者将安装镜像上传至宿主机,直接使用(推荐)。
创建虚拟机硬盘:
# qemu-img create -f qcow2 /kvmdir/test.qcow2100G
创建虚拟机:
# virt-install --name Centos --virt-type kvm --ram 1024--vcpus 2--cdrom=/tmp/CentOS-6.5.iso --disk path=/kvmdir/test.qcow2,format=qcow2--graphics vnc,listen=0.0.0.0 --noautoconsole
各参数说明:
--name Centos ###指定虚拟机名字为Centos
--virt-type kvm ###指定虚拟机类型
--ram 1024 ###指定虚拟机内存大小,单位M
--cdrom=/tmp/CentOS-6.5.iso ###指定虚拟机OS安装介质路径
--disk path=/kvmdir/test..qcow2###虚拟机安装位置
--network=default ###指定VM网卡类型
--graphics vnc,listen=0.0.0.0 ###指定VNC或字符console
--vcpus 2 ###指定VM可以使用cpu个数
--vcpus 5,maxcpus=10 ###可以使用5颗cpu,最大支持10颗cpu
打开VNC客户端,输入本机ip:5900(第一个默认就是5900,第二个是5901,以此类推),可连接到创建的kvm虚拟机上,然后就是安装Centos7的过程。
到此,kvm虚拟机安装完成。
五、kvm管理
KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。
1.查看KVM虚拟机配置文件及运行状态
(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/
autostart目录是配置kvm虚拟机开机自启动目录。
(2) virsh命令帮助
[root@KVM ~]# virsh –help
或直接virsh命令和,再执行子命令。如下所示。
[root@KVM ~]# virsh
virsh # help #帮助
……
virsh # quit #退出
(3)查看kvm虚拟机状态
[root@KVM ~]# virsh list –all
2. KVM虚拟机开机
[root@KVM ~]# virsh start centos1
3. KVM虚拟机关机或断电
(1)关机
默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。
[root@Centos1 ~]# yum -y install acpid
[root@Centos1 ~]# /etc/init.d/acpid start
##virsh关机
[root@KVM ~]# virsh shutdown Centos
(2)强制关闭电源
[root@KVM ~]# virsh destroyCentos
4.通过配置文件启动虚拟机
[root@KVM ~]# virsh create /etc/libvirt/qemu/Centos.xml
5.配置开机自启动虚拟机
[root@KVM ~]# virsh autostartCentos
autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。
6.导出KVM虚拟机配置文件
[root@KVM ~]# virsh dumpxmlCentos> /etc/libvirt/qemu/Centos.xml
KVM虚拟机配置文件可以通过这种方式进行备份。
7.添加与删除KVM虚拟机
(1)删除kvm虚拟机
[root@KVM ~]# virsh undefineCentos
Domain centos1 has been undefined
说明:该命令只是删除Centos的配置文件,并不删除虚拟磁盘文件。如下图所示。
(2)重新定义虚拟机配置文件
通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。
[root@KVM ~]# mv /etc/libvirt/qemu/Centos.xml /etc/libvirt/qemu/Centos.xml
[root@KVM ~]# virsh define /etc/libvirt/qemu/Centos.xml #为客户端输出xml配置文件
8.编辑KVM虚拟机配置文件
[root@KVM ~]# virsh editCentos
virsh edit将调用vi命令编辑/etc/libvirt/qemu/Centos.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。
可以但不建议直接通过vi编辑。
9.其它(挂起、恢复)virsh命令
(1)挂起服务器
[root@KVM ~]# virsh suspendCentos
(2)恢复服务器
[root@KVM ~]# virsh resumeCentos
(2)在线添加磁盘或镜像
root@KVM ~]#virsh attach-disk 虚拟机名 source target
实际命令:
# virsh attach-disk one-641 /test.img vdb
virsh命令丰富。可以执行各种维护任务,本文只是从维护与管理的角度例举了常用的命令,为该命令的使用提供一个思路。
领取专属 10元无门槛券
私享最新 技术干货