创建完成虚拟机后,需要对虚拟机进行基础管理学习

virsh list #查看虚拟机列表 改命令只能查看正在运行或挂起的虚拟机

如果需要查看所有的虚拟机需要添加--all 参数

virsh start XXXX     #开启虚拟机

virsh shutdown XXX   #关闭虚拟机,这属于正常关机;

virsh destory XXX      #关闭虚拟机,非正常关机;类似于拔电源;

一个磁盘文件,一个配置文件就可以完整表示一个虚机,根据创建虚机时的命令可知,磁盘文件存放在/opt下,配置文件保存于/etc/libvirt/qemu/路径下

[root@KVM03-10 opt]# cd /etc/libvirt/qemu/
[root@KVM03-10 qemu]# ll
total 8
-rw-------. 1 root root 4229 Aug 26 11:18 centos7.3.xml         #配置文件
drwx------. 3 root root 42 Aug 26 09:58 networks
[root@KVM03-10 qemu]# cd /opt/
[root@KVM03-10 opt]# ll
total 5509500
-rw-------. 1 root root 10737418240 Aug 26 22:36 centos2.1.raw    #磁盘文件
-rw-r--r--. 1 qemu qemu 4379901952 Apr 27 20:56 CentOS-7.3-x86_64-DVD-1611.iso
[root@KVM03-10 opt]#

备份配置文件的命令    virsh dumpxml  XXX   #配置文件格式是xml,直接用该命令讲会把该命令打印到屏幕,可追加到指定文件  >> /tmp/centos7.3

<domain type='kvm'>
<name>centos7.3</name>
<uuid>a9c5fb0f-9f5f-4f0b-87ca-06f4b6dfc62c</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Broadwell-noTSX-IBRS</model>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='spec-ctrl'/>
<feature policy='require' name='ssbd'/>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/opt/centos2.1.raw'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:db:81:f8'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</memballoon>
<rng model='virtio'>
<backend model='random'>/dev/urandom</backend>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</rng>
</devices>
</domain>

通过配置文件和磁盘文件就可以实现虚机在另一处启动,这个过程就与在共享存储的情况下,虚机迁移的过程类似。换句话说,虚机迁移的时候只要保证这两个文件一致就可以实现迁移,只不过问题在与如何这两个文件的快速生效,也就关乎着虚机热迁移过程中的丢包情况。

virsh undefine XXX #首先删除某一虚拟机,然后将利用之前的虚机配置文件回复虚拟机。删除虚拟机必须在关机情况下进行,这过程与vmware workstation上虚机的工作流程类似,不允许在开机状态下对虚机进行销毁操作。

在磁盘文件中会定义该虚机的配置文件存放位置,如果位置不一致,将导致虚机恢复失败;

[root@KVM03-10 opt]# cat /tmp/centos7.3.xml | grep centos
<name>centos7.3</name>
<source file='/opt/centos2.1.raw'/>
[root@KVM03-10 opt]#

导入命令:virsh define XXX.xml

[root@KVM03-10 opt]# virsh define /tmp/centos7.3.xml
Domain centos7.3 defined from /tmp/centos7.3.xml
[root@KVM03-10 opt]#

执行undefine命令后会将/etc/libvirt/qemu/centos7.3.xml的配置文件删除,重新创建的时候又会在libvirt服务中增加对应配置文件。该文件不能手动导入,必须用命令!

[root@KVM03-10 opt]# ll /etc/libvirt/qemu/
total 8
-rw-------. 1 root root 4229 Aug 26 23:13 centos7.3.xml
drwx------. 3 root root 42 Aug 26 09:58 networks
[root@KVM03-10 opt]#

但是在很多情况下,导入的虚机可能会存在存放路径不一致、配置文件名称更改、磁盘文件移动位置等情况,如我把磁盘文件名称修改为centos.raw,重新导入就会报错。

[root@KVM03-10 opt]# mv centos2.1.raw centos.raw
[root@KVM03-10 opt]# ll
total 5509500
-rw-r--r--. 1 qemu qemu 4379901952 Apr 27 20:56 CentOS-7.3-x86_64-DVD-1611.iso
-rw-------. 1 root root 10737418240 Aug 26 22:36 centos.raw
[root@KVM03-10 opt]# virsh list --all
Id Name State
----------------------------------------------------
- centos7.3 shut off
[root@KVM03-10 opt]# virsh undefine centos7.3
Domain centos7.3 has been undefined
[root@KVM03-10 opt]# virsh list --all
Id Name State
----------------------------------------------------
[root@KVM03-10 opt]# cat /tmp/centos7.3.xml | grep centos
<name>centos7.3</name>
<source file='/opt/centos2.1.raw'/>
[root@KVM03-10 opt]# ll -h
total 5.3G
-rw-r--r--. 1 qemu qemu 4.1G Apr 27 20:56 CentOS-7.3-x86_64-DVD-1611.iso
-rw-------. 1 root root 10G Aug 26 22:36 centos.raw
[root@KVM03-10 opt]# virsh define centos7.3
error: Failed to open file 'centos7.3': No such file
or directory
[root@KVM03-10 opt]#

这个时候的修复方法有两种:

