虚拟化_KVM
一、KVM介绍
1、KVM全称kernel vitual machine,是针对包含虚拟化扩展(InterVT或AMD-V)的x86硬件上的完全原生的虚拟化解决方案
2、KVM是以色列Qumranet开发,基于linux内核,2008年9月4日RedHat公司收购KVM
3、RHEL5/CentOS5默认是Xen,RHEL6/CentOS6版本默认是KVM
二、KVM架构
-KVM驱动:作为linux内核的一个模块,其主要负责虚拟机的创建,虚拟机内存的分配,VCPU寄存器的读写以及VCPU的运行
-Qemu:用于模拟虚拟机的用户控件组件,提供I/O设备模型,访问外设的途径。
-Libvirt,virsh:由于Qemu工具效率不高,RedHat为KVM开发了辅助工具,比如libvirt、libguestfs。Libvirt是一套提供多种语言接口的API,为各种虚拟化工具提供一套方便、可靠的编程接口,而且支持Xen宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt不仅提供了API,还自带一套基于文本的管理虚拟机的命令virsh,可以通过使用virsh命令来使用libvirt的全部功能。
-virt-manager是一套python编写的虚拟机管理图形界面,用户可以通过他只管地操作不同的虚拟机,利用libvirt的API实现的。
三、kvm创建brigde网络模型的虚拟机
查看cpu是否支持虚拟化
# egrep --color "vms|smd" /proc/cpuinfo
如果有输出内容intel的cpu会有vmx,AMD的cpu会有svm
关闭NetworkManager服务
# /etc/init.d/NetworkManager stop
# chkconfig --level 2345 NetworkManager off
检查network服务是否启动
# chkconfig --list network
安装虚拟化的软件包:
# yum -y install kvm virt-* libvirts bridge-utils qemu-img
说明:
kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序
libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机
bridge-utils:设置网络网卡桥接
virt-*:创建、克隆虚拟机命令,以及图形化管理工具virt-manager
qemu-img:安装qemu组将,使用qemu命令来创建磁盘等。
检查kvm是否安装成功
# lsmod | grep --color kvm
如果出现:下列内容则表示安装成功加载kvm模块
kvm_intel 54285 0
kvm 333172 1 kvm_intel
如果没有成功加载则执行:
# modprobe kvm_intel
如果还是没有则reboot
编辑配置文件
# vi /etc/libvirt/qemu.conf
user = "root"
group = "root"
dynamic_ownership = 0
启动服务
# /etc/init.d/libvirtd start ;
/etc/init.d/messagebus start
配置网络
修改网络配置文件重启网络服务
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0
# vim ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=10.10.10.156
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
DNS1=192.168.1.1
DNS2=8.8.8.8
# vim ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:29:E5:68
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0
使用qemu-kvm创建虚拟机
将qemu-kvm连接到/usr/sbin/下
# ln -sv /usr/libexec/qemu-kvm /usr/sbin
利用网络镜像创建虚拟机
virt-install --name fansik1 --ram 512 --disk
path=/kvm/fansik1.img,size=30 --vcpus 1 --os-type linux --os-variant rhel6
--network bridge=br0 --graphics none --console pty,target_type=serial
--location 'http://mirrors.163.com/centos/6.7/os/i386/' --extra-args
'console=ttyS0,115200n8 serial'
选择English然后配置静态ip地址就可以执行安装
利用光盘镜像创建虚拟机
# qemu-img create -f qcow2 -o
preallocation=metadata /kvm/fansik.qcow2 10G
通过NFS将光盘文件共享出来,然后通过NFS创建
# virt-install --name fansik --ram 512 --disk
path=/kvm/fansik.qcow2,format=qcow2,size=7,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'
NFS设置:
NFS server name:NFS服务器IP地址
CentOS directory:/mnt/images/install.img
NFS mount options (optional):ro
四、virsh常用操作
# virsh list --all
显示所有虚拟机
# virsh console 名称
切换到某台虚拟机
关闭虚拟机需要在虚拟机上(不是宿主机)安装acpid包
# yum install acpid
# /etc/init.d/acpid start
在关闭就可以正常关闭虚拟机了
# virsh shutdown fansik
或者可以直接使用destroy选项
# virsh destroy fansik
启动虚拟机并进入该虚拟机
# virsh start fansik --console
挂起虚拟机
# virsh suspend fansik
恢复虚拟机
# virsh resume fansik
是虚拟机开机自启动
# virsh autostart fansik
关闭虚拟机的开机自启动
# virsh autostart --disable fansik
完全删除虚拟机
# virsh destroy fansik
# virsh undefine fansik
# rm -rf /kvm/fansik
五、kvm克隆
将fansik虚拟机克隆成fansik2
# virt-clone --original fansik --name fansik2
--file /kvm/fansik2.qcow2
进去后修改一下网卡配置即可,和vmware中差不多
六、创建快照
创建快照
# virsh snapshot-create fansik2
查看快照信息
# qemu-img info fansik2.qcow2
磁盘转换
# qemu-img convert -f raw -O qcow2 fansik1.img
fansik1.qcow2
创建的快照,和转换的磁盘都以xml文件的的形式存储在/etc/libvirt/qemu目录下
列出快照
# virsh snapshot-list fansik2
或者
# qemu-img info /kvm/fansik2.qcow2
七、恢复和删除快照
先列出快照然后选择要恢复的快照名称,恢复快照
# virsh snapshot-revert fansik2 1461996142
显示当前虚拟机的快照
# virsh snapshot-current fansik2
删除快照
# virsh snapshot-delete fansik2 1461996142
快照存储位置/var/lib/libvirt/qemu/snapshot/fansik2/
八、kvm磁盘扩容
给fansik2增加5G
# qemu-img resize /kvm/fansik2.qcow2 +5G
查看一下
# qemu-img info fansik2.qcow2
销毁重启后就可以看到多出来5G啦
# virsh destroy fansik2
# virsh start fansik2
重新分区就可以使用了,注意其实柱面要接着之前的
将重新分的区添加到逻辑卷中去
# pvcreate /dev/vda3
# pvs查看分区情况
PV
VG Fmt Attr PSize PFree
/dev/vda2
vg_bogon lvm2 a-- 9.51g 0
/dev/vda3
lvm2 a-- 5.00g 5.00g
# vgextend vg_bogon /dev/vda3
# vgs查看是否添加成功
VG #PV
#LV #SN Attr VSize VFree
vg_bogon
2 2 0 wz--n- 14.50g 5.00g
# lvs
# lvextend -l +100%FREE /dev/vg_bogon/lv_root
# resize2fs /dev/vg_bogon/lv_root
九、根据虚拟磁盘恢复虚拟机
# virsh undefine fansik1
/etc/libvirt/qemu中的fansik1.xml就会被删除
# virsh dumpxml fansik > fansik1.xml
或者
# cp fansik.xml fansik1.xml
# vim fansik1.xml编辑配置文件
修改<name>fansik1</name>
<uuid>c026536a-8227-bf18-3dd6-e026bd6417b1</uuid>
<driver name='qemu' type='raw'
cache='none'/>
<source file='/kvm/fansik.img'/>
定义fansik1
# virsh define /etc/libvirt/qemu/fansik1.xml
十、调整cpu、内存、网卡
调整cpu和内存
# virsh edit fansik1或者# vim /etc/libvirt/qemu/fansik1.xml
直接编辑文件即可:
<memory unit='KiB'>524288</memory>
<currentMemory
unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
列出网卡信息:
# virsh domiflist fanisk1
添加网卡(需要虚拟机开机时配置):
# virsh attach-interface fansik1 --type bridge
--source br0
或者编辑配置文件添加:
<interface type='bridge'>
<mac
address='52:54:00:42:99:0b'/>
<source
bridge='br0'/>
<model
type='virtio'/>
<address
type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
十一、kvm虚拟机迁移
# virsh dumpxml fansik >
/etc/libvirt/qemu/fansik8.xml
查看虚拟磁盘位置
# virsh domblklist fansik
把虚拟磁盘同步到要迁移的服务器上
# rsync -avP /kvm/fansik.qcow2
/data/kvm/fansik8.qcow2
定义虚拟机
# virsh define /etc/libvirt/qemu/fansik8.xml
启动虚拟机
# virsh start fansik8.xml
虚拟化_KVM的更多相关文章
- [原] KVM 虚拟化原理探究(1)— overview
KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...
- BIOS中未启用虚拟化支持系列~~例如:因此无法安装Hyper-V
异常处理汇总-服务器系列:http://www.cnblogs.com/dunitian/p/4522983.html 一般都是启动一下CUP虚拟化就可以了 比如华硕的:
- [原] KVM 虚拟化原理探究 —— 目录
KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
- [原] KVM 虚拟化原理探究(4)— 内存虚拟化
KVM 虚拟化原理探究(4)- 内存虚拟化 标签(空格分隔): KVM 内存虚拟化简介 前一章介绍了CPU虚拟化的内容,这一章介绍一下KVM的内存虚拟化原理.可以说内存是除了CPU外最重要的组件,Gu ...
- [原] KVM 虚拟化原理探究(3)— CPU 虚拟化
KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...
- [原] KVM 虚拟化原理探究(2)— QEMU启动过程
KVM 虚拟化原理探究- QEMU启动过程 标签(空格分隔): KVM [TOC] 虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_ ...
- Linux虚拟化学习笔记<一>
关于虚拟化,原理的东西是非常复杂的,要想完全理解,没有足够的耐心是不不能完全学透这部分内容的.那下面我主要以资源汇总的形式把一些资料罗列出来,帮助大家快速理解虚拟化,快速使用和配置. 为什么要虚拟化: ...
随机推荐
- HDU 5353
题目大意: 相邻的朋友可以给出自己手上最多一颗糖,n个朋友形成一个环,问给的方式能否最后使所有朋友都糖的数量相同 这里我用的是网络流来做的,这里n=100000,用sap的模板可以跑过 #includ ...
- ssh原理
客户端向服务器端发出连接请求 服务器端向客户端发出自己的公钥 客户端使用服务器端的公钥加密通讯密钥然后发给服务器端 如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私 ...
- key 4v4
#include "key4v4.h" #include "stm32f10x.h" #include "delay.h" /* PA4-L ...
- Nginx 缓存参数
看看这下面两个指令参数: ----------------------------------------------------------------- proxy_cache_path /ho ...
- history对象
1.history对象前进 history.forward() 2.history对象后退 history.back() 3.history对象跳入指定页面 history.go(-1): //当前 ...
- Spark的编译
由于Spark的运行环境的多样性,如可以运行在hadoop的yarn上,这样就必须要对Spark的源码进行编译.下面介绍一下Spark源码编译的详细步骤: 1.Spark的编译方式:编译的方式可以参考 ...
- lib静态链接库,dll动态链接库,h文件
最近在弄摄像头,发现我在调用摄像头自带的函数的时候,库没连接上,于是经过高人指点,学习了一下lib静态链接库,dll动态链接库来补充一下自己的基础知识. 一.首先我们来介绍一下lib静态链接库. li ...
- 获取一个 app 的 URL Scheme 的方法:
获取一个 app 的 URL Scheme 的方法: 上这个网站 URL Schemes 查一下相应的 app 的 URL Scheme 是否有被收录 第一种方法没找到的话,把相应的 app 的 ip ...
- stm32 dac 配置过程
DAC模块的通道1来输出模拟电压,其详细设置步骤如下: 1)开启PA口时钟,设置PA4为模拟输入. STM32F103ZET6的DAC通道1是接在PA4上的,所以,我们先要使能PORTA的时钟,然后设 ...
- 利用DetachedCriteria实现模糊查询和分页
分类: Java-Developing 前段时间在做模糊查询,并利用数据库分页,DAO用hibernate实现,刚开始的时候 根据业务层的数据,拼hql语句进行查询,且不说要进行一些if判断,单 ...