参考连接
Ubuntu 18.04 LTS安装KVM虚拟机
如何在 Ubuntu 18.04 服务器上安装和配置 KVM
KVM平常管理和克隆
KVM详解html
首先须要检查一下CPU是否支持虚拟化,执行一下命令来检查/proc/cpuinfo文件中是否又虚拟化相关的字眼,若是有的话代表CPU支持虚拟化技术。linux
egrep -c '(svm|vmx)' /proc/cpuinfo
上面命令执行结果若是返回0,表示CPU不支持虚拟化技术。固然主板BIOS中的虚拟化技术也可能不是默认开启的,若是没有开启须要手动开启一下。ubuntu
#执行如下命令安装KVM sudo apt update sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager #将libvirtd添加自启动 sudo systemctl start libvirtd.service sudo systemctl enable libvirtd.service
KVM安装完成后,首先须要进行网络设定,KVM支持四种网络模式:segmentfault
原理:
在桥接模式下,宿主机和虚拟机共享同一个物理网络设备,虚拟机中的网卡和物理机中的网卡是平行关系,因此虚拟机能够直接接入外部网络,虚拟机和宿主机有平级的IP。服务器
本来宿主机是经过网卡eth0链接外部网络的,网桥模式会新建立一个网桥br0,接管eth0来链接外部网络,而后将宿主机和虚拟机的网卡eth0都绑定到网桥上。网络
编辑/etc/network/interfaces,增长以下内ide
auto br0 iface br0 inet dhcp # 网桥使用DHCP模式,从DHCP服务器获取IP bridge_ports enp3s0 # 网卡名称,网桥建立前链接外部的网卡,可经过ifconfig命令查看,有IP地址的就是 bridge_stp on # 避免数据链路出现死循环 bridge_fd 0 # 将转发延迟设置为0
接下来须要重启networking服务(若是是经过SSH链接到宿主机上的,这一步会致使网络中断,若是出现问题可能致使连不上宿主机,最好在宿主机上直接操做)ui
systemctl restart networking.service #使用ifconfig命令查看IP是否从enp3s0(网桥建立前的网卡)变到了br0上,若是没有变化则须要重启。若是宿主机ip已经成功变到网桥上,而且宿主机能正常上网而虚拟机获取不到ip,多是ufw没有容许ip转发致使的,编辑/etc/default/ufw容许ip转发。 DEFAULT_FORWARD_POLICY="ACCEPT" #重启ufw服务让设置生效 systemctl restart ufw.service
在作修改以前,我本地的ubuntu服务器已经添加静态IP,配置以下.net
cat /etc/netplan/50-cloud-init.yaml # This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: enp5s0: dhcp4: false addresses: [192.168.40.20/24] gateway4: 192.168.40.1 nameservers: addresses: - 223.5.5.5 - 114.114.114.114 - 192.168.40.1 enp6s0: dhcp4: true nameservers: addresses: - 223.5.5.5 - 223.6.6.6 version: 2
参考参考文章2的描述,将enp5s0桥接到br0网桥,修改后的配置文件以下,我本地有两个物理网卡,这里将enp5s0用来做桥接,enp6s0保留命令行
cat /etc/netplan/50-cloud-init.yaml # This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: enp5s0: dhcp4: false enp6s0: dhcp4: true nameservers: addresses: - 223.5.5.5 - 223.6.6.6 bridges: kvmbr0: interfaces: [enp5s0] dhcp4: no addresses: [192.168.40.20/24] gateway4: 192.168.40.1 nameservers: addresses: [192.168.40.1,223.5.5.5,223.6.6.6,114.114.114.114] version: 2
本文主要介使用kvm命令行来建立虚拟机的流程
linuxtechi@kvm-ubuntu18-04:~$ sudo virt-install -n DB-Server --description "Test VM for Database" --os-type=Linux --os-variant=rhel7 --ram=1096 --vcpus=1 --disk path=/var/lib/libvirt/images/dbserver.img,bus=virtio,size=10 --network bridge:br0 --graphics none --location /home/linuxtechi/rhel-server-7.3-x86_64-dvd.iso --extra-args console=ttyS0
或
#不建立虚拟磁盘,一次性建立KVM虚拟机(默认为qcow2磁盘格式,网络为桥接模式,在此前最好安装virt-manager): virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 2048 \ -vcpus=1 -s 20 -c /vm/iso/CentOS-7-x86_64-DVD-1511.iso --hvm \ --os-type=linux -f /vm/CentOS-7-x86_64-tmp.img --graphics vnc,listen=0.0.0.0 \ --noautoconsole