管理KVM虚拟机
本文涉及KVM虚拟机的常见管理命令、磁盘管理、内存管理、CPU管理、快照管理、克隆等操作。
文章目录
一、KVM虚拟机常见管理命令(在宿主机中执行)
## 从虚拟机退出到宿主机
[root@localhost ~]# Ctrl + ]
## 查看KVM进程
[root@localhost ~]# ps axu |grep kvm
## 查看libvirt的版本信息
[root@localhost ~]# virsh version
## 列出当前有多少个虚拟机,以及其状态
[root@localhost ~]# virsh list
## 列出关机状态的虚拟机
[root@localhost ~]# virsh list --all
## 进入指定的虚拟机,进入的时候还需要按一下回车
[root@localhost ~]# virsh console vm1
## 编辑虚拟机的配置
[root@localhost ~]# virsh edit vm1
## 使用XML文件创建一个虚拟机
[root@localhost ~]# virsh create vm1.xml
## 使用XML文件定义一个虚拟机,但是不启动
[root@localhost ~]# virsh define vm1.xml
## 启动虚拟机
[root@localhost ~]# virsh start vm1
## 重启虚拟机
[root@localhost ~]# virsh reboot vm1
## 关闭虚拟机,比较优雅地做法,按部就班的关闭虚拟机
[root@localhost ~]# virsh shutdown vm1
## 强制停止虚拟机,是比较暴力的做法,相当于物理机的直接关闭电源
[root@localhost ~]# virsh destroy vm1
## 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
[root@localhost ~]# virsh undefine vm1 --nvram
## 设置宿主机开机时该虚拟机也开机
[root@localhost ~]# virsh autostart vm1
## 解除开机启动
[root@localhost ~]# virsh autostart --disable vm1
## 列出开机自动启动的虚拟机
[root@localhost ~]# virsh list --autostart
## 挂起虚拟机
[root@localhost ~]# virsh suspend vm1
## 恢复挂起的虚拟机
[root@localhost ~]# virsh resume vm1
二、磁盘管理
说明:qemu-img是QEMU的磁盘管理工具,qemu编译之后,默认会提供这个工具。
1、磁盘创建和磁盘信息查看
## 创建磁盘文件
[root@localhost ~]# qemu-img create -f qcow2 /home/qcow2/vm2.qcow2 400G
## 查看磁盘文件信息。执行该命令,需要虚拟机关机
[root@localhost ~]# qemu-img info /home/qcow2/vm1.qcow2
2、磁盘格式转换
## 基于源磁盘文件创建新的磁盘文件。执行该命令,需要虚拟机关机
[root@localhost ~]# qemu-img convert -f qcow2 -O qcow2 -c vm1.qcow2 vm2.qcow2
## 将iso文件转换成qcow2文件
[root@localhost ~]# qemu-img convert -f raw -O qcow2 example.iso example.qcow2
## 导出虚拟机为vmdk格式。执行该命令,需要虚拟机关机
[root@localhost ~]# qemu-img convert -O qcow2 vm1.qcow2 vm1.vmdk
## 将vmdk格式的文件转换成qcow2文件
[root@localhost ~]# qemu-img convert -O qcow2 vm1.vmdk vm3.qcow2
3、冷添加磁盘
## 创建磁盘文件
[root@localhost ~]# qemu-img create -f qcow2 /home/qcow2/test.qcow2 1G
## 将新创建的磁盘文件添加到vm1虚拟机
[root@localhost ~]# virsh edit vm1
...添加
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/qcow2/test.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
## 运行中的虚拟机不会直接生效,这里关机
[root@localhost ~]# virsh shutdown vm1
## 再次启动虚拟机
[root@localhost ~]# virsh start vm1
## 查看是否成功,查看虚拟机有几块磁盘
[root@localhost ~]# virsh domblklist vm1
## 进入虚拟机
[root@localhost ~]# virsh console vm1
## 查看虚拟机的磁盘信息
[root@localhost ~]# fdisk -l
4、热添加磁盘
说明:热添加的磁盘,虚拟机重启后,就没有了,需要配置永久生效才行
## 启动虚拟机
[root@localhost ~]# virsh start vm1
## 添加前,查看虚拟机有几块磁盘
[root@localhost ~]# virsh domblklist vm1
## 创建磁盘
[root@localhost ~]# qemu-img create -f qcow2 /home/qcow2/test.qcow2 1G
#-----------------------
方案一:不配置热添加磁盘永久生效
## 热添加磁盘,将新创建的磁盘热添加到虚拟机vm1,这种方式不是永久生效,重启后磁盘就掉了
[root@localhost ~]# virsh attach-disk vm1 /home/qcow2/test.qcow2 vdb --subdriver=qcow2
## 热添加后,查看是否生效
[root@localhost ~]# virsh domblklist vm1
#-----------------------
方案二:配置热添加磁盘永久生效
## 热添加磁盘
[root@localhost ~]# virsh attach-disk vm1 /home/qcow2/test.qcow2 vdb --subdriver=qcow2
## 添加config参数,配置永久生效
[root@localhost ~]# virsh attach-disk vm1 /home/qcow2/test.qcow2 vdb --subdriver=qcow2 --config --live
## 热添加后,查看是否生效
[root@localhost ~]# virsh domblklist vm1
#-----------------------
## 虚拟机关机
[root@localhost ~]# virsh shutdown vm1
## 再次启动虚拟机
[root@localhost ~]# virsh start vm1
## 再次查看热添加磁盘永久生效是否成功
[root@localhost ~]# virsh domblklist vm1
## 进入虚拟机
[root@localhost ~]# virsh console vm1
Connected to domain vm1
Escape character is ^]
## 虚拟机中查看磁盘信息
[root@10 ~]# fdisk -l
说明:挂载后,我们发现磁盘空间并没有改变,是因为我们还没有刷新磁盘的inode
## 磁盘格式化
[root@10 ~]# mkfs.xfs /dev/vdb
## 挂载使用
[root@10 ~]# mount /dev/vdb /mnt/
## 列出挂载信息
[root@10 ~]# ls /mnt/
## 查看磁盘空间是否变化
[root@10 ~]# df -h
## 创建50MB大小的文件,输入文件是/dev/zero,文件保存在/mnt/test,数据块的大小是5MB
[root@10 ~]# dd if=/dev/zero bs=5M count=10 of=/mnt/test
## 查看/mnt/test目录下各个文件占用的空间
[root@10 ~]# du -smh /mnt/test
## 刷新inode,用于扩展XFS文件系统的大小
## 如果文件系统是ext2\ext3\ext4文件系统,xfs_growfs需要改成resize2fx
[root@10 ~]# xfs_growfs /dev/vdb
5、卸载磁盘
## 虚拟机中卸载挂载点
[root@10 ~]# umount /mnt/
## 宿主机中卸载磁盘
## 当机器是运行状态时,卸载虚拟磁盘命令(只是当前有效,重启后又回来了)
[root@localhost ~]# virsh detach-disk vm1 vdb
## 卸载后,查看虚拟机的磁盘是否卸载成功
[root@localhost ~]# virsh domblklist vm1
6、磁盘扩容
说明:qcow2格式不支持缩小,raw支持缩小。
## 扩容虚拟机磁盘,增加5G的容量。执行该命令,需要虚拟机关机
[root@localhost ~]# qemu-img resize vm1.qcow2 +5G
## 把虚拟机磁盘的容量改为500G
[root@localhost ~]# qemu-img resize vm1.qcow2 500G
三、内存管理
方法一:
## 修改最大内存
[root@localhost ~]# virsh setmaxmem vm1 32768M --config
## 修改内存大小
[root@localhost ~]# virsh setmem vm1 32768M --config
## 进入虚拟机
[root@localhost ~]# virsh console vm1
## 查看是否生效
[root@localhost ~]# free -h
方法二:
## 先关机
[root@localhost ~]# virsh shutdown vm1
## 直接修改虚拟机配置文件,修改里面的<memory/>和<currentMemory/>的值
[root@localhost ~]# virsh edit vm1
## 再次启动虚拟机
[root@localhost ~]# virsh start vm1
## 进入虚拟机
[root@localhost ~]# virsh console vm1
## 查看是否生效
[root@localhost ~]# free -h
四、CPU管理
方法一:
## 查看虚拟机的CPU核数
[root@localhost ~]# virsh vcpucount vm1
## 修改虚拟处理器的数量,--maximum 限定的最大CPU核数,扩容时不能超过这个数值
[root@localhost ~]# virsh setvcpus vm1 --maximum 8 --config
## 支持热增加,但不支持热减少,扩容时不能超过maximum
[root@localhost ~]# virsh setvcpus vm1 --count 8 --config
## 进入虚拟机
[root@localhost ~]# virsh console vm1
## 查看是否生效
[root@localhost ~]# lscpu
方法二:
## 先关机
[root@localhost ~]# virsh shutdown vm1
## 直接修改虚拟机配置文件,修改里面的<vcpu/>的值
[root@localhost ~]# virsh edit vm1
## 再次启动虚拟机
[root@localhost ~]# virsh start vm1
## 进入虚拟机
[root@localhost ~]# virsh console vm1
## 查看是否生效
[root@localhost ~]# lscpu
五、快照管理
扩展知识:
1、KVM中,快照只能使用qcow2创建,raw格式一般无法创建快照。
2、KVM的快照分内部快照和外部快照。
1)内部快照:快照数据存储在虚拟机磁盘文件内部,与虚拟机的磁盘文件是同一个文件
优点:
- 管理和使用相对简单
- 对于某些类型的虚拟机(例如,不使用特定类型固件的虚拟机)来说,性能较好
缺点:
- 可能会因为快照的积累导致原始磁盘文件膨胀
- 不支持具有某些类型固件的虚拟机,例如基于 pflash 的固件。【常见问题:2】就是这个问题造成的。
2)外部快照:快照数据存储在虚拟机的外部文件中,不会更改原有的虚拟机磁盘文件。外置磁盘快照创建时,会保存正在使用磁盘作为backing file(此磁盘不再接受新数据,只保存快照前的数据),并创建一个新的磁盘作为overlays以等待写入新数据
优点:
- 对原始虚拟磁盘文件的影响较小
- 更适合大型虚拟机和频繁的快照操作
缺点:
- 快照恢复可能比内部快照更慢
- 管理稍微复杂,尤其是在处理多个快照时
- 外部快照没有libvirt支持,只能通过手动完成
3、使用pflash固件的虚拟机,不能创建内部快照,只能使用外部快照。
查看虚拟机的固件是否是pflash固件,可以通过如下方式:
[root@localhost ~]# virsh edit vm1 #搜索里面的"<loader" 就可以看到type类型
<domain type='kvm'>
<name>vm1</name>
<uuid>b52cead7-62e3-4c58-9933-de633cc8ac25</uuid>
<memory unit='KiB'>16777216</memory>
<currentMemory unit='KiB'>16777216</currentMemory>
<vcpu placement='static'>8</vcpu>
<os>
<type arch='aarch64' machine='virt-6.2'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw</loader>
<nvram>/var/lib/libvirt/qemu/nvram/vm1_VARS.fd</nvram>
<boot dev='hd'/>
</os>
......4、关于快照链
- 快照链就是多个快照组成的关系链。
- base-image<--guest1<--snap1<--snap2<--snap3<--snap4<--当前(active)
- 如上,base-image是制作好的一个qcow2格式的磁盘镜像文件,它包含有完整的OS以及引导程序
- qcow2(qemu copy-on-write)格式镜像支持快照,具有创建一个base-image,以及在base-image(backing file)基础上创建多个copy-on-write overlays镜像的能力。
- 我们为base-image创建一个快照guest1,那么,此时base-image就是guest1的backing file(此磁盘不再接受新数据,只保存快照前的数据)。guest1就是base-image的overlay。
- 同理,为guest1虚拟机创建了一个快照snap1。此时,guest1就是snap1的backing file,snap1是guest1的overlay。
- backing files和overlays十分有用。可以快速的创建瘦装备实例,特别是在开发测试过程中可以快速回滚到之前某个状态。
1、创建外部快照:
- <disk>应该是file类型才行
[root@localhost ~]# virsh dumpxml vm1 | grep '<disk' -A5
- 查看虚拟机当前使用的磁盘文件的target和source。创建快照时,--diskspec参数需要使用这里的target
[root@localhost ~]# virsh domblklist vm1
Target Source
---------------------------------
sda /home/qcow2/vm1.qcow2
sdb -
- 创建第1个快照,并指定快照文件名
[root@localhost ~]# virsh snapshot-create-as --domain vm1 \
--name vm1-snapshot1 --disk-only \
--diskspec sda,snapshot=external,file=/home/qcow2/vm1-snapshot1.qcow2 \
--atomic
- 创建第2个快照,并指定快照文件名
[root@localhost ~]# virsh snapshot-create-as --domain vm1 \
--name vm1-snapshot2 --disk-only \
--diskspec sda,snapshot=external,file=/home/qcow2/vm1-snapshot2.qcow2 \
--atomic
参数说明:
- --disk-only:表示创建磁盘的快照,不包括内存和CPU状态。
- --atomic:表示创建快照的操作是原子的,即要么完全成功,要么完全失败,不会处于中间状态。
- --diskspec参数的第一个参数是命令 virsh domblklist vm1执行结果中的target。若没有--diskspec参数,快照文件名默认是“虚拟机名.快照名”,即,vm1.snapshot2-vm1
- 列出指定虚拟机的所有快照
[root@localhost ~]# virsh snapshot-list vm1
Name Creation Time State
------------------------------------------------------------
vm1-snapshot1 2024-05-18 20:25:35 +0800 disk-snapshot
vm1-snapshot2 2024-05-18 20:26:02 +0800 disk-snapshot
- 再次查看虚拟机当前使用的磁盘文件的target和source。可见,虚拟机所使用磁盘已经更新到新创建的overlays快照磁盘/home/qcow2/vm1-snapshot2.qcow2
[root@localhost ~]# virsh domblklist vm1
Target Source
-------------------------------------------
sda /home/qcow2/vm1-snapshot2.qcow2
sdb -
- 查看虚拟机当前使用xml配置文件,可见,虚拟机配置<source>已经更新到新创建的overlays快照磁盘/home/qcow2/vm1-snapshot2.qcow2
[root@localhost ~]# virsh dumpxml vm1 | grep '<disk' -A5
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/qcow2/vm1-snapshot2.qcow2' index='4'/>
<backingStore type='file' index='3'>
<format type='qcow2'/>
<source file='/home/qcow2/vm1-snapshot1.qcow2'/>
- 列出指定快照及其所有前置快照的image(快照磁盘文件)和backing file(即快照前的原始磁盘文件)
[root@localhost ~]# qemu-img info /home/qcow2/vm1-snapshot1.qcow2 -U --backing-chain
image: /home/qcow2/vm1-snapshot1.qcow2
file format: qcow2
virtual size: 405 GiB (434865438720 bytes)
disk size: 200 KiB
cluster_size: 65536
backing file: /home/qcow2/vm1.qcow2
backing file format: qcow2
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
image: /home/qcow2/vm1.qcow2
file format: qcow2
virtual size: 405 GiB (434865438720 bytes)
disk size: 1.78 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
2、还原到指定的外部快照,从快照vm1-snapshot2 还原到 快照vm1-snapshot1
- 还原快照前需关闭虚拟机
[root@localhost ~]# virsh shutdown vm1
- 还原前查看虚拟机所使用的磁盘
[root@localhost ~]# virsh domblklist vm1
Target Source
-------------------------------------------
sda /home/qcow2/vm1-snapshot2.qcow2
sdb -
- 修改虚拟机配置,将虚拟机磁盘文件改成待还原快照vm1-snapshot1的磁盘文件
[root@localhost ~]# virt-xml vm1 --edit target=sda --disk path=/home/qcow2/vm1-snapshot1.qcow2
Domain 'vm1' defined successfully.
- 可见虚拟机所使用的磁盘文件已经改成快照vm1-snapshot1的磁盘文件
[root@localhost ~]# virsh domblklist vm1
Target Source
-------------------------------------------
sda /home/qcow2/vm1-snapshot1.qcow2
sdb -
- 在<backingStore/>嵌套标签内部,找到待还原快照vm1-snapshot1对应的<source/>、<format/>,将它们及它们的所有外层嵌套都删除,只保留该<source/>同级的<backingStore/>及其内部嵌套。
说起来比较绕,见下面所标注的删除线
[root@localhost ~]# virsh edit vm1 <backingStore type='file'>
<format type='qcow2'/>
<source file='/home/qcow2/vm1-snapshot1.qcow2'/>
<backingStore type='file'>
<format type='qcow2'/>
<source file='/home/qcow2/vm1.qcow2'/>
</backingStore> </backingStore>
改成:
<backingStore type='file'>
<format type='qcow2'/>
<source file='/home/qcow2/vm1.qcow2'/> #这是快照vm1-snapshot1的backing file
</backingStore>
- 启动虚拟机
[root@localhost ~]# virsh start vm1
- 删除snapshot2-vm1快照元数据
[root@localhost ~]# virsh snapshot-delete vm1 snapshot2-vm1 --metadata
- 删除snapshot2-vm1快照磁盘文件
[root@localhost ~]# rm /home/qcow2/snapshot2-vm1.qcow2
3、还原到指定的外部快照,快照snapshot1-vm1 还原到 虚拟机初始状态(第一个快照前的状态)
- 还原前需关闭虚拟机
[root@localhost ~]# virsh shutdown vm1
- 还原前查看虚拟机所使用的磁盘
[root@localhost ~]# virsh domblklist vm1
- 修改虚拟机配置,将虚拟机磁盘文件改成第一个快照前的磁盘文件vm1.qcow2
[root@localhost ~]# virt-xml vm1 --edit target=sda --disk path=/home/qcow2/vm1.qcow2
- 可见虚拟机所使用的磁盘文件已经改成第一个快照前的磁盘文件vm1.qcow2
[root@localhost ~]# virsh domblklist vm1
- 删除所有的<backingStore/>标签及其内嵌的<source/>、<format/>。因为该标签只是配置一个镜像的backing file,而虚拟机第一个快照前的磁盘文件没有backing file,只有创建了快照,才有backing file
[root@localhost ~]# virsh edit vm1
- 再次启动虚拟机
[root@localhost ~]# virsh start vm1
- 删除snapshot1-vm1快照元数据
[root@localhost ~]# virsh snapshot-delete vm1 snapshot1-vm1 --metadata
- 删除snapshot1-vm1快照磁盘文件
[root@localhost ~]# rm /home/qcow2/snapshot1-vm1.qcow2
六、虚拟机克隆
说明:KVM虚拟机的克隆包括3种,分别是:完整克隆、手动克隆、链接克隆。推荐完整克隆和手动克隆。
1、完整克隆--强烈推荐:将当前虚拟机的磁盘文件完全复制一份,克隆时被克隆的虚拟机必需处于**挂起**或**关机**状态。克隆后,新虚拟机需要修改相关配置,比如IP地址。
- 克隆前,虚拟机关机
[root@localhost ~]# virsh shutdown vm1
- 完整克隆方法一:自动
[root@localhost ~]# virt-clone -o vm1 -n new-vm --auto-clone
参数说明:
- -o 源虚拟机
- -n new新的虚拟机
- --auto-clone 表示克隆的虚拟机磁盘文件会和源虚拟机的磁盘文件存放相同路径,需要修改新虚拟机的相关配置,如IP等
- 完整克隆方法二:指定存放路径
##基于源虚拟机vm1克隆出新虚拟机new-vm,它只使用源虚拟机vm1的多个磁盘中的1个磁盘:
[root@localhost ~]# virt-clone -o vm1 -n new-vm --file /home/qcow2/disk-1-vm1.qcow2
##基于源虚拟机vm1克隆出新虚拟机new-vm,它使用源虚拟机vm1的两个磁盘:
[root@localhost ~]# virt-clone -o vm2 -n new-vm --file /home/qcow2/disk-1-vm1.qcow2 \
--file /home/qcow2/disk-2-vm1.qcow2
2、手动克隆--推荐:克隆后,新虚拟机需要修改相关配置,比如IP地址。
- 手动克隆方法一:
## 复制源虚拟机磁盘为新虚拟机的磁盘
[root@localhost ~]# cp vm1.qcow2 new-vm.qcow2
## 复制源虚拟机配置文件为新虚拟机的配置文件
[root@localhost ~]# virsh dumpxml vm1 > new-vm.xml
## 修改新虚拟机配置文件的name/qcow2磁盘路径
## 删除UUID(会自动生成)/mac地址(会自动生成)
[root@localhost ~]# vi new-vm.xml
## 导入新虚拟机的配置文件
[root@localhost ~]# virsh define new-vm.xml
## 启动新虚拟机
[root@localhost ~]# virsh start new-vm
- 手动克隆方法二:
## 基于vm1的磁盘文件生成new-vm的磁盘文件
[root@localhost ~]# qemu-img convert -f qcow2 -O qcow2 \
-c /home/qcow2/vm1.qcow2 /home/qcow2/new-vm.qcow2
## 复制源虚拟机配置文件为新虚拟机的配置文件
[root@localhost ~]# virsh dumpxml vm1 > new-vm.xml
## 修改新虚拟机配置文件的name/qcow2磁盘路径
## 删除UUID(会自动生成)/mac地址(会自动生成)
[root@localhost ~]# vi new-vm.xml
#导入新虚拟机的配置文件
[root@localhost ~]# virsh define new-vm.xml
#启动新虚拟机
[root@localhost ~]# virsh start new-vm
3、链接克隆--不推荐:占用磁盘空间较小,但是前置条件是源虚拟机文件要存在,如果把源虚拟机删除了,链接克隆后的虚拟机就不能用了
注意:源虚拟机不能启动,否则启动克隆后的虚拟机将报错
- 创建链接克隆磁盘要指定-f 为qcow2,-b 源磁盘 新磁盘
[root@localhost ~]# qemu-img create -f qcow2 -F qcow2 -b vm1.qcow2 new-vm.qcow2
- 查看链接克隆磁盘
[root@localhost ~]# qemu-img info new-vm.qcow2
image: new-vm.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
backing file: vm1.qcow2 # 引用的源磁盘文件
Format specific information:
compat: 1.1
lazy refcounts: false
- 复制源虚拟机配置文件为新虚拟机的配置文件
[root@localhost ~]# virsh dumpxml vm1 > new-vm.xml
- 修改新虚拟机配置文件的name/qcow2磁盘路径,删除UUID(会自动生成)/mac地址(会自动生成)
[root@localhost ~]# vi new-vm.xml
- 导入新虚拟机的配置文件
[root@localhost ~]# virsh define new-vm.xml
- 启动新虚拟机
[root@localhost ~]# virsh start new-vm
七、为虚拟机创建瘦装备实例(domain)
说明:
- domain是指libvirt创建的虚拟机.
- qemu-img是QEMU的磁盘管理工具,qemu编译之后,默认会提供这个工具
- 使用模板镜像centosbase(backing file)创建2个虚拟机(基于centosbase),20G不是必须的参数
qemu-img create -b centosbase.qcow2 -f qcow2 centos1.qcow2 20G
qemu-img create -b centosbase.qcow2 -f qcow2 centos2.qcow2 20G
现在,创建出来的centos1和centos2都可以用来启动一个虚拟机,因为他们依赖于backing file,所以这两个磁盘只有几百个字节大小,只有新的文件才会被写入此磁盘。
八、虚拟机镜像导出,用于ESXi导入
- 从虚拟机退出到宿主机
[root@localhost ~]# Ctrl + ]
- 导出虚拟机为ovf格式
[root@localhost ~]# qemu-img convert -O qcow2 vm2.qcow2 vm2.vmdk
- ESXi不直接支持ovf格式,需要将导出的ovf格式转换为ESXi支持的格式,如vmdk格式
## 将ovf格式转换为vmdk格式
[root@localhost ~]# qemu-img convert -O vmdk vm2.vmdk vm2-template.vmdk
- 导出的vmdk格式虚拟机导入到ESXi中
步骤:
a.打开vSphere客户端,连接到ESXi主机。
b.在主界面上选择"文件" -> "部署OVF模板"。
c.在弹出的对话框中,选择转换后的vmdk格式虚拟机文件。
d.按照向导的指引,设置虚拟机的名称、存储位置、网络配置等参数。
e.完成向导后,vSphere客户端会自动导入虚拟机到ESXi中
九、把OVA格式的文件导入KVM虚拟机
- 将ova文件转换成qcow2文件
[root@localhost ~]# qemu-img convert -O qcow2 tacgui-disk1.vmdk /home/tacgui.qcow2
- 使用kvm图形工具新建一台虚拟机,选择"import existing disk image"
更多推荐
所有评论(0)