kvm命令行常用命令总结

公司使用了kvm虚拟化技术,对于测试环境我们可以使用图形化技术,virt-manager来管理。但是在生产环境没有图形化环境时,这里就需要使用命令行来解决问题了。因此这里整理了一些常用的kvm命令行管理命令。在这里分享一下:
首先先安装如下写包:

virt-ls
virt-ls可以列出虚拟机中目录下的文件或目录,用法如下

可以像使用ls一样加一些参数,如-l等,具体请看virt-ls --help

virt-what

virt-what可以用来检测当前系统是不是一个虚拟机,如果不是虚拟机,执行virt-what将不会有任何输出,如果是虚拟机,它会打印一系列关于虚拟机的’facts’(如kvm)

virt-what命令由同名包提供,要命令需要先安装(yum -y install virt-what)

virt-host-validate

这个命令可以用来检测本机是否正确配置以运行虚拟化,如果没有加参数,它会检查它所知道的所有的虚拟化驱动,可选的可以加qemu或lxc做限制

virt-host-validate
输出类似这样

virt-top

virt-top命令由同名软件包提供,和top命令相似,只是进程换成了虚拟机

virt-top
输出

virt-cat

virt-cat可以虚拟机中文件的内容,用法如下

domname可以通过virsh list得到

也可以对虚拟机的磁盘文件操作

virt-edit

这个命令可以修改

例如

在我的系统中它会用vim打开文件,编辑完保存即可修改虚拟机内的文件内容
也可以直接对虚拟机的磁盘文件进行操作

Note: 如果虚拟机正在运行,使用第一种文件修改它的文件会有下面的报错

但直接对虚拟机磁盘镜像文件操作不会有这个提示,并且可以修改成功,会不会出问题我就不知道了

virt-copy-out

virt-copy-out这个命令可以把虚拟机里的文件复制出来, 用法如下

例子

可以是多个文件或目录

也可以直接对虚拟机磁盘文件操作,只需要将-d domname换成-a path_of_disk_file

virt-copy-in

virt-copy-in是将文件复制到虚拟机里面,用法和virt-copy-out基本相同,这里只举一个例子

不出你的所料,如果虚拟机正在运行,上面的命令也会报错

virt-df

这个命令是比较简单了,就是将在虚拟机中执行df命令的结果输出

可以加-h参数以human-readable显示

virt-alignment-scan

旧的操作系统安装时会使用不对齐的分区,这会引起一些不必要的I/O,这个命令的作用是检查是否正在不对齐的问题,如果存在,只是警告(Warns)你,当前这个工具不会帮你解决这个问题

输出类似这样

这个命令可以显示虚拟机的操作系统版本和其它一些信息,包含的信息非常多,用法非常简单

virt-resize可以调整虚拟机磁盘的大小,调整或删除任何分区
virt-resize不可以就地调整磁盘,不应该对正在运行的虚拟机进行磁盘调整,为了确保一致性,调整先需要关闭虚拟机
virt-resize调整的过程非常慢,从35G的磁盘进行扩展需要差不多10分钟
virt-resize调整所花的时候只和开始磁盘的大小有关,从35G扩展到40G和扩展到135G所花的时间差不多
如果你使用qcow2磁盘格式,个人建议先转成raw,调整完后再转回去,因为直接对qcow2做调整,比较35G的qcow2磁盘镜像文件可能只有1G大小(ls查看),通过virt-resize调整后就会变成35G大小了(ls查看)(也可能是我的方法不对),先转成raw调整完大小后再转回去可以避免这个问题
概要

示例1.给一个分区增加5G
首先关闭虚拟机
virsh destroy centos2
查看分区情况

把qcow2格式的磁盘镜像转成raw

利用truncate创建一个新的文件,大小比centos2.raw大5G

开始调整

你应该看到类似这样的信息

然后是持续好久的刷屏信息,好在有倒计时

最后应该看到类似下面的信息

调整完后转回qcow2格式

虚拟机里面不用再做操作,现在使用新的磁盘镜像文件启动虚拟机应该可以看到/dev/sda1已经从35G变为40G了

分区的缩减我们一般用不到,没有做测试,lvm的调整可以参考这里

virt-install

virt-install命令由python-virtinst提供,需要安装python-virtinst才可以使用virt-install

yum -y install python-virtinst
安装例子

如果磁盘文件不存在,会自动创建(需要size参数),默认创建是raw磁盘镜像,可以用qemu-img手动创建磁盘文件

这里磁盘格式常见的有两种,raw和qcow2(还有qed正在开发中,据说性能更好) raw的读写性能要比qcow2好,但如果你需要快照等高级特性,可以选择qcow2 如果使用qcow2,加上preallocation性能会有所提升

不同的bus类型,cache类型和aio选择都会有性能有影响,所以你可希望把这些也加进去,格式类似这样

这里可供选择的参数有

不同的网卡驱动类型会影响到虚拟机的网络性能,可以这样指定

可供选择的参数有

# 可以通过qemu-system-x86_64 -net nic,model=?查到支持的参数
model: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio
virbr0是系统自动创建的桥,可以手动创建桥接设备然后指定虚拟机使用 如果你的虚拟机是windows并且想使用virtio做为硬盘驱动和网卡驱动,你需要下载两个驱动文件 这两个文件可以从这里下载

磁盘驱动

网卡驱动

如果不出问题,应该可以看到安装窗口了(需要安装virt-viewer) 如果没有安装virt-viewer或者你在没有安装图形的服务器上操作 你仍然可以通过以下方法访问到安装窗口

vncviewer vnclisten:vncport
前面的–vnclisten就不能写localhost了

第二种方法是:

kickstart安装也可以用在virt-install中

安装好之后,就可以使用virsh对虚拟做一些操作了 virt-install的更多参数可以参考这里

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: