虚拟机管理的命令

(1). 打开虚拟机管理器

命令:virt-manager

该命令是打开虚拟机管理器的图形界面,可以方便对虚拟机创建以及管理,界面如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照


(2). 列出正在运行的虚拟机

命令: virsh list

该命令可以列出正在处于运行状态中的虚拟机,如下所示:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_02


(3). 列出所有的虚拟机

命令: virsh list --all

该命令可以显示出所有的虚拟机以及它们对应的状态,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_KVM虚拟机启动方式修改_03


(4). 开启虚拟机

命令: virsh start

该命令后面跟虚拟机的名字,可以开启对应名字的虚拟机,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_04


(5). 现显示虚拟机

命令: virt-viewer

该命令后面同样跟虚拟机的名字,可以显示已经开启的虚拟机,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_KVM虚拟机启动方式修改_05

可以发现虚拟机会在前台运行,可以按ctrl+z 打入后台,再输入命令 bg 让程序在后台运行。

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_06

(6). 正常关闭虚拟机

命令: virsh shutdown

该命令后面同样跟虚拟机的名字,可以使已经开启的虚拟机正常关机,如下所示:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_07


执行该命令之后,就会发现虚拟机会正常关机。(7). 虚拟机强制断电

命令: virsh destroy

该命令后面同样跟虚拟机的名字,可以使虚拟机强制断电关闭,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_08

(8). 删除虚拟机的硬件信息

命令: virsh undefine

该命令后面同样跟虚拟机的名字,可以把对应虚拟机的硬件信息删除掉。虚拟机的硬件信息一般存放在 /etc/libvirt/qemu 目录下,其中的 .xml 文件就是虚拟机的硬件信息:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_09


那么运行该命令之后,就会把虚拟机对应的 .xml文件删除掉。

如果要把虚拟机彻底删除,还需要删除虚拟机的硬盘信息,硬盘信息一般存放在 /var/lib/libvirt/images 目录下,.cow2文件和 .img文件就是虚拟机的硬盘信息:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_KVM虚拟机启动方式修改_10


再把硬盘信息删掉,虚拟机就被彻底删除掉了。(9). 一次性打开虚拟机

命令: virsh create vmname.xml

该命令后面跟虚拟机的硬件信息 .xml 文件,可以通过拷贝其他主机创建的虚拟机的硬件信息,可以一次性打开虚拟机,当关闭虚拟机时,该虚拟机就会消失:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_11


(10). 永久性恢复虚拟机

命令: virsh define vmname.xml

该命令后面跟虚拟机的硬件信息 .xml 文件,该命令可以永久性的恢复虚拟机,不会像上一个命令那样,关闭之后虚拟机就会消失,它会永久存在:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_12


创建虚拟机快照

虚拟机快照,就是以原有的虚拟机为母板创建一个新的虚拟机。我们可以对这个虚拟机快照进行一系列的操作,使用起来和原有虚拟机并没有什么不同,既不会破坏原有的虚拟机,而且如果一不小心将虚拟机快照的系统崩溃了,还可以根据原虚拟机再创建出另一个新的快照,也可以重置虚拟机。快照与母盘的大小不一样,这也提供了很大的方便。

我们可以把原有虚拟机想象成一个人,想要改变这个人的容貌,当然最好还是不要在这个人原来的脸上刻刻画画了,如果万一改坏了就还原不回去了。那么我门可以找一块玻璃放在这个人的面前,我们可以在这块玻璃上对这个人的容貌进行修改,如果改坏了的话,可以直接再换一块玻璃就可以重新修改了。以上就是快照的抽象原理了,可以画个图如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_13


创建快照命令是 qemu-ing create,其完整的格式为:

qemu-img create -f 类型 -b 母盘路径名称    快照路径名称

操作示例:

下面我们给 ygf这台虚拟机创建快照,其硬盘信息为 /var/lib/libvirt/images 目录下的 ygf.img文件,创建一个名为 test的快照,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_14


那么基于 ygf.img 的快照就创建好了,下面就可以对其进行创建了:

首先打开虚拟机管理器,点左上角创建虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_15


在上一篇文章中讲到了通过镜像创建虚拟机,创建快照应选择最后一个 Import existing disk image来进行创建:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_16


然后点击右下角的下一步,进行硬件位置的选择,就选择刚刚创建好的 test.qcow2 文件:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_17


