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