kvm虚拟化学习笔记,KVM虚拟化的介绍与简单使用

2019-05-12 10:51 来源:未知

最近在学习KVM,进程不算太快,近期整理了一下KVM虚拟机技术学习笔记,现在就分享给大家,也给大家做个参考。有需要的朋友可以来了解一下。

KVM虚拟化学习笔记系列文章列表

kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 

kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

kvm虚拟化学习笔记(五)之windows虚拟机性能调整

kvm虚拟化学习笔记(六)之kvm虚拟机控制台登录配置

kvm虚拟化学习笔记(七)之kvm虚拟机克隆

kvm虚拟化学习笔记(八)之kvm虚拟机vnc配置

kvm虚拟化学习笔记(九)之kvm虚拟机时间配置

kvm虚拟化学习笔记(十)之kvm虚拟机快照备份

kvm虚拟化学习笔记(十一)之kvm虚拟机扩展磁盘空间

kvm虚拟化学习笔记(十二)之kvm linux虚拟机在线扩展磁盘

kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结

kvm虚拟化学习笔记(十四)之kvm虚拟机静态迁移

kvm虚拟化学习笔记(十五)之kvm虚拟机动态迁移

kvm虚拟化学习笔记(十六)之kvm虚拟化存储池配置

kvm虚拟化学习笔记(十七)之KVM到KVM之v2v迁移

kvm虚拟化学习笔记(十八)之ESXi到KVM之v2v迁移

kvm虚拟化学习笔记(十九)之convirt集中管理平台搭建

kvm虚拟化学习笔记(二十)之convirt安装linux系统

 

KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。

KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。

1.  查看KVM虚拟机配置文件及运行状态

