使用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
 名称               生成时间              状态
------------------------------------------------------------
相关推荐
orion5711 小时前
Missing Semester Class1:course overview and introduction of shell
linux
用户1204872216117 小时前
Linux驱动编译与加载
linux·嵌入式
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698031 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
七歌杜金房1 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia3 天前
linux curl命令详解_curl详解
linux
扛枪的书生3 天前
Linux 网络管理器用法速查
linux
顺风尿一寸3 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux
XIAOHEZIcode3 天前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫3 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux