大家好,又见面了,我是你们的朋友全栈君。
virsh xml创建kvm虚拟机
准备工作
代码语言:javascript复制sudo apt-get update
sudo apt-get install qemu-kvm
sudo apt-get install vnc4server
sudo apt-get install bridge-utils
增加网卡内容如下:
代码语言:javascript复制root@zhangji16vm:/home/prj1# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo #原来就有
iface lo inet loopback #原来就有
auto br0
iface br0 inet loopback
bridge_ports ens33 tap0
bridge_stp off
bridge_maxwait 0
代码语言:javascript复制sudo vim /etc/NetworkManager/NetworkManager.conf
managed=false改成managed=true
重启下网络服务
代码语言:javascript复制sudo systemctl restart NetworkManager
sudo systemctl restart networking
安装kvm虚拟机,(启动一下/usr/sbin/libvirtd) 中间出现问题,上网查一下,就可以解决
代码语言:javascript复制virsh define setup.xml
virsh start node-br0
代码语言:javascript复制vnc客户端连接过去,安装镜像到虚拟磁盘xxxx.qcow2
提供一个xml模板,以供使用。(网上有一些模板是不能用的,害人不浅) 事后补充,网上的xml也不一定错,我的也不一定对,我发现具体到每一个pc上,可能xml不是万能的,可以考虑用virt-install命令行创建,再导出符合本地的xml,进行按需要修改xml
代码语言:javascript复制root@zhangji16vm:/home/prj1# cat setup.xml
<domain type='kvm'>
<name>node-br0</name> //虚拟机名称
<memory unit='GiB'>2</memory> //最大内存,单位M
<currentMemory unit='GiB'>2</currentMemory> //可用内存,单位M
<vcpu>2</vcpu> //虚拟cpu个数
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='cdrom'/> //ISO文件启动
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator> //KVM启动程序,ubuntu版本
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/prj1/ubuntu2.qcow2'/> //目的镜像路径
<target dev='sda' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘,建议使用
</disk>
<controller type='scsi' index='0' model='virtio-scsi'/> //使用virtio-scsi配置,必须
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/root/vm_prj1/ubuntu.iso'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
<mac address='00:17:3E:64:01:00'/> //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
</devices>
</domain>
去vnc官网下载一个免费版本的vnc客户端,连接过去,ip:0 或者自己查一下端口号
代码语言:javascript复制virsh vncdisplay node-br0
安装完成以后,不要重启,直接关掉,并关闭虚拟机
代码语言:javascript复制virsh destroy node-br0
virsh undefine node-br0
然后才是真正的开始
复制一个setup.xml 把启动方式从光盘改成 ‘hd’即可 //因为已经到虚拟磁盘了,所以不要再从光盘启动了
桥接也是可以正常上网的 nice
想一想为什么 win vmware kvm_ubuntu在结构中,vmware的宿主机上建立的kvm_ubuntu之间是桥接,但是win能ping 通kvm_ubuntu 却ping不通vmware装的系统?
看一下网络关系
代码语言:javascript复制root@zhangji16vm:/home/prj1# ifconfig
br0 Link encap:以太网 硬件地址 00:0c:29:49:51:d4
inet6 地址: fe80::20c:29ff:fe49:51d4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:2997 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:42 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:259712 (259.7 KB) 发送字节:4580 (4.5 KB)
ens33 Link encap:以太网 硬件地址 00:0c:29:49:51:d4
inet 地址:192.168.88.217 广播:192.168.88.255 掩码:255.255.255.0
inet6 地址: fe80::a392:f57c:95e9:efec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:126623 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:28976 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:178167251 (178.1 MB) 发送字节:1978156 (1.9 MB)
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:113351 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:113351 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:172586538 (172.5 MB) 发送字节:172586538 (172.5 MB)
virbr0 Link encap:以太网 硬件地址 00:00:00:00:00:00
inet 地址:192.168.122.1 广播:192.168.122.255 掩码:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 跃点数:1
接收数据包:67 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:9 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:8588 (8.5 KB) 发送字节:998 (998.0 B)
vnet0 Link encap:以太网 硬件地址 fe:12:3e:64:01:00
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:1491 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:1482 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:219290 (219.2 KB) 发送字节:1052331 (1.0 MB)
root@zhangji16vm:/home/prj1# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c294951d4 no ens33
vnet0
virbr0 8000.000000000000 yes
root@zhangji16vm:/home/prj1# route
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
default 192.168.88.2 0.0.0.0 UG 100 0 0 ens33
192.168.88.0 * 255.255.255.0 U 100 0 0 ens33
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169802.html原文链接:https://javaforall.cn