KVM管理使用
KVM基本管理
完成虚拟机安装,按“Ctrl+]"键,退出终端,回到宿主机。
[root@kvm ~]# virsh list //查看虚拟机列表,只能看到正在运行的虚拟机
[root@kvm ~]# virsh list --all //查看虚拟机列表,包括未运行的虚拟机
进入指定的虚拟机
[root@kvm ~]# virsh console test //console后加虚拟机名称
若发生以下报错信息,命令如下:
[root@kvm ~]# virsh console test
Connected to domain test
Escape character is ^]
error: operation failed: Active console session exists for this domain
解决方式,命令如下:
[root@kvm ~]# ps -ef |grep console
root 11167 10987 0 01:55 tty1 00:00:00 virsh console test
root 16017 15750 0 10:01 pts/1 00:00:00 grep --color=auto console
[root@kvm ~]# kill -9 11167
vrish常用命令,命令如下:
virsh shutdown test
//关闭虚拟机
virsh start test
//开启虚拟机
virsh destroy test
//类似stop,这个是强制停止
virsh undefine test
//彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到
virsh autostart test
//宿主机开机该虚拟机也开机
virsh autostart --disable test
//解除开机启动
virsh suspend test
//挂起
virsh resume test
//恢复
克隆虚拟机
克隆虚拟机之前,要先关闭虚拟机,不然会提示下面这种错误
关闭后再克隆就成功了,virsh list --all 查看虚拟机列表
命令解释:
l --original:指定克隆源虚拟机。
l --name:指定克隆后的虚拟机名字。
l --file:指定目标虚拟机的虚拟磁盘文件
查看虚拟机配置文件/etc/libvirt/qemu/,看是否增加test02.xml文件
接下来,我们启动刚刚克隆的虚拟机test02
快照管理
快照是在我们使用Vmware的时候,很常用的一个功能。它可以回到之前的某一状态。在KVM中RAW格式的虚拟磁盘不支持做快照,qcow2支持。
[root@kvm ~]# virsh snapshot-create test //创建快照
[root@kvm ~]# qemu-img info /kvm_data/test.img //查看test.img信息,同时会查看到快照列表
[root@kvm ~]# virsh snapshot-list test //列出所有快照
[root@kvm ~]# virsh snapshot-current test //查看当前快照版本
[root@kvm ~]# ls /var/lib/libvirt/qemu/snapshot/test/ //查看所有快照配置文件
[root@kvm ~]# virsh snapshot-revert test 1588485687 //回复指定快照
[root@kvm ~]# virsh snapshot-delete test 1588485687 //删除指定快照
磁盘格式
[root@kvm ~]# qemu-img info /kvm_data/test.img //查看虚拟机磁盘格式
[root@kvm ~]# qemu-img create -f raw /kvm_data/test_1.img 2G //创建2GB的RAM格式磁盘
[root@kvm ~]# qemu-img convert -O qcow2 /kvm_data/test_1.img /kvm_data/test_1.qcow2 //RAW格式的磁盘转换为qcow2格式
[root@kvm ~]# ls -lh /kvm_data/test_1.img //查看test1.img大小
[root@kvm ~]# ls -lh /kvm_data/test1.qcow2
//可以看到qcow2文件比较小,raw文件大小和我们指定空间大小一样是2G
//raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照
[root@kvm ~]# qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.raw //将test02转成raw格式
更改磁盘格式和文件路径
[root@kvm ~]# virsh edit test02
找到上面这部分内容将qcow2修改为raw,kvm_data/test02.img改为/kvm_data/test02_2.raw 然后启动test02虚拟机
[root@kvm ~]# ls -l /kvm_data/ //查看磁盘所属用户和组
//启动后所属组变化成qemu的是test02_2.raw,证明这个磁盘正在被使用
磁盘扩容
我们知道,在这里磁盘一共有两种格式,一种是RAW格式,一种是qcow2格式,接下来我们分别给这两种磁盘格式进行扩容。
首先扩容RAW格式
[root@kvm ~]# qemu-img info /kvm_data/test02_2.raw //查看test02_2.raw信息
[root@kvm ~]# virsh console test02 //virsh console +虚拟机名称 进入某虚拟机
可以看到磁盘已经是12GB了,如果还是10GB退出重进一下虚拟机。
接下来,我们用新增加的2GB磁盘进行分区
除了对已有磁盘扩容外,还可以额外增加磁盘,命令如下
使用virsh edit 编辑test02虚拟机,将新磁盘增加到test02虚拟机,命令如下
找到上面那部分内容,在下面新增加下面这些内容
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/test02_3.raw'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09'
function='0x0'/>
</disk>
关闭test02虚拟机,重新启动,然后进入该虚拟机,使用lsblk查看磁盘,命令如下
可以看到多了一块5GB大小的vdb磁盘
调整CPU内存,网卡
[root@kvm ~]# virsh dominfo test //查看虚拟机配置信息
[root@kvm ~]# virsh edit test //编辑虚拟机内存
<memory unit='KiB'>1048576</memory> //最大内存
<currentMemory unit='KiB'>524288</currentMemory> //可用内存
<vcpu placement='static' current='1'>2</vcpu> //最大cpu
这里把可用内存改为624288.
关闭虚拟机,重新启动
[root@kvm ~]# virsh destroy test
Domain test destroyed
[root@kvm ~]# virsh start test
Domain test started
再次查看发现内存已经变为624288KiB
除了这种修改方式,还有一种动态修改。
[root@kvm ~]# virsh setmem test 800m //动态修改内存
[root@kvm ~]# virsh setvcpus test 2 //动态修改cpu,只可以增加不可以减少
[root@kvm ~]# virsh dominfo test //查看配置信息,看是否修改成功
可以看到CPU大小和内存大小都已经修改成功。
[root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test.xml //需要把配置写入到配置文件里
[root@kvm ~]# virsh domiflist test //查看网卡列表
增加一块新的网卡,并设置为NAT网络模式(virbr0类似VMware的VMnet8),这里如果写--source br0,则网络模式为桥接,命令如下
[root@kvm ~]# virsh attach-interface test --type bridge --source virbr0
[root@kvm ~]# virsh domiflist test
[root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test.xml
进入到test虚拟机,我们会发现多了一张网卡
迁移虚拟机
首先关闭虚拟机
[root@kvm ~]# virsh shutdown test //关闭test虚拟机
[root@kvm ~]# virsh domblklist test //查看虚拟机磁盘所在目录
[root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test03.xml
//如果是远程机器,需要把该配置文件拷贝到远程机器上
[root@kvm ~]# rsync -av /kvm_data/test.img /kvm_data/test03.img
//-bash: rsync: command not found则yum install -y rsync
//如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
因为是迁移到本机,配置文件用的是test子机的配置,不改会有冲突,所以需要修改该文件。如果是远程机器不用修改,命令如下
[root@kvm ~]# vi /etc/libvirt/qemu/test03.xml
修改成 <name>test03</name>
//修改domname:
//修改uuid(随便改一下数字,位数不要变)
[root@kvm ~]# virsh define /etc/libvirt/qemu/test03.xml //定义新虚拟机
查看虚拟机列表,会发现新迁移的虚拟机test03
[root@kvm ~]# virsh list --all
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了