在上一章节中,我们拉起了第一台虚拟机,但是执行virsh shutdown 关机是无法关机的,需要使用virsh destroy 强制断电的命令来关机。为什么会这样了?

这里我们介绍下 QGA的概念 ,通过 QGA 的引入我们来熟悉下 virsh 命令。

1 什么是 QGA ?

  • QEMU Guest Agent 是运行在虚拟机内部的一个守护程序(qemu-guest-agent),用它来辅助Hypervisor实现对Guest 虚拟机的管理。

  • QEMU 为宿主机和虚拟机提供了一个数据通道(channel),这个通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix socket文件。

  • 宿主机与虚拟机内的 qga 通讯就扩展了对虚拟机的控制能力,例如在宿主机上获取虚拟机的 ip 地址等。

  • libvrit 提供了专门的 virDomainQemuAgentCommand API(对应 virsh qemu-agent-command 命令)来和 qemu-guest-agent 通讯,另外 libvirt 内置 api 也可以支持 qga,例如 reboot、shutdown 等。

一句话总结: QGA 是一个守护进程,连通虚拟机的串口和物理机的 unix socket 的两头。

默认镜像已经配置 channel,我们通过命令 来验证一下已经配置了 channel

virsh dumpxml test

如果虚拟机没有咋办

如下步骤来添加既可 。

  1. 通过 virsh edit 来编辑 xml 文件
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.0'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
  1. 重启虚拟机
virsh destroy test
virsh start test
  1. Linux 虚拟机安装 qemu-guest-agent
yum install qemu-guest-agent
setenforce 0
systemctl restart qemu-guest-agent.service && systemctl enable qemu-guest-agent.service
  1. 宿主机安装 qemu-guest-agent
yum install qemu-guest-agent
  1. 验证部分
#1 关机
virsh shutdown

查看虚拟机对应的网络的 IP 地址

修改虚拟机密码

virsh set-user-password domain --user 用户 --password 密码
virsh set-user-password test --user root --password 123456

2 kvm 虚拟机批量复制

第一台虚拟机已经通过光盘安装好了系统,能否将虚拟机做为一个模块,之后的虚拟机以该虚拟机为模板来批量复制了?

virt-clone 命令将实现你的需求。

1 转换raw 格式为qcow2 格式
qemu-img convert -f raw -O qcow2 kvm001.raw test.qcow2 2 克隆虚拟机
#克隆之前需要先关机 virsh shutdown test
virt-clone –o 原虚拟机 –n 新虚拟机 –f 新虚拟机存放的路径
virt-clone -o test -n test2 -f test2.qcow2

修复 virsh console 登录失败问题咋办

  1. 通过 vnc 登录虚拟机 test2

  2. 修改 /etc/default/grub 文件中

  3. 重新生成 grub 文件 grub2-mkconfig -o /boot/grub2/grub.cfg

  4. reboot 重启后就ok了.

virsh console 登录了

virsh console test2 #登录虚拟机,修复完成console 等问题后,我们以该虚拟机做为模板文件,以后的虚拟机都按这个模块来生成 。

# 克隆虚拟机
virt-clone -o test2 -n template-vm -f template-vm.qcow2 #启动虚拟机验证
virsh start template-vm [root@192-168-48-11 images]# virsh list
Id Name State
----------------------------------------------------
6 template-vm running #修改虚拟机IP为 192.168.122.12/24
#重启网络
systemctl restart network #拉起原先的test 虚拟机
virsh start test #ssh 登录test
#ssh 192.168.122.11 来测试连通 192.168.122.12

现在我们查看所有的虚拟机

test2 和 test02 我们都不想要了,怎么删除了?

1 删除虚拟机定义

virsh undefine test02
virsh undefine test2

2 删除虚拟机的磁盘文件,本环境的路径在

[root@192-168-48-11 images]# pwd
/data/images [root@192-168-48-11 images]# ls
kvm001.raw template-vm.qcow2 test2.qcow2 test.qcow2 #删除文件
rm -rf test.qcow2 test2.qcow2

命令总结:

1 查看虚拟机xml文件
virsh dumpxml 2 编辑虚拟机的xml 文件
virsh edit 3 关闭虚拟机
virsh shutdown #正常关机
virsh destroy #强制断电 4 启动虚拟机
virsh start 5 删除虚拟机
virsh undefine 6 修改虚拟机密码
virsh set-user-password



