发布时间:2020-03-21 18:05:40来源:阅读:
KVM是Kernel Virtual Machine的简写,目前Red Hat只支持在64位的RHEL5.4及以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,2008年被Red Hat公司收购并获得一项hypervisor技术,不过Red Hat的KVM被认为是将成为未来Linux hypervisor的主流,准确来说,KVM仅仅是Linux内核的一个模块。管理和创建完整的KVM虚拟机,需要更多的辅助工具。
公司部分Linux服务器利用率不高,为充分利用这些Linux服务器,可以部署KVM,在物理机上运行多个业务系统。例如,在运行Nginx的服务器上部署KVM,然后在虚拟机上运行Tomcat
KVM自Linux 2.6.20版本后就直接整合到Linux内核,它依托CPU和虚拟化指令集(如Inter-VT、AMD-V)实现高性能的虚拟化支持。由于与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现
图上简单描述了KVM虚拟化架构,在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程。因此它可以很方便地与Linux系统中的安全模块进行整合(SElinux),可以灵活地实现资源的管理及分配
采用CentOS 6.6 x86_64,开启CPU虚拟化支持
(1)最简单的安装方法就是在安装系统的时候,选择桌面安装,然后选择虚拟化选项
安装桌面
安装虚拟化平台
(2)在已有系统基础上,安装KVM所需软件
yum -y groupinstall "Desktop" //安装GNOME桌面环境
yum -y install qemu-kvm.x86_64 //KVM模块
yum -y install qemu-kvm-tools.x86_64 //KVM调试工具,可不安装
yum -y install python-virtinst.noarch //python组件,记录创建VM时的xml文件
yum -y install qemu-img.x86_64 //qemu组件,创建磁盘、启动虚拟机等
yum -y install bridge-utils.x86_64 //网络支持工具
yum -y install libvirt //虚拟机管理工具
yum -y install virt-manager //图形界面管理虚拟机
yum -y install libguestfs* //virt-cat等命令的支持软件包
(3)验证。重启系统后,查看CPU是否支持虚拟化,对于Inter服务器可以 通过一下命令查看,只要有输出就说明CPU支持虚拟化;AMD服务器可用cat /proc/cpuinfo | grep smv命令查看
[root@localhost ~]# 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 pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
检查KVM模块是否安装:
[root@localhost ~]# lsmod | grep kvm
kvm_intel 55496 0
kvm 337772 1 kvm_intel
宿主服务器安装完成KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认是NAT
关于两种模式的说明:
(1)用户模式,即NAT方式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
(2)桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持
这里以Bridge(桥接)为例
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:4C:0C:24
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE="br0"
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
重启network服务
[root@localhost ~]# service network restart
正在关闭接口 br0: [确定]
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: [确定]
弹出界面 br0:
正在决定 br0 的 IP 信息...完成。 [确定]
确认IP地址信息
[root@localhost ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:0C:29:4C:0C:24
inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe4c:c24/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:70 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:69660 (68.0 KiB) TX bytes:3066 (2.9 KiB)
eth0 Link encap:Ethernet HWaddr 00:0C:29:4C:0C:24
inet6 addr: fe80::20c:29ff:fe4c:c24/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28413 errors:0 dropped:0 overruns:0 frame:0
TX packets:20243 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:37239885 (35.5 MiB) TX bytes:1683986 (1.6 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:140 errors:0 dropped:0 overruns:0 frame:0
TX packets:140 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12096 (11.8 KiB) TX bytes:12096 (11.8 KiB)
virbr0 Link encap:Ethernet HWaddr 52:54:00:0B:01:73
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
出现以上信息,说明网卡桥接成功了
[root@localhost ~]# virt-manager
virt-manager是基于libvirt的图像化虚拟机管理软件。请注意,不同的发行版上virt-manager的版本可能不同,图形界面和操作方法可能不同。本文使用了Centos 6企业版。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,以root身份输入virt-manager命令
虚拟机管理界面
虚拟机管理步骤如下
(1)创建存储池,双击localhost(QEMU),选择“存储选项卡”,然后单击“+”按钮新建存储池。单击“前进”按钮,根据提示输入或浏览以设置存储目录,如/data_kvm/store,最后单击“完成”按钮即可
创建存储池
(2)以同样的操作创建一个镜像存储池,命名为linux_iso,目录为/data_kvm/iso即可。在安装操作系统时,我们把镜像上传到服务器目录/data_kvm/iso
创建镜像存储池
(3)创建存储卷,单击刚创建好的“linux”,单击对话框右下角的“新建卷”按钮建立一个存储卷,并设置最大容量与分配容量
创建存储卷
(4)单击“完成”按钮后,回到虚拟系统管理器。右击“localhost(QEMU)”,然后选择“新建”选项,在弹出的对话框中将虚拟机名称命令为“Centos-6.6”,然后单击“前进”按
新建虚拟机(1)
单击“浏览”按钮选择镜像文件,再选择操作系统类型及版本
新建虚拟机(2)
单击“前进”按钮,在对话框中适当分配内存和CPU资源,如1核CPU、512MB内存
新建虚拟机(3)
单击“前进”按钮,在对话框中勾选“立即分配整个磁盘”复选框,点选“管理的或者其他现有存储”单选按钮,单击“浏览”按钮选择文件,然后单击“前进”按钮
新建虚拟机(4)
在所示的对话框中勾选“在安装前自定义配置”复选框,单击“完成”按钮,弹出对话框
新建虚拟机(5)
新建虚拟机(6)
在“Overview”视图中,定位到“机器设置”,把机器设置-时钟偏移-改为“localtime”,单击“应用”按钮即可。定位到“Boot Options”,勾选“主机引导时启动虚拟机”复选框,这样在物理宿主机启动后,这个VM也会启动,最后单击“应用”按钮。如果要远程管理,需要在“显示VNC”中,将Keymap设置为“Copy Local Keymap”
新建虚拟机(7)
最后单击“Begin Installation”按钮即可,整个虚拟机配置过程完成。下面就是安装操作系统的工作,和平时安装Linux系统一样
CentOS安装界面
案例环境使用一台物理机器,一台服务器安装Centos 6.6的64位系统(即Stranded), Centos-6.6是在宿主机Stranded中安装的虚拟机
主机 操作系统 IP地址 主要软件
Stranded Centos-6.6 x86_64 192.168.1.100 Xshell
Centos-6.6
Centos-6.6 x86_64 192.168.1.103
Xmanager
安装过程同上一案例,使用Xshell远程控制Stranded主机
(1)查看命令帮助
[root@localhost ~]# virsh -h
...... //省略输出内容
(2)查看KVM的配置文件存放目录(Centos-6.6.xml是虚拟机系统实例的配置文件)
[root@localhost ~]# ls /etc/libvirt/qemu
autostart Centos-6.6.xml networks
(3)查看虚拟机状态
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
2 Centos-6.6 running
(4)虚拟机关机与开机
首先要确认acpid服务安装并运行
[root@localhost ~]# virsh shutdown Centos-6.6
[root@localhost ~]# virsh start Centos-6.6
(5)强制实例系统关闭电源
[root@localhost ~]# virsh destroy Centos-6.6
(6)通过配置文件启动虚拟机系统实例
[root@localhost ~]# virsh create /etc/libvirt/qemu/Centos-6.6.xml
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
3 Centos-6.6 running
(7)挂起虚拟机
[root@localhost ~]# virsh suspend Centos-6.6
查看虚拟机状态
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
3 Centos-6.6 暂停
(8)恢复虚拟机
[root@localhost ~]# virsh resume Centos-6.6
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
3 Centos-6.6 running
(9)配置虚拟机实例伴随宿主机自动启动
[root@localhost ~]# virsh autostart Centos-6.6
上述命令将创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统
(10)导出虚拟机配置
[root@localhost ~]# virsh dumpxml Centos-6.6 >/etc/libvirt/qemu/Centos-02-6.6.xml
(11)虚拟机的删除与添加
删除虚拟机
[root@localhost ~]# virsh shutdown Centos-6.6
[root@localhost ~]# virsh undefine Centos-6.6
查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除
[root@localhost ~]# ls /etc/libvirt/qemu
autostart Centos-02-6.6.xml networks
通过virsh list -all查看不到Centos-6.6的信息,说明此虚拟机被删除
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
通过备份的配置文件重新定义虚拟机
[root@localhost ~]# cd /etc/libvirt/qemu
[root@localhost qemu]# mv Centos-02-6.6.xml Centos-6.6.xml
重新定义虚拟机
[root@localhost qemu]# virsh define Centos-6.6.xml
查看虚拟机信息
[root@localhost qemu]# virsh list --all
Id 名称 状态
----------------------------------------------------
- Centos-6.6 关闭
(12)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)
直接通过vim命令修改
[root@localhost ~]# vim /etc/libvirt/qemu/Centos-6.6.xml
通过virsh命令修改
[root@localhost ~]# virsh edit Centos-6.6
通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw与qcow2格式,KVM虚拟机默认使用raw格式,raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像、Zlib磁盘压缩、AES加密等,针对两种格式的文件有不同的工具可供选择。这里介绍本地YUM安装libguestfs-tools后产生的命令行工具(这个工具可以直接读取qcow2格式的磁盘文件,因此需要将raw格式的磁盘文件转换成qcow2的格式)
(1)转换raw格式磁盘至qcow2格式
查看当前磁盘格式
[root@localhost ~]# qemu-img info /data_kvm/store/linux_kvm.img
image: /data_kvm/store/linux_kvm.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 10G
关闭虚拟机
[root@localhost ~]# virsh shutdown Centos-6.6
转换磁盘文件格式
[root@localhost ~]# qemu-img convert -f raw -O qcow2 /data_kvm/store/linux_kvm.img /data_kvm/store/linux_kvm.qcow2
(2)修改Centos-6.6的xml配置文件
[root@localhost ~]# virsh edit Centos-6.6
...... //省略部分内容
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data_kvm/store/linux_kvm.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
...... //省略部分内容
(3)virt-cat命令,类似于cat命令
[root@localhost ~]# virt-cat -a /data_kvm/store/linux_kvm.qcow2 /etc/sysconfig/network
NETWORINT=yes
HOSTNAME=localhost.localdomain
(4)virt-edit命令,用于编辑文件,用法与vim基本一致
[root@localhost ~]# virt-edit -a /data_kvm/store/linux_kvm.qcow2 /etc/resolv.conf
nameserver 8.8.8.8
(5)virt-df命令用于查看虚拟机磁盘信息
[root@localhost ~]# virt-df -h Centos-6.6
Filesystem Size Used Available Use%
Centos-6.6:/dev/sda1 476M 32M 419M 7%
Centos-6.6:/dev/sdb1 4.3G 4.3G 0 100%
Centos-6.6:/dev/VolGroup/lv_root 8.3G 620M 7.2G 8%
(1)查看虚拟机状态
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- Centos-6.6 关闭
(2)从Centos-6.6克隆Centos-02-6.6
[root@localhost ~]# virt-clone -o Centos-6.6 -n Centos-02-6.6 -f /data_kvm/store/Centos-02-6.6.qcow2
(3)查看虚拟机状态
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- Centos-02-6.6 关闭
- Centos-6.6 关闭
(4)启动虚拟机
[root@localhost ~]# virsh start Centos-02-6.6
KVM虚拟机要使用快照功能,磁盘格式必须是qcow2,之前已经将Centos-6.6的磁盘格式转换成了qcow2
下面介绍KVM虚拟机快照备份的过程
(1)对Centos-6.6创建快照
[root@localhost ~]# virsh snapshot-create Centos-6.6
Domain snapshot 1440950172 created
(2)查看虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current Centos-6.6
<domainsnapshot>
<name>1440950172</name> //快照版本号
<state>shutoff</state>
...... //省略部分内容
(3)查看快照信息
[root@localhost ~]# virsh snapshot-list Centos-6.6
名称 Creation Time 状态
------------------------------------------------------------
1440950172 2015-08-30 23:56:12 +0800 shutoff
(4)创建新快照
[root@localhost ~]# virsh snapshot-create Centos-6.6
Domain snapshot 1440950433 created
(5)查看快照信息
[root@localhost ~]# virsh snapshot-list Centos-6.6
名称 Creation Time 状态
------------------------------------------------------------
1440950172 2015-08-30 23:56:12 +0800 shutoff
1440950433 2015-08-31 00:00:33 +0800 shutoff
(6)回复虚拟机状态至1440950172
[root@localhost ~]# virsh snapshot-revert Centos-6.6 1440950172
(7)查看虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current Centos-6.6
<domainsnapshot>
<name>1440950172</name> //快照版本号
<state>shutoff</state>
...... //省略部分输出
(8)删除快照
[root@localhost ~]# virsh snapshot-delete Centos-6.6 1440950172
Domain snapshot 1440950172 deleted
OraCmd命令行工具 v3.2 官方版
3.88MB
Oracle VM VirtualBox(虚拟机工具)v5.2.14.123301 中文免费版
538.39MB
virtual drive manager(虚拟驱动器管理工具) V1.32 绿色版
0.21MB
IcoFX汉化破解版(附注册码+使用教程) v3.2.1
13.36M
JetBrains PyCharm Pro 2020.1汉化破解版 (附安装教程)
369.4M
MVBOX虚拟视频(音乐播放软件) V4.6.8 破解版
19.04 MB
PhotoInstrument注册版 (附使用教程) v2.0.8
5.04M
Pidgin(多协议即时通讯平台) v2.14.0.0 官方版
8.27M
daemon tools v3.47(虚拟光驱工具)中文版
485KB
dopdf v7 虚拟打印机 v7.3 绿色中文版
64.72M
fastreport5破解版下载(附序列号+使用教程) V5.2.3
42.17M
winmount(虚拟光驱工具)v3.4.1020 免费版
3.87MB
中鸣三维仿真教育系统免费版 (附教程) v1.0.71 绿色版
109.39M
刻绘大师V8破解版(免加密狗+使用教程) V8.20.1
388.97M
客户达开店管家(淘宝店铺管理软件) v4.09 破解版
40.2MB
宽谷财税平台(一站式财税服务工具) v3.2.1.16官方版
93.9M
版权家(版权保护平台) V1.1.0.0 官方版
85.9M
Corel PhotoMirage下载
134M
SwitchHost下载
107.1M
autocad2014(cad设计软件) 免费版
1505.28MB
2020-03-26
Windows 8系统开机出现致命错误 c00000022 的解决思路
EDU7.6 驱动程序以及用户手册
在linux下已知网络中一个机器的硬件地址如何找到对应IP?
N700鼠标蓝牙功能如何使用,为什么与我的电脑无法配对成功?
如何使用指纹识别软件登记(记录)指纹
Q110连接数字电视时画面超出屏幕范围,如何解决?
光盘驱动器(例如CD、DVD 或CD-RW 驱动器)无法运行
ThinkPad E440 E540关机情况下电池掉电
设置ELAN触控板一直保持禁用状态的方法