• 1.什么是虚拟化?

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

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

那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢? 
这个主要是通过一个叫做 Hypervisor 的程序实现的。

  • 2.虚拟化的分类

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

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

理论上讲: 
①号虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高; 
②号虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

  • 3.KVM的介绍

KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。 
KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。

那 IO 的虚拟化,比如存储和网络设备由谁实现呢? 
这个就交给 Linux 内核和Qemu来实现。

说白了,作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。

  • 4.Libvrit

Libvirt是KVM的管理工具,Libvirt包含3个组成部分:后台daemon程序libvirtd、API库、和命令行工具virsh
①libvirtd是服务程序,接收和处理API请求;
②API库是可以基于libvirt的开发工具,例如vir-manager
③virsh是KVM的命令行工具,比如在实际生产中,图形界面无法使用或无法通过vnc链接云主机时,可以通过virsh命令行进行操作。

  • 5.KVM的安装

(1)查看cpu是否支持虚拟化

[root@linux-node1 ~]# 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 dts mmx fxsr sse sse2 ss 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 aes xsave avx f16c rdrand hypervisor lahf_lm arat pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase smep xsaveopt

(2)安装qemu-kvm(用户态管理工具),libvirt(命令行管理工具),virt-install(安装kvm工具)

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

(3)启动libvirtd服务,查看是否创建多出一个虚拟网卡:virbr0

