云计算时代的运维艺术
云计算底层技术奥秘
虚拟化技术介绍
常见虚拟化技术
系列 |
PC/服务器版代表 |
VMware |
VMware Workstation、vSphere
|
Microsoft |
VirtualPC、Hyper-V |
RedHat |
KVM、RHEV |
Citrix |
Xen |
Oracle |
Oracle、VM VirtualBox |
虚拟化与云计算的关系
- 虚拟化是什么?
虚拟化是一种技术,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、再分配,运计算就是利用了虚拟化技术的这个特点。
- 云计算是什么?
云计算是一种服务模式(IAAS),其思想就是把各种资源整合起来,然后租给用户,其中的资源包括CPU、内存、存储、网络和其它基本的计算资源。通常我们通过虚拟化手段把这些资源分隔打包提供给用户使用。
虚拟化平台安装、虚拟化网络
创建Linux虚拟机
[root@ecs ~]# grep -Po "vmx|svm" /proc/cpuinfo // 检查 CPU 是否支持 Intel 的虚拟化技术
vmx
……
[root@ecs ~]# lsmod | grep kvm // 查看内核模块
kvm_intel 389120 0
kvm 958464 1 kvm_intel
irqbypass 16384 1 kvm
[root@ecs ~]# dnf -y install \
> qemu-kvm \ // 虚拟化仿真程序
> libvirt-daemon \ // 核心守护进程
> libvirt-client \ // 客户端程序
> libvirt-daemon-driver-qemu \ // QEMU管理模块
> libvirt-daemon-driver-network \ // 网络管理模块
> dnsmasq // 基础服务DHCP、DNS
[root@ecs ~]# systemctl enable libvirtd --now // 开机自启
[root@ecs ~]# virsh version // 查看版本
[root@ecs ~]# vim /etc/libvirt/qemu/networks/vbr.xml // 网桥文件(模板来自官网 libvirt.org)
<network>
<name>vbr</name>
<forward mode='nat'/>
<bridge name='vbr' stp='on' delay='0'/>
<ip address='192.168.100.254' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.128' end='192.168.100.200'/>
</dhcp>
</ip>
</network>
[root@ecs ~]# virsh net-define /etc/libvirt/qemu/networks/vbr.xml // 创建网桥
Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml
[root@ecs ~]# virsh net-autostart vbr // 设置开机自启动
Network vbr marked as autostarted
[root@ecs ~]# virsh net-start vbr // 启动网桥
Network vbr started
[root@ecs ~]# virsh net-list --all // 验证状态
Name State Autostart Persistent
-----------------------------------------
vbr active yes yes
[root@ecs ~]# ifconfig vbr // 验证
命令 |
解释 |
virsh net-list [--all] |
列出虚拟网络 |
virsh net-start |
启动虚拟交换机 |
virsh net-destroy |
强制停止虚拟交换机 |
virsh net-define |
根据xml文件创建虚拟网络 |
virsh net-undefine |
删除一个虚拟网络设备 |
virsh net-edit |
修改虚拟交换机的配置 |
virsh net-autostart |
设置开机自启动 |
虚拟机管理
虚拟机原理
虚拟机的构成
- 虚拟配置文件(*.xml)
文件默认路径:/etc/libvirt/qemu/
用途:定义虚拟机的设备(CPU、内存、网卡等)
- 存储文件(*.img)
文件默认路径:/var/lib/libvirt/images/
用途:仿真虚拟机磁盘,存储所有数据信息
虚拟机配置管理
虚拟机磁盘概念
- 虚拟机磁盘可以使用块设备、逻辑卷设备、文件仿真等
- 其中文件仿真模式具有易迁移、易扩展、支持多种磁盘格式、配置方便等特点
- 在文件仿真中被广泛采用的CoW格式具有:
-- 支持弹性空间
-- 支持后端盘复用
-- 支持快照
-- 支持压缩
- CoW(Copy On Write)写时拷贝技术
-- CoW技术使用指针指向原始盘所有块
-- 若一个块要被改写,首先把数据从原始盘拷贝到前端盘,然后在前端盘进行改写,最后把数据指针指向改写过的数据
-- 原始盘始终是只读的
虚拟机磁盘管理
- qemu-img 是虚拟机的磁盘管理命令,支持的格式有raw、qcow2、vdi、vmdk等
- qemu-img 命令格式
qemu-img 子命令 子命令参数 块文件名称 大小
子命令 |
解释 |
create |
创建一个磁盘 |
info |
查看磁盘信息 |
[root@ecs ~]# qemu-img create -f raw disk1.img 20G // 创建普通格式磁盘
Formatting 'disk1.img', fmt=raw size=21474836480
[root@ecs ~]# qemu-img create -f qcow2 disk2.img 20G // 创建CoW格式磁盘
Formatting 'disk2.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 lazy_refcounts=off refcount_bits=16
- 创建带后端盘的文件
下载镜像文件(cirros.qcow2举例)
[root@ecs ~]# cp cirros.qcow2 /var/lib/libvirt/images/ // 将cirrors.qcow2文件放进/var/lib/libvirt/images/
[root@ecs ~]# cd /var/lib/libvirt/images/ // 进入images目录
[root@ecs images]# qemu-img create -b cirros.qcow2 -F qcow2 -f qcow2 vmhost.img 20G // -b指定基础映像文件 -F指定输出映像格式 -f指定输入基础映像格式
Formatting 'vmhost.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 backing_file=cirros.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
[root@ecs images]# qemu-img info vmhost.img // 查看信息
image: vmhost.img
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 196 KiB
cluster_size: 65536
backing file: cirros.qcow2
backing file format: qcow2
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
虚拟机配置文件
<domain type='kvm'> // 虚拟机类型
<name>#####</name> // 虚拟机名称
<memory unit='KB'>1048576</memory> // 最大内存
<currentMemory unit='KB'>1048576</currentMemory> // 当前内存
<vcpu placement='static'>2</vcpu> // CPU数量
<os>
<type arch='x86_64' machine='pc'>hvm</type> // 系统引导参数
<boot dev='hd'/> // (安装)引导设备
<bootmenu enable='yes'/>
<bios useserial='yes'/>
</os>
<features> // 电源管理特性
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'></cpu> // CPU仿真
<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/#####.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='bridge'> // 网卡仿真
<source bridge='vbr'/> // 连接网桥名称
<model type='virtio'/>
</interface>
<channel type='unix'> // agent客户端
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<serial type='pty'></serial> // 终端类型
<console type='pty'>
<target type='serial'/>
</console>
<memballoon model='virtio'></memballoon>
</devices>
</domain>
- 创建虚拟机配置文件
-- 虚拟机名称: vmhost
-- 虚拟机配置: CPU(2核心)内存(1G)
-- 虚拟机网络:vbr桥接
[root@ecs ~]# cp node_base.xml /etc/libvirt/qemu/vmhost.xml
[root@ecs ~]# vim /etc/libvirt/qemu/vmhost.xml
1 <domain type='kvm'>
2 <name>vmhost</name>
3 <memory unit='KB'>1048576</memory>
4 <currentMemory unit='KB'>1048576</currentMemory>
5 <vcpu placement='static'>2</vcpu>
... ...
25 <source file='/var/lib/libvirt/images/vmhost.img'/>
... ...
29 <source bridge='vbr'/>
创建/删除虚拟机
命令选项 |
解释 |
virsh list [--all] |
列出虚拟机 |
virsh start/shutdown |
启动/关闭虚拟机 |
virsh destroy |
强制停止虚拟机 |
virsh define/undefine |
创建/删除虚拟机 |
virsh console |
连接虚拟机的 console |
virsh edit |
修改虚拟机的配置 |
virsh autostart |
设置虚拟机自启动 |
virsh dominfo |
查看虚拟机摘要信息 |
virsh domiflist |
查看虚拟机网卡信息 |
virsh domblklist |
查看虚拟机硬盘信息 |
[root@ecs ~]# virsh define /etc/libvirt/qemu/vmhost.xml // 不识别xml文件用这条命令,如果已经识别到xml文件则会报错
error: Failed to define domain from /etc/libvirt/qemu/vmhost.xml
error: operation failed: domain 'vmhost' already exists with uuid e27e71a7-4fd8-41f1-8544-16f188de734f
[root@ecs ~]# virsh list --all
Id Name State
-------------------------
- vmhost shut off
[root@ecs ~]# virsh start vmhost
Domain vmhost started
[root@ecs ~]# virsh console vmhost // 登陆到虚拟机
[root@ecs ~]# virsh undefine vmhost // 删除xml配置文件
[root@ecs ~]# rm -f /var/lib/libvirt/images/vmhost.img // 删除镜像文件
公有云概述
云服务类型
三大服务模式
- IaaS:基础设施服务(infrastructure-as-a-service)
提供基础设施
- PaaS:平台服务(platform-as-a-service)
除基础设施外还提供:编程语言,运行环境,技术支持等
- SaaS:软件服务(software-as-a-service)
是一种通过internet提供软件的模式
公有云、私有云、混合云
- 公有云
第三方的云供应商,通过互联网为用户提供服务器资源
- 私有云
企业或组织的专用云环境。内部使用,不对外提供服务
- 混合云
在私有云的基础上,组合一个或多个公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式
网友评论