Cloud & KVM
一、云计算
什么是云计算
- 基于互联网的相关服务的增加、使用和交付模式
- 这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池
- 这些资源能够被快速提供,只需要投入很少的管理工作,或与服务供应商进行很少的交互
- 通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源
国际知名云服务商
-
国外:亚马逊AWS、微软Azure、IBM SCE+
-
国内:华为云、阿里云、百度云、腾讯云
云计算三大服务模式
IaaS
- IaaS(Infrastructure as a Service),基础设施服务
- 提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序
- IaaS 通常分为三种用法:公有云、私有云、混合云
PaaS
- PaaS(Platform-as-a-Service)意思是:平台即服务
- 以服务器平台或者开发环境作为服务进行提供,就成为了PssS。如淘宝
- PaaS 运营商所需提供的服务,不仅仅是单纯的基础平台,还针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发、优化等服务
- 简单地说,PaaS 平台是指云环境中的应用基础设施服务,也可以说是中间件即服务
SaaS
- SaaS(Software-as-a-Service)软件即服务
- 是一种通过 Internet 提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务
- 用户不用再购买软件,而是向提供商租用基于WEB的软件,来管理企业经营活动,不用对软件进行维护,提供商会债权管理和维护软件,同时也提供软件的离线操作和本地数据存储

