云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源

云计算到底是什么?

按定义:云计算指的是一种使用模式,是基于互联网的,是弹性计算,按需付费,快速扩展
按分类:公有云,私有云,和混合云,按需选择
安分层;iaas基础设施即服务 paas平台即服务 saas软件即服务

其中包括:网络,存储,服务器,虚拟化,操作系统,中间件,运行环境,数据,应用

  kvm:内核级的虚拟化技术(硬件虚拟化技术)

到底有哪些虚拟化?
1.服务器虚拟化
2.卓面虚拟化
3.应用虚拟化

云计算和虚拟化的区别:云计算不等于虚拟化,但是云计算需要用的虚拟化技术。

Centos7上软件包安装

  检查机器是否开启了cpu虚拟化

grep -E '(vmx|svm)' /proc/cpuinfo

  安装qemu-kvm libvirt virt-install

yum install -y qemu-kvm libvirt \ yum install -y virt-install

qemu-kvm:是kvm在用户空间的管理工具
libvirt:是用来管理kvm虚拟机的

virt-install:是用来安装虚拟机

  启动libvrit

systemctl enable libvirtd
systemctl start libvirtd

  启动成功之后在宿主机上会创建一个虚拟网卡virbr0,ip地址为192.168.122.1,virbr0是当安装好libvirt生成的

Centos7上虚拟机安装

  1.创建一个10G的raw格式的虚拟机的磁盘

qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G

qwmu-img create:使用命令来创建

-f:类型

/opt/CentOS-7-x86_64.raw:硬盘所在地址及名称

10G:大小

  2.安装虚拟机

virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024 --cdrom=/post_cloud/CentOS-7-x86_64-DVD-1511.iso --disk path=/opt/CentOS-7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

virt-install:使用virt-install工具来安装虚拟机
--virt-type:指定安装模式
--name:虚拟机名称
--ram:内存,默认是m单位,可以指定为G
--cdrom:镜像地址
--disk:虚拟机硬盘地址
--network:网络,默认default
--graphics vnc,listen=0.0.0.0 :图形管理工具vnc,监听0.0.0.0,端口是从5900递增

  3.使用TightVNC链接到192.168.10.225,自动安装系统

192.168.10.225宿主机地址,默认是5900端口

输入:net.ifnames=0 biosdevname=0(修改网卡名称)

  4.连接到宿主机

查看虚拟机:virsh list --all,如不加上--all,则显示正在启动的虚拟机

[root@bigdata005 post_cloud]# virsh list --all

Id              名称             状态

 - CentOS-7-x86_64 关闭
----------------------------------------------------

  5.虚拟机管理  

打开虚拟机:virsh start CentOS-7-x86_64

关闭虚拟机:virsh shutdown CentOS-7-x86_64

管理虚拟机配置文件:virsh edit CentOS-7-x86_64.xml

  进入到/etc/libvirt/qemu下有一个虚拟机的配置文件CentOS-7-x86_64.xml:包括内存,硬盘,cpu,网卡信息等,libvirt是通过此配置文件来管理虚拟机的。

  通过vi来打开cat CentOS-7-x86_64.xml ,会看到警告“此配置是自动生成的配置,你不能手动修改它,如果要修改,请通过‘virsh edit CentOS-7-x86_64.xml’ 来修改”

  6.虚拟机配置

  在centos7之后cpu和内存,内存支持热添加和热删除,前提是宿主机和虚拟机必须是centos7系统

cpu热添加
<vcpu placement='static'>1</vcpu> //原配置文件
<vcpu placement='auto' current="1">4</vcpu> //修改后的配置文件,最大4个cpu,目前使用了1个
virsh setvcpus CentOS-7-x86_64 2 --live //使用virsh添加虚拟机cpu个数

内存热添加
首先过滤一下
[root@bigdata005 qemu]# virsh --help |grep monitor
qemu-monitor-command QEMU 监控程序命令
qemu-monitor-event QEMU Monitor Events
Domain Monitoring (help keyword 'monitor')
查看当前虚拟机内存大小
[root@bigdata005 qemu]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon
balloon: actual=1024

