1:什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
2:为什么要用虚拟化?
阿里云 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:开发环境和测试环境,使用虚拟化
只靠一台物理服务器,30台虚拟机
产品 -- 开发 -- 运维 -- 测试
so结尾,linux 库文件
场景5:业务的快速部署
从头安装系统,安装服务,配置
克隆虚拟机,改ip,
虚拟化:提高了资源的利用率,各个服务的安全性隔离,解决了系统和硬件之间的依赖
3:kvm虚拟化管理软件的安装
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
echo "192.168.21.15 mirrors.aliyun.com" >>/etc/hosts
yum install libvirt virt-install qemu-kvm -y
cd /opt
dd if=/dev/cdrom of=CentOS-7-x86_64-DVD-1804.iso
yum install ntpdate -y
*/5 * * * * ntpdate ntp6.aliyun.com &>/dev/null
[root@oldboy opt]# ll
total 4365320
-rw-r--r-- 1 qemu qemu 4470079488 May 20 09:52 CentOS-7-x86_64-DVD-1804.iso
vim /boot/grub2/grub.cfg 内核文件
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
性能较好,兼容较好
[root@oldboy opt]# lsmod|grep -i kvm 查看内核模块
kvm_amd 69849 3
kvm 566340 1 kvm_amd
irqbypass 13503 1 kvm
4:安装一台kvm虚拟机
分发软件TightVNC或者VNC Viewer 4.exe
宿主机
vnc:远程的桌面管理工具
向日葵
systemctl start libvirtd.service
systemctl status libvirtd.service
10.0.0.11 宿主机
建议虚拟机内存不要低于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-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
vnc-service:5900
vnc:10.0.0.11:5900
--virt-type kvm 虚拟化的类型(qemu)
--os-type=linux 系统类型
--os-variant rhel7 系统版本ii
--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
--noautoconsole
raw:10G 不支持做快照,性能好
qcow2: 支持快照
5:kvm虚拟机的virsh日常管理和配置
virsh list 只能查看开机 暂停状态的虚拟机
virsh list --all 查看所有虚拟机状态
virsh shutdown centos2 关机 (正常关机)
virsh start centos2 开机
virsh destroy centos2 拔电源关机 (比较危险)
导出配置dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
virsh undefine centos2 删除 推荐:先destroy,在undefine
virsh define centos7.xml 导入配置define
修改配置edit(自带语法检查)
重命名domrename (低版本不支持)
挂起suspend
恢复resume
查询vnc端口号vncdisplay virsh vncdisplay centos2
6:kvm虚拟机开机启动和console 控制台 登录
kvm运行业务程序
开机启动autostart,前提:systemctl enable libvirtd;
systemctl restart libvirtd.service 重启服务
virsh autostart centos2 开机自启
virsh autostart --disable centos2 取消开机启动
centos7的kvm虚拟机:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
作业1:实现centos6的kvm虚拟机,console命令行登录?
安装一台centos6的kvm虚拟机
console命令行登录
作业2:centos6实现没有swap分区,启动进系统
kvm链接克隆
第一种方法
第一步:
qemu-img create -f qcow2 -b web02.qcow2 web06.qcow2
第二步:基于已有磁盘,启动一台新虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web06 --memory 1024 --vcpus 1 --disk /data/web06.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
第二种 链接克隆脚本
自动kvm链接克隆 模板机(web02) 新虚拟机
vim vm_auto_clone_v2.sh
#!/bin/sh
old=$1
new=$2
virsh dumpxml $old >$new.xml
old_disk=`virsh dumpxml $old|grep 'qcow2'|grep -oP "(?<=file=')[^']+"`
dir=`dirname $old_disk`
qemu-img create -f qcow2 -b $old_disk ${dir}/$new.qcow2
sed -ri 's#(<name>)(.*)(</name>)#\1'$new'\3#g' $new.xml
sed -i '/<uuid>/d' $new.xml
sed -ri "s#(<source file=')(.*)('/>)#\1${dir}/$new.qcow2\3#g" $new.xml
sed -i '/<mac address/d' $new.xml
virsh define $new.xml
virsh start $new
rm -rf $new.xml
脚本尚不完善。需要做判断。
9:kvm虚拟机的桥接网络
默认的虚拟机网络是NAT模式,网段192.168.122.0/24
默认NAT模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --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 /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
1:创建桥接网卡
virsh iface-bridge eth0 br0
取消桥接网卡
virsh iface-unbridge br0
2:virsh edit centos7
<interface type='bridge'>
<mac address='52:54:00:55:aa:fa'/>
<source bridge='br0'/>
在宿主机上,重启虚拟机生效
3:测试虚拟机网络
虚拟机添加磁盘扩容
创建新硬盘
qemu-img create -f qcow2 /data/web03-add01.qcow2 10G
附加新硬盘
virsh attach-disk web03 --source /data/web03-add01.qcow2 --target vdb --subdriver qcow2
默认是raw格式
-f qcow2 格式 添加参数 --subdriver qcow2
虚拟机中:
fdisk -l
mkfs.xfs /dev/vdb
mount /dev/vdb /mnt
....
扩容:
umount /mnt
剥离硬盘
virsh detach-disk web03 --target vdb
扩容:
qemu-img resize /data/web03-add01.qcow2 +10G
再插上硬盘
virsh attach-disk web03 --source /data/web03-add01.qcow2 --target vdb --subdriver qcow2
虚拟机中:
fdisk -l
mount /dev/vdb /mnt
xfs_growfs /dev/vdb
df -h
ls /mnt
根分区扩容:
1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小
qemu-img resize oldboy.qcow2 +10G
2)虚拟机中fdisk重新分区
fdisk /dev/vda
3)重启之后,执行xfs_growfs /dev/vda1,
如果虚拟机磁盘文件系统是ext4:resize2fs /dev/vda1
https://www.qstack.com.cn/archives/188.html 根分区扩容
kvm虚拟机在线热添加网卡
virsh attach-interface web03 --type bridge --source br0 --model virtio 桥接 临时添加网卡
virsh attach-interface web03 --type bridge --source br0 --model virtio --config 桥接 永久添加网卡
virsh attach-interface web03 --type network --source default --model virtio 默认添加网卡
virsh detach-interface web03 --type network --mac 52:54:00:f5:b0:ce 删除默认网卡
临时热添加内存
virsh setmem web04 1024M
setmem web04 1024M --live
永久增大内存
setmem web04 1024M --config
kvm虚拟机在线热添加cpu
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加cpu核数
setvcpus web04 4 --live
永久添加cpu核数
setvcpus web04 4 --config
网友评论