210303124王佳琳2023.2.16
云计算与虚拟化技术
第⼀章:云计算相关概念
1.云计算介绍
云计算是⼀种按量付费的资源出租模式!云计算的底层是通过虚拟化技术来实现的!
2.云计算的分类
公有云:⽐如阿⾥云、AWS、Azure、华为云、京东云、⾦⼭云、腾讯云等都属于公有云,每个⼈都可以付费使⽤,不需要⾃⼰关 ⼼底层硬件,但是数据安全需要考利。
私有云:在⾃⼰公司内部或IDC⾃建Openstack、VMware等环境。
混合云:既要使⽤公有云,⼜要使⽤私有云,即⾃⼰的私有云的部分业务和公有云有交接,这部分称为混合云。
3.云计算优势
美国环境保护署(EPA)研究服务和数据中⼼的能源效率时发现,实际上服务器只有5%的时间是在⼯作的,在其他时间,服务器 都处于休眠状态,因此导致⼤量的计算资源浪费。
对于⼤企业⽽⾔,流量⾼峰波段持续时⻓太短,⼤部分时间服务器的资源都处于闲置的状态。
对于⼩企业⽽⾔,服务器硬件成本⾼、附属硬件多、硬件贬值快、利⽤率和投⼊不成正⽐。
云计算服务模式
IaaS基础设施既服务:如阿⾥云ECS,为⽤户提供计算机所需的(例如:CPU、内存、磁盘、⽹络等)基础资源
PaaS平台既服务:在IaaS基础设施之上,为⽤户提供现成的平台环境(例如:开发环境(php,java、Docker等服务)
SaaS软件既服务:在IaaS、PaaS之上为⽤户提供⼀个完整的软件服务,如企业邮箱、OA系统等可以通过浏览器直接访问,并负 责所有的前期与后期等⼀些列维护⼯作
第⼆章:云计算底层基⽯虚拟化
1.虚拟化的发展历程
虚拟化(Virtualization)技术最早出现在60年代的IBM⼤型机系统,在70年代的System370系列中逐渐流⾏起来,这些机器通过⼀ 种叫虚拟机监控器(VirtualMachine Monitor,VMM)的程序在物理硬件之上⽣成许多可以运⾏独⽴操作系统软件的虚拟机 (VirtualMachine)实例。
2.虚拟化的定义
虚拟化是云计算的基础。简单的说,虚拟化使得在⼀台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。 物理机我们⼀般称为宿主机(Host OS),宿主机上⾯的虚拟机称为客户机(Guest OS)。
3.Hypervisor介绍
Hypervisor是⼀种运⾏在基础物理服务器和操作系统之间的中间软件层,其可以允许多个操作系统和应⽤共享底层的内存、CPU、 磁盘等物理硬件,也可叫做VMM(virtual machine monitor),即虚拟机监视器。 Hypervisor是所有虚拟化技术的核⼼,当服务器启动并执⾏Hypervisor时,它会给每⼀台虚拟机分配适量的内存、CPU、⽹络和磁 盘,并加载所有虚拟机的客户操作系统
4.常⻅的Hypervisor类型
类型I-裸机型:直接运⾏在硬件设备上的,这种架构搭建的虚拟化环境称为裸机虚拟化环境,例如:VMware ESXI。
类型II-主机托管型:运⾏在具有虚拟化功能的操作系统上的,这种架构构建的是主机虚拟化环境,例如:VMware Workstation、 VirtualBox、KVM、xen等。
5.虚拟化的类型
服务器虚拟化:可在⼀台物理机上运⾏多个操作系统,各虚拟机之间相互隔离互不影响,虚拟机的完整状态保存到⽂件中,移动和 复制虚拟机就像移动和复制⽂件⼀样轻松,可将任意虚拟机调配或迁移到其他理服务器上。
容器虚技术:典型的就是docker、Linux Container(LXC)等
⽹络虚拟化:通过软件定义⽹络,即⽹络的创建不再依赖于物理设备,如公有云⼚商允许⽤户⾃⼰创建新的⽹络,在 kubernetes、openstack中都会使⽤到⽹络虚拟化。
桌⾯虚拟化:将桌⾯部署为代管服务使 IT 组织能够更快地响应不断变化的⼯作场所需求和新出现的机会。还可以将虚拟化桌⾯和 应⽤快速、轻松地交付给分⽀机构、外包和离岸员⼯以及使⽤ iPad 和 Android 平板电脑的移动员⼯。
应⽤虚拟化:将软件虚拟化,⽐如 office 365
存储虚拟化: SAN(基于磁盘)/NAS(NFS/Samba)/GlusterFS/ceph等
库虚拟化:在linux上运⾏windows 程序使⽤ wine,在mac系统运⾏windows程序使⽤CrossOver等
6.虚拟化技术分类
服务器虚拟化技术按照虚拟化程度可分为:全虚拟化、半虚拟化、硬件辅助虚拟化、虚拟化模拟器。
全虚拟化: Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运⾏,Hypervisor 实现⽅式⼀般是⼀个特殊定制的 Linux 系统,例如:Xen 和 VMWare ESXi 都属于这个类型。
半虚拟化:⼜称准虚拟化技术,就是在全虚拟化的基础上,把客户操作系统进⾏了修改,开源的Xen项⽬是半虚拟化的⼀个例⼦, 它使⽤⼀个经过修改的Linux内核来虚拟化处理器,⽽⽤另外⼀个定制的虚拟机系统的设备驱动来虚拟化I/O。由于半虚拟化需要系 统内核的深度修改,在⽣产环境中,半虚拟化在技术⽀持和维护上会有很⼤的问题。
硬件辅助虚拟化:KVM是硬件辅助的虚拟化技术,主要负责⽐较繁琐的CPU和内存虚拟化,⽽Qemu则负责I/O虚拟化。
虚拟化模拟器:Qemu 能够模拟⼀台能够独⽴运⾏操作系统的虚拟机,虚拟机认为⾃⼰和硬件打交道,但其实是和Qemu模拟出 来的硬件打交道,Qemu将这些指令转译给真正的硬件,正因为Qemu是纯软件实现的,所有的指令都要经过qemu,性能⾮常 低,所以,在⽣产环境中,⼤多数的做法都是配合KVM来完成虚拟化⼯作,KVM完成复杂及要求⽐较⾼的设备虚拟化,⽽Qemu 完成像⿏标、键盘等设备的虚拟化.
第三章:KVM虚拟化介绍
1.KVM简介
KVM 是Kernel-based Virtual Machine(基于内核的虚拟机)的简称,是⼀个开源的Linux系统内核虚拟化模块,⾃Linux2.6之后 集成在Linux的各个主要发⾏版本中,KVM⽬前已成为学术界的主流VMM之⼀(VMM:virtual machine monitor,虚拟机监视 器,也称为hypervisor
2.虚拟机常⽤的管理⼯具
libvirt:是调⽤KVM创建虚拟机的⼯具,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化⽅案。
virsh: 是⼀个常⽤的管理KVM虚拟化的命令⾏⼯具
virt-manager: virt-manager是⼀个虚拟化管理图形软件,包括虚拟机的创建、删除、启动、停⽌以及⼀些简单的监控功能等。
openstack: openstack是⼀个开源的虚拟化编排⼯具,常⽤于构建⼤规模的虚拟化环境,⽤于管理成千上万虚拟机的创建、启 动、删除等整个⽣命周期。
3.安装kvm虚拟化管理⼯具
主机名称 | IP地址 | 系统环境 | 硬件环境 |
---|---|---|---|
localhost | 192.168.189.128 | Centos 7.0 | 4C 4G 100G |
开机后检测CPU是否⽀持虚拟化
[root@localhost opt]# egrep -o 'vmx|svm' /proc/cpuinfo
vmx
vmx 显示已载⼊的系统模块
4.安装KVM相关软件包
libvirt :虚拟机的管理⼯具
virt-install :虚拟机的安装⼯具和克隆⼯具
qemu-kvm :管理虚拟机的虚拟磁盘
# yum install libvirt virt-install qemu-kvm -y
启动服务
# systemctl start libvirtd
查看服务状态
# systemctl status libvirtd
设置服务开机⾃启
# systemctl enable --now libvirtd
5.创建kvm虚拟机
提前将CentOS7镜像传到系统内⽤于给KVM虚拟机安装系统
[root@localhost opt]# ls
CentOS-7-x86_64-DVD-1804.iso rh
上传后通过如下命令创建KVM虚拟机
virt-install --virt-type kvm \
--os-type=linux \
--os-variant rhel7.0 \
--name web01 \
--memory 1024 \
--vcpus 1 --disk /opt/web01-vda.raw,format=raw,size=10 \
--cdrom /opt/CentOS-7-x86_64-DVD-1804.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole
参数解释:
--virt-type kvm 虚拟化的类型
--os-type=linux 系统类型
--os-variant rhel7 系统版本
--name web01 虚拟机的名字
--memory 1024 虚拟机的内存
--vcpus 1 虚拟cpu的核数
--disk /opt/web01-vda.raw,format=raw,size=10 磁盘位置及名称,磁盘格式,空间⼤⼩(G)
-- cdrom /opt/CentOS-7-x86_64-Minimal-2009.iso 系统镜像位置及名称
--network network=default 使⽤默认⽹络(默认NAT)
--graphics vnc,listen=0.0.0.0 开启VNC服务器端
--noautoconsole ⽀持console登录
6.VNC远程连接安装系统
查看VNC端⼝信息
[root@localhost opt]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3570/qemu-kvm #VNC端口
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 735/rpcbind
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1716/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1139/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1138/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1377/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 3380/sshd: root@pts
tcp6 0 0 :::111 :::* LISTEN 735/rpcbind
tcp6 0 0 :::22 :::* LISTEN 1139/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1138/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1377/master
tcp6 0 0 ::1:6010 :::* LISTEN 3380/sshd: root@pts