KVM虚拟化使用详解

栏目: 服务器 · 发布时间: 5年前

内容简介:Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。虚拟化是云计算的基础。虚拟化可以满足在一台物理的服务器上运行多个虚拟机。虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

KVM介绍

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自 Linux 2.6.20之后集成在Linux的各个主要发行版本中。

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。

虚拟化是云计算的基础。虚拟化可以满足在一台物理的服务器上运行多个虚拟机。虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。

KVM虚拟化使用详解

虚拟化分类

虚拟化分为两种:1型虚拟化和2型虚拟化。

1型虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。

KVM虚拟化使用详解

2型虚拟化

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。

KVM虚拟化使用详解

理论上讲:

1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;

2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

部署KVM

环境准备

KVM虚拟化使用详解

确认开启虚拟化

[root@ken ~]# grep -E "(vmx)|(svm)" /proc/cpuinfo  
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap xsaveopt clzero irperf xsaveerptr ibpb arat nptsvm_lock nrip_save vmcb_clean flushbyasid decodeassists 

第一步:下载相关软件

[root@ken ~]# yum install libvirt virt-install qemu-kvm -y 

libvirt : KVM 的管理工具。Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh

qemu-kvm:KVM 和 QEMU 的核心包,提供 CPU、内存和 IO 虚拟化功能

virt-install是一个命令行工具,它能够为KVM、Xen或其它支持libvrit API的hypervisor创建虚拟机并完成GuestOS安装

第二步:启动libvirt

[root@ken ~]# systemctl restart libvirtd 

第三步:创建磁盘

[root@ken ~]# qemu-img create -f raw /ken/centos7-x86_64.raw 10G 
Formatting '/ken/centos7-x86_64.raw', fmt=raw size=10737418240  

第四步:创建虚拟机

[root@ken ~]# virt-install --virt-type kvm --name Centos7-x86_64 --ram 1024 --cdrom=/tmp/CentOS-7.3-x86_64-Minimal-1511.iso --disk path=/ken/centos7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 

注意:需要上传一个镜像到/tmp目录下,其他目录也可以,上面指定即可

第五步:快速使用VNC进行连接

ip地址输入虚拟机ip

KVM虚拟化使用详解

开始安装系

KVM虚拟化使用详解

定制化系统

KVM虚拟化使用详解

开始安装

KVM虚拟化使用详解

第六步:查看已经创建的虚拟机

[root@ken ~]# virsh list --all

Id Name State

- Centos7-x86_64 shut off

第七步:启动虚拟机

[root@ken ~]# virsh start Centos7-x86_64 
Domain Centos7-x86_64 started 
[root@ken ~]# virsh list --all 
 Id Name State 
---------------------------------------------------- 
 2 Centos7-x86_64 running 

第八步:使用VNC再次连接

现在就可以登录进去我们创建的虚拟机里面去了

KVM虚拟化使用详解

第九步:ssh连接

宿主机上连接

首先查看新建虚拟机IP地址

KVM虚拟化使用详解

宿主机进行连接

[root@ken ~]# ssh 192.168.122.198 
The authenticity of host '192.168.122.198 (192.168.122.198)' can't be established. 
ECDSA key fingerprint is SHA256:t+jpHwwHJk8mo2XZB93H9afhSVy7BCMvLsvqsUF+Obg. 
ECDSA key fingerprint is MD5:48:d5:9e:db:f8:bb:5e:56:c1:c8:1d:a2:4b:45:d6:fc. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added '192.168.122.198' (ECDSA) to the list of known hosts. 
root@192.168.122.198's password:  
Last login: Mon Mar 18 21:06:27 2019 
[root@localhost ~]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN  
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
 inet 127.0.0.1/8 scope host lo 
 valid_lft forever preferred_lft forever 
 inet6 ::1/128 scope host  
 valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
 link/ether 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff 
 inet 192.168.122.198/24 brd 192.168.122.255 scope global dynamic eth0 
 valid_lft 3510sec preferred_lft 3510sec 
 inet6 fe80::5054:ff:fe89:17d7/64 scope link  
 valid_lft forever preferred_lft forever 

登录退出虚拟机

第一步:在创建的KVM虚拟机里面执行如下的命令

[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"

第二步:重启KVM虚拟机

KVM虚拟化使用详解

第三步:使用virsh console登录登录虚拟机

执行virsh console 虚拟机名称

[root@ken ~]# virsh console Centos7-x86_64 
Connected to domain Centos7-x86_64 
Escape character is ^] #到这步再次按回车 
CentOS Linux 7 (Core) 
Kernel 3.10.0-327.el7.x86_64 on an x86_64 
localhost login: root #输入用户 
Password: #密码 
Last login: Mon Mar 18 22:19:47 on ttyS0 
[root@localhost ~]#  

第四步:退出KVM虚拟机

按这两个组合键,按ctrl加上中括号的右边: ctrl+]

[root@ken ~]# virsh console Centos7-x86_64 
Connected to domain Centos7-x86_64 
Escape character is ^] 
CentOS Linux 7 (Core) 
Kernel 3.10.0-327.el7.x86_64 on an x86_64 
localhost login: root 
Password:  
Last login: Mon Mar 18 22:20:44 on ttyS0 
[root@localhost ~]#  
[root@ken ~]#  

