7

KVM虚拟化学习三——virt管理KVM虚拟机 | CHEGVA

 2 years ago
source link: https://chegva.com/1240.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

KVM虚拟化学习三——virt管理kvm虚拟机

2016年10月4日 by anzhihe·0评论 · 2,359 人阅读 · 隐藏边栏 · 最后更新: 2016/10/5

1.libvirt相关知识

  1. libvirt是一个虚拟化统一接口管理工具,openstack及很多虚拟化平台都采用libvirt来管理虚拟机

  2. libvirt宕了,虚拟机仍然能运行,只是管理不了它了

  3. 虚拟机配置是靠libvirt的xml文件来定义的,xml文件是自动生成的,不能手动编辑,只能通过virsh edit命令来编辑

  • 虚拟机配置文件解析

[root@linux-node4 qemu]# virsh edit CentOS-7.2-x86_64    #编辑虚拟机配置
<domain type='kvm'>                                      #类型KVM
 <name>CentOS-7.2-x86_64</name>                         #虚拟机名称    
 <uuid>f7c3d6d4-c54e-4069-b76a-0a2c4253544a</uuid>      #默认生成的uuid
 <memory unit='KiB'>1048576</memory>                    #虚拟机设置的最大内存
 <currentMemory unit='KiB'>1048576</currentMemory>      #虚拟机当前内存
 <vcpu placement='static'>1</vcpu>                      #默认CPU为1
<os>
   <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>        #hvm代表这是硬件虚拟机
   <boot dev='hd'/>                                     #启动设备为硬盘
</os>
<disk type='file' device='disk'>
     <driver name='qemu' type='raw'/>                   #磁盘类型
     <source file='/opt/CentOS-7.2-x86_64.raw'/>        #磁盘位置
     <target dev='vda' bus='virtio'/>                   #磁盘名称vda,使用的virtio半虚拟化驱动
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
   </disk>
  <interface type='network'>                            #默认的是net网络
     <mac address='52:54:00:50:9e:0e'/>
     <source network='default'/>
     <model type='virtio'/>                             #模型
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
   </interface>
<memballoon model='virtio'>                             #内存扩展
     <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
   </memballoon>

2.virsh常用命令

[root@linux-node4 ~]# virsh list --all                  #列出虚拟机列表状态
Id    Name                           State
----------------------------------------------------
4     CentOS-7.2-x86_64              running
[root@linux-node4 ~]# virsh edit CentOS-7.2-x86_64      #编辑虚拟机配置文件
[root@linux-node4 ~]# virsh dumpxml CentOS-7.2-x86_64 > CentOS-7.2-x86_64.bak_$(date +%F).xml
#dumpxml : domain information in XML 导出虚拟机的配置
[root@linux-node4 ~]# ls
anaconda-ks.cfg  CentOS-7.2-x86_64.bak_2016-10-04.xml  ks-pre.log
[root@linux-node4 ~]# virsh define CentOS-7.2-x86_64.bak_2016-10-04.xml  #恢复虚拟机,但是如果连虚拟机硬盘也删了,那就回天乏术啦
[root@linux-node4 ~]# virsh start CentOS-7.2-x86_64     #启动虚拟机
[root@linux-node4 ~]# virsh shutdown CentOS-7.2-x86_64  #关闭虚拟机
[root@linux-node4 ~]# virsh reboot CentOS-7.2-x86_64    #重启虚拟机
[root@linux-node4 ~]# virsh undefine CentOS-7.2-x86_64  #删除虚拟机(慎用啊!赶快忘记这条命令吧,destroy(强行关机威力略差一点))
[root@linux-node4 ~]# virsh suspend CentOS-7.2-x86_64   #挂起虚拟机
Domain CentOS-7.2-x86_64 suspended
[root@linux-node4 ~]# virsh resume CentOS-7.2-x86_64    #恢复虚拟机
Domain CentOS-7.2-x86_64 resumed