二、KVM
1、虚拟化概念
virtualization 资源管理
- x 个物理资源 -----> y 个逻辑资源
- 一般情况为x < y,即由少量物理资源生成多个逻辑资源,如1台主机生成多台虚拟机
- 从技术层面来说,x > y 也可,但是不实用。
- 实现的程度有:完全、部分、硬件辅助(CPU)
虚拟化主要厂商及产品
| 系列 | PC/服务器版代表 |
|---|---|
| VMware | VMware Workstation、vSphere |
| Microsoft | VirtualPC、Hyper-V |
| RedHat | KVM、RHEV |
| Citrix | Xen |
| Oracle | Oracle VM VirtualBox |
2、KVM
2.1、KVM虚拟化服务平台的组成
- 三层:最低层KVM内核、硬件仿真工具QEMU、管理的接口工具Libvirt
- KVM:这是已经集成到 LINUX 内核的模块,它需要CPU 支持,采用硬件辅助虚拟化技术 Intel-VT,AMD-V,内存的相关如 Intel 的 EPT 和 AMD 的 RVI 技术
- QEMU:一个虚拟化的仿真工具,通过 ioctl 与内核 KVM 交互完成对硬件的虚拟化支持
- Libvirt:一个对虚拟化管理的接口和工具,提供用户端程序 virsh ,virt-install,virt-manager,virt-view 与用户进行交互
~]# lsmod | grep kvm # 查看内核
kvm_intel 174841 9
kvm 578518 1 kvm_intel
irqbypass 13503 3 kvm
]$ ps -efww | grep -i qemu
2.2、安装KVM虚拟化平台必备软件
- qemu-kvm
- 为 KVM 提供底层仿真支持
- libvirt-daemon
- libvirtd 守护进程,管理虚拟机
- libvirt-client
- 用户端软件,提供客户端管理命令
- libvirt-daemon-driver-qemu
- libvirtd 连接 qemu 的驱动
'可选功能:'
virt-install # 系统安装工具
virt-manager # 图形管理工具
virt-v2v # 虚拟机迁移工具
virt-p2v # 物理机迁移工具
'安装'
]# yum -y install qemu-kvm \
libvirt-daemon \
libvirt-client \
libvirt-daemon-driver-qemu
]# systemctl start libvirtd
2.3、KVM 虚拟机的组成
- 内核虚拟化模块
- 系统设备仿真
- 虚拟机管理程序(LIBVIRT)
- 一个 XML 文件(虚拟机配置的声明文件)
- /etc/libvirt/qemu/
- 磁盘镜像文件(虚拟机的硬盘)
- /var/lib/libvirt/images/
]# ls /etc/libvirt/qemu/
tedu_node01.xml tedu_node02.xml tedu_node03.xml tedu_node04.xml
]# ls /var/lib/libvirt/images/
tedu_node01.img tedu_node02.img tedu_node03.img tedu_node04.img
3、virsh 命令工具
3.1、虚拟机管理
格式:
virsh 控制指令 [虚拟机名称] [参数]
list [--all] # 列出正在运行的虚拟机。--all 所有的
start|shutdown|reboot # 启动、停止、重启
destroy # 强制停止
define|undefine # 创建、删除
console # 连接到虚拟机
edit # 修改配置
autostart # 设置自启动
domiflist # 查看虚拟机网卡信息
domblklist # 查看虚拟机硬盘信息
'修改虚拟机配置,要生效,必须先关机,再启动,直接重启无用。'
3.2、虚拟网络管理
virsh
net-list [--all] # 列出虚拟网络
net-start # 启动虚拟交换机
net-destroy # 强制停止虚拟交换机
net-define # 根据XML文件创建虚拟网络
net-undefine # 删除一个虚拟网络设备
net-edit # 修改虚拟交换机的配置
net-autostart # 设置虚拟交换机自启动
4、qemu-img 磁盘管理
常用镜像盘类型
| 特点、类型 | RAW | QCOW2 |
|---|---|---|
| KVM 默认 | 否 | 是 |
| I/O 效率 | 高 | 较高 |
| 占用空间 | 大 | 小 |
| 压缩 | 不支持 | 支持 |
| 后端盘复用 | 不支持 | 支持 |
| 快照 | 不支持 | 支持 |
qemu-img 命令
- 磁盘管理命令,支持非常多的磁盘格式:raw、qcow2、vdi、vmdk 等等。
'命令格式'
qemu-img 命令 参数 块文件名称 大小
常用命令
create # 创建一个磁盘
convert # 转换磁盘格式
info # 查看磁盘信息
resize # 扩容磁盘空间
-f # 指定格式
-b # 使用后端模板
]$ qemu-img create -b .node_base.img -f qcow2 nsd1907.img
5、COW 技术
COW:Copy ON Write 写时复制
- 直接映射原始盘的数据内容
- 当数据有修改要求时,在修改前自动将旧数据拷贝存入前端盘后,对前端盘进行修改
- 原始盘(后端盘)始终是只读的
6、xml 管理
- XML 文件:虚拟机配置的声明文件(用于标明虚拟机的硬件配置参数)
'配置调整格式'
virsh edit 虚拟机名
]# virsh edit node
<domain type='kvm'>
<name>test1</name>
<uuid>a13c82eb-ede8-4f73-be64-9cb365bed20f</uuid>
<memory unit='KiB'>1488282</memory> # 内存
<currentMemory unit='KiB'>1488282</currentMemory> # 最大内存
<vcpu placement='static'>2</vcpu> # CPU
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes'/>
<bios useserial='yes'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough' check='none'/>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'> # 磁盘
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/test1.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
... ... ...
<interface type='bridge'> # 网络
<mac address='52:54:00:be:3d:34'/>
<source bridge='vbr'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
7、创建虚拟机
cd /var/lib/libvirt/image/
qemu-img create -b .node_base_qcow2 -f qcow2 node.img 20G # 创建磁盘镜像文件
cd /etc/libvirt/qemu/
cp .node_base_xml node.xml # 拷贝模板
vim node.xml # 修改配置声明文件参数
virsh define node.xml # 定义xml文件。即创建虚拟机
'网络配置文件'
]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.20"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
8、virsh 扩容磁盘
虚拟机创建后,进行的磁盘扩容
基本思路:
- 硬盘扩容
- 分区扩容
- 文件系统扩容(格式化)
virsh demblklist 虚拟机名 # 先查看虚拟机硬盘信息
virsh blockresize --path [硬盘信息的绝对路径] --size 扩容后容量 虚拟机名
virsh domblklist test1
virsh blockresize --path /var/lib/libvirt/images/test1.img --size 50G test1
LNAG=C # 语言必须设置为英文
lsblk # 查看硬盘设备是否有多余空间
growpart /dev/vda 1 # 扩容第一个分区
blkid
xfs_growfs / # 扩容文件系统
df -h # 查看扩容结果
岁月悠悠!亘古一顺!

浙公网安备 33010602011771号