KVM虚拟化平台的搭建及基本命令

简介:

  KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中,硬件需要支持VT技术(如Intel VT技术或者AMD V技术)。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少,KVM目前已成为学术界的主流VMM之一。本篇博客将介绍部署虚拟化环境、创建虚拟机实例,以及虚拟机的基本管理。



搭建KVM虚拟化平台

    搭建KVM最简单的方法就是在安装系统的时候,选择桌面安装,然后选择虚拟化选项,KVM平台就随着系统的安装自动就搭建成功了。                                                 

    如果需要在已有的系统上搭建KVM平台,安装的步骤如下:

(1)安装KVM所需软件

1
2
3
4
5
6
7
8
[root@localhost ~] # yum -y groupinstall "Desktop"                //安装GNOME桌面环境
[root@localhost ~] # yum -y install qemu-kvm.x86_64               //KVM模块
[root@localhost ~] # yum -y install qemu-kvm-tools.x86_64         //KVM调试工具,可不安装
[root@localhost ~] # yum -y install python-virtinst.noarch        //python组件,记录创建VM时的xml文件
[root@localhost ~] # yum -y install qemu-img.x86_64               //qemu组件,创建磁盘、启动虚拟机等
[root@localhost ~] # yum -y install bridge-utils.x86_64           //网络支持工具
[root@localhost ~] # yum -y install libvirt                       //虚拟机管理工具
[root@localhost ~] # yum -y install virt-manager                  //图形界面管理虚拟机


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

1
2
3
[root@localhost ~] # lsmod | grep kvm
kvm_intel              54285  0 
kvm                   333172  1 kvm_intel


(3)设置KVM网络

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

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

桥接模式(Bridge):这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的主机可以直接访问到虚拟机内部

    这里的网络配置为桥接模式Bridge

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[root@localhost ~] # vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:0c:29:1c:b4:fb
ONBOOT= yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0
 
[root@localhost ~] # vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Ethernet
ONBOOT= yes
NM_CONTROLLED=no
BOOTPROTO=static
TYPE=Bridge
IPADDR=192.168.1.1
NETMASK=255.255.255.0
 
[root@localhost ~] # service network restart
正在关闭接口 br0:                                         [确定]
正在关闭接口 eth0:                                        [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0:                                            [确定]
弹出界面 br0: Determining  if  ip address 192.168.1.1 is already  in  use  for  device br0...
                                                            [确定]
[root@localhost ~] # ifconfig 
br0       Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:FB  
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
           inet6 addr: fe80::20c:29ff:fe1c:b4fb /64  Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:21 errors:0 dropped:0 overruns:0 frame:0
           TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0 
           RX bytes:1504 (1.4 KiB)  TX bytes:3128 (3.0 KiB)
 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:1C:B4:FB  
           inet6 addr: fe80::20c:29ff:fe1c:b4fb /64  Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:468 errors:0 dropped:0 overruns:0 frame:0
           TX packets:365 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:45694 (44.6 KiB)  TX bytes:42592 (41.5 KiB)
 
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:16436  Metric:1
           RX packets:28 errors:0 dropped:0 overruns:0 frame:0
           TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0 
           RX bytes:2256 (2.2 KiB)  TX bytes:2256 (2.2 KiB)
 
virbr0    Link encap:Ethernet  HWaddr 52:54:00:B1:C5:BC  
           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)


(4)安装虚拟机 

1)创建虚拟机的存储目录

杨书凡24.png


2)打开虚拟系统管理器

杨书凡22.png



杨书凡25.png


杨书凡26.png


杨书凡27.png


杨书凡23.png


杨书凡28.png


杨书凡29.png


杨书凡30.png


杨书凡34.png


杨书凡35.png


杨书凡36.png



杨书凡38.png


杨书凡39.png




使用KVM命令集管理虚拟机

1. KVM基本功能管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
[root@localhost ~] # ls /etc/libvirt/qemu          //查看KVM的配置文件存放目录
autostart  networks  web.xml                       //web .xml是虚拟机系统的配置文件
[root@localhost ~] # virsh 
欢迎使用 virsh,虚拟化的交互式终端。
输入: 'help'  来获得命令的帮助信息
        'quit'  退出
        
virsh  # help                                    //查看命令帮助信息
virsh  # list --all                              //查看虚拟机的状态
  Id    名称                         状态
----------------------------------------------------
  5     web                            running
 
virsh  # shutdown web                //关机,首先需要确认acpid服务安装并运行
域 web 被关闭 
 
virsh  # start web                   //开机
域 web 已开始
 
virsh  # destroy web                 //强制虚拟机关闭电源
域 web 被删除
 
