简单介绍

  KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。
  但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。

更详细的介绍和使用可以参考博客:http://blog.chinaunix.net/uid-7934175-id-5679365.html

安装

环境:CentOS 6.5上安装KVM所需软件

(1)最简单的安装方式就是在安装系统的时候,选择桌面安装,然后选择安装虚拟化

(2)在已有的系统基础上,安装KVM

yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client bridge-utils virt-viewer virt-install
yum -y groupinstall "Desktop"		//安装GNOME桌面环境(在没有图形化界面的基础上)
yum -y install qemu-kvm //KVM模块
yum -y install qemu-kvm-tools //KVM调试工具
yum -y install qemu-img //qeum组件,创建磁盘、启动虚拟机等
yum -y install virt-manager //图形界面管理虚拟机
yum -y install libvirt //虚拟机管理工具
yum -y install libvirt-python //python组件,记录创建VM时的xml文件
yum -y install bridge-utils //网络支持工具
yum -y install libvirt-client
yum -y install virt-viewer
yum -y install virt-install

(3)验证。重启系统后,查看CPU是否支持虚拟化,对于intel的服务器可以通过以下命令查看,只要输出说明CPU支持虚拟化;AMD服务器可用" cat /proc/cpuinfo | grep smv "命令查看

# cat /proc/cpuinfo | grep vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx
pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulq
dq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3
dnowprefetch ida arat xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid

(4)检查KVM模块是否安装

# lsmod | grep kvm
kvm_intel
kvm kvm_intel

加载KVM内核

modprobe kvm

设置KVM网络

宿主服务器安装完成KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认NAT

关于两种模式的说明:

  1) 用户模式,即NAT方式,这种方式是默认网络,数据包有NAT方式通过主机的接口进行传送,=可以访问外网,但是无法从外部访问虚拟机网络;

  2) 桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持;

以下为Bridge(桥接):

(1)修改eth0网卡配置文件

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=:0C::9F::
TYPE=Ethernet
ONBOOT=yes //将yes改为no
NM_CONTROLLED=no //将yes改为no
BOOTPROTO=dhcp
BRIDGE="br0" //添加

ifcfg-eth0

(2)新建ifcfg-br0文件

# vim /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
PBOOTPROTO=static
IPADDR=192.168.10.10
NETMASK=255.255.255.0

ifcfg-br0

(3)关闭网卡守护进程

/etc/init.d/NetworkManager stop

(4)重启network服务

service network restart

(5)确认IP地址信息

# ifconfig

br0       Link encap:Ethernet  HWaddr :0C:::4E:DE
inet addr:192.168.10.10 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe34:4ede/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (229.0 b) TX bytes: (1.2 KiB) eth0 Link encap:Ethernet HWaddr :0C:::4E:DE
inet6 addr: fe80::20c:29ff:fe34:4ede/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (3.7 KiB) TX bytes: (20.7 KiB)
Interrupt: Base address:0x2024 lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (39.2 KiB) TX bytes: (39.2 KiB) virbr0 Link encap:Ethernet HWaddr :::DB:2E:AD
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 b) TX bytes: (0.0 b)

ifconfig

查看网桥

# brctl show
bridge name bridge id STP enabled interfaces
br0 .000c29344ede no eth1
virbr0 .525400db2ead yes virbr0-nic

KVM管理

virt-manager是基于libvirt的图形化虚拟机管理软件;

virt-manager

命令方式

查看命令帮助

virsh -h

KVM的配置文件爱你存放目录(.xml后缀文件)

/etc/libvirt/qemu/

查看虚拟机状态

virsh list        //查看正在运行的虚拟机实例
virsh list --all //查看所有的虚拟机实例

虚拟机的关机于开机

virsh start 虚拟机实例名称        //开启虚拟机实例
virsh shutdown 虚拟机实例名称 //关闭虚拟机实例

强制实例系统关闭电源

virsh destroy 虚拟机实例名称

通过配置文件启动虚拟机系统实例

virsh create 虚拟机实例配置文件路径
virsh create /etc/libvirt/qemu/test.xml

挂起虚拟机

virsh suspend 虚拟机实例名称

恢复虚拟机

virsh resume 虚拟机实例名称

配置虚拟机实例伴随宿主机自动启动,会创建 /etc/libvirt/qemu/autostat/ 目录,目录内容为开机自启动的系统

