⑴ kvm虚拟机开机启动
1、通过virsh 命令
virsh autostart 虚拟滚悔橡机名称大旁 开机启动
virsh autostart --disable 虚拟机名称 取前唤消开机启动
脚本
https://blog.csdn.net/li1121567428/article/details/88938281
⑵ 安卓开启kvm
创建KVM虚拟机_安卓kvm虚拟机可以用两种方法创建kvm虚拟机,一种是virt-manager管理工具创建,一种是命令行的方式。1.命令行方式创建kvm虚拟机。先创建qcow2格式的镜像文件,大小为20G。qemu-imgcreate-fqcow2/data/kvm/images/centos7.6×86.qcow20G输入命令进行虚拟机的安装:virt-install–name=centos7.6×86–vcpus=2–ram=2048–diskpath=/data/kvm/imag
⑶ 如何在 KVM 虚拟机上运行 KVM
解决办法很简单:1、修改 VMware ESXi 的设置;2、修改对应虚拟机的设置。
登陆 VMware ESXi 控制台打开 VMware ESXi 5.0 的 SSH 服务(默认 SSH 服务是关闭的),然后用 ssh 登陆 VMware ESXi 后在 config 文件中最后加入 vhv.allow = “TRUE” 一行:
# vi /etc/vmware/config
libdir = "/usr/lib/vmware"
authd.proxy.vim = "vmware-hostd:hostd-vmdb"
authd.proxy.nfc = "vmware-hostd:ha-nfc"禅汪
authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl"
authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl"
authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc"
authd.fullpath = "/sbin/authd"
authd.soapServer = "TRUE"
vmauthd.server.alwaysProxy = "TRUE"
vhv.allow = "TRUE"
重启 VMware ESXi 后编辑虚拟机选项(需要先关闭虚拟机),打开 Edit virtual machine settings
对话框,在 options 页面的 General Options 选灶滚项里把 Guest Operating System 的隐袭余类型换成
Other 里面的 VMware ESxi 5.x,如图:
最后启动虚拟机后再 kvm-ok 一下就可以看到 KVM 可以用了:
⑷ kvm安装win7虚拟机 – 编程哪些事
首先尝试在 Virtual Machine Manager 里面安装。遇到的问题如下:
一直停留在 starting windows 界面。
解决方法:修改 video model 为 Cirrus,问题解决,如下图所示:
2
开始安谈渣装后,对鼠标和键盘无响应。
google,发现需要使用 <input type=’tablet’ bus=’usb’/>。添加一个,如下图所示:
但是键盘还是不好使。。算了,还是转到使用 qemu-system-x86_64 命令启动虚机吧。
END
使用 qemu-system-x86_64 启动 Win 7 虚机
1
环境准备
下载 Windows virtio driver iso:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.102/,因为要将磁盘挂接为 virtio 磁盘。
2
创建系统盘 qemu-img create -f raw win7.img 30G,这将作为Win7的操作系统盘。
3
创建启动脚本,亩侍巧如下图所示:
4
可以运行脚本了,然后通过 VNC 进入界面,进入下面部分。
5
安装 Win 7
选择 Custom(advanced),如下图所示:
6
选择 virtio 磁盘,如下图所示:
7
选择 virtio disk driver,如下图所示:
8
安装 Win7 Virtio SCSI Driver,如下图所示:
9
安装好以后,就可以看到安装的目标磁盘了,如下图所示:
10
进入常规的 Win7 安装流程,如下图所示:
END
安装其它 Virtio 驱动
网络驱动,如下图所示:
但是安装迅键失败,如下图所示:
尝试 device manager,如下图所示:
但是还是失败,如下图所示:
Baloon driver
Device manager, 右键 root device, add legacy hardware, next, install manually (advanced), next, have disk, browse, select inf, install,如下图所示:
改成此方法安装 network 驱动成功。注意将虚机重启从而使得安装生效。
诡异的问题
通过上面方法得到的 Win7 raw 格式的镜像文件可以直接使用来创建新的虚机,这些新的虚机会使用 virtio network driver。
但是,在 OpenStack 环境和中,Nova 首先将 qcow2 格式的镜像从glance 中下载到计算节点上,然后将它转化为 raw 格式作为 backfing file,再创建一个 qcow2 文件,它使用 raw 文件作为 backing file。如下图所示:
诡异的是,OpenStack 中新建的虚机不能使用 virtio network driver,如下图所示:
8
但是如果使用backing file 直接启动虚机,则没有这个问题。
使用同样的 backing file 创建一个新的 qcow2 文件,则没有这个问题
具体原因应该和 Nova 的具体逻辑有关,将来再查,现在暂时使用 SCSI network driver。
⑸ qemu启动虚拟机的几种方式
验证一些平台无关的特性的时候,如果用VM代替真实的物理机无疑更高效。下面列举一些Qemu启动VM的方式,顺便澄清一些概念。
本文验证需要的环境:
1. ubuntu 18.04
2. 安装软件:
a) sudo apt-get install qemu-kvm libvirt-bin
b) vncviewer to access VM via X window(optional)
https://www.realvnc.com/en/connect/download/viewer/linux/
3. VM镜像
xx.iso 或者 xx.img
方式1是用libvirt以xml方式启动VM,VM所有的配置都放在xml文件中,优点是不用输入复杂的参数。
如果想用qcow2格式的启动镜像,可以用如下命令转换img。
创建test.xml,内容如下。注意boot dev如果是cdrom则是iso启动,如果是hd则是硬盘启动。
然后创建启动虚拟机
命令行方式
最简方式,这种方式启动后,需要vncview连接VM
用bzImage和rootfs启动
启用网卡,启动成功后可以在host上ifconfig查看到tap0设备,sudo brctl addif virbr0 tap0将tap0加入virbr0网桥。
参考: libvirt
⑹ 如何在kvm服务器上创建虚拟机
创建虚拟机镜像
要在一台host上跑起一个虚拟机一般需要两个步骤:
第一步:创建虚拟机镜像
qemu-img create -f raw /images/vm1.raw 8G
qmeu-img创建的镜像是一个稀疏文件,也就是说刚创建出来的文件并没有8G,它会随着数据的增多慢慢增加,直到8G
第二步:启动虚拟机
kvm /imges/vm1.raw
运行结果: 因为镜像里面没有任何内容,所以提示找不到可引导设备。
使用qemu-img管理镜像
qemu-img基本命令
上节介绍了使用qemu-img创建镜像,这一节将会介绍qemu-img在镜像管理上的强大功能。
qemu-img有很多命令,包括下面常用的,当然qemu-img -h你懂得。
info
查看镜像的信息
create
创建镜像
check
检查镜像
convert
转化镜像的格式,(raw,qcow ……)
snapshot
管理镜像的快照
rebase
在已有的镜像的基础上创建新的镜像
resize
增加或减小镜像大小
创建镜像
qemu-img create -f <fmt> -o <options> <fname> <size>
举例:
qemu-img create -f raw -o size=4G /images/vm2.raw
hzgatt@hzgatt:~/images$ ll
total 0-rw-r--r-- 1 hzgatt hzgatt 4.0G 6月 29 14:11 vm2.raw
hzgatt@hzgatt:~/images$ ll -s
total 00 -rw-r--r-- 1 hzgatt hzgatt 4.0G 6月 29 14:11 vm2.raw
hzgatt@hzgatt:~/images$ qemu-img info vm2.raw
image: vm2.raw
file format: raw
virtual size: 4.0G (4294967296 bytes)
disk size: 0
虽然ls中看到文件的大小是4G,但是实际上磁盘大小是0。这就是稀疏文件
转化
将一个镜像文件转化为另外一种格式,qemu-img支持的格式可以看qemu-img -h最后一行。
Supported formats: vvfat vpc vmdk vdi sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug
转化命令:
qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname
-c:采用压缩,只有qcow和qcow2才支持
-f:源镜像的格式,它会自动检测,所以省略之
-O 目标镜像的格式
-o 其他选先
fname:源文件
out_fname:转化后的文件
看例子:
hzgatt@hzgatt:~/images$ qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2
hzgatt@hzgatt:~/images$ ll -s
total 136K
0 -rw-r--r-- 1 hzgatt hzgatt 5.0G 6月 29 13:55 vm1.raw
136K -rw-r--r-- 1 hzgatt hzgatt 193K 6月 29 14:22 vm2.qcow2
0 -rw-r--r-- 1 hzgatt hzgatt 4.0G 6月 29 14:11 vm2.raw
hzgatt@hzgatt:~/images$ qemu-img info vm2.qcow2
image: vm2.qcow2
file format: qcow2
virtual size: 4.0G (4294967296 bytes)
disk size: 136K
cluster_size: 65536
如果想看要转化的格式支持的-o选项有哪些,可以在命令末尾加上 -o ?
hzgatt@hzgatt:~/images$ qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2 -o ?
Supported options:
size Virtual disk size
backing_file File name of a base image
backing_fmt Image format of the base image
encryption Encrypt the image
cluster_size qcow2 cluster size
preallocation Preallocation mode (allowed values: off, metadata)
增加减少镜像大小
注意:只有raw格式的镜像才可以改变大小
hzgatt@hzgatt:~/images$ qemu-img resize vm2.raw +2GB
hzgatt@hzgatt:~/images$ ll -s
total 136K
0 -rw-r--r-- 1 hzgatt hzgatt 5.0G 6月 29 13:55 vm1.raw
136K -rw-r--r-- 1 hzgatt hzgatt 193K 6月 29 14:22 vm2.qcow2
0 -rw-r--r-- 1 hzgatt hzgatt 6.0G 6月 29 14:28 vm2.raw
hzgatt@hzgatt:~/images$ qemu-img info vm2.raw
image: vm2.raw
file format: raw
virtual size: 6.0G (6442450944 bytes)
disk size: 0
⑺ 如何使用KVM libvirt命令管理虚拟机
在Ubuntu系统上安装KVM组件服务
使用如下命令:
$ sudo apt-get install kvm qemu
$ sudo apt-get install virtinst python-libvirt virt-viewer virt-manager
安装桥接网卡
$ sudo apt-get install bridge-utils
使用qemu命令创建虚拟机的虚拟磁盘文件
使用如下命令创建一个10G的磁盘空间用于安装和允许虚拟机
$qemu-img create -f qcow2 lion.disk 10G
创建虚拟机Domain配置文件用于创建虚拟机实例
使用vim命令创建lionServer.xml配置文件,输入如下内容:
<domain type='kvm' id='1'>
<name>lion</name>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
<boot dev='cdrom'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/hxb/image/lion.disk'/>
<backingStore/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<source file='/home/hxb/iso/ubuntu.iso' />
<target dev='hdb' bus='ide'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'>
<alias name='pci.0'/>
</controller>
<controller type='ide' index='0'>
<alias name='ide'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='network'>
<mac address='52:54:00:7d:4d:d1'/>
<source network='br1' bridge='virbr1'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/3'/>
<target port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/3'>
<source path='/dev/pts/3'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<sound model='ich6'>
<alias name='sound0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='16384' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='dynamic' model='apparmor' relabel='yes'>
<label>libvirt-d828c766-9826-99a9-f495-67a3a55a5643</label>
<imagelabel>libvirt-d828c766-9826-99a9-f495-67a3a55a5643</imagelabel>
</seclabel>
</domain>
使用virsh命令创建新的虚拟机实例
使用如下命令:
定义虚拟机domain,
$virsh define lionServer.xml
启动虚拟机lion
$virsh start lion
显示系统中的虚拟机列表
$virsh list
在创建的虚拟机实例lion上安装操作系统
打开VirtualManager工具,打开虚拟机管理工具,选择lion虚拟机进行连接。
连接虚拟机lion成功后,进行系统的安装。
完成虚拟机lion的系统安装后,需要进行虚拟机domain的配置修改,将系统引导从cdrom切换到硬盘hd,重启虚拟机后,既可以正常登陆lion虚拟机。
使用如下命令进行boot配置修改:
$ virsh edit lion
...
<os>
<type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
<boot dev='cdrom'/>
</os>
...
将 <boot dev='cdrom'/> 修改为 <boot dev='hd'/>
如何删除创建的lion虚拟机
1)关闭lion虚拟机
$ virsh shutdown lion
2) 删除lion虚拟机
$virsh destroy lion
3) 取消lion domain的定义
$virsh undefine lion
⑻ 如何在 KVM 虚拟机上运行 KVM
如何在 KVM 虚拟机上运行 KVM
上次讨论了如何在 VMware ESXi 虚拟机上运行 KVM 问题,前不久有读者想 “在 kvm 上面创建个虚拟机安装 rackspace 的 openstack” 问到 “如何开启虚拟机上的 CPU VT 功能以便在 KVM 上运行 KVM”,又是一个嵌套应用虚拟机的问题:在 KVM 虚拟机上运行 KVM 虚拟机。以下步骤在 Ubuntu Server 12.04 LTS 64 bit 上测试通过。
首先检查 KVM host(母机)上是否打开了嵌套虚拟机功能(默认是开启的):
# modinfo kvm_intel | grep nested
parm: nested:bool
# cat /sys/mole/kvm_intel/parameters/nested
Y
如果上面的显示结果不是 Y 的话需要开启 nested:
# modprobe -r kvm-intel
# modprobe kvm-intel nested=1
# cat /sys/mole/kvm_intel/parameters/nested
Y
然后在 KVM guest(虚拟机)的 xml 配置文件中加入 vmx 选项,并启动虚拟机(这里用的是 Ubuntu 官方发布的 Ubuntu KVM 镜像 ubuntu-12.04-server-cloudimg-amd64-disk1.img):
# vi nestedvm.xml
...
<cpu match='exact'/>
<model>core2o</model/>
<feature policy='require' name='vmx'//>
</cpu/>
...
# virsh create nestedvm.xml
启动虚拟机后登陆并安装 KVM,执行 kvm-ok 和 modinfo 均出现错误:
# apt-get install ubuntu-virt-server
# kvm-ok
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions
KVM acceleration can be used
# modinfo kvm_intel
ERROR: modinfo: could not find mole kvm_intel
这是因为我们使用的是 ubuntu-12.04-server-cloudimg-amd64-disk1.img 这个官方虚拟机镜像,这个镜像使用的是 linux 3.2.0-23-virtual 内核,缺少 KVM 模块(kvm-intel.ko),所以我们需要改为 generic 内核:
# uname -a
Linux test 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
# apt-get install linux-generic
重启后进入虚拟机执行 kvm-ok 和 modinfo 均成功:
# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
# modinfo kvm_intel
filename: /lib/moles/3.2.0-30-generic/kernel/arch/x86/kvm/kvm-intel.ko
license: GPL
author: Qumranet
srcversion: 3BAF54F96ECD4B02292CAA0
depends: kvm
intree: Y
vermagic: 3.2.0-30-generic SMP mod_unload modversions
parm: vpid:bool
parm: flexpriority:bool
parm: ept:bool
parm: unrestricted_guest:bool
parm: emulate_invalid_guest_state:bool
parm: vmm_exclusive:bool
parm: yield_on_hlt:bool
parm: fasteoi:bool
parm: nested:bool
parm: ple_gap:int
parm: ple_window:int
现在应该可以在这个虚拟机上创建另一个虚拟机了
⑼ 安装kvm虚拟机并导入导出
1、确保支持cpu虚拟化
cat /proc/cpuinfo | egrep 'svm|vmx'
2、安装qemu-kvm、libvirt、virt-install包
yum -y install qemu-kvm libvirt virt-install
3、开启libvirtd服务病开机自启
systemctl start libvirtd && systemctl enable libvirtd
4、创建一个磁盘文件
qemu-img create -f qcow2 ./centos7-kvm.qcow2 10G
5、创建虚拟机。类型为kvm,名称随意,内存1G,镜像文件指定位置,磁盘文件就是步骤4中的,网络默认,图形选择vnc
virt-install --virt-type kvm --name centos7-2020 --ram 1024 --cdrom=/home/kvm/CentOS-7-x86_64-Minimal-2003.iso --disk path=/home/kvm/centos7-kvm.qcow2 --network network=default --graphic vnc,listen=0.0.0.0 --noautoconsole
6、宿主机安装vnc server
yum -y install tigervnc-server tigervnc vnc vnc-server
systemctl daemon-reload
7、执行下述命令设置密码
vncserver
8、启动服务(我自己的环境这个服务没起来,但还是可以用的)
systemctl start vncserver@gao:1
9、关闭防火墙和selinux
10、vnc客户端连接宿主机5901,然后正常安装虚拟机
导出虚拟机
——本实验是将qcow2格式导出为qcow2
1、一条命令即可
-从表示压缩,-O表示导出格式,111.qcow2位导出后的文件
qemu-img convert -c -O qcow2 centos7-kvm.qcow2 111.qcow2
导入虚拟机
——使用virt-manager工具导入
1、安装virt-manager
yum -y install virt-manager
2、打开
virt-manager
3、新建虚拟机,选择镜像导入
选择对应的111.qcow2文件
配置cpu、内存、网络等信息
完成新的虚拟机创建
ok