由于没有物理机可用,在自己的VMware Workation中搭建完成。
首先查看VMware Workation是否支持虚拟化,把红框内打钩即可。
虚拟化开启并安装centos系统,建议centos安装64bit。我的环境用的是centos7。进入系统,首先查看服务器版本以及是否支持虚拟化,可以使用如下命令:
###查看系统版本
# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
###查看服务器是否支持虚拟化
# cat /proc/cpuinfo |grep vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid
###出现该信息证明服务器支持虚拟化
安装kvm以及需要的依赖包,使用如下命令。
# yum install -y qemu-kvm qemu-key-tools virt-manager libvirt virt-install python-virtinst bridge-utils
以上安装完毕后,我们检测kvm模块是否安装,可以使用如下命令:
# lsmod |grep kvm kvm_intel 148081 0 kvm 461126 1 kvm_intel
###证明kvm模块已安装成功
kvm,只是Linux内核的一个模块,不需要安装,只需要加载。加载命令如下
# modprobe kvm
# modprobe kvm_intel
也可以如下加载kvm模块,可以使用如下命令:
# virsh -c qemu:///system list ###此命令需要重启服务器后使用,否则会报错 error: failed to connect to the hypervisor error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
# reboot
# virsh -c qemu:///system list
Id Name State
---------------------------------------------------- ###证明kvm安装成功
以上是KVM的安装。下面我们开始来配置KVM并安装一个虚拟机。
因为虚拟机中网络,我们一般都是和公司的其他服务器是同一个网段,所以我们需要把KVM服务器的网卡配置成桥接模式。这样的话KVM的虚拟机就可以通过该桥接网卡和公司内部分其他服务器处于同一网段。
有关网卡的桥接模式,查找相关资料如下:
其实我们在虚拟机搭建的时候,我们最终关心的网卡是: eth0, br0, vnet0,vnet1…
其中eth0是我们服务器原来的物理网卡,而br0是我们虚拟出来的网桥设备,而vnetXXX就是桥接映射到虚拟机里面用到的网卡。
当配置完毕之后,我们使用ifconfig命令查看起来的话,会发现eth0是没有IP地址,而br0仿佛是虚拟出来的一个原来eth0的访问接口,它具有IP地址,可以代替原来的eth0被访问。
而vnetXX的地址可以在建立虚拟机之后在虚拟机里面配置,桥接后可以被外部访问。
注意:将已有的物理网卡添加到网桥,此时物理网卡eth0工作于混杂模式,所以不需要IP地址,因为网桥是工作在链路层的。br0就提供了IP地址,用来模拟原来的物理网卡的访问接口.
关于混杂模式:
根据以太网的原理,包是在整个子网里面广播发送的,当网卡发现这个数据帧不是发给自己的也不是广播包的时候,就直接把它丢掉,而不传送到上层内核去处理;
而当网卡处于混杂模式的时候,网卡就不会丢掉帧,而是全部向上提交到内核,让内核处理这些帧结构。通常的,混杂模式使用来进行网络调试的,不是正常的工作状态。
配置桥接网卡,我们可以通过现在服务器的网卡eth0来配置。把eth0网卡的配置文件复制一份并命令为br0,可以通过如下命令进行。
编辑网卡:
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
# vim /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge DEVICE=br0 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=10.0.0.90 GATEWAY=10.0.0.2 NETMASK=255.255.255.0 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BRIDGE=br0
ONBOOT=yes
TYPE=Ethernet
重启网卡使之生效。
# systemctl restart network.service
开启转发功能并修改ulimit参数
# echo 1 > /proc/sys/net/ipv4/ip_forward # /bin/echo "* soft nproc 65500" >>/etc/security/limits.conf # /bin/echo "* hard nproc 65500" >>/etc/security/limits.conf # /bin/echo "* soft nofile 65500" >>/etc/security/limits.conf # /bin/echo "* hard nofile 65500" >>/etc/security/limits.conf
创建ISO镜像:
# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso
创建虚拟机硬盘:
# qemu-img create -f qcow2 /kvmdir/test.img 4G
创建虚拟机:
# virt-install --name Centos --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.1.iso --disk path=/kvmdir/test.img --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole Starting install... Creating domain... | 0 B 00:00:07 Domain installation still in progress. You can reconnect to the console to complete the installation process.
各参数说明:
--name Centos ###虚拟机名字 --virt-type kvm ###虚拟机类型 --ram 1024 ###虚拟机内存 --cdrom=/opt/CentOS-7.1.iso ###镜像地址 --disk path=/kvmdir/test.img ###虚拟机安装位置 --network=default ###默认网络配置 --graphics vnc,listen=0.0.0.0 ###监听所有IP --vcpus 5 ###可以使用cpu个数 --vcpus 5,maxcpus=10 ###可以使用5颗cpu,最大支持10颗cpu
打开VNC客户端,输入本机ip:5900(第一个默认就是5900,第二个是5901,以此类推),可连接到所通过vmvare创建的kvm虚拟机上,然后就是安装Centos7的过程。
到此,kvm虚拟机安装完成。