每天5分钟复习OpenStack(四) virsh 常用命令的更多相关文章

  1. Linux的桌面虚拟化技术KVM(五)——virsh常用命令

    Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 Linux的桌面虚 ...

  2. CMake学习笔记四-CMake常用命令

    CMake常用命令 PROJECT PROJECT(projectname [CXX] [C] [Java]) 指定工程名称,并可指定工程支持的语言.支持语言列表可忽略,默认支持所有语言 SET ...

  3. Docker从入门到精通(四)——常用命令

    话不多说,本篇文章给大家介绍 docker 的常用命令,基本上会覆盖我们日常使用的命令. 1.万能帮助命令 docker 命令 --help 假设你想用某个命令,但是又不知道该命令的一些参数怎么用,这 ...

  4. openstack环境搭建常用命令

    1,编辑/etc/selinux/config文件,关闭selinux SELINUX=disabled 2,清空iptables规则并保存 # iptables -F # service iptab ...

  5. Docker容器(四)——常用命令

    (1).基本使用方法 查看所有镜像.docker images [root@youxi1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ...

  6. virsh常用命令

    必须启动libvirtd,才能用virsh查看kvm后台. # systemctl start libvirtd 查看网络 # virsh net-list 启动default网络 # virsh n ...

  7. 虚拟化之KVM virsh常用命令篇

    1,查看运行的虚拟机 virsh list 2,查看所有的虚拟机(关闭和运行的虚拟机) virsh list --all 3,连接虚拟机 virsh console +域名(虚拟机的名称) 4,退出虚 ...

  8. KVM virsh常用命令篇

    1.查看运行的虚拟机 virsh list 2.查看所有的虚拟机(关闭和运行的虚拟机) virsh list --all 3.连接虚拟机 virsh console +域名(虚拟机的名称) 4.退出虚 ...

  9. 四 linuk常用命令 1. 文件处理命令

    一. 命令格式与目录处理命令ls 命令格式 命令格式:命令 [-选项] [参数] 例:ls -la /etc 说明: 1.个别命令使用不遵循此格式 2. 当有多个选项时,可以写在一起 3.简化选项与完 ...

  10. Linux学习(四)-Linux常用命令

    1.运行级别类 1.1运行级别说明: 0:关机 1:单用户[可用于找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级 ...

随机推荐

  1. ThinkPHP6.0 链式SQL语句

    ThinkPHP6.0 链式SQL语句 查询单个数据 $user = Db::query('select * from `user`'); $user=Db::table('user')->wh ...

  2. JVM之指针压缩

    做java开发的同学一般都比较熟悉JVM,那么关于指针压缩这块内容是不是也了解呢,不熟悉的小伙伴往下看吧. 首先说明,本文涉及的JDK版本是1.8,JVM虚拟机是64位的HotSpot实现为准. ja ...

  3. Spring Boot 整合组件套路

    自动配置类 Spring Boot 在整合任何一个组件的时候都会先添加一个依赖 starter,比如整合 MybatisPlus 有一个 mybatis-plus-boot-starter,如下: & ...

  4. ENVI实现QUAC、简化黑暗像元、FLAASH方法的遥感影像大气校正

    本文介绍基于ENVI软件,实现对Landsat 7遥感影像加以预处理与多种不同大气校正方法的操作. 目录 1 数据导入与辐射定标 2 波段合成 3 编辑头文件 4 转换文件格式 5 QUAC快速大气校 ...

  5. 2023ccpc大学生程序设计竞赛-zx

    这次ccpc整体来说做题做的比较卡,第一个签到都wa了,后面几道中档题全都是至少wa一次才能过,这导致我们不仅罚时增加也导致需要大量时间修改代码,还有一个G题很可惜,当时只注意到B过题多所以有点被带歪 ...

  6. 【MAUI Blazor踩坑日记】4.只在特定平台上引用包

    其实这个并不是MAUI特有的问题,只是在MAUI中可能会遇到. 例如某个包只在Windows上有用,但打包的时候,安卓.ios也会把这个包计算在内 所以需要在不是特定平台时把它排除. 万幸从微软文档找 ...

  7. 将Dubbo注册到Nacos,与DubboAdmin的部署

    王有志,一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群:共同富裕的Java人 本文是<从 0 开始学 Dubbo>系列文章中应用篇的番外篇. 在这篇文章中我会和大家一起部署 ...

  8. 好用工具:Save All Resources

    说明 该插件可以下载网页中的所有资源 使用方法

  9. 69.9K Star,最强开源内网穿透工具:frp

    作为一名开发者,有很多场景需要用到内网穿透,比如:我们在接入一些大平台做第三方应用时,在本地开发微信公众号工具的时候需要让微信平台能否访问到本地提供的接口.除此之外,还有很多其他场景,也会用到,比如: ...

  10. chrome浏览器中使用adblockplus拦截广告

    adblock plus是一款可以屏蔽广告以及任何你想屏蔽元素的软件,屏蔽之后的效果如下图所示,abp自动屏蔽广告,还可以自行添加屏蔽内容,右上角红色的ABP标识就是该软件     下载地址: htt ...