(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/

autostart目录是配置kvm虚拟机开机自启动目录。   
韦德国际1946官网 1

(2) virsh命令帮助

# virsh -help

或直接virsh命令和,再执行子命令。如下所示。

[root@node1 ~]# virsh   
欢迎使用 virsh,虚拟化的交互式终端。 

输入:'help' 来获得命令的帮助信息   
'quit' 退出 

virsh # help   
……

(3) 查看kvm虚拟机状态

# virsh list --all

韦德国际1946官网 2

一、架构及介绍

  KVM(Kernel-based Virtual Machine)它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购;

  自Linux 2.6.20后整合到内核,该内核模块使得 Linux 变成了一个 Hypervisor层;

  它依托于CPU虚拟化指令集,性能、安全性、兼容性、稳定性表现很好

        每个虚拟化操作系统表现为单个系统进程,与Linux安全模块selinux安全模块很好结合;

  官方网站为http://www.linux-kvm.org/page/Main_Page

1.  查看KVM虚拟机配置文件及运行状态

2.  KVM虚拟机开机

# virsh start oeltest01

韦德国际1946官网 3

二、KVM的安装

(1)安装之前要查看CPU是否支持虚拟化,以下命令有输出就代表支持虚拟化;

          如果确定cpu可以支持虚拟化,但以上命令没有输出结果,就进入bash加载虚拟化

1 Intel  CPU:
2 [root@localhost ~ ]# cat /proc/cpuinfo | grep vmx
3 AMD  CPU:
4 [root@localhost ~ ]# cat /proc/cpuinfo | grep smv
5 [root@localhost ~ ]# modprobe kvm      #加载kvm模块

(2)安装方法

方法一:在安装系统的时候,选择桌面安装,然后选择虚拟化选项

韦德国际1946官网 4

韦德国际1946官网 5

方法二:在已有系统基础上,安装KVM所需软件。

必安包:

qemu-kvm.x86_64  //KVM模块
qemu-img.x86_64  //qemu组件,创建磁盘、启动虚拟机等

可选工具包:

yum -y groupinstall "Desktop"   //安装GNOME桌面环境
virt-manager  //图形界面管理虚拟机工具
libvirt  //图形化虚拟机管理工具
python-virtinst.noarch  //python组件,记录创建VM时的xml文件
bridge-util.x86.64  //网络支持工具,桥接功能模块
libguestfs-tools     //文件管理工具
acpid                //virsh命令依赖的服务,需要开机启动的,他是一个服务,不是工具包

(3)验证安装结果

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

(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/

3. KVM虚拟机关机或断电

(1) 关机

默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。

# chkconfig acpid on   
# service acpid restart

virsh关机

# virsh shutdown oeltest01

韦德国际1946官网 6

(2) 强制关闭电源

# virsh destroy wintest01

韦德国际1946官网 7

三、KVM网络

1、KVM虚拟机网络介绍

在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认是NAT

(1)NAT模式:即用户模式,可以访问外网,但是无法从外部访问虚拟机网络。

(2)Bridge模式:即桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络

                                 外部的机器可以直接访问到虚拟机内部,但需要网卡支持

                                 一般有线网卡都支持,另外需要编辑网卡参数文件以支持桥接。

韦德国际1946官网 8

如图所示,两台虚拟机的网卡对应着宿主机的两个虚拟网卡,他们会以一个叫br0的网桥连接

虚拟机网卡和网桥连接后,就可以获得设置和宿主机一个网段的IP地址的权限

因此就可以通过宿主机的网络访问外网。

2、设置KVM桥接网络

1 [root@localhost network-scripts]# cat ifcfg-eth0
2 DEVICE=eth0
3 HWADDR=00:0C:29:A6:73:18
4 TYPE=Ethernet
5 UUID=ea80305d-532a-4c31-883f-d9797e279e29
6 ONBOOT=yes
7 NM_CONTROLLED=no   #关闭network manager对网卡的控制
8 BOOTPROTO=none      #不需要给物理机设置ip地址
9 BRIDGE="br0"             #设置eth0网卡支持网桥

1 [root@localhost network-scripts]# vi ifcfg-br0
2 添加:
3 DEVICE=br0
4 TYPE=Bridge
5 ONBOOT=yes
6 NM_CONTROLLED=no
7 BOOTPROTO=none
8 IPADDR=192.168.1.10
9 NETMASK=255.255.255.0

1 [root@localhost ~]# /etc/init.d/NetworkManager stop  #关掉网卡守护进程
2 [root@localhost ~]# service network restart

autostart目录是配置kvm虚拟机开机自启动目录。  

4. 通过配置文件启动虚拟机

# virsh create /etc/libvirt/qemu/wintest01.xml

韦德国际1946官网 9

四、管理虚拟机

创建虚拟机有两种方法,一种基于命令行,一种基于图形化界面。

1、图形化界面管理

virt-manager是基于libvirt的图像化虚拟机管理软件,不同版本的virt-manager的界面和操作方法可能不同

他是创建KVM虚拟机的最简单的方法。用这种方法必须基于之前我们安装的软件包

virt-manager和libvirt,这里不做过多阐述。

创建虚拟机的步骤大致如下:

  (1)创建存储池并创建存储卷,所谓存储池其实就是一个文件夹,存储卷就是kvm虚拟机的实体镜像

  (2)创建镜像存储池,用于存放操作系统镜像,镜像存储池就是放操作系统镜像的文件夹

  (3)创建虚拟机,并设置相应参数

  (4)可把时钟偏移改为“localtime”

  (5)可设置主机引导时启动虚拟机

  (6)可设置通过VNC远程管理,keymap选项设为Copy local keymap

2、命令行式创建虚拟机

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

[root@localhost ~]# virt-install --name=benet --ram=2048 --vcpus=1 --file=/var/lib/libvirtnet.img --file-size=30 --location=/tmp/rhel6.5.iso --force &

3、KVM命令集

想使用virsh命令必须开启acpid服务

yum -y install acpid
/etc/init.d/acpid start
chkconfig acpid on

虚拟机重要的两个文件目录

/etc/libvirt/qemu/           //虚拟机配置文件目录
/var/lib/libvirt   //虚拟机磁盘文件目录

  

修改虚拟机的配置

vim /etc/libvirt/qemu/benet.xml  //修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)
virsh edit benet                            //通过virsh命令修改虚拟机配置信息

基本命令

 1 virsh -h                   //查看命令帮助 
 2 virsh list                 //查看正在运行的虚拟机 
 3 virsh list --all           //查看所有虚拟机 
 4 virsh create /etc/libvirt/qemu/benet.xml  //通过配置文件启动虚拟机系统实例 
 5 virsh start benet          //启动,需要确认acpid服务安装并运行 
 6 virsh shutdown benet       //关机,需要确认acpid服务安装并运行 
 7 virsh destroy benet        //强制关机 
 8 virsh autostart benet      //随宿主机自动启动,此命令将创建/etc/libvirt/qemu/autostart/目录
                                          //目录内容为开机自动启动的系统。
 9 virsh suspend benet        //挂起
 10 virsh resume benet         //恢复
 11 virsh dumpxml benet > /etc/libvirt/qemu/benet2.xml   //导出虚拟机配置
 12 virsh undefine benet       //删除虚拟机,会发现配置文件被清除,但是磁盘文件不会被删除
 13 mv /etc/libvirt/qemu/benet2.xml/  /etc/libvirt/qemu/benet.xml    //把备份的配置文件改回去,以便重新定义虚拟机
 14 virsh define benet.xml     //重新定义虚拟机(因为磁盘文件没有被删除)

4、KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件、例如,当系统因为配置问题无法启动时,可以直接修改

虚拟机的文件。虚拟机磁盘文件有raw与qcow2格式,qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用

格式。KVM虚拟机默认使用raw格式,raw格式性能最好,速度最快,其缺点是不支持一些新的功能

如镜像,Zlib磁盘压缩、AES加密等,另外raw格式文件比qcow2格式文件大很多,将近15倍吧。

文件管理需要专门的工具才能完成,不同格式的磁盘有不同的文件管理工具

本地yum安装libguestfs-tools后产生的命令行工具(这个工具可以直接读取qcow2格式的磁盘文件

因此需要将raw格式的磁盘文件转换成qcow2格式)

转换磁盘格式方法:

1 qemu-img info /var/lib/libvirtnet.img   # 查看当前磁盘格式
2 virsh shutdown benet
3 qemu-img convert -f raw -O qcow2 /var/lib/libvirtnet.img  /var/lib/libvirtnet.qcow2 
#转换磁盘文件格式,转化后多了一个新的qcow2文件,注意是新增了
4 virsh edit benet   #修改benet的xml配置文件
5 ……//省略部分内容
6   <disk type='file'   device='disk'>
7     <driver  name='qemu'  type='qcow2'   chche='none'/>

8     <source file='/var/lib/libvirtnet.qcow2'/>

其他用法如下:

1 ~]# virt-cat -a  /var/lib/libvirtnet.qcow
2   /etc/sysconfig/network #查看命令,用法与cat命令类似,格式为:virt-cat 磁盘镜像路径 文件绝对路径
(最后要看的就是这个network文件)2 NETWORKING=yes
3 HOSTNAME=benet
4 ~]# virt-edit -a  /var/lib/libvirtnet.qcow2  /etc/resolv.conf   #与vim用法基本一致
5 nameserver  8.8.8.8
6 ~]# virt-df  -h  benet   #用于查看虚拟机磁盘信息
7 Filesystem              Size        Used        Available      Use%
8 benet:/dev/sda1           484M         32M          427M               7%
9 benet:/dev/VolGroup/lv_root        7.4G             1.6G                5.4G             5.4G               22%

