【KVM虚拟化】· virsh管理命令

news2024/11/23 7:23:19

目录

🍁libvirt架构概述

🍁使用virsh管理虚拟机

🍂常用命令总结

🍁kvm基本功能管理

🍂帮助命令

🍂KVM的配置文件存放目录

🍂查看虚拟机状态

🍂虚拟机关机与开机

🍂强制虚拟机系统关闭电源

🍂通过配置文件启动虚拟机系统

🍂挂起虚拟机

🍂恢复虚拟机

🍂设置虚拟机自启

🍂导出虚拟机配置

🍂删除和导入虚拟机

🍂修改虚拟机配置文件

🍂查看虚拟机信息

🍂连接虚拟机

🍂虚拟机克隆

🍃查看虚拟机状态

🍃克隆虚拟机

🍃查看状态并启动

🍁虚拟机快照

🍃对虚拟机拍摄快照

🍃查看快照详细信息

🍃恢复快照

🍃删除快照


   🦐博客主页:大虾好吃吗的博客

   🦐专栏地址:KVM虚拟化专栏

libvirt架构概述

        libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。

libvirtd该后台进程主要实现以下功能:

(1)远程代理所有remote client发送来的命令,由该进程监测执行

(2)本地环境初始化libvirt服务的启停,用户connection的响应等

(3)根据环境注册各种Driver(qemu, xen, storage…)的实现不同虚拟化技术以Driver的形式实现,由于libvirt对外提供的是统一的接口,所以各个Driver就是实现这些接口,即将Driver注册到libvirt中。

查看libvirtd服务状态

        如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。

[root@localhost ~]# systemctl status libvirtd

查看配置文件

        虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中

[root@localhost ~]# ll /etc/libvirt/qemu
total 8
-rw-------  1 root root 3325 Apr 20 23:29 myvm01.xml
-rw-------  1 root root 3325 Apr 20 23:30 myvm02.xml
drwx------. 3 root root   42 Apr 17 04:32 networks

可以看到创建的2个虚拟机,libvirt的xml文件分为几个重要部分,整体结构如下:

<domain type='kvm'>

虚拟机整体信息

系统信息

硬件资源特性

突发事件处理

虚拟磁盘(单个或多个)

虚拟光盘(可选)

虚拟网络(单个或多个)

vnc/spice 配置

</domain>

使用virsh管理虚拟机

        virsh是使用libvirt management API构建的管理工具,virsh的名称的含义是virtualization shell。它有两种工作模式:

立即模式

