什么是虚拟化html
虚拟化就是经过模拟计算机硬件(cpu,内存,硬盘,网卡)来实如今一台物理服务器上运行同时多个不一样的操做系统,
而且使每一个操做系统之间都是互相隔离的
为何要学习虚拟化linux
目前国内的公有云底层采用的都是kvm虚拟化,通过这几年的快速发展,kvm计算已经很是成熟稳定,
在任何linux发行版中,kvm都是标配,虚拟化已经成为了一项必备的技能
虚拟化的应用场景web
场景1:只有一台服务器,可是要运行多个版本的软件,不一样版本之间还相互冲突
场景2:机房的迁移,物理机在运输过程当中容易损坏,致使数据丢失
场景3:openstack部署太难!步骤太繁琐,如何体验最新版的openstack
场景4:开发环境和测试环境常常损坏,运维重复装系统
场景5:业务的扩张,须要快速部署10个如出一辙的集群
环境准备shell
主机名 kvm01 IP 10.0.0.11 操做系统 centos7 内存 4G 硬盘 50G
在处理器设置中勾选 虚拟化 Intel VT-x...
优化:
kvm01在安装系统的时候,不要使用自动分区,自动分区使用的LVM分区,在使用kvm的时候,特别卡!
关闭selinux
关闭firewalld
安装kvm管理工具vim
安装: yum install libvirt virt-install qemu-kvm -y
建议使用光盘安装,会特别快:一、挂载光盘,二、yum源指定光盘.三、安装 介绍: libvirt服务:管理kvm虚拟机的生命周期 virt-install工具:建立安装虚拟机 qemu-kvm工具:使用qemu-img为虚拟机提供硬盘
Linux上的几种虚拟化软件centos
qemu 软件纯模拟全虚拟化软件,特别慢!
xen 性能特别好,须要使用专门修改以后的内核,兼容性差
KVM 须要cpu支持虚拟化,基于内核,不须要使用专门的内核,兼容行好,性能较好
准备条件缓存
在window上安装TightVNC tightvnc官网:http://www.tightvnc.com vnc是一个跨平台的远程桌面软件,待会安装kvm虚拟机系统的时候使用 启动libvirtd服务 systemctl start libvirtd.service systemctl status libvirtd.service
安装kvm虚拟机安全
建议虚拟机内存不要低于1024M,不然安装系统特别慢! 安装以前建立好目录,并带入系统文件 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 /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
执行完命令后,赶忙使用TightVNC登录正在安装的虚拟机,默认端口是5900
10.0.0.11:5900
看到熟悉的安装界面,倒计时中,赶忙上下键切换一下
回车,不用调整内核,网卡也是eth0
注意,最重要的一点,分区的时候,不要swap分区,选择(i will configure partitioning)
而后不要选择LVM,选择标准分区(standard Partition)
添加一个根分区(/),done
KDUMP取消掉
网络(NETWORK & HOSTNAME) 打开
时间选择 上海
OK,进入安装
而后设置密码
列表list
virsh list 处于运行状态的
virsh list --all 全部的
开机start
virsh start centos7(虚拟机名字)
关机shutdown
拔电源关机destroy
导出配置dumpxml
默认是输出到屏幕virsh dumpxml >centos7.xml
配置文件位于/etc/libvirt/qemu/centos7.xml
/opt/下的raw文件是模板文件,只要这两个文件在,就能够任意迁移虚拟机
删除undefine
推荐:先destroy,在undefine
导入配置define
virsh define centos7.xml
修改配置edit
有语法错误提示
重命名domrename
注意:低版本不支持
挂起suspend
恢复resume
查询vnc端口号vncdisplay
新建的虚拟机的端口号会自增
virsh vncdisplay centos7
:1 表示5901
开机启动autostart
为何要使用console连接服务器
1:常规状况下,安装完 KVM 以后,可能都会经过 VNC 链接到 KVM 虚拟机里面去修改 IP 等信息。
可是一旦虚拟机比较多的话,打开过多的端口会形成安全问题 2:不少时候,咱们是经过跳板机链接的宿主机,你的window和kvm宿主机没有直达的路由,
这时候vnc都用不了,如何快速进入到 KVM 虚拟机里面去排查问题呢?
配置console连接网络
在centos7的kvm虚拟机中执行: grubby --update-kernel=ALL --args="console=ttyS0,115200n8" reboot重启生效
步骤:
一、经过svn连接到虚拟机,查看IP
二、连接客户机ssh root@192.168.122.206
三、执行上面的命令
四、reboot重启
五、连接 virsh console centos7
六、ctrl+] 就会退回到客户机
做业:centos6的虚拟机如何实现console连接?
kvm虚拟机的两种经常使用格式
raw:裸格式,占用空间比较大,不适合远程传输,不支持快照功能,性能较好 qcow2:cow(copy on write)占用空间小,适合传输,支持快照,性能比raw差一点点
qemu-img的经常使用命令
建立虚拟磁盘 qemu-img create test.raw 10G qemu-img create -f qcow2 test.qcow2 10G 查看虚拟磁盘信息 qemu-img info test.raw 调整虚拟磁盘容量大小 qemu-img resize test.raw +5G 磁盘格式转换,转换前关机 qemu-img convert -f raw -O qcow2 test.raw oldboy.qcow2
转换完成后,修改配置文件(两个地方,类型和路径)
实战
将现有的虚拟机的磁盘格式由raw转换为qcow2,并测试运行
快照管理
建立快照 virsh snapshot-create centos7 查看快照 virsh snapshot-list centos7 还原快照 virsh snapshot-revert centos7 --snapshotname 1516574134 删除快照 virsh snapshot-delete centos7 --snapshotname 1516636570
快照空间只管建立,无论回收,删除以后,空间还被占用着
完整克隆 实现方法: virt-clone -o web01 --auto-clone 克隆后,新的虚拟机后面多了-lone
查看如下二者的配置文件的不一样
virsh dumpxml web01 > web01.xml
virsh dumpxml web01-clone > web01-clone.xml
vimdiff web01.xml web01-clone.xml
名字
uuid
磁盘文件
mac地址
连接克隆 实现方法: shell脚本
手动实现完整克隆的步骤(100%成功)
1:克隆虚拟磁盘文件 cp centos7.qcow2 web03.qcow2 2:生成新的虚拟机配置文件 name修改 uuid删掉 disk路径/opt/web03.qcow2 mac地址删除 3:测试启动 virsh define web01.xml
连接克隆(占用空间特别的小)
qemu-img create -f qcow2 -b cetnos7.qcow2 web04.qcow2 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
连接克隆和完整克隆的区别就在于第一步,完整复制和撞见回血文件的区别
为何要使用桥接网络
咱们运行虚拟机的目的是,在虚拟机中运行咱们的业务,如今业务所须要的服务都已经运行了,
但是除了在宿主机上能访问,其余人都访问不了!!!
建立桥接网络
建立桥接网络 1:virsh iface-bridge eth0 br0
若是报错,没法成功修改,能够本身手工建立br和修改eth0 基于桥接网络建立虚拟机 2:virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm
--os-type=linux
--os-variant rhel7
--name web04
--memory 1024
--vcpus 1
--disk /opt/web04.qcow2,format=qcow2,size=10
--boot hd
--network bridge=br0 这里指定了桥接网卡
--graphics vnc,listen=0.0.0.0
--noautoconsole
经过vnc链接到虚拟机,查看ip,已经变成了10.0.0.131
将已有的虚拟机改成桥接网络
首先是关机状态
1:virsh edit centos7 <interface type='bridge'> <mac address='52:54:00:55:aa:fa'/> <source bridge='br0’/> 这里的default是系统配置的网路,能够经过virsh进入命令命令行输入net-edit default看到
若是促使dhcp分配的IP,就要修改一下配置 2:修改虚拟机ip地址 /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
BOOTPROTO="static"
删除UUID
添加:
IPADDR="10.0.0.132"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
DNS=“223.5.5.5”
保存,重启网络
经过vnc链接到虚拟机,查看ip,已经变成了10.0.0.132
kvm NAT模式网络原理图
kvm桥接网络原理图
什么是热添加技术
热添加技术就是不停机的状况下,在线热添加硬盘,内存,cpu,网卡等设备,
热添加技术通常都是在虚拟机资源不够了,又不能停机的状况下使用的,
热添加技术是虚拟机相对于物理机的一个很大的优点,它让资源分配变得更灵活!
热添加的类型
1.热添加硬盘 建立硬盘
qemu-img create -f qcow2 centos7-add01.qcow2 5G
热添加硬盘
virsh attach-disk web01 /opt/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
vdb:指定硬盘的名字,由于已经有vba了
--live 热添加
cache=none 不分配缓存
要使用须要给分区
扩展:硬盘扩容
虚拟机卸载硬盘
宿主机剥离硬盘virsh detach-disk
重置以前的硬盘
挂载----看到容量没变---删除原分区---修改分区表,让使用全部的空间
---partprobe /dev/vdb(通知内核,调整)---查看仍是没变
---xfs_growfs /mnt(由于用的是xfs,若是是 ft4 用resize2fs /mnt
---OK!
2.热添加网卡 添加网卡
virsh attach-interface web04 --type bridge --model virtio --source br0
也能够指定network --source 就是default
必定要指定virtio
永久修改,要修该配置文件
在复制同样的,删除MAC,修改类型
3.热添加cpu 安装参数:
添加参数maxvcpus=4
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1,maxvcpus=4 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
执行报错:系统的缘由
解决:maxvcpus 加了一个v ,上面的命令是正确的,不会报错
热添加cpu
virsh setvcpus web04 --count=2
永久修改,要修该配置文件
4.热添加内存
添加了参数maxmemory=2048
安装参数
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus=1,maxvcpus=2 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加内存
virsh setmem web04 1G
永久生效要改配置文件
什么是热迁移
相比KVM虚拟机冷迁移中须要拷贝虚拟机虚拟磁盘文件,kvm虚拟机热迁移无需拷贝虚拟磁盘文件,
可是须要迁移到的宿主机之间须要有相同的目录结构虚拟机磁盘文件,也就是共享存储,
此次经过你们熟悉的nfs来实现,固然也能够采用Glusterfs等分布式文件系统来实现.
为何要用热迁移
上一节咱们学习了在线热添加技术,就很容易理解了。假设我初级只有一台16G内存的物理机,
为了充分利用资源,我可能运行了8台2G内存的虚拟机,而后访问量增长,虚拟机的2G内存不够用了,
须要扩容,扩容以前咱们就须要先迁移一部分虚拟机到其余宿主机上了,有的业务特别核心,
暂停的时间不能太长,这时候就要用到咱们的热迁移了。
热迁移的过程
假设咱们有2台宿主机kvm01和kvm02,在kvm01上挂起虚拟机vm01,
发送vm的虚拟机配置文件和运行时内存中的数据到kvm02, 接受完毕,kvm02恢复vm01,热迁移完成。
迁移环境要求
步骤
一:在kvm01和kvm02上安装kvm和nfs,配置桥接网卡 二:在nfs01上安装配置nfs 三:kvm01和kvm02挂载共享目录/opt 四:安装一台基于桥接模式的虚拟机
/data目录下上传准备好的磁盘和配置文件
安装系统,指定咱们本身的磁盘文件和配置
五:在kvm01上安装图形界面、vnc服务端和virt-manager 六:启动vnc服务端 七:使用vnc链接宿主机,使用virt-manager进行迁移 说明:详情能够访问的博客https://www.qstack.com.cn/archives/368.html
服务器宕机、硬盘坏了、网卡换了,就须要进机房了
通常建议安装远程控制卡,除非断网了,断电了,其余的均可以搞定
进入以前要预定,
服务器少的话,能够一台一台的插线检查,多的话可使用KVM(keyboard video manager)
一、实现centos6的kvm虚拟机console登录控制
1、安装kvm虚拟化软件 2、新建一个内存1G网卡桥接本机eth0 kvm虚拟机 3、装一台基于centos6系统的kvm虚拟机 4、实现使用console登录控制
二、实现将ESXI5.5中的centos7虚拟机迁移到kvm上
1:安装ESXI5.5 2:在ESXI5.5上安装一台centos7的虚拟机 3:将centos7的虚拟机导出为ova文件,并在kvm上进行转换和导入,启动测试