centos7虚拟化
虚拟化介绍
什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
为什么要用虚拟化?
阿里云 kvm开源
azure
vmware ESXI商业软件
- 没有虚拟化之前:计算机的硬件配置越来越高
如服务器的配置:512G 内存,4路 8核16线程 ,12* PCI-E 1T的SSD;
ntp服务,安装多个mysql,安装多个tomcat,安装….
- linux开源的,很多软件都有依赖包openssl nginx。所以充分利用资源,软件运行环境的隔离,只有虚拟化才行实现。
使用场景
场景1:同一台物理机运行多个php版本 php5.3(openssl,gd) php5.5 php7.2
场景2:机房的迁移,解决了硬件和系统的依赖
场景3:openstack环境,软件发布方式,担心软件客户装不上,直接就提供虚拟机的版本。
场景4:开发环境和测试环境,使用虚拟化,如果开发测试把Linux库文件(.so结尾的是linux 库文件)不小心删除了几个,系统命令就用不了了。
只靠一台物理服务器,30台虚拟机
场景5:业务的快速部署
从头安装系统麻烦,安装服务,配置,克隆虚拟机,改ip
虚拟化的优势
虚拟化:提高了资源的利用率,各个服务的安全性隔离,解决了系统和硬件之间的依赖
kvm虚拟化管理软件的安装
1 | yum install libvirt virt-install qemu-kvm -y |
KVM:
- Kernel-based Virtual Machine 只要运行kvm虚拟机的能力,没有管理kvm虚拟机的能力
libvirt 作用:
- 虚拟机的管理软件
libvirt: kvm,xen,qemu,lxc….,可以管理多个,是个通用的管理软件
virt virt-install virt-clone 作用:
- 虚拟机的安装工具和克隆工具
qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘
虚拟化软件介绍
- qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
- xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差! 如 redhat 5.5 xen
- KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核 centos6 kvm。 性能较好,兼容较好
安装一台kvm虚拟机
宿主机 使用分发软件TightVNC或者VNC Viewer
vnc:
- 远程的桌面管理工具
1 | # 宿主机执行 |
具体安装
在 10.0.0.11 宿主机安装虚拟机cnetos7
建议虚拟机内存不要低于1024M,否则安装系统特别慢!
1 | 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连接查看
vnc-service:5900
vnc:10.0.0.11:5900
virt-install安装参数解读
1 | --virt-type kvm 虚拟化的类型(qemu) |
虚拟机安装过程
与安装centos7系统类似
kvm虚拟机的管理配置
virsh日常管理
1 | virsh list # 列出正在运行和挂起的虚拟机 |
修改配置
1 | # 如果宿主机的硬盘不够了,想要将虚拟机的磁盘文件迁走到另一个硬盘上,只是迁移是不够的,这样虚拟机就找不到磁盘文件,不能启动,所以要修改配置文件 |
1 | virsh domrename shop-web01 # 重命名,新版本才有 |
kvm虚拟机开机启动
1 | virsh autostart centos7 # 设置开机启动,前提是 systemctl enable libvirtd |
console 控制台 登录
1 | # 让虚拟机支持console控制, 进入kvm虚拟机, 或者修改内核文件,加入配置参数 |
kvm虚拟机虚拟磁盘格式转换
- raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用2G,传输的时候要传50G
- qcow2:cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 使用了2G,传输的时候也传2G,就是写多少占多少
1 | qemu-img info /opt/centos2.raw # 查看磁盘信息 |
修改的配置文件格式
kvm虚拟机快照管理
1 | # 创建快照 |
kvm虚拟机克隆
完整克隆:将基础磁盘文件完整拷贝一份
链接克隆:依赖基础磁盘文件,把变化的内容保存在一个新的qcow2文件中
1 | # 完整克隆,利用官方命令 |
kvm虚拟机的桥接网络
默认的虚拟机网络是NAT模式,网段192.168.122.0/24,NAT有一个缺陷,就是用户不能访问kvm虚拟机的内网ip
1 | # 创建桥接网卡 |
怎么把现有的网络改为桥接网络
1 | # 需要改配置文件,首先比较网卡这一块的配置有什么区别,可以先把配置文件备份一下,然后对比 |
1 | virsh edit web04 # 把web04也改成桥接网络 |
热添加技术
热添加就是不关机情况下增加资源
kvm虚拟机在线热添加硬盘
1 | # 临时生效,重启之后就没有了 |
剥离硬盘
1 | # 先把硬盘卸载 |
kvm虚拟机在线热添加网卡
1 | # 添加网卡,默认是临时生效,永久生效,需要加上 --config |
kvm虚拟机在线热添加内存
1 | # 创建虚拟机要 --memory 512,maxmemory=2048,和之前不一样 |
kvm虚拟机在线热添加cpu
1 | # 先创建一个虚拟机,修改cpu的参数,--vcpus ,注意:老版的maxvcpus,新版的提示maxcpus,要加上v,这是个坑 |
kvm虚拟机热迁移
开机的状态下,从宿主机1迁移到宿主机2
- 冷迁移kvm虚拟机:配置文件,磁盘文件
- 热迁移kvm虚拟机:配置文件,nfs共享
热迁移流程:
在kvm01上挂起虚拟机vm01,发送vm的虚拟机配置文件和运行时内存中的数据到vm02,接收完毕后,kvm02恢复vm01,热迁移完成。
架构图如下:
参考:https://www.qstack.com.cn/archives/368.html
实验环境准备
主机名 | ip | 内存 | 网络 | 软件需求 | 虚拟化 |
---|---|---|---|---|---|
kvm01 | 10.0.0.11 | 2G | 创建br0桥接网卡 | kvm和nfs | 开启虚拟化 |
kvm02 | 10.0.0.12 | 2G | 创建br0桥接网卡 | kvm和nfs | 开启虚拟化 |
nfs01 | 10.0.0.31 | 1G | 无 | nfs | 无 |
注意:需要做主机名host解析
安装
在kvm01和kvm02安装kvm和NFS,配置桥接网卡
1 | yum install libvirt virt-install qemu-kvm nfs-utils -y # 两台宿主机都要安装 |
在nfs01上安装配置nfs
1 | yum install nfs-utils -y |
kvm01和kvm02挂载共享目录
1 | mount -t nfs 10.0.0.31:/data /opt # kvm01和kvm02挂载到nfs01 /data 目录 |
安装一台基于桥接模式的虚拟机
1 | virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole |
热迁移的命令
1 | # 热迁移的命令 |