centos7环境,kvm命令行模式部署虚拟机

KVM简介

KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。

KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。


1).KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
2).是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
3).它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
4).KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
5).KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
6).在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。

kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行)。
1).要求cpu 必须支持虚拟化。
2).性能:作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。
3).cpu使用率控制很好。
4).控制上比较简洁,功能比较丰富:比如使用“无敌功能”所有更改指向内存,你的镜像永远保持干净。“母镜像”功能让你拥有n个独立快照点。还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多——但是还没有达到商业应用的水平。
KVM内存管理
KVM继承了Linux系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对NUMA的支持能够让虚拟机高效访问更大的内存空间等。
KVM基于Intel的EPT(ExtendedPage Table)或AMD的RVI(Rapid Virtualization Indexing)技术可以支持更新的内存虚拟功能,这可以降低CPU的占用率,并提供较好的吞吐量。
此外,KVM还借助于KSM(Kernel Same-pageMerging)这个内核特性实现了内存页面共享。KSM通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时,KSM会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同GuestOS的虚拟机之间出现相同内存页面的概率是很高的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此,KSM技术可以降低内存占用进而提高整体性能。


1,环境准备

4G,2核
#关闭防火墙和selinux
[root@ c7-41 ~] systemctl stop firewalld
[root@ c7-41 ~] systemctl disable firewalld
[root@ c7-41 ~] setenforce 0
[root@ c7-41 ~] sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

centos7环境,kvm命令行模式部署虚拟机_第1张图片
检查cpu是否支持虚拟化

[root@ c7-41 ~] egrep '(vmx|svm)' /proc/cpuinfo

centos7环境,kvm命令行模式部署虚拟机_第2张图片
2,安装所需组件kvm用户态模块

[root@ c7-41 ~] yum -y install qemu-kvm qemu-kvm-tools libvirt
#libvirt用来管理kvm
#kvm属于内核不用安装
[root@ c7-41 ~] systemctl start libvirtd #启动libvirt
[root@ c7-41 ~] systemctl enable libvirtd #添加开机自启

3,进入opt,上传镜像,也可以使用dd命令,复制系统镜像,挂载到光盘上

[root@ c7-41 ~] cd /opt/
[root@ c7-41 opt] ls
CentOS-7-x86_64-DVD-1908.iso
[root@ c7-41 opt] if=/dev/cdrom of=/opt/CentOS-7-x86_64-DVD-1908.iso

也可以使用dd命令,复制系统镜像,挂载到光盘上

[root@ c7-41 opt] dd if=/dev/cdrom of=/opt/CentOS-7-x86_64-DVD-1908.iso

4,创建磁盘

[root@ c7-41 opt] qemu-img create -f qcow2 /opt/c77.qcow2 8G
Formatting '/opt/c77.qcow2', fmt=qcow2 size=8589934592 encryption=off cluster_size=65536 lazy_refcounts=off 
[root@ c7-41 opt] ll
total 4554948
-rw-r--r-- 1 root root     197120 May 13 14:11 c77.qcow2
-rw-r--r-- 1 root root 4664066048 May 13 14:08 CentOS-7-x86_64-DVD-1908.iso

5,安装虚拟机

[root@ c7-41 opt] yum -y install virt-install
[root@ c7-41 opt] virt-install --virt-type=kvm --name=c77 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7-x86_64-DVD-1908.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/c77.qcow2,size=6,format=qcow2

Starting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

相关参数注释centos7环境,kvm命令行模式部署虚拟机_第3张图片

[root@ c7-41 opt] virsh list --all #查看虚拟机运行状态
 Id    Name                           State
----------------------------------------------------
 1     c77                            running

6,使用vnc登陆,开始设置安装虚拟机
centos7环境,kvm命令行模式部署虚拟机_第4张图片
选择语言
centos7环境,kvm命令行模式部署虚拟机_第5张图片选择时区
centos7环境,kvm命令行模式部署虚拟机_第6张图片
centos7环境,kvm命令行模式部署虚拟机_第7张图片
最小化安装,可以安装在几个工具centos7环境,kvm命令行模式部署虚拟机_第8张图片centos7环境,kvm命令行模式部署虚拟机_第9张图片
关闭kdump
centos7环境,kvm命令行模式部署虚拟机_第10张图片
centos7环境,kvm命令行模式部署虚拟机_第11张图片
centos7环境,kvm命令行模式部署虚拟机_第12张图片
centos7环境,kvm命令行模式部署虚拟机_第13张图片
centos7环境,kvm命令行模式部署虚拟机_第14张图片
centos7环境,kvm命令行模式部署虚拟机_第15张图片
开始安装
centos7环境,kvm命令行模式部署虚拟机_第16张图片
设置用户密码
centos7环境,kvm命令行模式部署虚拟机_第17张图片
centos7环境,kvm命令行模式部署虚拟机_第18张图片
安装完成,重启
centos7环境,kvm命令行模式部署虚拟机_第19张图片
7,重启后会断掉,在服务器上执行启动命令

[root@ c7-41 opt] virsh start c77 #c77是创建虚拟机的名字
Domain c77 started