virsh autostart 虚拟机实例名称

删除虚拟机实例(删除前需要先关闭该虚拟机实例)

virsh undefine 虚拟机实例的名称

通过备份的配置文件重新定义虚拟主机实例

cd /etc/libvirsh/qemu
mv test02.xml test01.xml virsh define test01.xml

修改虚拟机实例的配置文件

vim /etc/libvirt/qemu/test.xml        //直接使用vim修改配置文件

virsh edit test                //通过virsh命令修改

更多使用方法可以参考:http://linux.51yip.com/search/virsh

KVM虚拟机实例的创建

(1)图形化创建略

(2)命令方式创建

virt-install --name=haha --ram= --vcpus= --file=/var/lib/libvirt/images/haha.img --file-size= --location=/tmp/rhel6..iso --force &

参数说明:

--name 指定KVM虚拟机的名字
--ram 内存大小
--file 磁盘文件的路径
--vcpus 指定虚拟机的 CPU 数量
--file-size=(默认单位是G) 设置硬盘大小
--cdrom 光驱提供boot.iso 镜像
--location 本地提供boot.iso 镜像
--network network:default 设置网卡(使用默认)
--vnc --vncport= 连接桌面环境的vnc端口

参数说明

KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw与qcow2格式,KVM虚拟机默认使用raw格式,raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像、Zlib磁盘压缩、AES加密等,针对两种格式的文件有不同的工具可供选择。

这里介绍本地YUM安装libguestfs-tools后产生的命令行工具(这个工具可以直接读取qcow2格式的磁盘文件,因此需要将raw格式的磁盘文件转换成qcow2的格式)

安装 libguestfs-tools 工具(需要配置好本地YUM源)

yum -y install libguestfs-tools

转换磁盘格式

(1)转换raw格式磁盘至qcow2格式

查看当前磁盘格式

#qemu-img info /var/lib/libvirt/images/test.img
image: /var/lib/libvirt/images/test.img
file format: raw
virtual size: 15G ( bytes)
disk size: .1G

关闭虚拟机实例

virsh destroy test

转换磁盘文件格式

qemu-img convert -f raw -O(大写o) qcow2 原img文件路径 转换后qcow2文件路径

#qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/test.img /var/lib/libvirt/images/test.qcow2

查看转换后的磁盘格式

#qemu-img info /var/lib/libvirt/images/test.qcow2
image: /var/lib/libvirt/images/test.qcow2
file format: qcow2
virtual size: 15G ( bytes)
disk size: 804M
cluster_size:

(2)修改 test 实例的xml配置文件

#virsh edit test

......        //部分内容省略
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/> //将type中的raw修改为qcow2
<source file='/var/lib/libvirt/images/test.qcow2'/> //将file中的路径修改为转换后磁盘文件路径
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
...... //部分内容省略

(3)重启系统使其生效

reboot

(4)virt-cat命令,类似与cat命令

# virt-cat -a /var/lib/libvirt/images/test.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=:::D5::CF
TYPE=Ethernet
UUID=0270d54a--475a--b71edc2a8c2c
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=dhcp

(5)virt-edit命令,用于编辑文件,用法与vim基本一致

virt-edit -a /var/lib/libvirt/images/test.qcow2 /etc/sysctl.conf

(6)virt-df命令用于查看虚拟机磁盘信息

#virt-df -h test
Filesystem Size Used Available Use%
test:/dev/sda1 787M 38M 710M %
test:/dev/sda3 12G 727M 11G %

虚拟机克隆

从test克隆test01

virt-clone -o test -n test01 -f /var/lib/libvirt/images/test01.qcow2

查看虚拟机状态

#virsh list --all
Id 名称 状态
----------------------------------------------------
test01 running
- test 关闭

虚拟机快照

1)对test创建快照

#virsh snapshot-create test
Domain snapshot created

2)查看虚拟机快照版本信息

# virsh snapshot-current test
<domainsnapshot>
<name></name> //快照版本号
<state>shutoff</state>
...... //部分内容省略

3)查看快照信息

# virsh snapshot-list test
名称 Creation Time 状态
------------------------------------------------------------
-- :: + shutoff

4)恢复虚拟机状态至

virsh snapshot-revert test 

