使用KVM命令集管理虚拟机

1、KVM基本功能管理

1)查看命令帮助

复制代码
[root@localhost ~]# virsh -h
......//省略输出内容

2)查看KVM的配置文件存放目录(rhel7.1是虚拟机系统实例的配置文件)

复制代码
[root@localhost ~]# ls /etc/libvirt/qemu
autostart  networks  rhel7.1.xml

3)查看虚拟机状态

复制代码
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 3     rhel7.1                        running

4)虚拟机关机与开机

复制代码
[root@localhost ~]# virsh shutdown rhel7.1 
[root@localhost ~]# virsh start rhel7.1 

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 6     rhel7.1                        running

5)强制实例系统关闭电源

复制代码
[root@localhost ~]# virsh destroy rhel7.1 
域 rhel7.1 被删除

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     rhel7.1                        关闭

6)通过配置文件启动虚拟机系统实例

复制代码
[root@localhost ~]# virsh create /etc/libvirt/qemu/rhel7.1.xml 
域 rhel7.1 被创建(从 /etc/libvirt/qemu/rhel7.1.xml)

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 7     rhel7.1                        running

7)挂起虚拟机

复制代码
[root@localhost ~]# virsh suspend rhel7.1 
域 rhel7.1 被挂起

//查看虚拟机状态
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 7     rhel7.1                        暂停

8)恢复虚拟机

复制代码
[root@localhost ~]# virsh resume rhel7.1 
域 rhel7.1 被重新恢复

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 7     rhel7.1                        running

9)配置虚拟机实例伴随宿主机自动启动,会自动创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统

复制代码
[root@localhost ~]# virsh autostart rhel7.1 
域 rhel7.1标记为自动开始

10)导出虚拟机配置

复制代码
[root@localhost ~]# virsh dumpxml rhel7.1 > /etc/libvirt/qemu/rhel7.2.xml
[root@localhost ~]# ls /etc/libvirt/qemu/
autostart  networks  rhel7.1.xml  rhel7.2.xml

11)虚拟机的删除与添加

删除虚拟机:

复制代码
[root@localhost ~]# virsh shutdown rhel7.1 
域 rhel7.1 被关闭

[root@localhost ~]# virsh undefine rhel7.1 
域 rhel7.1 已经被取消定义

//查看删除结果,rhe17.1的配置文件被删除,但是磁盘文件不会被删除
[root@localhost ~]# ls /etc/libvirt/qemu/
autostart  networks  rhel7.2.xml

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------

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

复制代码
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# mv rhel7.2.xml rhel7.1.xml 
[root@localhost qemu]# virsh define rhel7.1.xml 
定义域 rhel7.1(从 rhel7.1.xml)

[root@localhost qemu]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     rhel7.1                        关闭

12)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)

直接通过vim命令修改:

复制代码
[root@localhost qemu]# vim /etc/libvirt/qemu/rhel7.1.xml 

通过virsh命令修改:

复制代码
[root@localhost qemu]# virsh edit rhel7.1 
没有更改域 rhel7.1 XML 配置。

2、KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw、qcow2与qed格式,KVM虚拟机默认使用qcow2格式。

1)查看当前磁盘格式:

复制代码
[root@localhost ~]# qemu-img info /data_kvm/store/bdqn_kvm.qcow2 
image: /data_kvm/store/bdqn_kvm.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 10G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true

如果虚拟机磁盘文件不是qcow2格式,可以通过"qemu-img"命令转换磁盘文件格式,如执行以下操作可以将test01虚拟机raw格式磁盘转换至qcow2格式。

复制代码
[root@localhost ~]# virsh shutdown rhel7.1 
域 rhel7.1 被关闭
 
[root@localhost ~]# qemu-img convert -f raw -o qcow2 /data_kvm/store/"更改的文件" /data_kvm/store/"更改的文件"

执行转换磁盘格式的命令后还需要修改配置文件中磁盘的类型与磁盘文件名

2)virt-cat命令,类似于cat命令

复制代码
[root@localhost ~]# yum -y install libguestfs-tools

[root@localhost ~]# virt-cat -a /data_kvm/store/bdqn_kvm.qcow2 /etc/sysconfig/grub 
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

3)virt-edit命令,用于编辑文件,用法与vim基本一致

复制代码
[root@localhost ~]# virt-edit -a /data_kvm/store/bdqn_kvm.qcow2 /etc/resolv.conf 
nameserver 202.96.128.86
nameserver 119.29.29.29