[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 3     myvm02                         running
 4     myvm01                         running

交互模式

[root@localhost ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
​
Type:  'help' for help with commands
       'quit' to quit
​
virsh # list --all
 Id    Name                           State
----------------------------------------------------
 3     myvm02                         running
 4     myvm01                         running

常用命令总结

命令描述
attach-device使用XML文件中的设备定义在虚拟机中添加设备
attach-disk在虚拟机中附加新磁盘设备
attach-interface在虚拟机中附加新网络接口
create在XML配置文件生成虚拟机并启动新虚拟机
define为虚拟机输出XML配置文件
destroy强制关闭虚拟机
detach-device从虚拟机中分离设备,使用同样的XML描述作为命令attach-device
detach-disk从虚拟机中分离磁盘设备
detach-interface从虚拟机中分离网络接口
domblkstat显示正在运行的虚拟机的块设备统计
domid显示虚拟机id
domifstat显示正在运行的虚拟机的网络接口统计
dominfo显示虚拟机信息
domname显示虚拟机名称
domstate显示虚拟机状态
domuuid显示虚拟机uuid
dumpxml输出虚拟机XML配置文件
help显示帮助命令
list列出所有虚拟机
migrate列出虚拟机迁移到两外一台主机中
nodeinfo有关管理程序的输出信息
quit退出交互终端
reboot重启虚拟机
restore恢复以前保存在文件中的虚拟机
resume恢复暂停的虚拟机
save将虚拟机当前状态保存到某个文件中
setmaxmem为管理程序设定内存上限
setmem为虚拟机设定分配的内存
setvcpus修改为虚拟机分配的虚拟cpu数量
shutdown关闭虚拟机
undefine删除与虚拟机关联的所有文件
vcpuinfo显示虚拟机的虚拟cpu信息
vcpupin控制虚拟机的虚拟cpu亲和性
version显示virsh版本
start启动未激活的虚拟机
suspend暂停虚拟机

kvm基本功能管理

为了区分主机及虚拟机,这里把主机改名为kvmserver

帮助命令

[root@kvmserver ~]# virsh -h

KVM的配置文件存放目录

[root@kvmserver ~]# ll /etc/libvirt/qemu
total 8
-rw-------  1 root root 3325 Apr 20 23:29 myvm01.xml
-rw-------  1 root root 3325 Apr 20 23:30 myvm02.xml
drwx------. 3 root root   42 Apr 17 04:32 networks

查看虚拟机状态

list只能查看启动状态下的虚拟机,加参数--all可以查看全部虚拟机,但未启动的虚拟机不会有id。

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 5     myvm01                         running
 -     myvm02                         shut off

虚拟机关机与开机

通过上面查看的虚拟机状态,这里把myvm01关闭,myvm02开启。

[root@kvmserver ~]# virsh shutdown myvm01
Domain myvm01 is being shutdown
​
[root@kvmserver ~]# virsh start myvm02
Domain myvm02 started

强制虚拟机系统关闭电源

        当虚拟机出现故障,通过上面温柔的关机方式,无法关闭时。这时你就需要用到暴力(拔电源)关机了,这种方式关机速度快,但是不推荐!!!

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     myvm02                         running
 -     myvm01                         shut off

[root@kvmserver ~]# virsh destroy myvm02
Domain myvm02 destroyed

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm01                         shut off
 -     myvm02                         shut off

通过配置文件启动虚拟机系统

启动方式不止start一种,也可以通过启动配置文件来开启虚拟机。

[root@kvmserver ~]# virsh create /etc/libvirt/qemu/myvm01.xml
Domain myvm01 created from /etc/libvirt/qemu/myvm01.xml

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 7     myvm01                         running
 -     myvm02                         shut off

挂起虚拟机

        当虚拟机暂时不使用时,可以通过挂起保存当前的状态。当查看虚拟机的状态是,可以看到虚拟机的状态为被挂起。需要注意的是,挂起时的虚拟机必须为启动状态。

[root@kvmserver ~]# virsh suspend myvm01
Domain myvm01 suspended

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 7     myvm01                         paused
 -     myvm02                         shut off

恢复虚拟机

恢复挂起状态下的主机

[root@kvmserver ~]# virsh resume myvm01
Domain myvm01 resumed

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 7     myvm01                         running
 -     myvm02                         shut off

设置虚拟机自启

        设置虚拟机随宿主机开启而开启,执行创建命令时在/etc/libvirt/qemu/autostart/目录里面创建开机自启的系统文件链接。

[root@kvmserver ~]# virsh autostart myvm01
Domain myvm01 marked as autostarted

[root@kvmserver ~]# cd /etc/libvirt/qemu/autostart/
[root@kvmserver autostart]# ls
myvm01.xml
[root@kvmserver autostart]# virsh list --autostart
 Id    Name                           State
----------------------------------------------------
 7     myvm01                         running

[root@kvmserver autostart]# virsh autostart --disable myvm01
Domain myvm01 unmarked as autostarted

[root@kvmserver autostart]# virsh list --autostart
 Id    Name                           State
----------------------------------------------------

导出虚拟机配置

下面命令是备份虚拟机myvm01,路径还是放qemu目录下。

[root@kvmserver ~]# virsh dumpxml myvm01 > /etc/libvirt/qemu/myvm01_bak.xml

删除和导入虚拟机

        删除虚拟机前需要先关闭虚拟机,让虚拟机处于关机状态。需要注意的是,上面已经备份了myvm01的虚拟机,如果没有备份,建议先备份,以便后面的导入操作。

[root@kvmserver ~]# virsh shutdown myvm01
Domain myvm01 is being shutdown

[root@kvmserver ~]# virsh undefine myvm01
Domain myvm01 has been undefined

        查看删除结果,虽然文件myvm01.xml被删除了,但是不会删除磁盘文件。通过list命令查看已经没有myvm01虚拟机了。

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm02                         shut off
 
[root@kvmserver ~]# ll /etc/libvirt/qemu
total 8
drwxr-xr-x  2 root root    6 Apr 21 05:04 autostart
-rw-r--r--  1 root root 4061 Apr 21 05:10 myvm01_bak.xml
-rw-------  1 root root 3325 Apr 20 23:30 myvm02.xml
drwx------. 3 root root   42 Apr 17 04:32 networks

通过备份的配置文件重新定义虚拟机

[root@kvmserver ~]# mv /etc/libvirt/qemu/myvm01_bak.xml /etc/libvirt/qemu/myvm01.xml
[root@kvmserver ~]# virsh define /etc/libvirt/qemu/myvm01.xml 
Domain myvm01 defined from /etc/libvirt/qemu/myvm01.xml

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm01                         shut off
 -     myvm02                         shut off

修改虚拟机配置文件

通过vim命令直接对配置文件修改
[root@kvmserver ~]# vim /etc/libvirt/qemu/myvm01.xml
通过edit命令直接对虚拟修改
[root@kvmserver ~]# virsh edit myvm01

查看虚拟机信息

[root@kvmserver ~]# virsh dominfo myvm01 
Id:             -
Name:           myvm01
UUID:           59727769-f3a3-418c-936b-8bf4191c766a
OS Type:        hvm
State:          shut off
CPU(s):         1
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

连接虚拟机

进入虚拟机后按 ctrl + ] 退出虚拟机,注意需要先启动虚拟机,等待开机完成,输入用户密码登录即可。

[root@kvmserver ~]# virsh start myvm01
Domain myvm01 started

[root@kvmserver ~]# virsh console myvm01

vm01 login: root
Password: 
Last login: Fri Apr 21 14:18:14 on ttyS0
[root@vm01 ~]# 

虚拟机克隆

查看虚拟机状态

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 8     myvm01                         running
 -     myvm02                         shut off

克隆虚拟机

克隆myvm02的虚拟机,到myvm02_clong

[root@kvmserver ~]# virt-clone -o myvm02 -n myvm02_clong -f /kvm/img/vm02_clong.qcow2 
Allocating 'vm02_clong.qcow2'                                     | 8.0 GB  00:00:12     

Clone 'myvm02_clong' created successfully.

参数:-o 需要克隆的虚拟机名称;-n 新虚拟机名称; -f 指定克隆到哪个文件目录并命名

查看状态并启动

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 8     myvm01                         running
 -     myvm02                         shut off
 -     myvm02_clong                   shut off

[root@kvmserver ~]# virsh start myvm02_clong 
Domain myvm02_clong started

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 8     myvm01                         running
 9     myvm02_clong                   running
 -     myvm02                         shut off

虚拟机快照

        快照实际上做的是虚拟机的XML配置文件,默认快照XML文件,在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。

对虚拟机拍摄快照

        拍摄快照有两种方式,第一种是随机生成名称,第二种是指定名称,最后查看虚拟机快照,生成两个虚拟机快照。

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 8     myvm01                         running
 9     myvm02_clong                   running
 -     myvm02                         shut off

[root@kvmserver ~]# virsh snapshot-create myvm01
Domain snapshot 1682069915 created
[root@kvmserver ~]# virsh snapshot-create-as myvm01 as1
Domain snapshot as1 created
[root@kvmserver ~]# virsh snapshot-list myvm01
 Name                 Creation Time             State
------------------------------------------------------------
 1682069915           2023-04-21 05:38:35 -0400 running
 as1                  2023-04-21 05:39:04 -0400 running

查看快照详细信息

[root@kvmserver ~]# virsh snapshot-current myvm01
<domainsnapshot>
  <name>as1</name>
  <state>running</state>
  <parent>
    <name>1682069915</name>
  </parent>
  <creationTime>1682069944</creationTime>
#省略部分内容

恢复快照

恢复myvm01虚拟机到快照1682069915

[root@kvmserver ~]# virsh snapshot-revert myvm01 1682069915

[root@kvmserver ~]# virsh snapshot-current myvm01 
<domainsnapshot>
  <name>1682069915</name>
  <state>running</state>
  <creationTime>1682069915</creationTime>			#虚拟机快照版本号
  <memory snapshot='internal'/>
#省略部分内容

删除快照

先查看myvm01有哪些快照,删除as1快照后查看是否删除。

[root@kvmserver ~]# virsh snapshot-list myvm01
 Name                 Creation Time             State
------------------------------------------------------------
 1682069915           2023-04-21 05:38:35 -0400 running
 as1                  2023-04-21 05:39:04 -0400 running

[root@kvmserver ~]# virsh snapshot-delete myvm01 as1
Domain snapshot as1 deleted

[root@kvmserver ~]# virsh snapshot-list myvm01
 Name                 Creation Time             State
------------------------------------------------------------
 1682069915           2023-04-21 05:38:35 -0400 running

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/490512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GUI编程(一)

1、简介 GUI的核心技术&#xff1a;Swing、 AWT 1、外观不太美观&#xff0c;组件数量偏少 2、运行需要JRE环境 为什么我们要学习&#xff1f; 组件(JTable,JList等)很多都是MVC的经典示范&#xff0c;学习也可以了解mvc架构。工作时,也有可能遇见需要维护N年前awt/swing写的…

360SEO 如何使用360分析工具来了解你的受众

随着数字化时代的到来&#xff0c;越来越多的企业和个人开始关注自己的受众&#xff0c;以便更好地满足他们的需求。在这个过程中&#xff0c;数据分析工具发挥了越来越重要的作用。其中&#xff0c;360分析工具是一种非常受欢迎的工具&#xff0c;它可以帮助你了解你的受众。 …

Linux Shell编程面试题

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE GET 向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据&#xff0c;而不应当被用于产生“副作用”的操作中&#xff0c;例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意…

分别利用seaborn和matplotlib绘制两组数据(国家统计局居民消费指数和鸢尾花数据集)的图表

一、居民消费指数 1. 数据来源 使用的数据来源网站&#xff1a;国家统计局 数据网站连接&#xff1a;https://data.stats.gov.cn/easyquery.htm?cnA01 2.下载数据 点击下载按钮&#xff1a; 注册一个国家统计局的账号&#xff0c;然后自动登录跳转到数据页&#xff0c;…

Ae:橡皮擦工具

橡皮擦工具 Eraser Tool 快捷键&#xff1a;Ctrl B 橡皮擦工具 Eraser Tool在工作原理上同 Ae 中的其它绘画工具&#xff08;画笔、仿制图章&#xff09;工具基本一致&#xff0c;都是通过绘制路径&#xff0c;然后基于此路径进行描边&#xff08;可统称为“绘画描边”&…

黑马在线教育数仓实战9

2.6 数据清洗转换操作 ​ 目的: 主要是用于从ODS以及DIM层 将数据灌入到DWM层操作 生成学生出勤状态信息表 涉及表: course_table_upload_detail: 日志课程明细表 (课表) (维度表) tbh_student_signin_record: 学生打卡记录表 (事实表) tbh_class_time_ta…

Windows下的RabbitMq安装(图文教学)

目录 前言一、安装Erlang1、下载地址&#xff1a; https://www.erlang.org/downloads2、安装3、配置环境变量4、测试安装 二、安装RabbitMq1、下载2、安装3、常用命令 参考 前言 RabbitMQ服务端代码是使用并发式语言Erlang编写的&#xff0c;安装Rabbit MQ的前提是安装Erlang …

Visual Studio Code 1.78 发布

VS Code 1.78 已发布&#xff0c;此版本一些主要亮点包括&#xff1a; 辅助功能改进 - 更好的屏幕阅读器支持、新的音频提示。新的颜色主题 - “Modern” 浅色和深色主题默认设置。 配置文件模板 - Python、Java、数据科学等的内置模板。 新版本提供了配置文件模板&#xff0…

Android网络代理原理及实现

网络代理简介 代理典型的分为三种类型&#xff1a; 正向代理 缓存服务器使用的代理机制最早是放在客户端一侧的&#xff0c;是代理的原型&#xff0c;称为正向代理。其目的之一 是缓存&#xff0c;另一目的是用来实现防火墙&#xff08;阻止互联网与公司内网之间的包&#x…

AI 工具合辑盘点(六)持续更新

AI 图像生成和编辑工具 不久前&#xff0c;艺术创作是特定群体的领域。 不再是这样了&#xff01; 今天&#xff0c;在人工智能艺术生成器的帮助下&#xff0c;任何人都可以通过编写文本提示并让人工智能创建所需的图像来成为艺术家。 &#x1f3a8;&#x1f58c; 文本到图像…

多线程 双重检查锁详解

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOC/DOCX 转换为 PDF

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理&#xff0c;并…

工业路由器误按RST复位键如何处理?RST键的作用

接触过工业路由器的朋友们都知道&#xff0c;几乎市面上的所有路由器产品都具备着一个常见但不常用的RST按键&#xff0c;它的作用是让工业路由器恢复出厂设置&#xff0c;也称为“复位键”“重置键”&#xff0c;用户可在通电情况下长按RST键10秒便会出现工业路由器指示灯全灭…

高级【IO】

目录 一.五种IO模型 &#xff08;1&#xff09;阻塞IO&#xff1a; &#xff08;2&#xff09;非阻塞IO &#xff08;3&#xff09;信号驱动IO: &#xff08;4&#xff09;IO多路转接 &#xff08;5&#xff09;异步IO 二.高级IO概念 1.同步通信、异步通信 2.阻塞、非阻…

你知道ChatGPT里面的G、P、T分别代表什么吗?

生成式AI&#xff0c; 在学习归纳数据分布的基础上&#xff0c;创造数据中不存在的新内容。可以生成文本、图片、代码、语音合成、视频和3D模型。 比尔盖茨&#xff1a;ChatGPT是1980年以来最具革命性的科技进步。 身处这个AI变革的时代&#xff0c;唯有躬身入局&#xff0c;…

vcs -libmap

1 libmap的作用 主要两个作用: 解决module名重复问题: 比如有两个IP, IP0和IP1, 它们都例化了一个叫ADD的module, 而且它们的filelist中都包含add.v. 这时会引起编译错误, 这时可以: (1) 指定IP0中的add.v编译到库lib0中, IP1中的add.v编译到库lib1中, (2) 指定IP0中的ADD使用…

超细Redis(二)

五大数据类型 官方文档&#xff1a; 翻译&#xff1a; Redis 是一个开源&#xff08;BSD 许可&#xff09;内存数据结构存储系统&#xff0c;用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构&#xff0c;例如字符串、哈希、列表、集、带有范围查询的排序集、位图、超…

MySQL: 运算符使用练习

前言&#xff1a; 练习运算符的使用&#xff0c;加强记忆。 案例目的&#xff1a; 在已建数据库中创建数据表&#xff0c;并对表中数据进行处理&#xff0c;练习运算符&#xff08;包括数据运算符、逻辑运算符、位运算符&#xff09;的使用。 操作过程&#xff1a; 创建名…

java基础入门-03-【字符串】

Java基础入门-03-【字符串】 10、字符串10.1.API10.1.1API概述10.1.2如何使用API帮助文档 10.2.String类10.2.1 String类概述10.2.2 String类的特点10.2.3 String类的构造方法10.2.4 创建字符串对象两种方式的区别10.2.5 字符串的比较10.2.5.1 号的作用10.2.5.2 equals方法的作…