重新登录vnc
centos7环境,kvm命令行模式部署虚拟机_第20张图片
8,查看网桥,和br0网卡

[root@ c7-41 ~] brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.525400221bf0	yes		virbr0-nic
							vnet0
[root@ c7-41 ~] ifconfig virbr0
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:22:1b:f0  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

9,手动添加临时br0网卡

#安装所需组件
[root@ c7-41 ~] yum -y install bridge-utils
#手动添加临时br0网卡
[root@ c7-41 ~] brctl addbr br0
[root@ c7-41 ~] brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000000000000	no		
virbr0		8000.525400221bf0	yes		virbr0-nic
							vnet0
#执行下步操作,会导致xshell与宿主机断开连接,
[root@ c7-41 ~] brctl addif br0 ens33
#删除ens33的IP地址
[root@ c7-41 ~] ip addr del dev ens33 10.0.0.41/24 
#配置br0的ip地址并启动设备
[root@ c7-41 ~] ifconfig br0 10.0.0.41/24 up 
#重新加入默认网关
[root@ c7-41 ~] route add default gw 10.0.0.254 

10,重新连接xshell查看是否生效

[root@ c7-41 ~] route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 br0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 ens37
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 ens37
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
#测试外网
[root@ c7-41 ~] ping -c 1 qq.com
PING qq.com (58.250.137.36) 56(84) bytes of data.
64 bytes from 58.250.137.36 (58.250.137.36): icmp_seq=1 ttl=128 time=96.0 ms

11,手动配置永久生效网卡

[root@ c7-41 ~] cd /etc/sysconfig/network-scripts/
#将网卡做一个备份
[root@ c7-41 network-scripts] cp ifcfg-ens33 /root
#配置第一块网卡ens33
[root@ c7-41 network-scripts] vim ifcfg-ens33
[root@ c7-41 network-scripts] cat ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no 
#配置br0网卡
[root@ c7-41 network-scripts] cat> ifcfg-br0<<EOF
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.41
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
NM_CONTROLLED=no
EOF
#重启网络
[root@ c7-41 network-scripts] systemctl restart network

12,在vnc上配置虚拟机网卡

[root@localhost ~] vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.100
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=1.1.1.1
#重启网络
[root@localhost ~] systemctl restart network

查看网卡
centos7环境,kvm命令行模式部署虚拟机_第21张图片
13,安装xorg-x11

#查看sshd是否开启X11转发
[root@ c7-41 ~] grep X11Forwarding /etc/ssh/sshd_config --colour
X11Forwarding yes
#	X11Forwarding no
#安装x11组件
[root@ c7-41 ~] yum -y install xorg-x11-font-utils.x86_64 xorg-x11-server-utils.x86_64 xorg-x11-utils.x86_64 xorg-x11-xauth.x86_64 xorg-x11-xinit.x86_64 xorg-x11-drv-ati-firmware

14,安装libvirt

#libvirt是管理虚拟机的API库,支持kvm虚拟机,可以管理Xen等方案下的虚拟机
[root@ c7-41 ~] yum -y install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer mesa-libglapi  
#因为此主机是服务器,没有图形化界面,如需virt-manager图形化安装安装虚拟机,需要安装x-Windows
[root@ c7-41 ~] yum -y install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils
#重启libvirt服务
[root@ c7-41 ~] systemctl restart libvirtd.service

15,配置xshell
安装Xming后,打开xshell,在连接属性的tunneing中勾选Forwarding x11 connection to选项,可以正常打开virt-manager图形界面。
centos7环境,kvm命令行模式部署虚拟机_第22张图片
16,启动virt-manager

#断开xshell,重启连接可以自动弹出kvm管理软件
[root@ c7-41 ~] virt-manager 

centos7环境,kvm命令行模式部署虚拟机_第23张图片

#如果出现乱码,可以安装此工具
[root@ c7-41 ~] yum -y install dejavu-sans-mono-fonts 

点击鼠标右键,关闭虚拟机centos7环境,kvm命令行模式部署虚拟机_第24张图片
双击c77虚拟机
centos7环境,kvm命令行模式部署虚拟机_第25张图片
会进入到此界面
centos7环境,kvm命令行模式部署虚拟机_第26张图片
查看虚拟机详细信息
centos7环境,kvm命令行模式部署虚拟机_第27张图片
配置网卡,为桥接状态centos7环境,kvm命令行模式部署虚拟机_第28张图片
调配虚拟机开机自启
centos7环境,kvm命令行模式部署虚拟机_第29张图片
设置完成,返回图形化界面。

启动虚拟机
centos7环境,kvm命令行模式部署虚拟机_第30张图片
centos7环境,kvm命令行模式部署虚拟机_第31张图片
17,虚拟机启动成功
centos7环境,kvm命令行模式部署虚拟机_第32张图片
连接xshell
centos7环境,kvm命令行模式部署虚拟机_第33张图片
测试外网centos7环境,kvm命令行模式部署虚拟机_第34张图片
部署成功!

你可能感兴趣的:(kvm)