裸用KVM创建虚拟机,体验virtualbox为你做的10件事情

以下内容已屏蔽图片优化访问速度
看这一篇之前,请保证看过以下文章:
我是虚拟机内核我困惑?!

Qemu,KVM,Virsh傻傻的分不清



相信大家都使用过VirtualBox创建过虚拟机,通过界面点点就能创建一个能够上网的虚拟机,如果使用KVM,就没有这么简单了,一切都得自己来做,不过这个过程可以了解KVM虚拟机的创建原理。


首先要给虚拟机起一个名字,在KVM里面就是-name ubuntutest


[IMG]


设置一个内存大小,在KVM里面就是-m 1024


[IMG]


创建一个虚拟硬盘,对于VirtualBox是VDI格式,对于KVM则不同。


[IMG]


硬盘有两种格式,一个是动态分配,也即开始创建的时候,看起来很大,其实占用的空间很少,真实有多少数据,才真的占用多少空间。一个是固定大小,一开始就占用指定的大小。
[IMG]
硬盘的大小为8G
[IMG]


在KVM中,创建一个虚拟机镜像,大小为8G,其中qcow2格式为动态分配,raw格式为固定大小。
qemu-img create -f qcow2 ubuntutest.img 8G


将ubuntu的ISO挂载为光盘,在KVM里面-cdrom ubuntu-14.04-server-amd64.iso
[IMG]
创建一个网络,有时候会选择桥接网络,有时候会选择NAT网络,这个在KVM里面只有自己配置了。
[IMG]


接下来Virtualbox就会有一个界面,可以看到安装的整个过程,在KVM里面,我们用VNC来做。参数为-vnc :19


于是我们也可以创建KVM虚拟机了,用下面的命令:
qemu-system-x86_64 -enable-kvm-name ubuntutest  -m 2048 -hda ubuntutest.img -cdromubuntu-14.04-server-amd64.iso -boot d -vnc :19


启动了虚拟机后,连接VNC,也能看到安装的过程。
[IMG]


按照普通安装ubuntu的流程安装好ubuntu,然后shutdown -h now关闭虚拟机。


接下来可以对KVM创建桥接网络了,这个就要复杂些,Virtualbox还是做了很多事情的。



(1) 在Host机器上创建bridge br0
brctl addbr br0



(2) 将br0设为up

ip link set br0 up


(3) 创建tap device
tunctl -b


(4) 将tap0设为up
ip link set tap0 up



(5) 将tap0加入到br0上
brctl addif br0 tap0



(6)启动虚拟机, 虚拟机连接tap0,tap0连接br0
qemu-system-x86_64 -enable-kvm-name ubuntutest  -m 2048 -hda ubuntutest.qcow2 -vnc :19 -net nic,model=virtio -nettap,ifname=tap0,script=no,downscript=no



(7)虚拟机启动后,网卡没有配置,所以无法连接外网,先给br0设置一个ip
ifconfig br0 192.168.57.1/24



(8) VNC连上虚拟机,给网卡设置地址,重启虚拟机,可ping通br0
[IMG]


[IMG]


(9)要想访问外网,在Host上设置NAT,并且enable ip forwarding,可以ping通外网网关
# sysctl -p

net.ipv4.ip_forward = 1


sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


(10) 如果DNS没配错,可以进行apt-get update


下图是Vmware的桥接网络模式,这个连接过程和刚才手动做的一样
[IMG]
抖音的对手,不再是腾讯……? 她出身寒门,做过工人,如今身价615亿!谁说女首富都靠小三上位? 借款2万,就能一口口吃掉你350万的房子!高校退休老师深陷“套路贷”,人民法院怒了! 2019年,房企融资大幅回暖,意味着什么? 双11最完整版回顾出炉!一共破了6个纪录
好看吗?
总执行时间0.07588887214660645,文章查询时间0.04926753044128418,分类查询时间0.009983539581298828,其他脚本0.00027370452880859375,模板渲染0.016364097595214844