一、KVM简介
KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发。2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分。2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中。
KVM必须在具备Intel VT或AMD-V功能的x86平台上运行。KVM包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。使用一个经过修改的QEMU(qemu-kvm),作为虚拟机上层控制和界面。
由于KVM仅是一个简单的虚拟化模块,所以它的内存管理没有自我实现,需借助于Linux内核实现内存管理。KVM能够使用Linux所支持的任何存储,在驱动程序的实现上,直接借助于Linux内核来驱动任何硬件。在性能上KVM继承了Linux很好的性能和伸缩性,在虚拟化性能方面,已经达到非虚拟化原生环境95%左右的性能。KVM拓展性也非常好,客户机和宿主机都可以支持非常多的CPU数量和非常大的内存,可以过载使用CPU和内存,还可借助KSM技术实现对内存的过量使用,且保证性能依旧非常不错。
KVM的架构非常简单,就是内核的一个模块,用户空间通过qemu模拟硬件提供给虚拟机使用,一个虚拟机就是一个普通的Linux进程,通过对这个进程的管理,就可以完成对虚拟机的管理。
二、准备工作
KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持
1、设置BIOS
Intel(R) Virtualization Tech [Enabled] |
如有必要,还需在BIOS中开启VT-d
2、vmware安装centos6.6(64位)
a. 内存给2g
b. 磁盘给50g, 或者再单独分一个磁盘,用来存储虚拟机文件
c. 最关键的一步,在创建虚拟机时,cpu是需要配置一下虚拟化的,如下图
3、查看系统内核版本
[root@centos ~]# uname -a
Linux centos 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux |
如果在2.6.20以下的linux版本,需升级内核。
4、查看是否支持虚拟化
[root@centos ~]# cat /proc/cpuinfo |egrep --color 'vmx|svm'
查找 CPU flags 是否包括 vmx 或者 svm 关键字。/proc/cpuinfo 仅从 Linux 2.6.15(Intel) 和 Linux 2.6.16(AMD) 开始显示虚拟化方面的信息,其中intel cpu支持会有vmx,AMD cpu支持会有svm。
5、关闭防火墙
[root@centos ~]# vim /etc/selinux/config
SELINUX=disabled
[root@centos ~]# iptables -F
[root@centos ~]# /etc/init.d/iptables save
[root@centos ~]# reboot
6、获取网络
[root@centos ~]# dhclient
三、安装KVM模块以及配置网络
1、安装KVM模块
[root@centos ~]# yum install -y kvm virt-* libvirt bridge-utils qemu-img
说明:
1)kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序。 3)libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机。 |
2、查看是否加载KVM模块
[root@centos ~]# lsmod |grep kvm
kvm_intel 54285 0 kvm 333172 1 kvm_intel |
如果没有加载,需要执行
[root@centos ~]# modprobe kvm-intel
还没有就重启一下试试。
3、配置虚拟网桥
[root@centos ~]# cd /etc/sysconfig/network-scripts/
[root@centos network-scripts]# cp ifcfg-eth0 ifcfg-br0
1)编辑ifcfg-eth0
[root@centos network-scripts]# vim ifcfg-eth0
DEVICE=eth0 HWADDR=00:0C:29:BA:C8:0D TYPE=Ethernet UUID=693af5fe-7401-4100-925c-a72e8f1a557a ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none BRIDGE=br0 |
2)编辑ifcfg-br0
[root@centos network-scripts]# vim ifcfg-br0
DEVICE=br0 #HWADDR=00:0C:29:BA:C8:0D TYPE=Bridge #UUID=693af5fe-7401-4100-925c-a72e8f1a557a ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.0.102 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1 DNS2=8.8.8.8 |
3)重启网络服务
[root@centos network-scripts]# service network restart
4)查看网络接口列表
[root@centos ~]# /etc/init.d/libvirtd start //启动libvirtd服务
[root@centos ~]# /etc/init.d/messagebus restart //重启messagebus 服务
[root@centos ~]# brctl show
bridge name bridge id STP enabled interfaces br0 8000.000c29bac80d no eth0 virbr0 8000.525400aa7d99 yes virbr0-nic |
用ifconfig命令即可看到多了两个网卡:
br0 ip:192.168.0.102
virbr0 ip:192.168.122.1
四、创建虚拟机
虚拟机的创建我们有两种方式,一种是在线安装创建,这是通过网络上镜像资源进行安装创建,这必须要求服务器能够连接到外网;另一种是通过NFS服务安装创建,这是通过服务器本地的镜像资源进行安装创建,这种方法适用于不能上外网的服务器。
方法一:在线安装创建虚拟机
[root@centos ~]# mkdir /data/ //创建存储虚拟机虚拟磁盘的目录,该目录所在分区必须足够大
[root@centos ~]# virt-install \
--name tpp1 \
--ram 512 \
--disk path=/data/tpp1.img,size=30 \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://mirrors.sohu.com/centos/6.7/os/i386/' \
--extra-args 'console=ttyS0,115200n8 serial'
说明:
1)--name:指定虚拟机的名字。 2)--ram:指定内存分配多少。 3)--disk path:指定虚拟磁盘放到哪里,size=30 指定磁盘大小为30G,这样磁盘文件格式为raw。 注意:raw格式不能做快照,需要转换为qcow2格式,如果要使用qcow2格式的虚拟磁盘,需要事先创建qcow2格式的虚拟磁盘。 参考 http://www.361way.com/kvm-qcow2-preallocation-metadata/3354.html 4)--vcpus:指定分配cpu几个。 5)--os-type:指定系统类型为linux。6)--os-variant:指定系统版本。 7)--network:指定网络类型。 8)--graphics:指定安装通过哪种类型,可以是vnc,也可以没有图形,在这里我们没有使用图形直接使用文本方式。 9)--console:指定控制台类型。 10)--location:指定安装介质地址,可以是网络地址,也可以是本地的一个绝对路径,如果是绝对路径,那么后面还需要指定一个安装介质,比如NFS,假如虚拟机设置ip后,不能连外网,那么就会提示让我们选择安装途径。 11)--extra-args 设定内核参数 |
当按下回车后,稍等几秒钟就可以看到安装提示了
stp1:选择语言(English)---->ok
stp2:选择手动配置TCP/IP(IPv4 选择 Manual configuration,IPv6不用设置默认即可)---->ok
stp3:配置网络
IPv4 address: 192.168.0.10 / 255.255.255.0 Gateway: 192.168.0.1 Name Server: 8.8.8.8 |
stp4:安装成功---->ok
stp5:出现警告(选择第四个 Re-initialize all)---->ok
stp6:选择时区( Asia/Shanghai)---->ok
stp7:设置root密码
stp8:选择分区类型(默认就可)---->ok
stp9:将存储配置写入磁盘---->Write changes to disk
stp10:完成 ---->Reboot
完成后,输入root和密码就可以进入刚刚创建的虚拟机了;要想退回到宿主机,按ctrl+] 即可。
在母机上执行以下命令:
[root@centos ~]# virsh list //可以列出当前的子机列表。
[root@centos ~]# virsh console tpp1 //可以进入指定的子机
方法二:NFS服务安装创建
在不能上外网的情况下,我们可以使用本地光盘进行安装配置。
1)挂载光盘
[root@centos ~]# mount /dev/cdrom /mnt/
[root@centos ~]# df -h //查看磁盘是否挂载
Filesystem Size Used Avail Use% Mounted on /dev/sda3 42G 1.7G 38G 5% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 97M 27M 66M 29% /boot /dev/sr0 4.2G 4.2G 0 100% /mnt |
[root@centos ~]# ls /mnt/ //可查看到mnt目录下生成了这些文件
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6 EFI Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6 |
2)配置NFS服务
[root@centos ~]# vim /etc/exports
/mnt 192.168.0.0/24 //把mnt目录共享给0这个网段, |
[root@centos ~]# yum install -y nfs-utils rpcbind
[root@centos ~]# /etc/init.d/rpcbind start
[root@centos ~]# /etc/init.d/nfs start
[root@centos ~]# showmount -e 192.168.0.102 //查看是否分享成功
Export list for 192.168.0.102: /mnt 192.168.0.0/24 |
3)安装配置虚拟机
因为磁盘文件格式默认为raw,而raw格式不能做快照,需要转换为qcow2格式,如果要使用qcow2格式的虚拟磁盘,需要事先创建qcow2格式的虚拟磁盘。
[root@centos ~]# mkdir /data/ //之前创建了这里就略过
[root@centos ~]# qemu-img create -f qcow2 -o preallocation=metadata /data/tpp2.qcow2 10G //执行成功后可以在data目录下看到tpp2.qcow2文件
[root@centos ~]# virt-install \
--name tpp2 \
--ram 512 \
--disk path=/data/tpp2.qcow2,size=10,bus=virtio \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location '/mnt/' \
--extra-args 'console=ttyS0,115200n8 serial'
然后后续的步骤和之前在线安装相类似。
stp1:选择语言(English)---->ok
stp2:选择安装方法(NFS directory)---->ok
stp3:选择手动配置TCP/IP(IPv4 Manual configuration)---->ok
stp4:配置网络
IPv4 address: 192.168.0.11 / 255.255.255.0 Gateway: 192.168.0.1 Name Server: 180.168.255.118 //我所在电信DNS |
stp5:配置NFS
NFS server name: 192.168.0.102 //宿主机ip CentOS directory: /mnt/images/install.img NFS mount options (optional): ro //只读 |
stp6:安装成功---->ok
stp7:出现警告(选择第四个 Re-initialize all)---->ok
stp8:选择时区( Asia/Shanghai)---->ok
stp9:设置root密码
stp10:选择分区类型(默认就可)---->ok
stp11:将存储配置写入磁盘---->Write changes to disk
stp12:完成 ---->Reboot
完成后输入root和密码就进入刚刚创建的虚拟机了。
KVM虚拟机的基本管理参考:http://msiyuetian.blog.51cto.com/8637744/1711927
本文转自 M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1707539,如需转载请自行联系原作者