4)virt-df命令用于查看虚拟机磁盘信息

复制代码
[root@localhost ~]# virt-df -h rhel7.1
文件系统                            大小 已用空间 可用空间 使用百分比%
rhel7.1:/dev/sda1                         950M        79M       870M    9%
rhel7.1:/dev/sda3                         8.1G       3.2G       4.9G   40%

3、虚拟机克隆

1)查看虚拟机状态

复制代码
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     rhel7.1                        关闭

2)从rhel7.1克隆rhel7.2

复制代码
[root@localhost ~]# virt-clone -o rhel7.1 -n rhel7.2 -f /data_kvm/store/bdqn02_kvm.qcow2 

3)查看虚拟机状态

复制代码
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     rhel7.1                        关闭
 -     rhel7.2                        关闭

4)启动虚拟机

复制代码
[root@localhost ~]# virsh start rhel7.2 
域 rhel7.2 已开始

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 18    rhel7.2                        running
 -     rhel7.1                        关闭

4、虚拟机快照

KVM虚拟机要使用镜像功能,磁盘格式必须为qcow2

1)对rhel7.1创建快照

复制代码
[root@localhost ~]# virsh snapshot-create rhel7.1
已生成域快照 1704355792

2)查看虚拟机快照版本信息

复制代码
[root@localhost ~]# virsh snapshot-current rhel7.1
<domainsnapshot>
  <name>1704355792</name>  //快照版本号
  <state>shutoff</state>  //关机状态下的快照

3)查看快照信息

复制代码
[root@localhost ~]# virsh snapshot-list rhel7.1
 名称               生成时间              状态
------------------------------------------------------------
 1704355792           2024-01-04 16:09:52 +0800 shutoff

4)创建新快照

复制代码
[root@localhost ~]# virsh snapshot-create rhel7.2
已生成域快照 1704355880

5)查看快照信息

复制代码
[root@localhost ~]# virsh snapshot-create rhel7.1
已生成域快照 1704356048
[root@localhost ~]# virsh snapshot-list rhel7.1
 名称               生成时间              状态
------------------------------------------------------------
 1704355792           2024-01-04 16:09:52 +0800 shutoff
 1704356048           2024-01-04 16:14:08 +0800 shutoff

6)将虚拟机开机,恢复虚拟机状态至1704355792(关机状态)

复制代码
[root@localhost ~]# virsh start rhel7.1 
域 rhel7.1 已开始

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 20    rhel7.1                        running

[root@localhost ~]# virsh snapshot-revert rhel7.1 1704355792
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
       rhel7.1                        关闭

7)查看虚拟机快照版本信息

复制代码
[root@localhost ~]# virsh snapshot-current rhel7.1
<domainsnapshot>
  <name>1704355792</name>  //快照版本号
  <state>shutoff</state>  //关机状态下的快照

8)删除快照

复制代码
[root@localhost ~]# virsh snapshot-delete rhel7.1 1704355792
已删除域快照 1704355792

[root@localhost ~]# virsh snapshot-delete rhel7.1 1704356048
已删除域快照 1704356048

[root@localhost ~]# virsh snapshot-list rhel7.1
 名称               生成时间              状态
------------------------------------------------------------
相关推荐
阿部多瑞 ABU1 天前
《基于国产Linux的机房终端安全重构方案》
linux·安全
倔强的石头1061 天前
【Linux指南】Makefile入门:从概念到基础语法
linux·运维·服务器
ajassi20001 天前
linux C 语言开发 (七) 文件 IO 和标准 IO
linux·运维·服务器
程序猿编码1 天前
基于 Linux 内核模块的字符设备 FIFO 驱动设计与实现解析(C/C++代码实现)
linux·c语言·c++·内核模块·fifo·字符设备
一只游鱼1 天前
Zookeeper介绍与部署(Linux)
linux·运维·服务器·zookeeper
wheeldown1 天前
【Linux】 存储分级的秘密
linux·运维·服务器
天天进步20151 天前
掌握React状态管理:Redux Toolkit vs Zustand vs Context API
linux·运维·react.js
艾醒(AiXing-w)1 天前
探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
linux·人工智能·语言模型
垚垚领先1 天前
Kdump 文档 - 基于 kexec 的崩溃转储解决方案
linux
tongsound1 天前
igh ethercat 实时性测试
linux·c++