把内存限制在512m
virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 512

  ##在编辑xml之后要重启虚拟机

  7.后续配置

  当创建好虚拟机之后,宿主机执行ifconfig(开启的虚拟机默认使用dhcp来获取192.168.122.0/24的网段的ip地址,通过桥接网卡virbr0来进行nat转换,来进行访问网络,虚拟机ip为192.168.10.245)

[root@bigdata005 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.225 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::92b1:1cff:fe08:b615 prefixlen 64 scopeid 0x20<link>
inet6 fdf3:28cb:d1d4:0:92b1:1cff:fe08:b615 prefixlen 64 scopeid 0x0<global>
ether 90:b1:1c:08:b6:15 txqueuelen 1000 (Ethernet)
RX packets 4402351 bytes 5161838911 (4.8 GiB)
RX errors 0 dropped 247173 overruns 0 frame 0
TX packets 1401714 bytes 136669997 (130.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 41

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 224789 bytes 19780270 (18.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 224789 bytes 19780270 (18.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

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:51:15:0c txqueuelen 0 (Ethernet)
RX packets 7261 bytes 558397 (545.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7307 bytes 12530206 (11.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:feb4:e2af prefixlen 64 scopeid 0x20<link>
ether fe:54:00:b4:e2:af txqueuelen 500 (Ethernet)
RX packets 7261 bytes 660051 (644.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9126 bytes 12625026 (12.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  其中virbr0是当安装好libvirt生成的,vnet0是个虚拟机来匹配的,默认是通过nat模式来上网的。所以在192.168.10.225宿主机上是连接不上192.168.122.245这个虚拟机的ip。最好是桥接过去。

  配置桥接网卡

1.创建桥接网卡

#!/bin/bash
brctl show
brctl addbr br0
brctl addif br0 eth0(此步骤之后,会连不上宿主机,最好是使用脚本来修改)
ip addr del dev eth0 192.168.10.225/24
ifconfig br0 192.168.10.225/24 up
route add default gw 192.168.10.254

2.virsh edit CentOS-7-x86_64

<interface type='bridge'>
<source bridge='br0'/>

3.重启虚拟机

virsh shutdown CentOS-7-x86_64
virsh start CentOS-7-x86_64

4. 修改虚拟机网卡配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.10.226
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=114.114.114.114

5.重启网卡

systemctl restart network

到此步骤,已经拥有了一台虚拟机,不过还有疑问。

疑问一:virsh到时是什么鬼??

这个是在安装libvirt安装上的,libvirt是一套开源的用来管理虚拟机的共计,不仅仅管理kvm,也可以管理zen。组成部分是有三块,有一个后台的进程,有一个api的库,还有各种工具,

比如virsh,可以在宿主机中对创建的vkm虚拟机进行管理

疑问二:如果libvirt在宿主机中挂掉了,创建的虚拟机会怎么样??

ps -aux |grep linvirt
如果libvirt down掉,仍然可以使用TightVNC来链接kvm虚拟机,但是宿主机就不能使用virsh来管理虚拟机了。只要重启就可以了。

其他

1.kvm是linux的内核模块,需要安装QEMU(内核态的工具),是一种软件的虚拟化的产品,本身已经很强大。

2.Hypervisor:中间件,比如windos下的vSphere。

3.top命令下us(用户控件)和sy(内核空间),文章讲解

4.Intel VT-x ,AMD-V/RVI(V) 不同厂家的虚拟化技术

5.查看qemu-kvm的安装包:rpm -ql qemu-kvm

6.云计算不能创建一个无限大的虚拟机,创建的虚拟机不能超过物理机的大小

7.如果在安装虚拟机的时候给内存是1024的话,不会开启图形界面

8.创建的kvm虚拟机在linux系统上体现的是一个进程如果kill掉这个进程,虚拟机也会kill掉,可以像管理进程一样来管理虚拟机 (使用ps -aux |grep kvm)

9.在centos7之后cpu和内存,内存支持热添加和热删除,前提是宿主机和虚拟机必须是centos7系统

10.一般使用shutdown,在start,这样的好处是,在shutdown的时候,可能会有些报错,可以看一下报错,不然restart重启的话可能不成功

virsh命令

https://blog.csdn.net/xxoo00xx00/article/details/49802367

https://blog.csdn.net/chdhust/article/details/7697471

https://www.cnblogs.com/chris-cp/p/4222372.html

https://www.cnblogs.com/ck1020/category/905469.html

云计算概述及Centos7下安装kvm虚拟机的更多相关文章

  1. Centos7.4安装kvm虚拟机(使用virt-manager管理)

    之前介绍了使用WebVirtMgr或Openstack来部署及管理kvm虚拟机,下面简单介绍centos7.4下使用virt-manager部署及管理kvm虚拟机的做法: 0)KVM是什么 KVM(K ...

  2. Centos7下搭建KVM虚拟机

    PRE-INSTALL ============================================================= kvm相关安装包及其作用 qemu-kvm 主要的K ...

  3. vmware安装kvm虚拟机

    1. 概述 本篇博客主要使用运行在win10专业版上的vmware workstation 15 pro虚拟化软件,安装centos7.7最小化系统,并在centos7上安装kvm虚拟机,实现快速创建 ...

  4. (转)CentOS7安装KVM虚拟机详解

    原文:https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E ...

  5. Centos7使用pxe安装KVM虚拟机

    Centos7使用pxe安装KVM虚拟机 一.安装服务所需的软件 [root@localhost ~]yum install nginx dhcp vsftpd syslinux -y [root@l ...

  6. centos7安装kvm虚拟机

    一 centos7安装kvm虚拟机 1.验证CPU是否支持KVM 结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的. [root@centos ~]# egrep '(vmx| ...

  7. 在centos7中限制kvm虚拟机可访问的资源

    最近通过艰苦卓绝的度娘(我很想用谷歌,可是,你懂的),终于搞明白如何在centos7中限制kvm虚拟机可访问的资源了.度娘给出的结果中,大部分都说的很对,然而,却很难照着做,主要原因有两点:1.网上的 ...

  8. CentOS 7.5 安装KVM虚拟机(Windows)

    一.KVM环境搭建1.检测系统是否支持cat /proc/cpuinfo | egrep 'vmx|svm' KVM是基于x86虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,所以查 ...

  9. 6、安装kvm虚拟机

    6.1.虚拟机开启虚拟化: 6.2.检查linux虚拟机cpu是否开启了虚拟化: egrep -o 'vmx|svm' /proc/cpuinfo vmx 6.3.安装kvm管理和安装kvm虚拟机的软 ...

随机推荐

  1. puppet 用户和组资源管理

    1. 用户和组资源的特性:     1.1 用户特性:                    allows_duplicates   支持含有相同UID的用户. manages_aix_lam     ...

  2. HTTP协议(web开发)

    HTTP协议 HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数 ...

  3. H - An Easy Problem?!

    来源 poj2826 It's raining outside. Farmer Johnson's bull Ben wants some rain to water his flowers. Ben ...

  4. D - Football (aka Soccer)

    Football the most popular sport in the world (americans insist to call it "Soccer", but we ...

  5. win10 远程出现身份验证错误 要求的函数不受支持

    win10的一个更新的bug 解决方案 http://note.youdao.com/noteshare?id=68aa9de9fbf46c50a097b3ccf7994580&sub=5AF ...

  6. WebSphere Application Server V8.5.5.0

    Downloadable files Abstract IBM WebSphere Application Server Version 8.5.5 Refresh Pack for all plat ...

  7. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  8. [No0000134]C#中的委托,匿名方法和Lambda表达式

    简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个Fir ...

  9. [No0000E6]C# 判断与循环

    判断语句 语句 描述 if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成. if...else 语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 ...

  10. 为什么css定位雪碧图(合成图)都要以负号开头?

    (1)正常来说 定位坐标是以 合成图片 左上角这个点作为原点(0px,0px)开始读取的, 而你的图片全都在坐标系的 第四象限 background-position: x y:(x,y为数值或百分比 ...