5)删除快照

#virsh snapshot-delete test
Domain snapshot deleted

Linux 部署KVM虚拟化平台的更多相关文章

  1. CentOS 7 部署 KVM 虚拟化

    文章目录 KVM的组件 KVM模块load进内存之后,系统的运行模式 部署KVM 基础配置 判断CPU是否支持硬件虚拟化 检测 kvm 模块是否装载 安装用户端工具 qemu-kvm 启动服务 查看网 ...

  2. kvm虚拟化平台搭建入门

    KVM虚拟化有两种网络模式:1)Bridge网桥模式2)NAT网络地址转换模式Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. 环境: 本次实验要开启VMWare中对应Ce ...

  3. KVM虚拟化平台环境部署

    一:安装依赖包 二:配置网卡 三:配置环境 实验环境: KVM01   192.168.200.10 关闭防火墙及相关的安全机制 [root@KVM01 ~]# systemctl stop fire ...

  4. kvm虚拟化平台搭建

    一.虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个操 ...

  5. Linux系统KVM虚拟化技术

    在公司工作时出现了这样一个需求:需要在一台服务器中安装两个系统,分别部署不同的服务,设置不同的系统时间,并且两个系统之间可以互相通讯.在网上查询相关资料后,决定通过KVM实现该功能,现将步骤记录如下. ...

  6. 在Centos6.5上部署kvm虚拟化技术

    KVM是什么? KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hyperv ...

  7. Linux部署教育云平台测试环境总结

    2016年10月16日换了新公司,刚进公司就要进行平台测试环境部署,由于之前Linux用的比较少,只用过几个简单的杀进程.重启tomcat.查看日志等简单的操作命令,真要在LInux服务器上部署环境的 ...

  8. centos7.2 kvm虚拟化管理平台WebVirtMgr部署

    在服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM宿主机越来越多,需要对宿主机的状态进行调控,决定采用WebVirtMgr作为kvm虚拟化的web管理工具,图形化的WEB,让人 ...

  9. kvm虚拟化管理平台WebVirtMgr部署-完整记录(1)

    公司机房有一台2U的服务器(64G内存,32核),由于近期新增业务比较多,测试机也要新增,服务器资源十分有限.所以打算在这台2U服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM ...

随机推荐

  1. Python编码与变量

    (一)Python执行的方式 Window: 在CMD里面,使用 Python + 相对路径/绝对路径 在解释器里面,直接输入,一行代码一行代码的解释 Linux: 明确地指出用Python解释器来执 ...

  2. 03-命令图片.doc

  3. html总结:背景图片拉伸

    两种方法: ⑴推荐方法 <style>body {background-image:url(images/backimage.jpg);background-size:cover;}< ...

  4. 弹性(flex)布局

    五大主流浏览器及其内核:谷歌浏览器:Google Chrome.内核是blink火狐浏览器:Mozilla Firefox.内核是Gecko:欧鹏浏览器:OPera.内核是blink苹果浏览器:Saf ...

  5. c# Mongodb两个字段不相等 MongoDB原生查询

    var document = new BsonDocument{ { "$where","this.StarTime!=this.EndTime"}, { }, ...

  6. gethostbyname用法

    //会优先查询解析%windir%\system32\drivers\etc\hosts中静态dns表 //一个域名可对应多个IP hostent->h_addr_list ==> 是in ...

  7. Oracle 表空间不足引起的问题及解决方法

    -- 1 向数据库导入数据时报了ORA-01653: unable to extend table错误,网上查了下原因是由于表空间不足引起的: 查询表空间使用情况语句 select a.tablesp ...

  8. [转帖]前端-chromeF12 谷歌开发者工具详解 Network篇

    前端-chromeF12 谷歌开发者工具详解 Network篇 https://blog.csdn.net/qq_39892932/article/details/82493922 blog 也是原作 ...

  9. [FreeBuff]Trojan.Miner.gbq挖矿病毒分析报告

    Trojan.Miner.gbq挖矿病毒分析报告 https://www.freebuf.com/articles/network/196594.html 竟然还有端口转发... 这哥们.. 江民安全 ...

  10. C# Note31: 如何使用Visual Studio做单元测试

    待更! 使用Visual Studio 2013进行单元测试--初级篇 带你玩转Visual Studio——单元测试(C++例)