KVM (全称是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块。 使用 KVM 可允许多个包括 Linux 和 Windows 每个虚拟机有私有的硬件,包括网卡、磁盘以及图形适配卡等。
1.查看系统是否支持KVM
在开始安装KVM之前,我们需要确保CPU支持VMX/SVM硬件虚拟化。
$ egrep -c '(vmx|svm)' /proc/cpuinfo
如果输出大于等于1,表示系统可安装KVM。如果输出为0,表示系统不支持KVM。
2.安装KVM
$ sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker
安装确认:
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
3.配置桥接网络
$ sudo vim /etc/network/interfaces
添加如下内容:
auto br0
iface br0 inet static
address 10.18.44.26
netmask 255.255.255.192
broadcast 10.18.44.63
dns-nameservers 10.0.80.11 10.0.80.12
# set static route for LAN
post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.18.44.1
post-up route add -net 161.26.0.0 netmask 255.255.0.0 gw 10.18.44.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
# br1 setup with static wan IPv4 with ISP router as a default gateway
auto br1
iface br1 inet static
address 208.43.222.51
network 255.255.255.248
netmask 255.255.255.0
broadcast 208.43.222.55
gateway 208.43.222.49
bridge_ports eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
重启networking服务:
$ sudo systemctl restart networking
查看网络接口:
$ ifconfig
br0 Link encap:Ethernet HWaddr 26:d4:a9:24:7e:4b
inet addr:10.18.44.26 Bcast:10.18.44.63 Mask:255.255.255.192
inet6 addr: fe80::24d4:a9ff:fe24:7e4b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:5530 (5.5 KB)
br1 Link encap:Ethernet HWaddr 52:05:76:68:a9:ae
inet addr:208.43.222.51 Bcast:208.43.222.55 Mask:255.255.255.0
inet6 addr: fe80::5005:76ff:fe68:a9ae/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:6802 (6.8 KB)
virbr0 Link encap:Ethernet HWaddr 52:54:00:ef:bb:a4
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
4.创建虚拟机
如果宿主系统Ubuntu是带GUI的本地机器,你可以使用 virt-manager(http://www.linuxdiyf.com/linux/21892.html) 创建管理虚拟机:
virt-manager也支持远程连接:
如果宿主系统Ubuntu是不带GUI的远程服务器,我们可以使用命令创建虚拟机。例如,要创建CentOS系统的虚拟机:
首先,下载CentOS镜像:
$ cd /var/lib/libvirt/boot/
$ sudo wget https://mirrors.kernel.org/centos/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso
创建CentOS虚拟机:
$ sudo virt-install \
--virt-type=kvm \
--name centos7 \
--ram 1024 \ # 1G内存
--vcpus=1 \ # 1个CPU核心
--os-variant=rhel7 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1511.iso \
--network=bridge=br0,model=virtio \ # 桥接网络
--network=bridge=br1,model=virtio \
--graphics vnc \ # vnc图形
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2 # 40G硬盘
查看virt-install帮助:
$ man virt-install
配置客户端可通过ssh进行vnc登录KVM:
$ sudo virsh dumpxml centos7
# <graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'>
记住上面的端口号。
建立本地机器到远程服务器的SSH管道,在本地机器上执行:
$ ssh your_username@32.123.22.4 -L 5901:127.0.0.1:5901
使用VNC客户端连接:
连接上之后,你应该能看到CentOS安装向导:
安装完成之后,你就可以使用 virt-manager(http://www.linuxdiyf.com/linux/21892.html) 对虚拟机进行管理了。
其它常用命令
$ sudo virsh list # 列出运行的虚拟机
$ sudo virsh shutdown centos7 # 关闭虚拟机
$ sudo virsh start centos7 # 启动虚拟机
$ sudo virsh suspend centos7 # 挂起虚拟机
$ sudo virsh reboot centos7 # 重启
$ sudo virsh reset centos7 # 重置
# 删除虚拟机
$ sudo virsh undefine centos7
$ sudo virsh destroy centos7
# 查看帮助
$ virsh help
# 列出可使用的系统名
osinfo-query os
要获得更多信息,访问:http://www.linux-kvm.org