virsh  # create /etc/libvirt/qemu/web.xml          //通过配置文件启动虚拟机
域 web 被创建(从  /etc/libvirt/qemu/web .xml)
 
virsh  # suspend web                 //挂起虚拟机
域 web 被挂起
 
virsh  # list --all
  Id    名称                         状态
----------------------------------------------------
  8     web                            暂停
 
virsh  # resume web                  //恢复虚拟机
域 web 被重新恢复
 
virsh  # autostart web        //创建/etc/libvirt/qemu/autostart目录,开机自动启动虚拟机
域 web标记为自动开始
 
virsh  # exit           //和quit命令相同,退出virsh虚拟化的交互式终端
 
[root@localhost ~] # virsh dumpxml web > /etc/libvirt/qemu/web_bak.xml   //导出虚拟机配置
[root@localhost ~] # virsh shutdown web                            //关闭虚拟机
域 web 被关闭
 
[root@localhost ~] # virsh undefine web         //删除虚拟机
域 web 已经被取消定义
 
[root@localhost ~] # ls /etc/libvirt/qemu       //web的配置文件被删除,但磁盘文件不会被删除
autostart  networks  web_bak.xml
 
[root@localhost ~] # virsh list --all           //查不到web的信息,说明此虚拟机已被删除  
  Id    名称                         状态
----------------------------------------------------
 
[root@localhost ~] # mv /etc/libvirt/qemu/web_bak.xml /etc/libvirt/qemu/web.xml  
 
[root@localhost ~] # virsh define /etc/libvirt/qemu/web.xml  //通过备份的文件重新定义虚拟机
定义域 web(从  /etc/libvirt/qemu/web .xml)
 
[root@localhost ~] # virsh list --all                        //虚拟机已经恢复
  Id    名称                         状态
----------------------------------------------------
  -     web                            关闭
  
[root@localhost ~] # vim /etc/libvirt/qemu/web.xml      //修改配置文件,用来修改系统内存、磁盘文件等信息 
[root@localhost ~] # virsh edit web              //和上面的命令一样,修改web.xml配置文件        
编辑了域 web XML 配置。



2. KVM文件管理

    通过文件管理可以直接查看、修改、复制虚拟机的内部文件,虚拟机磁盘文件有raw和qcow2格式

raw格式:KVM虚拟机默认的格式,性能好、速度快,但不支持镜像、Zlib磁盘压缩、AES加密等

qcow2格式:是KVM支持的磁盘镜像格式,支持快照、、Zlib磁盘压缩、AES加密等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@localhost ~] # yum -y install libguestfs-tools     //安装此工具,可以直接读取qcow2格式的磁盘文件
[root@localhost ~] # qemu-img info /data_kvm/store/web_kvm.img     //查看当前磁盘格式为raw
image:  /data_kvm/store/web_kvm .img
file  format : raw
virtual size: 9.8G (10485760000 bytes)
disk size: 9.8G
 
[root@localhost ~] # virsh shutdown web                         //关闭虚拟机
域 web 被关闭
 
[root@localhost ~] # qemu-img convert -f raw -O qcow2 /data_kvm/store/web_kvm.img /data_kvm/store/web_kvm.qcow2
// 将raw格式转换为qcow2格式
[root@localhost ~] # virsh edit web                         //修改web.xml配置文件
…… // 省略部分内容
     <disk  type = 'file'  device= 'disk' >
       <driver name= 'qemu'  type = 'qcow2'  cache= 'none' />               // 此行将raw改为qcow2
       < source  file = '/data_kvm/store/web_kvm.qcow2' />                // 此行将img改为qcow2
       <target dev= 'vda'  bus= 'virtio' />
       <address  type = 'pci'  domain= '0x0000'  bus= '0x00'  slot= '0x05'  function = '0x0' />
     < /disk >
…… // 省略部分内容    
 
[root@localhost ~] # virt-cat -a /data_kvm/store/web_kvm.qcow2 /etc/sysconfig/network    //类似于cat命令
NETWORKING= yes
HOSTNAME=web
[root@localhost ~] # virt-edit -a /data_kvm/store/web_kvm.qcow2 /etc/resolv.conf    //类似于vim命令,用于编辑文件
 
[root@localhost ~] # virt-df -h web                                    //用于查看虚拟机的磁盘信息
Filesystem                                Size       Used  Available  Use%
web: /dev/sda1                              484M        34M       425M    8%
web: /dev/VolGroup/lv_root                  8.2G       2.9G       4.9G   35%


3. 虚拟机克隆

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~] # virsh list --all                     //查看虚拟机状态
  Id    名称                         状态
----------------------------------------------------
  -     web                            关闭
  
[root@localhost ~] # virt-clone -o web -n www -f /data_kvm/store/www.qcow2  //从web克隆www
  