克隆虚拟机

第一步:关闭虚拟机

[root@ken ~]# virsh shutdown Centos7-x86_64 
Domain Centos7-x86_64 is being shutdown 
[root@ken ~]# virsh list --all 
 Id Name State 
---------------------------------------------------- 
 - Centos7-x86_64 shut off 

第二步: 创建磁盘位置

[root@ken ~]# mkdir /ken/img 

第三步:使用virt-clone克隆新的虚拟机

[root@ken ~]# virt-clone -o Centos7-x86_64 -n centos7_test -f /ken/img/centos7_test.img 
Allocating 'centos7_test.img' | 10 GB 00:00:36  
Clone 'centos7_test' created successfully. 

第四步:查看虚拟机

[root@ken ~]# virsh list --all 
 Id Name State 
---------------------------------------------------- 
 - Centos7-x86_64 shut off 
 - centos7_test shut off 

第五步:启动虚拟机

[root@ken ~]# virsh start centos7_test  
Domain centos7_test started 
[root@ken ~]# virsh list --all 
 Id Name State 
---------------------------------------------------- 
 3 centos7_test running 

第六步:进入虚拟机

[root@ken ~]# virsh console centos7_test 
Connected to domain centos7_test 
Escape character is ^] 
CentOS Linux 7 (Core) 
Kernel 3.10.0-327.el7.x86_64 on an x86_64 
localhost login: root 
Password:  
Last login: Mon Mar 18 22:21:24 on ttyS0 
[root@localhost ~]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN  
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
 inet 127.0.0.1/8 scope host lo 
 valid_lft forever preferred_lft forever 
 inet6 ::1/128 scope host  
 valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
 link/ether 52:54:00:cc:69:f8 brd ff:ff:ff:ff:ff:ff 
 inet 192.168.122.161/24 brd 192.168.122.255 scope global dynamic eth0 
 valid_lft 3597sec preferred_lft 3597sec 
 inet6 fe80::5054:ff:fecc:69f8/64 scope link  
 valid_lft forever preferred_lft forever 

xshell连接虚拟机

现在物理主机是ping不通KVM虚拟机的,只有宿主机可以和KVM通信

第一步:创建脚本并执行

[root@ken ~]# cat bridg.sh  
#!/bin/bash 
brctl addbr br0 #创建桥接网卡 
brctl addif br0 eth0 #把eth0加入到br0中 
ip a d 192.168.4.190/24 dev eth0 #删除eth0的IP地址 
ifconfig br0 192.168.4.190/24 up #启动br0网络 
route add default gw 192.168.4.1 #添加网关 

第二步:查看网络

KVM虚拟化使用详解

第三步:测试外网连通性

[root@ken ~]# ping www.baidu.com 
PING www.a.shifen.com (119.75.217.26) 56(84) bytes of data. 
64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=1 ttl=54 time=6.08 ms 
64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=2 ttl=54 time=9.20 ms 
64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=3 ttl=54 time=8.58 ms 
^C 
--- www.a.shifen.com ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 6020ms 
rtt min/avg/max/mdev = 6.087/7.957/9.201/1.346 ms 

第四步:编辑虚拟机

修改如下的三处位置即可

[root@ken ~]# virsh edit Centos7-x86_64  

KVM虚拟化使用详解

第五步: 启动KVM虚拟机并进入KVM虚拟机编辑网卡

配置一个与物理主机同网段的网络

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  
TYPE="Ethernet" 
BOOTPROTO="static" 
NAME="eth0" 
DEVICE="eth0" 
ONBOOT="yes" 
IPADDR=192.168.4.165 
NETMASK=255.255.255.0 
GATEWAY=192.168.4.1 
DNS1=8.8.8.8 
[root@localhost ~]# systemctl restart network 

第六步:xshell连接KVM虚拟机

Connecting to 192.168.4.165:22... 
Connection established. 
To escape to local shell, press 'Ctrl+Alt+]'. 
WARNING! The remote SSH server rejected X11 forwarding request. 
Last login: Mon Mar 18 23:33:21 2019 
[root@localhost ~]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN  
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
 inet 127.0.0.1/8 scope host lo 
 valid_lft forever preferred_lft forever 
 inet6 ::1/128 scope host  
 valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
 link/ether 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff 
 inet 192.168.4.165/24 brd 192.168.4.255 scope global eth0 
 valid_lft forever preferred_lft forever 
 inet6 fe80::5054:ff:fe89:17d7/64 scope link  
 valid_lft forever preferred_lft forever 

以上所述就是小编给大家介绍的《KVM虚拟化使用详解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ant Colony Optimization

Ant Colony Optimization

Marco Dorigo、Thomas Stützle / A Bradford Book / 2004-6-4 / USD 45.00

The complex social behaviors of ants have been much studied by science, and computer scientists are now finding that these behavior patterns can provide models for solving difficult combinatorial opti......一起来看看 《Ant Colony Optimization》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具