1. 什么是云计算
云计算是一种按量付费的模式,云计算的底层是通过虚拟化技术来实现的。
2. 云计算的服务类型
- IAAS 基础设施即服务 虚拟机 ecs openstack
- PAAS 平台即服务 php,java docker容器
- SAAS 软件即服务 企业邮箱服务 cdn服务 rds数据库 开发+运维
3. 为什么要用云计算
小公司:前期投入小,扩展灵活,风险小。
大公司:把闲置服务器计算资源做成虚拟机出租(超卖计算)。
4. 云计算的基础KVM虚拟化
4.1 什么是虚拟化
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
4.2 虚拟化软件的差别
虚拟化软件:
qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差!
KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核,性能较好,兼容较好。
4.3 安装kvm虚拟化管理工具
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum install libvirt virt-install qemu-kvm -y
libvirt 作用:虚拟机的管理软件 libvirt: kvm,xen,qemu,lxc....
virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具。
qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘。
环境准备:
系统:CentOS 7.6
内存4G
CPU开启虚拟化
4.4 安装一台kvm虚拟机
关闭防火墙
[root@localhost opt]# systemctl stop firewalld
[root@localhost opt]# setenforce 0
启动libvirtd
[root@localhost ~]# systemctl start libvirtd.service
安装kvm虚拟机
[root@localhost ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
---注意:镜像要事先放到/opt/目录下
Starting install...
Allocating 'centos2.raw' | 10 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
--virt-type kvm 虚拟化的类型(qemu)
--os-type=linux 系统类型
--os-variant rhel7 系统版本
--name centos7 虚拟机的名字
--memory 1024 虚拟机的内存
--vcpus 1 虚拟cpu的核数
--disk /opt/centos2.raw,format=raw,size=10 磁盘文件,硬盘格式和大小
--cdrom /opt/CentOS-7-x86_64-DVD-1810.iso
--network network=default 使用默认NAT的网络
--graphics vnc,listen=0.0.0.0 --noautoconsole
使用VNC Viewer登录,默认端口为5900。
5. kvm虚拟机的virsh日常管理和配置
[root@localhost ~]# virsh list ---查看当前运行的虚拟机
Id Name State
----------------------------------------------------
[root@localhost ~]# virsh list --all ---查看所有虚拟机
Id Name State
----------------------------------------------------
- centos7 shut off
[root@localhost ~]# virsh start centos7 ---启动名字为centos7的虚拟机
Domain centos7 started
[root@localhost ~]# virsh shutdown centos7 ---正常关机
Domain centos7 is being shutdown
[root@localhost ~]# virsh destroy centos7 ---强制关机
[root@localhost ~]# virsh reboot centos7 ---重启虚拟机
[root@localhost opt]# virsh dumpxml centos7 > centos7.xml ---导出centos7的配置文件(只要有磁盘文件,就能生成配置文件)
[root@localhost opt]# virsh undefine centos7 ---删除虚拟机
Domain centos7 has been undefined
---删除虚拟机,推荐先destroy,再undefine
[root@localhost opt]# virsh list --all
Id Name State
----------------------------------------------------
[root@localhost opt]# virsh define centos7.xml ---导入centos7配置文件
Domain centos7 defined from centos7.xml
---说明:只要有磁盘文件和配置文件就能迁移、恢复虚拟机
[root@localhost opt]# virsh list --all ---导入成功
Id Name State
----------------------------------------------------
- centos7 shut off
[root@localhost opt]# ls /etc/libvirt/qemu ---配置文件所在位置
centos7.xml networks
---undefine删除虚拟机其实就是删除配置文件,不关机直接undefine,列表还能看见虚拟机,但是虚拟机关机后就看不见了。
[root@localhost opt]# virsh edit centos7 ---修改centos7虚拟机的配置文件
---虚拟机迁移后,路径改变了,需要修改对应的配置文件路径
[root@localhost opt]# virsh shutdown centos7
Domain centos7 is being shutdown
[root@localhost opt]# virsh domrename centos7 web-blog ---把centos7重命名为web-blog(虚拟机需要先关机)
Domain successfully renamed
[root@localhost opt]# virsh list --all
Id Name State
----------------------------------------------------
- web-blog shut off
[root@localhost opt]# virsh start web-blog
Domain web-blog started
[root@localhost opt]# virsh suspend web-blog ---挂起虚拟机
Domain web-blog suspended
[root@localhost opt]# virsh resume web-blog ---恢复虚拟机
Domain web-blog resumed
[root@localhost opt]# virsh vncdisplay web-blog ---查看虚拟机端口号,:0表示:5900,:1表示:5901,如此类推。登录用简写或者详细写法都可以
:0
[root@localhost opt]# virsh autostart web-blog ---把虚拟机设置为开机自启动
Domain web-blog marked as autostarted
[root@localhost opt]# virsh autostart --disable web-blog ---取消开机自启动
Domain web-blog unmarked as autostarted
[root@localhost opt]# ll /etc/libvirt/qemu/autostart/ ---该目录存放开机自启动虚拟机的xml文件(开机自启动的本质就是在这里创建xml的软链接)
total 0
grubby --update-kernel=ALL --args="console=ttyS0,115200n8" ---要进入控制台,需要先进虚拟机执行该命令修改内核参数,执行完重启虚拟机使之生效
[root@localhost opt]# virsh console web-blog ---进入控制台
Connected to domain web-blog
Escape character is ^] ---按Ctrl+]键退出
按回车进入
6. kvm虚拟机虚拟磁盘格式转换和快照管理
磁盘格式:
raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输。总50G 占用50G
qcow2: cow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输。总50G 占用2G
创建虚拟机时选择不同的磁盘格式:
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk
/opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk
/data/oldboy.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
6.1 磁盘工具的常用命令
查看虚拟磁盘信息:
[root@localhost opt]# qemu-img info centos2.raw
image: centos2.raw ---名称
file format: raw ---磁盘格式
virtual size: 10G (10737418240 bytes) ---分配了10G
disk size: 1.3G ---占用了1.3G
创建磁盘一块qcow2格式的虚拟磁盘:
[root@localhost opt]# qemu-img create -f qcow2 /opt/test.qcow2 1G --- -f指定磁盘格式
Formatting '/opt/test.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost opt]# ll -h
total 5.6G
-rw-------. 1 qemu qemu 10G Apr 8 10:32 centos2.raw
-rw-r--r--. 1 root root 193K Apr 8 10:33 test.qcow2 ---初始只有193K
[root@localhost opt]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
调整虚拟磁盘容量:
[root@localhost opt]# qemu-img resize /opt/test.qcow2 2G ---调整磁盘容量到2G
Image resized.
[root@localhost opt]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
[root@localhost opt]# qemu-img resize /opt/test.qcow2 +3G ---调整磁盘容量,增加3G
Image resized.
[root@localhost opt]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
磁盘格式转换:
[root@localhost opt]# qemu-img convert -f qcow2 -O raw test.qcow2 test.raw --- -f qcow2 -O raw,从qcow2转到raw
[root@localhost opt]# ll -h
total 5.6G
-rw-------. 1 qemu qemu 10G Apr 8 11:06 centos2.raw
-rw-r--r--. 1 root root 257K Apr 8 10:57 test.qcow2
-rw-r--r--. 1 root root 5.0G Apr 8 11:09 test.raw
注意:使用中的虚拟磁盘在转格式前要先关机,转完后要改配置文件,把对应的磁盘格式和磁盘文件都改成转换后的。
6.2 快照管理
把虚拟机转成qcow2格式
[root@localhost opt]# qemu-img convert -f raw -O qcow2 centos2.raw centos2.qcow2
[root@localhost opt]# virsh edit web-blog
[root@localhost opt]# virsh start web-blog
Domain web-blog started
快照管理
[root@localhost opt]# virsh snapshot-create web-blog ---创建一个快照(以时间戳命名)
Domain snapshot 1586330317 created
[root@localhost opt]# virsh snapshot-create-as web-blog --name install_ok ---创建一个名为install_ok的快照
Domain snapshot install_ok created
[root@localhost opt]# virsh snapshot-list web-blog ---查看快照
Name Creation Time State
------------------------------------------------------------
1586330317 2020-04-08 15:18:37 +0800 running
install_ok 2020-04-08 15:16:11 +0800 running
[root@localhost opt]# virsh snapshot-delete web-blog --snapshotname 1586330317 ---删除快照
Domain snapshot 1586330317 deleted
[root@localhost opt]# virsh snapshot-list web-blog
Name Creation Time State
------------------------------------------------------------
install_ok 2020-04-08 15:16:11 +0800 running
[root@localhost opt]# virsh snapshot-revert web-blog --snapshotname install_ok ---还原快照