5、克隆与快照

1 [root@localhost ~]# virt-clone -o benet -n benet2 -f /var/lib/libvirtnet2.img      //虚拟机克隆
2 [root@localhost ~]# virsh snapshot-create benet       //创建新快照
3 Domain snapshot 1382572463 created
4 [root@localhost ~]# virsh snapshot-delete benet 1382572463    //删除快照
5 Domain snapshot 1382572463 deleted
6 [root@localhost ~]# virsh snapshot-revert benet 1382572463  //恢复虚拟机状态
7 [root@localhost ~]# virsh snapshot-current benet            //查看快照版本号
8 [root@localhost ~]# virsh snapshot-list benet               //查看快照信息

(2) virsh命令帮助

5. 配置开机自启动虚拟机

# virsh autostart oeltest01

韦德国际1946官网 10

autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。

# virsh -help

6. 导出KVM虚拟机配置文件

# virsh dumpxml wintest01 > /etc/libvirt/qemu/wintest02.xml 

韦德国际1946官网 11

KVM虚拟机配置文件可以通过这种方式进行备份。

或直接virsh命令和,再执行子命令。如下所示。

7. 添加与删除KVM虚拟机

(1)  删除kvm虚拟机

# virsh undefine wintest01 

说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。如下图所示。

韦德国际1946官网 12

(2)  重新定义虚拟机配置文件

通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。

# mv /etc/libvirt/qemu/wintest02.xml /etc/libvirt/qemu/wintest01.xml 

# virsh define /etc/libvirt/qemu/wintest01.xml 

