• 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. URAL-1039 Anniversary Party---树形DP入门题

    题目链接: https://cn.vjudge.net/problem/URAL-1039 题目大意: 开一个party,每个员工都有一个欢乐值,只有是上司和下属不同时存在时才能欢乐,问怎样安排能有最 ...

  2. POJ-3662 Telephone Lines---二分+最短路+最小化第k+1大

    题目链接: https://cn.vjudge.net/problem/POJ-3662 题目大意: 求一条路径从1到n使第k+1大的边最小. 解题思路: 二分答案mid,当原边权小于等于mid新边权 ...

  3. Django F对象的使用

    概念 class FF()是代表模型字段的值,也就是说对于一些特殊的字段的操作,我们不需要用Python把数据先取到内存中,然后操作,在存储到db中了. 场景 例1:我们有个统计点击量的字段,每次更新 ...

  4. Odoo中的向导

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281320.html 一:向导及其效果 向导类似于弹窗,用于接收用户的输入,然后作出相应的处理. 二:定义向导 ...

  5. background-clip 实现字体渐变效果

    background-clip 实现字体渐变效果 (一)类似KTV字幕效果 @-webkit-keyframes loop{ 0%{background-position: -800px 0;} 10 ...

  6. iOS获取当前连接的wifi信息

    导入框架CaptiveNetwork #import <SystemConfiguration/CaptiveNetwork.h> 获取当前连接的wifi信息 // 只能获取当前的SSID ...

  7. 使用navigator.userAgent来进行浏览器嗅探

    /*--------------------------------------------------------------------------------* * 功能描述:使用navigat ...

  8. PAT——1065. 单身狗

    “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数:随后N行 ...

  9. HDU 2544最短路 (迪杰斯特拉算法)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others)    Me ...

  10. LOG算子

    原文:http://blog.csdn.net/songzitea/article/details/12851079 背景引言 在博文差分近似图像导数算子之Laplace算子中,我们提到Laplace ...