第一种:因为知道该虚机的配置文件在哪,/etc/libvirt/qemu/centos7.3.xml,所以可以通过将通过vim 的形式直接去修改配置文件

[root@KVM03-10 opt]# vi /etc/libvirt/qemu/centos7.3.xml
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/opt/centos2.1.raw'/>
……………………

第二种:通过virsh edit XXX命令修改。推荐使用该方法,该命令自带检查buff,

[root@KVM03-10 opt]# virsh edit centos7.3
error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Element domain failed to validate attributes Failed. Try again? [y,n,i,f,?]: #yes no ignore force help

没事学些KVM(三)虚拟机基础管理的更多相关文章

  1. 没事学学KVM(四)虚拟机基础管理

    上次学完虚机的创建.开关机.备份配置文件等,今天学学其他几个常用的虚机管理命令: 1.重命名  方法一:virsh domrename old-name new-name virsh # list I ...

  2. 没事学学KVM(五)虚拟机基础管理

    1.今天学习一下KVM的开机自启功能.开机启动,即随宿主机启动而启动 virsh autostart vm-name 开机自启的前提是libvirt功能也是开机启动的:systemctl enable ...

  3. [ kvm ] 三种基础网络模型创建及分析

    1. 前言 最近在模拟生产环境在做测试,本来准备用 vmware 直接来实现的,本着学以致用的道理,选择直接在linux 环境使用 kvm 来模拟测试,遇到的第一个问题就是,网络环境的模拟.这里对比v ...

  4. KVM+VNC 虚拟机远程管理

    1.安装kvm grep -E -o 'vmx|svm' /proc/cpuinfo #检查服务器是否支持虚拟化(vmx为interl平台.svm是AMD平台) #安装KVM所需软件包: yum gr ...

  5. 从零开始学Java (三)基础语法

    1. 基本数据类型 整数类型:byte,short,int,long 浮点数类型:float,double 字符类型:char 布尔类型:boolean java最小单位是bit,一个byte占用8个 ...

  6. Linux下KVM虚拟机基本管理及常用命令(转)

    说明:可能有重复 一.KVM的基本管理 1.查看KVM虚拟机配置文件 #Kvm虚拟机默认配置文件位置 [root@kvm qemu]# pwd /etc/libvirt/qemu [root@kvm ...

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

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  8. (三)java虚拟机内存管理和线程独占区和线程共享区

    一.内存管理 二.线程独占区之程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节 ...

  9. kvm虚拟机日常管理和配置操作命令梳理

    KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理.1)查看KVM虚拟机配置文件及运行状态KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/autostart目录是配置kvm ...

随机推荐

  1. Java Web学习(八)RESTful设计

    一.RESTful设计风格 REST :指的是一组架构约束条件和原则. RESTful :满足这些约束条件和原则的应用程序或设计就是 . REST 原则 客户端和服务器之间的交互在请求之间是无状态的. ...

  2. vulnhub-Os-hackNos-2

    vulnhub-Os-hackNos-2 开局扫主机,发现141是存活的,进行nmap扫描,获取端口信息. 发现22,80端口开放,进行目录爆破. 发现tsweb,浏览器访问,推测是wordpress ...

  3. CBC字节翻转攻击

    iscc2018线上赛开始两周多了,学到了很多,写几篇文章总结一下遇到的知识点,做一个归纳,方便以后查找. web300-----CBC字节翻转攻击 cbc是AES加密的cbc模式 即密码分组链模式: ...

  4. DVWA从注入到GETSHELL

    好好过你的生活,不要老是忙着告诉别人你在干嘛. 最近在复习学过的东西,自己就重新搭了个dvwa来学习新思路,写一些简单的脚本来练习写代码的能力. 众所周知SQL注入的危害是相当大的,对于每个老司机来说 ...

  5. Cesium系统学习整理(一)

    (一)Cesium的概念定义 Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎.Cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区域,并提供良好的 ...

  6. 基于mockito做有效的单元测试

    概述 本文讲解的主要是有效和单元的思想,并不是说如何编写单元测试,用于改善和提高开发效率.编码风格.编码可读性和单测效率,不盲目追求覆盖率. 背景 现在很多单元测试只是利用@Test注解把代码或者整个 ...

  7. APPCNA 指纹验证登录

    今天在APP中集成了指纹与手势登录功能,本文章分两部分进行记录.一是手势功能的逻辑.二是代码实现.该APP是采用APPCAN开发,直接用其已写好的插件,调用相当接口就要可以了. 1.在APP的个人中心 ...

  8. 2020 Java开发者数据分析:中国已成为 Java 第一大国

    最近知名开发工具供应商Jetbrains在Java 25周年之际,对开发群体做了一次有意思的数据分析. 全文内容可见:https://blog.jetbrains.com/idea/2020/09/a ...

  9. Java 多线程并发编程

    导读 创作不易,禁止转载! 并发编程简介 发展历程 早起计算机,从头到尾执行一个程序,这样就严重造成资源的浪费.然后操作系统就出现了,计算机能运行多个程序,不同的程序在不同的单独的进程中运行,一个进程 ...

  10. Nuget管理自己的项目库

    Nuget是什么 Nuget 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加.更新和删除库(部署为程序包)的操作.(官方地址)相信大家对这个应该还是 ...