介绍云计算
云计算和虚拟化有什么不同?
没有可比性 ;
云计算是一种按量付费的模式,云计算的底层是由虚拟化技术来实现的
。
一个是模式 一个是技术
最先提出云计算概念,亚马逊 从2006年开始提供云计算
阿里云 2008年创建团队 2011年正式对外提供服务
按量付费的模式
没有云计算之前 ,运维的工作非常杂
硬件 服务器型号 raid知识 网络知识 对运维人员的身体素质都有要求的 等
物理服务器
数据库服务器要做raid10 存储服务器做raid5 web服务器raid5
硬件性能特别高 ,需要对服务器做虚拟化
服务器配置 4课CPU 40核心 内存2T 硬盘2.5 可以插很多块12x4T
这么高配置的服务器 只运行一个ftp的话 过多的性能浪费
多运行一些 来提高资源的利用率
很多服务 运行环境不同 彼此冲突
jumpserver 和ansible相互冲突 依赖的python模块版本不同 环境乱 管理难度很大
虚拟化切分成一个一个独立运行环境的虚拟机
没有云计算之前 运维就是打杂的 什么都得会
服务类型
iaas 底层硬件+操作系统 运维的工作:部署运维环境lnmp 放入服务代码
paas 底层硬件+操作系统+运维行业 运维:放入服务代码 备份数据
saas: 底层硬件+操作系统+运行环境+服务代码+数据 运维:掏钱买服务
有了云计算之后 运维更加专注网站架构设置
为什么要用云计算?
小公司:游戏公司 研发一款游戏 上线 有玩家充值了 才算是有收入;托管到IDC机房
大公司:每年都会有一些大型活动,活动过后 造成资源闲置 出现大量闲置的计算资源
阿里云最挣钱 前期低价吸引用户 后期涨价
IDC机房 :互联网数据中心 微软 腾讯 阿里
容器 :进程级别虚拟化
KVM:虚拟化技术
什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现同一台计算机上
物理服务器:称为宿主机
通过VMware 模拟一台物理服务器,来实现同一台同时运行多个不同的操作系统的技术
linux虚拟化软件:
1、qemu 软件纯模拟全虚拟化软件 特变慢 兼容性好(因为全部都是虚拟模拟的,不基于硬件) qemu是虚拟化技术的鼻祖 qemu可以运行一切的操作系统
2、xen(半) 性能特别好 需要使用专门修改后的内核,兼容性差 Redhat5.5 xen kvm xen没有模拟全部的硬件 直接使用物理机的CPU ;为了避免虚拟机里面执行reboot命令 导致宿主机也胡重启
xen 的虚拟机需要使用专门的内核,这个操作系统内核会翻译转换一些指令。
3、KVM 全虚拟机 他有硬件支持CPU 基于内核,而且不需要使用专门的内核,centos6 kvm 性能好 兼容性较好 内置在linux的内核模块的
VMware workstations 需要linux的安装centos为 图形界面
virtual box 图形界面 Oracle
安装一个KVM的管理工具 因为已经是基于内核了
kvm全称:Kernel-based Virtual Machine 属于内核的模块
linux都是通过应用程序来调用内核的 通过内核来 调用硬件
qemu-kvm 管理虚拟机的虚拟磁盘
关闭tab 滴滴的声音
[root@virtualization ~]# cat /etc/inputrc
# do not bell on tab-completion
set bell-style none
为什么要使用vnc ?
linux是一个纯命令行的系统 不支持图形界面
kvm启动虚拟机之后 将虚拟机的控制台通过vnc协议输出 相当与启动了一个vnc服务端
vnc分为客户端和服务端
注意:安装centos7系统时 没有勾选中文支持会导致Jenkins无法汉化
安装kvm虚拟化管理工具
环境要求:
centos 7.4 7.6
vmware 宿主机 kvm虚拟机
内存4G,cpu开启虚拟化
echo ‘192.168.12.201 mirrors.aliyun.com’ >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装软件包
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)作用:管理虚拟机的虚拟磁盘
开启服务 并设置为开机自启
systemctl start libvirtd.service
systemctl status libvirtd.service
查看加载的内核模块
[root@kvmnode01 opt]# lsmod |grep kvm
kvm_intel 183621 3
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
qemu 是管理虚拟机进程的
netstat -ntpl
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 18096/qemu-kvm
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 10752/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8635/sshd
tcp6 0 0 :::22 :::* LISTEN 8635/sshd
[root@kvmnode01 qemu]#
启动虚拟机时 自动检查端口 5900
shutdown: 关机速度慢 安全
destroy: 关机速度快 不安全 异常关机 容易造成mysql启动失败
reboot: virsh stop virsh start
kvm虚拟机主要有配置文件和磁盘文件组成
修改配置之前进行备份
virsh dumpxml centos7 输出配置文件
virsh dumpxml centos7 >centos8 备份配置文件
配置文件 决定了虚拟机的硬件配置
文件名字是给自己看的 起名字一定要见名知意
kvm虚拟机管理操作:
创建虚拟机
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
解释:
vnc:10.0.0.11:5900 默认vnc的连接登录端口
--virt-type kvm 虚拟化的类型(qemu)
--os-type=linux 系统类型
--os-variant rhel7 系统版本 查看支持的系统版本 osinfo-query os
--name centos7 虚拟机的名字 必须唯一
--memory 1024 虚拟机的内存
--vcpus 1 虚拟cpu的核数
--disk /opt/centos2.raw,format=raw,size=10 虚拟硬盘 每个虚拟机的磁盘文件必须唯一
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 镜像源
--network network=default 使用默认NAT的网络
--graphics vnc,listen=0.0.0.0 配置虚拟机显示设置 vnc协议 监听0.0.0.0
--noautoconsole 不要自动尝试连接到客户端控制台
kvm虚拟机默认配置文件位置
[root@kvmnode01 qemu]# pwd
/etc/libvirt/qemu
[root@kvmnode01 qemu]# ls
centos7.xml networks
[root@kvmnode01 qemu]#
virsh version 查看kvm的版本信息
Compiled against library: libvirt 4.5.0
Using library: libvirt 4.5.0
Using API: QEMU 4.5.0
Running hypervisor: QEMU 1.5.3
[root@kvmnode01 ~]# virsh vcpuinfo centos7 查看虚拟机的CPU信息
VCPU: 0
CPU: 0
State: running
CPU time: 119.8s
CPU Affinity: y
查看kvm 虚拟机列表
[root@kvmnode01 qemu]# virsh list 显示正在运行的虚拟机
Id Name State
----------------------------------------------------
2 centos7 running
[root@kvmnode01 qemu]# virsh list --all
Id Name State
----------------------------------------------------
2 centos7 running
启动centos7虚拟机
virsh start centos7
设置虚拟机跟随系统启动
virsh autostart centos7
关闭虚拟机自启
virsh autostart --disable centos7
关闭centos7的虚拟机
virsh shutdown centos7
拔出电源关闭centos7的虚拟机 什么情况下使用这种方式关机 当虚拟机还有装系统的时候使用这样方式
virsh destory centos7
移除centos7的虚拟机
virsh undefine centos7
设置centos7虚拟机开机启动
virsh autostart centos7
默认情况下 virsh工具不能对linux虚拟机进行关机操作(在虚拟机内部进行关机操作)
yum install -y acpid
/etc/init.d/acpid start
通过配置文件启动虚拟机
virsh create /etc/libvirt/qemu/centos7.xml
挂起回复virsh命令
virsh suspend centos7 挂起
virsh resume centos7 恢复
修改虚拟机名字
修改虚拟机名字
1、导出虚拟机配置文件
virsh dumpxml centos7 > test-centos7.xml
2、更改配置文件
sed -i 's/centos7/test-centos7/g' test-centos7.xml
3、移除原有的虚拟机
virsh undefine test-centos7
4、通过配置文件 导入虚拟机
virsh define test-centos7.xml
5、启动虚拟机
virsh start centos7
问题1:可以命令方式修改主机名吗
可以
virsh domrename centos7 centos2 将centos7修改名为centos2
如果修改了虚拟机的文件 再启动不可以吗 为什么要移除原来的虚拟机
是因为已经加载了配置文件,需要重新导入
虚拟机的IP地址可以修改吗
默认的配置信息是dhcp 并不代表是不能设置为static 手动设置
显示虚拟机信息
[root@kvmnode01 qemu]# virsh dominfo centos7
Id: 2
Name: centos7
UUID: ee1fb9d9-0df9-4b38-aeb7-afef00a39247
OS Type: hvm
State: running
CPU(s): 1
CPU time: 584.4s
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
[root@kvmnode01 qemu]#
查看虚拟机内存和CPU使用情况
yum install -y virt-top
virt-top
查看虚拟机的分区情况
[root@kvmnode01 qemu]# virt-df centos7
Filesystem 1K-blocks Used Available Use%
libguestfs: error: list_filesystems: sgdisk: Invalid partition data!
[root@kvmnode01 qemu]#
修改配置文件 默认会检查语法
virsh edit centos7
这样修改不需要重新define。 但是需要手动shutdown 和 start 不能reboot 是因为进程需要重新生成才可以
在kvm虚拟机关机状态下 可以在线状态下修改名字
virsh domrename centos2 centos7
挂起操作:以及状态
[root@kvmnode01 opt]# virsh suspend centos7
Domain centos7 suspended
[root@kvmnode01 opt]# virsh list --all
Id Name State
----------------------------------------------------
12 centos7 paused
解放挂起
[root@kvmnode01 opt]# virsh resume centos7
Domain centos7 resumed
[root@kvmnode01 opt]# virsh list --all
Id Name State
----------------------------------------------------
12 centos7 running
[root@kvmnode01 opt]#
虚拟机挂起 会导致时间不一致的问题
虚拟机模拟的时钟频率 虚拟机运行时间一长 就容易导致时间不对
需要做时间同步
yum install -y chronyd
systemctl restart chronyd
查看时间同步
[root@kvmnode01 opt]# timedatectl
Local time: Thu 2020-05-21 17:33:49 CST
Universal time: Thu 2020-05-21 09:33:49 UTC
RTC time: Thu 2020-05-21 09:33:48
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@kvmnode01 opt]#
查看kvm虚拟机端口 是vnc的最后一位端口数 5900 最后一位就是0 第二台5901 就是1
[root@kvmnode01 opt]# virsh list --all
Id Name State
----------------------------------------------------
12 centos7 running
[root@kvmnode01 opt]# virsh vncdisplay centos7
:0
[root@kvmnode01 opt]#
[root@kvmnode01 opt]# virsh vncdisplay 1
:0
[root@kvmnode01 opt]# virsh vncdisplay centos2.raw
:0
[root@kvmnode01 opt]#
服务器,通电后 自动启动
配置虚拟机随宿主机启动而启动
配置开机自启动
virsh autostart centos7
设置了开机自启动的都在autostart中有软连接
[root@kvmnode01 qemu]# ll
total 16
drwxr-xr-x 2 root root 6 May 21 17:49 autostart
-rw------- 1 root root 4521 May 21 17:41 centos2.raw.xml
-rw------- 1 root root 4513 May 21 17:20 centos7.xml
drwx------ 3 root root 42 May 21 12:24 networks
[root@kvmnode01 qemu]#
或者使用这个命令
[root@kvmnode01 autostart]# virsh list --autostart
Id Name State
----------------------------------------------------
1 centos2.raw running
2 centos7 running
测试
[root@kvmnode01 autostart]# systemctl restart libvirtd.service
[root@kvmnode01 autostart]# virsh list
Id Name State
----------------------------------------------------
1 centos2.raw running
2 centos7 running
关闭开机自启动
[root@kvmnode01 opt]# virsh autostart --disable centos7
Domain centos7 unmarked as autostarted
[root@kvmnode01 opt]# virsh list --autostart
Id Name State
----------------------------------------------------
1 centos2.raw running
开启开机自启动
[root@kvmnode01 opt]# virsh autostart centos7
Domain centos7 marked as autostarted
[root@kvmnode01 opt]# virsh list --autostart
Id Name State
----------------------------------------------------
1 centos2.raw running
2 centos7 running
ssh登录到kvm虚拟机
只能是本地宿主机登录 ,需要提前到vnc查看IP地址
在kvm虚拟机进行操作
修改内核命令 使用console命令
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
console登录到虚拟机
[root@kvmnode01 autostart]# virsh console centos7
Connected to domain centos7
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64
localhost login: root
Password:
Last login: Thu May 21 17:57:44 from gateway
[root@localhost ~]#
ctrl1 +】 回到宿主机上
CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64
localhost login:
[root@kvmnode01 autostart]#
再次console是不需要重新登录
只要保存一个centos7.raw 和vm_centos7.xml 配置文件 就可以了 不用以后再使用vnc去安装系统了。
关于磁盘文件格式的问题:
因为xfs文件系统的原因,他们实例占用空间不多 ,qemu-img info 看到的理论上的10G 未必是真实的 用du就能看到他们实际占用大小