3.virsh快照管理

[root@linux-node4 ~]# virsh shutdown CentOS-7.2-x86_64    #要开启快照功能先关闭虚机,把镜像转为qcow2格式
Domain CentOS-7.2-x86_64 is being shutdown
[root@linux-node4 opt]# qemu-img convert -f raw CentOS-7.2-x86_64.raw -O qcow2 CentOS-7.2-x86_64.qcow2    #raw转为qcow2
[root@linux-node4 opt]# virsh edit CentOS-7.2-x86_64
 <disk type='file' device='disk'>
     <driver name='qemu' type='qcow2'/>                   #将磁盘格式从raw改为qcow2
     <source file='/opt/CentOS-7.2-x86_64.qcow2'/>        #改成qcow2镜像的路径
     <target dev='vda' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
   </disk>

[root@linux-node4 ~]# virsh help snapshot        #快照帮助命令
Snapshot (help keyword 'snapshot'):
   snapshot-create                Create a snapshot from XML
   snapshot-create-as             Create a snapshot from a set of args
   snapshot-current               Get or set the current snapshot
   snapshot-delete                Delete a domain snapshot
   snapshot-dumpxml               Dump XML for a domain snapshot
   snapshot-edit                  edit XML for a snapshot
   snapshot-info                  snapshot information
   snapshot-list                  List snapshots for a domain
   snapshot-parent                Get the name of the parent of a snapshot
   snapshot-revert                Revert a domain to a snapshot    
[root@linux-node4 opt]# virsh snapshot-create-as CentOS-7.2-x86_64 snap1     #创建3个快照snap1,snap2,snap3
[root@linux-node4 snapshot]# virsh snapshot-create-as --domain CentOS-7.2-x86_64 --name snap2 --description "test kvm snap"
[root@linux-node4 snapshot]# virsh snapshot-create-as CentOS-7.2-x86_64 snap3    
[root@linux-node4 snapshot]# virsh snapshot-list CentOS-7.2-x86_64           #查看快照列表
Name                 Creation Time             State
------------------------------------------------------------
snap1                2016-10-05 09:26:15 +0800 running
snap2                2016-10-05 09:39:05 +0800 running
snap3                2016-10-05 09:57:00 +0800 running
[root@linux-node4 snapshot]# virsh snapshot-current CentOS-7.2-x86_64        #查看当前快照配置
[root@linux-node4 snapshot]# virsh snapshot-info CentOS-7.2-x86_64 snap1     #查看指定快照信息
Name:           snap1
Domain:         CentOS-7.2-x86_64
Current:        yes
State:          running
Location:       internal
Parent:         -
Children:       1
Descendants:    1
Metadata:       yes
#快照目录:/var/lib/libvirt/qemu/snapshot/
[root@linux-node4 qemu]# tree /var/lib/libvirt/qemu/snapshot/
/var/lib/libvirt/qemu/snapshot/
└── CentOS-7.2-x86_64
   ├── snap1.xml
   ├── snap2.xml
   └── snap3.xml
[root@linux-node4 ~]# virsh snapshot-revert CentOS-7.2-x86_64 snap1        #还原到快照1
[root@linux-node4 ~]# virsh snapshot-info CentOS-7.2-x86_64 snap1
Name:           snap1
Domain:         CentOS-7.2-x86_64
Current:        yes                                                        #状态为yes
State:          running
Location:       internal
Parent:         -
Children:       2
Descendants:    2
Metadata:       yes
[root@linux-node4 ~]# virsh snapshot-delete CentOS-7.2-x86_64 snap2        #删除快照2
Domain snapshot snap2 deleted
[root@linux-node4 ~]# virsh snapshot-list CentOS-7.2-x86_64
Name                 Creation Time             State
------------------------------------------------------------
snap1                2016-10-05 09:26:15 +0800 running
snap3                2016-10-05 09:57:00 +0800 running