再点击下一步,然后内存大小和cpu就保持默认数值就可以了:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_18


然后点击下一步,在下一个界面中把中间的选项框选中:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_19


然后点击右下角的 Finish ,进入到配置界面,步骤和上一篇文章一样的:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_KVM虚拟机启动方式修改_20

KVM虚拟机启动方式修改 启动kvm虚拟机命令_KVM虚拟机启动方式修改_21


最后点击左上角的开始安装,这样一个快照就手动创建完成了:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_22


编写脚本快速创建虚拟机和快照

我们在上一篇文章以及本文前面都是在通过手动创建了虚拟机和快照,过程比较繁琐,那么我们可以通过编写脚本文件的方法,在脚本文件中就将需要配置的硬盘以及硬件信息设置好,快速的对虚拟机进行创建以及快照的创建。



编写脚本创建虚拟机

利用 virt-install 命令就可以创建虚拟机,后面再跟上相应的配置信息,就可以自动创建虚拟机了。把这些都写进脚本文件里,就可以执行脚本创建虚拟机。脚本文件都在 /usr/bin 目录下存放,那么我们在这个目录下新建一个 vm_create.sh 的脚本文件,进行编辑:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_23


在打开的vim编辑器中编辑以下内容,每一行的注释已标明:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_24


对上面的参数做一下解释:

  • “- -name”   是给虚拟机起个名字
  • “- -cdrom”   通过镜像创建,镜像的具体路径
  • “- - vcpus”   cpu的个数
  • “- -memory”   内存的大小,设置为1024M
  • “- -disk”   硬盘的存放位置,size代表月嗯盘大小,bus代表磁盘总线设置为virtio
  • “- -network”   网络设置

其中的 “$1” 代表脚本命令的第一个参数,参数是什么 “$1” 的位置就会换成什么。wq保存退出之后,一定要记得给脚本文件加上 x 权限:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_25


这样一个创建虚拟机的脚本就创建好了,下面通过该脚本新建一个虚拟机 westos:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_26

可以在虚拟机管理器中看到新建立里的虚拟机 westos :

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_27


如果要让安装在后台运行,那么在脚本中末尾要加上 & 就可以了。

编写脚本快速创建快照

和编写创建虚拟机的脚本一样,我们先在/usr/bin 目录下创建脚本文件 vm_snapshoot.sh 文件,然后对其进行编辑,编辑内容如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_28


然后同样加 “x” 权限:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_29


下面我们试着创建 ygf 虚拟机的快照 test1,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_30


创建成功,可以在虚拟机管理器中查看 test1快照:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_31


编辑脚本实现管理虚拟机的所有操作

我们可以创建一个这样的脚本,从虚拟机的创建以及创建快照到删除虚拟机的所有操作都包含在内,只需要改变一个参数就可以实现相应的操作。前面已经写了创建虚拟机的脚本和创建快照的脚本,我们需要把它俩结合再增加一些其他功能就可以了。

这里需要用到脚本中的判断语句 case … esac,下面就编辑一个这样的脚本。首先同样创建一个 vm_ctrl.sh 的脚本文件,然后再对其进行编辑:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_32


然后我们编辑如下内容:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_33


KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_34


这样这个脚本就编辑完成了,同样给它增加 “x” 权限,然后进行测试:

(1).虚拟机的创建

通过上面的脚本创建一个名为 westos 的虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机的快照_35


再虚拟机管理器中可以看到新建立的虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_36


(2). 快照的创建

通过上面的脚本创建一个 westos 虚拟机的快照 test,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_37


可以在虚拟机管理器中看到建立的快照test:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_38


(3). 列出所有虚拟机

通过list参数列出所有虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_39


(4). 打开虚拟机

通过start 参数打开虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_创建虚拟机_40


然后,虚拟机就被打开了:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_41


(5). 显示虚拟机

通过 view 参数显示已经打开的虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_KVM虚拟机启动方式修改_42


(6). 正常关闭虚拟机

通过 stop 参数正常关闭已经打开的虚拟机:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_43


(7). 彻底删除虚拟机

通过delete 参数,把test虚拟机进行彻底删除:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_虚拟机管理命令_44


可以在虚拟机管理器中看到 test 虚拟机被删除掉了:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_45


(8). 错误参数

当输入错误参数时,会有文字提示,如下:

KVM虚拟机启动方式修改 启动kvm虚拟机命令_脚本创建虚拟机和快照_46