韦德国际1946官网 13

[root@node1 ~]# virsh  

8. 编辑KVM虚拟机配置文件

# virsh edit wintest01 

virsh edit将调用vi命令编辑/etc/libvirt/qemu/wintest01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。

可以但不建议直接通过vi编辑。

韦德国际1946官网 14

[root@node1 qemu]# vi /etc/libvirt/qemu/wintest01.xml 

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
69
70
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit wintest01
or other application using the libvirt API.
-->
<domain type='kvm'>
<name>wintest01</name>
<uuid>fe31ea48-7d6a-f3cb-cede-2f9bd9dec2bd</uuid>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='rhel6.4.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/data/wintest01.img'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:2b:2f:fe'/>
<source bridge='br0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5911' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
<seclabel type='none'/>
</domain>

 

欢迎使用 virsh,虚拟化的交互式终端。

9. virsh console 控制台管理linux虚拟机

配置virsh console见下文

kvm虚拟化学习笔记(六)之kvm虚拟机控制台登录配置

# virsh console oeltest01 

 

输入:'help' 来获得命令的帮助信息  

10. 其它virsh命令

(1) 挂起服务器

# virsh suspend oeltest01 

韦德国际1946官网 15

(2) 恢复服务器

# virsh  resume oeltest01 

韦德国际1946官网 16

virsh命令丰富。可以执行各种维护任务,本文只是从维护与管理的角度例举了常用的命令,为该命令的使用提供一个思路。

'quit' 退出

virsh # help  

……

(3) 查看kvm虚拟机状态

# virsh list --all

2.  KVM虚拟机开机

# virsh start oeltest01

3. KVM虚拟机关机或断电

(1) 关机

默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。

# chkconfig acpid on  
# service acpid restart

virsh关机

# virsh shutdown oeltest01

(2) 强制关闭电源

# virsh destroy wintest01

4. 通过配置文件启动虚拟机 # virsh create /etc/libvirt/qemu/wintest01.xml

5. 配置开机自启动虚拟机
# virsh autostart oeltest01

autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。

6. 导出KVM虚拟机配置文件 # virsh dumpxml wintest01 > /etc/libvirt/qemu/wintest02.xml

KVM虚拟机配置文件可以通过这种方式进行备份。

7. 添加与删除KVM虚拟机

(1)  删除kvm虚拟机
# virsh undefine wintest01

说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。如下图所示。

(2)  重新定义虚拟机配置文件

通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。
# mv /etc/libvirt/qemu/wintest02.xml /etc/libvirt/qemu/wintest01.xml
# virsh define /etc/libvirt/qemu/wintest01.xml

8. 编辑KVM虚拟机配置文件
# virsh edit wintest01

virsh edit将调用vi命令编辑/etc/libvirt/qemu/wintest01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。

可以但不建议直接通过vi编辑。

[root@node1 qemu]# vi /etc/libvirt/qemu/wintest01.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit wintest01
or other application using the libvirt API.
-->
<domain type='kvm'>
<name>wintest01</name>
<uuid>fe31ea48-7d6a-f3cb-cede-2f9bd9dec2bd</uuid>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='rhel6.4.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/data/wintest01.img'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:2b:2f:fe'/>
<source bridge='br0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5911' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
<seclabel type='none'/>
</domain>
  1. 其它virsh命令

(1) 挂起服务器
# virsh suspend oeltest01

(2) 恢复服务器
# virsh  resume oeltest01

virsh命令丰富。可以执行各种维护任务,本文只是从维护与管理的角度例举了常用的命令,为该命令的使用提供一个思路。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • centos 6.6 安装 KVM 虚拟机的方法
  • KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
  • KVM虚拟机的创建、管理与迁移介绍
  • KVM虚拟化技术之virt-manager使用及KVM虚拟化平台网络模型介绍
  • 详细介绍kvm虚拟机静态和动态迁移(图文介绍)
  • Linux KVM的QCOW2 和 ROW的详解及区别介绍
  • kvm安装和删除虚拟机的方法
  • ubuntu kylin虚拟机中安装KVM
  • kvm虚拟机的创建与克隆操作方法
  • kvm中使用console命令记录的方法
TAG标签: 韦德娱乐1946
版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于韦德国际1946官网,转载请注明出处:kvm虚拟化学习笔记,KVM虚拟化的介绍与简单使用