[root@linux-node4 ~]# virsh snapshot-delete CentOS-7.2-x86_64 snap1        #删除快照1
Domain snapshot snap1 deleted
[root@linux-node4 ~]# virsh snapshot-info CentOS-7.2-x86_64 snap1          #快照已经被删除
error: Domain snapshot not found: no domain snapshot with matching name 'snap1'

● 注意事项

     使用 qemu-img 创建快照、还原快照时,一定要在关机状态下,否则会搞崩虚拟机

参考:http://www.178linux.com/11256

安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/1240.html | ☆★★每天进步一点点,加油!★★☆ | 

Recommend

  • 47
    • down.51cto.com 7 years ago
    • Cache

    部署KVM虚拟化平台

    今天这一章内容是利用linux内核的一个模块kvm,并使用一些辅助工具来搭建虚拟机,完成和esxi类似的操作,实现linux虚拟化。KVM直接整合到了linux内核,因此在性能、安全性、兼容性、稳定性上都有好的表现。我们都知道,使用虚..

  • 14
    • abcdxyzk.github.io 4 years ago
    • Cache

    KVM源代码分析4:内存虚拟化

    KVM源代码分析4:内存虚拟化 2015-07-29 14:49:00 http://www.oenhan.com/kvm-src-4-mem 在虚拟机的创建与运行中pc_init_pci负责在qemu中初始化虚拟机,内...

  • 12
    • abcdxyzk.github.io 4 years ago
    • Cache

    KVM源代码分析3:CPU虚拟化

    KVM源代码分析3:CPU虚拟化 2015-07-29 14:48:00 http://www.oenhan.com/kvm-src-3-cpu 在虚拟机的创建与运行章节里面笼统的介绍了KVM在qemu中的创建和运...

  • 7

    QEMU/KVM 虚拟化QEMU/KVM 是目前最流行的虚拟化技术,它基于 Linux 内核提供的 kvm 模块,结构精简,性能损失小,而且开源免费(对比收费的 vmware),因此成了大部分企业的首选虚拟化方案。目前各大云厂商的虚拟化方案,新的服务器实例基本都...

  • 9

    KVM 虚拟化环境搭建 – WebVirtMgr 前文《KVM 虚拟化环境搭建 – ProxmoxVE》已经给大家介绍了开箱即用的 PVE 系统,PVE 是方便,但还是有几点问题: 第一:始终是商用软件,...

  • 9

    KVM 虚拟化环境搭建 – ProxmoxVE 送大家一套完全开源免费的 VmWare / vSphere 的代替方案,代价是稍微动一下手,收获是你再也不需要任何商用付费的虚拟机软件了。KVM 整套解决方案一般分三层: KVM:内核级别的虚拟化功能,...

  • 6
    • www.eryajf.net 3 years ago
    • Cache

    KVM虚拟化web化管理工具–Jimv

    本文预计阅读时间 9 分钟 1,前言简介 这应该是一个非常不错的内网虚拟化工具,我们日常工作中使用kvm进行服务器虚拟化的应该很多很多,它的开源(免费)以及各种附加功能对于针对虚拟机这个粒度的管理来说,基本上已经完全够用。 ...

  • 5

    OpenStack实战十一——虚拟机管理及元数据meta-date配置1. 计算节点虚拟机管理1.1 使用kvm进程管理虚拟机[root@linux-node2 ~]# ps aux|grep kvm1.2 本地监听vnc[root@linux-node2 ~]# netstat -tunpl | egrep ...

  • 8

    43-KVM虚拟化-利用libvirt服务进行KVM虚拟机管理_懒喵逼逼叨的技术博客_51CTO博客半虚拟化驱动virtio的工作原理为了提高内存、硬盘、网络的性能,需要支持半虚拟化

  • 6

    44-KVM虚拟化-存储管理和磁盘扩容 精选 原创 mooreyxia 2023-01-01 21:09:37

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK