使用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
 名称               生成时间              状态
------------------------------------------------------------
相关推荐
java叶新东老师4 小时前
git stash 命令详解
linux·运维·flink
写bug的羊羊5 小时前
CentOS 9 配置国内 YUM 源
linux·运维·centos
Johny_Zhao8 小时前
CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
linux·网络安全·信息安全·kubernetes·云计算·containerd·ftp·yum源·系统运维
守望时空338 小时前
RustDesk搭建指南
linux
C++ 老炮儿的技术栈8 小时前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
白鹭9 小时前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
java叶新东老师10 小时前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
程序员JerrySUN10 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛10 小时前
Linux文件理解,基础IO理解
linux·运维·服务器
未来之窗软件服务11 小时前
跨平台 WebSocket 服务器的设计与实现 —— 基于.NET 8 的跨操作系统解决方案linux,macos,windows——开发工具
linux·服务器·websocket·仙盟创梦ide·东方仙盟