此文已由作者刘超授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
看这一篇之前,请保证看过以下文章:
相信大家都使用过VirtualBox创建过虚拟机,通过界面点点就能创建一个能够上网的虚拟机,如果使用KVM,就没有这么简单了,一切都得自己来做,不过这个过程可以了解KVM虚拟机的创建原理。
首先要给虚拟机起一个名字,在KVM里面就是-name ubuntutest
设置一个内存大小,在KVM里面就是-m 1024
创建一个虚拟硬盘,对于VirtualBox是VDI格式,对于KVM则不同。
硬盘有两种格式,一个是动态分配,也即开始创建的时候,看起来很大,其实占用的空间很少,真实有多少数据,才真的占用多少空间。一个是固定大小,一开始就占用指定的大小。
硬盘的大小为8G
在KVM中,创建一个虚拟机镜像,大小为8G,其中qcow2格式为动态分配,raw格式为固定大小。
qemu-img create -f qcow2 ubuntutest.img 8G
将ubuntu的ISO挂载为光盘,在KVM里面-cdrom ubuntu-14.04-server-amd64.iso
创建一个网络,有时候会选择桥接网络,有时候会选择NAT网络,这个在KVM里面只有自己配置了。
接下来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,也能看到安装的过程。
按照普通安装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
(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的桥接网络模式,这个连接过程和刚才手动做的一样
更多网易技术、产品、运营经验分享请点击。