https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/
https://developer.openstack.org/zh_CN/api-guide/quick-start/
OpenStack是什么? OpenStack是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过web接口让最终用户部署资源。
1.虚拟化
1型虚拟化:hypervisor直接运行于硬件之上,对硬件虚拟化做了优化,性能较高,但不支持虚拟机嵌套,例如Xen VMware的EXSI都属于1型虚拟化。1型虚拟化其hypervisor内存上严格隔离的。
2型虚拟化:宿主机操作系统运行于硬件之上,hypervisor作为一个内核模块运行在宿主机操作系统之上。支持虚拟机嵌套,例如KVM,VMware的workstation等都属于2型虚拟化,虚拟机嵌套指KVM虚拟机中还可以再运行KVM。
2.KVM
kernel-based virtual machine,基于Linux内核的虚拟机,kvm.ko负责CPU和内存虚拟化。IO虚拟化由Linux内核和Qemu实现。KVM的管理工具为libvirt,openstack底层也使用libvirt。
kvm安装:直接在Linux系统上安装KVM所需包。其中qemu-kvm、qemu-systerm负责CPU、内存和IO虚拟化,libvirt-bin为libvirt,virt-manager为KVM图形管理工具,网络虚拟化由bridge-utils、vlan实现。
使用virt-manager启动虚拟机, /var/lib/libvirt/images/ 目录为KVM默认存放镜像文件的地方。virt-manager也可以用来管理其他宿主机上的虚拟机,注意此处需要配置被管理宿主机中的两个文件。
virsh list 命令用于查看宿主机上的虚拟机,还可以使用其他virsh命令管理虚拟机。
注:一个KVM虚拟机在宿主机中作为一个qemu-kvm进程运行,与其他Linux进程一样被调度。
CPU虚拟化由vmx 或 svm 实现。虚拟机中每一个vCPU对应qemu-kvm进程中的每一个线程。因此虚拟机中vCPU总数可以超过物理CPU总数,这个叫CPU超配。
内存虚拟化实现客户机物理内存到宿主机机器内存的转化,客户机操作系统负责客户机虚拟地址到客户机物理地址的转化,也可以实现超配。KVM实现内存虚拟化的方式有两种:影子页表和EPT页表,可参考http://www.cnblogs.com/sammyliu/p/4543597.html。
存储虚拟化由存储池(storage pool)和volume卷实现,存储池为宿主机中可见的一块内存,volume为存储池中分配给虚拟机的一块空间。KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool,是一种目录类型的存储池,而volume则为该目录下的文件,如一个镜像文件则为一个volume,volume有多种类型,包括raw,qcow,vmdk,vdl。
网络虚拟化通过Linux bridge实现vnet br0 eth0之间的数据传输。注意Linux 网桥br0的配置需更改interfaces文件。使用brctl show 查看网桥情况。虚拟机网络通信方式:br0、NAT、vlan. 其中vlal是一个虚拟局域网,实现二层隔离。
3.Libvirt
libvirt由三大功能组件组成:后台daemon程序libvirtd、API库、命令行工具virsh。
其中,libvirtd是服务程序,接收和处理来自API的请求。API库用来开发基于libvirt的高级管理工具,例如KVM图形管理工具virt-manager。命令行工具virsh是常用的KVM命令行工具。
libvirt也用来管理Xen、VirtualBox。
4.理解openstack
首先区分物理机架构、虚拟化架构、云计算架构
其次区分Iaas Paas Saas
Iass-基础设施即服务,向用户提供一个完整的虚拟机,使用者为数据中心管理员,典型的Iaas服务包括AWS、阿里云等。
Paas-平台即服务,向用户提供应用的运行环境和一系列中间件等,使用者为应用开发人员,典型的Paas服务包括Google App Engine、IBM BlueMix。
Saas-软件即服务,向用户提供应用服务,使用者是应用的终极用户,典型的Saas包括Google Gmail。
而openstack则属于Iaas,openstack对数据中心的计算、网络、存储资源进行统一管理和分配。