1. 什么是云计算?
云计算是一种按量付费的模式!它的底层是通过虚拟化技术实现的!
2. 云计算的服务类型
(1)IAAS:基础设施即服务(只有操作系统)如:ecs云主机
(2)PAAS:平台即服务(操作系统+需要的环境\服务)如:LNMP环境。除了用虚拟机实现外,还可以用Docker实现。
(3)SAAS:软件即服务(一套完整的服务),如:cdn,企业邮箱,rds等。需要开发+运维一起实现。
云计算服务类型.jpg
3. 为什么要用云计算?
比如一个公司开发一款游戏,这期间需要买服务器、IDC机房托管、带宽费用等,加起来也是一笔不菲的费用了。
而购买云主机,大大节约了经济成本,还防止了项目夭折后,服务器资源闲置的情况发生。
总结下来就是,前期投入小,扩展灵活、风险小!!!
4. 云计算基础-KVM虚拟化配置
4.0 宿主机配置要求
系统:
CentOS7.4或7.6,不要使用7.5,因为有很多BUG。
软件:
VMware宿主机上安装运行Kvm虚拟机。
VMware宿主机内存内存4G+,CPU开启虚拟化,如下图:
4.1 什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
4.2 虚拟化软件的差别
(1)qemu:qemu 靠软件纯模拟全虚拟化软件,性能特别慢!兼容性特别好!
(2)xen性能特别好,需要使用专门修改之后的内核,兼容性差!
(3)KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要 使用专门的内核 centos6 kvm 性能较好,兼容较好。
4.3 安装kvm虚拟化管理工具
4.3.1 KVM介绍
KVM全称为:Kernel-base Virtual Machine,基于内核的虚拟机。
由于我们不能直接去操作内核,所以这里就需要借助“libvirt”这个工具来操作KVM虚拟机,但是首先必须要安装一个操作系统才可以,所以这里又需要使用“virt-install”工具来进行操作系统的安装及磁盘管理工具“qemu-kvm”,下面是安装步骤。
4.3.2 软件安装
[root@kvm01 ~]# yum install libvirt virt-install qemu-kvm -y
libvirt::虚拟机的管理工具,当libvirt功能越来越完善后,它还支持kvm、xen、qemu、lxc等虚拟化软件。
virt-install:安装系统工具,这里面还有一个克隆工具“virt-clone”,用于虚拟机的克隆。
qemu-kvm:磁盘管理工具
--virt-type kvm 虚拟化类型,报错:虚拟化hvm不支持,有可能是虚拟机软件上的cpu虚拟化没开。
--os-type=linux 操作系统类型
--os-variant rhel7 操作系统版本
--name centos7 虚拟机的名字,可以自定义
--memory 1024
virsh:libvirt软件包提供
5. 安装一台Kvm虚拟机
(1)在真实宿主机上安装TightVNC或VNC-Viewer-6.19.325-Windows-64bit
VNC:远程的桌面管理工具,可以通过它连接到KVM虚拟化的系统。
(2)启动服务
[root@kvm01 ~]# systemctl start libvirtd.service
[root@kvm01 ~]# systemctl enable libvirtd.service
[root@kvm01 ~]# systemctl status libvirtd.service
(4)安装系统前的准备
上传一个CentOS系统镜像到VMware中,不要放到root目录下,会报错。
由于大于4G的软件不同通过rz命令传输,所以这里选择WinSCP_5.9.0.6786_Setup软件来传输镜像。
(5)安装系统
注意:
建议虚拟机内存不要低于1024M,否则安装系统特别慢!
[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.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
Starting install...
Allocating 'centos7.raw' | 10 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
(6)打开VNC客户端软件,安装系统
(7)安装命令参数详解
virt-isntall :安装操作系统
--virt-type kvm:虚拟化的类型(默认类型为qemu)
--os-type=linux:系统类型
--os-variant rhel7:系统版本
--name centos7:虚拟机的名字
--memory 1024:虚拟机的内存
--vcpus 1:虚拟cpu的核数
--disk /opt/centos2.raw:硬盘文件存放位置及文件名称
format=raw:硬盘格式(raw、qcow2)
size=10:硬盘大小,默认单位为GB
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso:镜像文件位置
--network network=default:网络模式,使用默认NAT的网络
--graphics vnc,listen=0.0.0.0:通过VNC显示输出系统界面
--noautoconsole:加不加都行
6. KVM虚拟机日常管理和配置(virsh)(VMware宿主机上操作)
(1)查看启动或挂起的虚拟机
[root@kvm01 ~]# virsh list
Id Name State
----------------------------------------------------
1 centos7 running
(2)看所有虚拟机
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 centos7 running
(3)启动虚拟机
[root@kvm01 ~]# virsh start centos7
Domain centos7 started
启动后会分配一个端口,默认从5900开始
(4)关闭虚拟机
正常关闭: 关闭后,vnc会自动断开
[root@kvm01 ~]# virsh shutdown centos7
Domain centos7 is being shutdown
暴力(拔电源)关机:当正常关机无效后,才能使用此方法,有可能会造成数据丢失。
[root@kvm01 ~]# virsh destroy centos7
Domain centos7 destroyed
(5)重启
当系统处于开机运行状态,才能使用重启命令
[root@kvm01 ~]# virsh reboot centos7
Domain centos7 is being rebooted
(6)导出(备份)配置文件,文件为xml格式
virsh dumpxml centos7 打印到屏幕
[root@kvm01 ~]# virsh dumpxml centos7 > cetos7.xml #重定向到文件
[root@kvm01 ~]# ls
cetos7.xml
(7)删除配置文件(虚拟机要处于关机状态,如果是开机状态下删除的,就必须在开机状态下恢复)
[root@kvm01 ~]# virsh undefine centos7
(8)导入文件(恢复)
导入的虚拟机配置文件会在/etc/libvirt/qemu目录下生成一个配置文件,这个目录默认不存在,第一次导入操作时自动生成。
[root@kvm01 ~]# virsh define cetos7.xml
Domain centos7 defined from cetos7.xml
(9)恢复被删除的配置文件
注意:要有磁盘文件及配置文件
[root@kvm01 ~]# virsh define cetos7.xml
Domain centos7 defined from cetos7.xml
(10)查看进程
[root@kvm01 ~]# ps -ef | grep qemu
内容省略……
(11)更改虚拟机配置文件(edit,自带语法检测)
[root@kvm01 ~]# virsh edit centos7
注意:不能直接用vim或vi编辑,直接编辑不带语法检查
(12)打印配置文件的某一行
[root@kvm01 ~]# virsh dumpxml centos7 | grep raw
<driver name='qemu' type='raw'/>
<source file='/opt/centos7.raw'/>
(13)重命名虚拟机
domrename(低版本不支持)
注意:改名前先关机,开机状态下无法改名
[root@kvm01 ~]# virsh domrename centos7 web-blog
Domain successfully renamed
(14)挂起虚拟机
[root@kvm01 ~]# virsh suspend web-blog
Domain web-blog suspended
(15)恢复挂起虚拟机:
[root@kvm01 ~]# virsh resume web-blog
Domain web-blog resumed
注意:挂起虚拟机会造成虚拟机与宿主机时间不同步。挂起的虚拟机时间会停止。
(16)查看qemu-kvm端口号:
[root@kvm01 ~]# netstat -lntup | grep qemu-kvm
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 11287/qemu-kvm
[root@kvm01 ~]# virsh vncdisplay web-blog
:0
(17)设置kvm虚拟机开启自启动
[root@kvm01 ~]# virsh autostart web-blog
Domain web-blog marked as autostarted
(18)查看开机自启主机列表
[root@kvm01 ~]# ls /etc/libvirt/qemu
autostart 有机器设置开机自启后,会在/etc/libvirt/qemu目录下自动生成一个autostart目录,里面存放着开机自启的主机列表,存放的形式是软连接主机名。
[root@kvm01 /etc/libvirt/qemu/autostart]# ll
total 0
lrwxrwxrwx 1 root root 30 Jul 15 23:34 web-blog.xml -> /etc/libvirt/qemu/web-blog.xml
(19)取消开机自启
[root@kvm01 ~]# virsh autostart --disable web-blog
Domain web-blog unmarked as autostarted
[root@kvm01 ~]# ls /etc/libvirt/qemu/autostart/ 取消开机自启,对应文件也会消失
7. 开启命令行版的控制台(在VMware宿主机上直接登录KVM虚拟化的机器)
[root@kvm01 ~]# virsh console web-blog #console要配置后才能用
Connected to domain web-blog
Escape character is ^] #没有配置的状态显示,使用Ctrl+]退出
配置console(更改内核参数)
[root@kvm01 ~]# ssh root@192.168.122.141
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.122.141's password:
Last login: Mon Jul 15 23:46:09 2019 from gateway
[root@KVM-centos7 ~]#
[root@KVM-centos7 ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8" #更改内核参数
[root@KVM-centos7 ~]# reboot #重启系统生效
[root@kvm01 ~]# virsh console web-blog
Connected to domain web-blog
Escape character is ^] #出现这个直接回车
CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64
KVM-centos7 login: root
Password:
Last login: Mon Jul 15 23:47:58 from gateway
[root@KVM-centos7 ~]# #登录成功
查看登录控制台是否成功(KVM虚拟机操作)
[root@KVM-centos7 ~]# lscpu | grep -i kvm
Hypervisor vendor: KVM
退出控制台:
Ctrl+]
8. KVM虚拟的组成
在kvm中,一个虚拟机由两个文件组成。
(1)磁盘文件 name.raw或name.qcow2
(2)配置文件 name.xml
只要有上述两个文件,就可以迁移到任何一台机器上
9. 连接KVM虚拟机方式
(1)vnc:远程连接,需要网络正常,但是VNC界面中不支持复制粘贴。
(2)console:本地连接,当vnc用不了的时候,可以使用这种方法,支持复制粘贴。
10. KVM虚拟机虚拟磁盘格式转换和快照管理
磁盘格式:
(1)raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输,分配50G空间到KVM,就占用宿主机50G空间。
(2)qcow2:q是qume的缩写,cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输,分配50G给KVM,占用宿主机空间为KVM用多少,分多少。
raw格式设置:
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
qcow2格式设置:
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
11. 虚拟机磁盘工具常用命令(宿主机操作)
qemu -img
info:查看磁盘信息
create:创建磁盘
resize:设置磁盘大小
convert:磁盘格式转换
-c 压缩创建
(1)查看虚拟磁盘信息
[root@kvm01 ~]# qemu-img info /opt/centos7.raw
image: /opt/centos7.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.3G
(2)创建虚拟磁盘:(默认为.raw格式磁盘)
[root@kvm01 ~]# qemu-img create /data/cipan_weblog.raw 1G
Formatting '/data/cipan_weblog.raw', fmt=raw size=1073741824
[root@kvm01 ~]# ls /data/
cipan_weblog.raw
(3)创建qcow2格式磁盘
[root@kvm01 ~]# qemu-img create -f qcow2 /data/oldboy.qcow2 1G
Formatting '/data/oldboy.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm01 ~]# ls /data/
oldboy.qcow2
(4)调整虚拟磁盘容量
qemu-img resize /data/oldboy.qcow2 1T 路径可以使用相对路径与绝对路径,容量只能加,不能减。
(5)增加容量:只能是raw格式磁盘
qemu-img create oldboy.raw 5G
(6)磁盘格式转换(转换格式要关机)
raw格式转qcow2格式:
qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2
-f : 原格式
-O:转换的格式
oldboy.raw :源文件名称
oldboy.qcow2:转换成的文件名称
更改转换后的磁盘文件:
virsh edit kvm_name:
<driver name='qemu' type='qcow2'/>
<source file='/data/centos2.qcow2'/>
<target dev='vda' bus='virtio'/>
启动:
[root@kvm01 /data]# virsh start web-blog
Domain web-blog started
查看转换是否成功:
[root@kvm01 /data]# virsh dumpxml web-blog | grep qcow2
<driver name='qemu' type='qcow2'/>
<source file='/opt/centos7.qcow2'/>
新开终端:妈妈再也不怕xshell有下载任务时断开啦
screen
恢复:
screen -ls
screen -r 23403
12. 压缩磁盘文件空间
(1)tar
(2)-c 压缩
[root@kvm01 /data]# qemu-img convert -c -f raw -O qcow2 /opt/centos7.raw /opt/centos7.qcow2
[root@kvm01 /data]# ll -h /opt/
total 6.3G
-rw-r--r-- 1 root root 641M Jul 16 00:31 centos7.qcow2
-rw------- 1 root root 10G Jul 16 00:28 centos7.raw
-rw-r--r-- 1 qemu qemu 4.3G Dec 8 2018 CentOS-7-x86_64-DVD-1810.iso
13. 快照管理
(1)创建快照
方法1:
[root@kvm01 ~]# virsh snapshot-create web-blog
Domain snapshot 1563208743 created #UNIX系统随机数为快照名
方法2:
[root@kvm01 ~]# virsh snapshot-create-as web-blog --name install_ok
Domain snapshot install_ok created #install_ok为快照名
方法3:
[root@kvm01 ~]# virsh snapshot-create-as --name install2_ok web-blog
Domain snapshot install2_ok created #方法3与方法2差不多
(2)查看快照
[root@kvm01 ~]# virsh snapshot-list web-blog
Name Creation Time State
------------------------------------------------------------
1563208743 2019-07-16 00:39:03 +0800 running #方法1创建
install2_ok 2019-07-16 00:42:37 +0800 running #方法3创建
install_ok 2019-07-16 00:41:07 +0800 running #方法2创建
(3)还原快照
virsh snapshot-revert KVM虚拟机名 --snapshotname 快照名
[root@kvm01 ~]# virsh snapshot-revert web-blog --snapshotname install2_ok
(4)删除快照
[root@kvm01 ~]# virsh snapshot-delete web-blog --snapshotname 1563208743
Domain snapshot 1563208743 deleted
[root@kvm01 ~]# virsh snapshot-delete web-blog --snapshotname install2_ok
Domain snapshot install2_ok deleted
注意:
raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中vi
作业:
1. 写一个脚本,备份所有虚拟机的配置文件,配置文件以虚拟机名称命名,并以.xml结尾
2. 安装一个CentOS6的KVM虚拟机,并实现console控制台登录。
注意:默认情况下CentOS6,没有SWAP进不了系统。也就是说安装系统是,要分一点swap系统,装好后取消SWAP分区,关闭selinux。安装时就使用qcow2格式并-c压缩,然后试着tar打包,看看能不能再次压缩空间。
网友评论