[root@linux-node1 ~]# systemctl enable libvirtd
[root@linux-node1 ~]# systemctl start libvirtd
[root@linux-node1 ~]# ifconfig
ens33: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.56.11 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::20c:29ff:fe03:f3fe prefixlen scopeid 0x20<link>
ether :0c:::f3:fe txqueuelen (Ethernet)
RX packets bytes (315.1 MiB)
RX errors dropped overruns frame
TX packets bytes (8.7 MiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (16.0 KiB)
RX errors dropped overruns frame
TX packets bytes (16.0 KiB)
TX errors dropped overruns carrier collisions virbr0: flags=<UP,BROADCAST,MULTICAST> mtu
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether ::::fb: txqueuelen (Ethernet)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions

(4)创建虚拟机
安装kvm虚拟机的需求:硬盘,光盘镜像。
①创建的虚拟机内存大小不能超过物理机的大小;
②创建的虚拟机不需要每次都安装启动,只需要通过镜像进行启动。

[root@linux-node1 ~]# qemu-img create -f raw /opt/CentOS--x86_64.raw 10G
Formatting '/opt/CentOS-7-x86_64.raw', fmt=raw size=
[root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS--x86_64 --ram \
> --cdrom=/tmp/CentOS--x86_64-DVD-.iso --disk path=/opt/CentOS--x86_64.raw \
> --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole Starting install...
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

然后快速用TightVNS链接192.168.56.11,按"Tab"键,然后输入:net.ifnames=0 biosdevname=0,更改网卡名称为eth0.按"Enter"进入安装。如图:

  • 6.总结思路

1.创建虚拟磁盘
2.通过virt-install安装一台虚拟机
3.通过TightVNC客户端工具连接到192.168.56.11:5900进行安装操作,默认qumu-kvm的端口是5900端口,端口从5900计算.

  • 7.遇到的问题总结

1.如果多次执行安装:
1.删除 rm -f /opt/CentOS-7-x86_64.raw
2.虚拟机的名称,需要指定--name参数进行修改

virt-install --virt-type kvm --name CentOS-dxxxx7-x86_64 --ram  \
--cdrom=/tmp/CentOS--x86_64-DVD-.iso --disk path=/opt/CentOS--x86_64.raw \
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

2.如何删除KVM创建的桥接网卡:

brctl show
ifconfig br0 down
brctl delbr br0
systemctl restart network

3.如何在Centos 7 系统安装完毕修改网卡名为eth0:
(1)首先,先编辑网卡的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 将里面的NAME项修改为eth0
继续,重命名该配置文件
(2)然后,禁用该可预测命名规则。对于这一点,你可以在启动时传递“net.ifnames=0 biosdevname=0 ”的内核参数。这是通过编辑/etc/default/grub并加入“net.ifnames=0 biosdevname=0 ”到GRUBCMDLINELINUX变量来实现的。
(3)运行命令grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成GRUB配置并更新内核参数。
(4)reboot重启系统生效

OpenStack入门篇(三)之KVM介绍及安装的更多相关文章

  1. 【SSRS】入门篇(三) -- 为报表定义数据集

    原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...

  2. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  3. Nginx入门篇-基础知识与linux下安装操作

    我们要深刻理解学习NG的原理与安装方法,要切合实际结合业务需求,应用场景进行灵活使用. 一.Nginx知识简述Nginx是一个高性能的HTTP服务器和反向代理服务器,也是一个 IMAP/POP3/SM ...

  4. OpenStack入门篇(五)之KVM性能优化及IO缓存介绍

    1.KVM的性能优化,介绍CPU,内存,IO性能优化 KVM CPU-->qemu进行模拟ring 3-->用户应用 (用户态,用户空间)ring 0-->操作系统 (内核态,内核空 ...

  5. OpenStack入门篇(四)之KVM虚拟机介绍和管理

    1.查看虚拟机,启动虚拟机 [root@linux-node1 ~]# virsh list --all Id Name State --------------------------------- ...

  6. OpenStack入门篇(九)之nova服务(控制节点)的部署与测试

    1.Nova介绍 Nova是openstack最早的两块模块之一,另一个是对象存储swift.在openstack体系中一个叫做计算节点,一个叫做控制节点.这个主要和nova相关,我们把安装为计算节点 ...

  7. Openstack入门篇(十六)之Cinder服务的部署与测试

    1.理解块存储服务 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系统:或者直接使用裸硬盘存储数据(数据库) 通 ...

  8. Openstack入门篇(十五)之如何创建生产使用的openstack镜像

    在linux-node1节点上: [root@linux-node1 ~]# yum install -y openstack-nova-compute [root@linux-node1 ~]# y ...

  9. Openstack入门篇(十四)之horizon服务的部署与测试

    1.Horizon介绍 •提供一个web界面操作openstack的系统 •使用Django框架基于openstack API开发 •支持将session存储在DB.memcached •支持集群 t ...

随机推荐

  1. 2019.2.27 Eclipse中的Tomcat设置Tomcat服务器手动重启

    1.打开Tomcat的设置界面 2.找到Modules界面 3.去掉,就改为手动了

  2. 关于C#读取xml小例子

    1.首先这是一个xml文件<?xml version="1.0" encoding="utf-8"?><Document> <Ev ...

  3. geomesa hbase geoserver

    在geoserver中配置hbase ln -s /root/hbase/hbase-1.4.8/conf/hbase-site.xml /root/tomcat/apache-tomcat-7.0. ...

  4. Selenium自动化测试之结果处理

    Selenium自动化测试之结果处理 一.断言 断言相当于性能测试中的检查点,常用断言种类很多,具体可以查看断言API:判断预期结果和实际结果是否一致,断言成功,程序继续处理,失败则终止运行,示例如下 ...

  5. "strace -p"非常有用,它减少了很多猜测工作,也不需要重新启动应用。lsof -p process_id +iostat + sar -n DEV 1

    linux神器strace - youxin - 博客园https://www.cnblogs.com/youxin/p/8837771.html 某个进程突然占用了很多CPU? 或者某个进程看起来像 ...

  6. vlc源码分析(二) 播放流程

    当点击播放文件或者输入要播放的文件后,vlc会执行一系列的流程. 首先需要了解视频以及流媒体处理及播放的流程,由链接中的描述,视频以及流媒体处理时,首先要解协议(http,rtmp,rtsp等),然后 ...

  7. CentOS7开发环境搭建

    BIOS开启VT支持 查询笔记本进入BIOS的按键,启动BIOS的虚拟化设置 假设安装360卫士,那么请永久关闭Intel-VT核晶防护引擎 CentOS DNS配置 Linux 下设置DNS位置有3 ...

  8. MessageBox.Show用法

    private void button3_Click(object sender, EventArgs e) { MessageBox.Show("  1  个参数 "); } ~ ...

  9. koa2学习笔记01 - 创建项目 —— koa生成器一键生成koa项目

    前言 从17年开始尝试学习搭建个人网站开始,就开始学习摸索node了,至今差不多快两年了. 说起来现在都9102年了,所以最近打算整体设计重构一下网站,索性node后台也重写一遍. 重温一下node, ...

  10. Z字形编排问题详解(C++)

    Z字形编排问题详解(C++): 问题描述:给定一个矩阵matrix,输出矩阵matrix进行Z字形编排后的内容. 原矩阵: 输出形式: 算法分析与详细解答: 要解决这样一个问题,可能一开始无从下手,但 ...