[root@localhost ~] # virsh list --all                     //查看虚拟机状态
  Id    名称                         状态
----------------------------------------------------
  -     web                            关闭
  -     www                            关闭


4. 虚拟机快照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@localhost ~] # virsh snapshot-create web          //对web创建快照
Domain snapshot 1516736781 created
[root@localhost ~] # virsh snapshot-current web         //查看虚拟机快照的版本信息
<domainsnapshot>
   <name>1516736781< /name >
…… // 省略部分内容    
 
[root@localhost ~] # virsh snapshot-list web            //查看快照信息
  名称               Creation Time             状态
------------------------------------------------------------
  1516736781           2018-01-24 03:46:21 +0800 shutoff
 
[root@localhost ~] # virsh snapshot-create web          //创建新快照
Domain snapshot 1516737252 created
 
[root@localhost ~] # virsh snapshot-list web            //查看快照信息
  名称               Creation Time             状态
------------------------------------------------------------
  1516736781           2018-01-24 03:46:21 +0800 shutoff
  1516737252           2018-01-24 03:54:12 +0800 shutoff
 
[root@localhost ~] # virsh snapshot-revert web 1516736781      //恢复虚拟机状态至1516736781
 
[root@localhost ~] # virsh snapshot-delete web 1516737252      //删除快照
Domain snapshot 1516737252 deleted


    本篇博客只介绍了一些常用的KVM命令,其他命令可以通过查看help帮助信息或上网查找。由于KVM命令集的庞大很难清除明了,所以通常都是在桌面环境下通过图形界面管理,直观方便。










本文转自 杨书凡 51CTO博客,原文链接:http://blog.51cto.com/yangshufan/2064361,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
92 5
|
27天前
|
存储 Linux 调度
KVM 虚拟化的功能特性
【10月更文挑战第13天】虚拟化技术创建实体资源的虚拟版本,提升资源利用率。KVM(Kernel-based Virtual Machine)作为全虚拟化解决方案,借助Linux内核实现Hypervisor功能,通过模块化方式提供高效的虚拟化环境。
|
13天前
|
SQL 数据挖掘 数据库
虚拟化数据恢复—XenServer虚拟化平台数据恢复案例
服务器虚拟化数据恢复环境: 某品牌720服务器中有一组通过同品牌、型号为H710P的RAID卡+4块STAT硬盘组建的RAID10磁盘阵列。上层部署XenServer虚拟化平台。1台Windows Server操作系统虚拟机,该虚拟机有2块虚拟磁盘(系统盘+数据盘),当作网站服务器使用。 服务器虚拟化故障: XenServer虚拟机不可用,虚拟磁盘中数据丢失。
|
2月前
|
KVM 虚拟化
虚拟化技术概述及KVM环境安装
关于虚拟化技术概述及KVM环境安装的教程,涵盖了虚拟化的定义、分类、管理工具,以及KVM的系统需求、安装步骤和使用指南。
76 11
虚拟化技术概述及KVM环境安装
|
1月前
|
安全 KVM 虚拟化
OpenEuler 中配置 KVM 虚拟化环境指南
本文档详细介绍了如何在OpenEuler系统中配置和管理KVM虚拟化环境,包括环境准备、组件安装、虚拟机安装及管理命令等,适合初学者和有经验的用户。内容覆盖了从桥接网卡配置到虚拟机的安装与管理,以及常见问题的解决方法,帮助用户高效利用虚拟化技术。
|
3月前
|
Linux KVM 虚拟化
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
|
6月前
|
安全 Devops 虚拟化
【专栏】虚拟化技术与云计算平台 OpenStack:硬件虚拟化、操作系统级虚拟化和容器化
【4月更文挑战第28天】本文探讨虚拟化技术原理,如硬件虚拟化、操作系统级虚拟化和容器化,以及开源云计算平台OpenStack如何利用这些技术提供优势。OpenStack支持多种虚拟化技术,具备开源灵活性、多租户架构、可扩展性、插件式设计和成本效益。未来,OpenStack将在容器化、DevOps、跨云策略和安全合规性方面发挥更大作用,助力企业数字化转型。
611 4
|
6月前
|
存储 Linux KVM
虚拟化技术之KVM安装与使用
虚拟化技术之KVM安装与使用
|
3月前
|
存储 Linux 调度
OpenStack如何支持虚拟化技术?
【8月更文挑战第21天】
211 0
|
1月前
|
存储 分布式计算 分布式数据库
云计算和虚拟化技术
云计算是指把计算资源、存储资源、网络资源、应用软件等集合起来,采用虚拟化技术,将这些资源池化,组成资源共享池,共享池即是“云”。
140 64