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类似VMwareVMnet8),这里如果写--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 foundyum 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

 

 

 

 

 

 

posted @   王路飞飞飞  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示