云计算KVM详细学习
云计算一.云计算概述1.什么是云计算?云计算是一种按量付费的模式。云计算的底层是通过虚拟化技术来实现的。2.云计算的服务类型ISSA:基础设施即服务 —>虚拟机 ecs openstackPAAS:平台即服务—>docker容器SAAS:软件即服务—>企业邮箱服务cdn服务rds数据库3.为什么要用云计算小公司:前期投入小,风险小,可以灵活扩容风险小...
云计算
一.云计算概述
1.什么是云计算?
云计算是一种按量付费的模式。云计算的底层是通过虚拟化技术来实现的。
2.云计算的服务类型
ISSA:基础设施即服务 —>虚拟机 ecs openstack
PAAS:平台即服务—>docker容器
SAAS:软件即服务—>企业邮箱服务 cdn服务 rds数据库
3.为什么要用云计算
小公司:前期投入小,风险小,可以灵活扩容风险小
大公司:闲置服务器计算资源,虚拟机,出租(超卖计算)
超卖技术:64核cpu的物理机可以产生64个1核的虚拟机
但是超卖技术,可以产生达到640台1核的虚拟机。
二.云计算的基础KVM虚拟化
1.什么是虚拟化?
虚拟化,通过模拟计算机的硬件,来实现同一台计算机上同时运行多个不同的操作系统技术。
2.虚拟化软件的差别
linux虚拟化软件:
qemu:全虚拟化软件,性能特别慢,兼容性好。
xen:性能特别好,需要使用专门修改之后的内核,兼容性差
KVM:全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用抓门的内核,性能较好,兼容性较好。
3.安装KVM虚拟化管理工具
yum install libvirt virt-install qemu-kvm -y
KVM:Kernel-based Virtual Machine
libvirt: 虚拟机的管理软件
virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
qemu-kvm qemu-img(qcow2,raw)作用:管理虚拟机的模拟磁盘。
环境要求:
centos 7.4 7.6
4.安装一台kvm虚拟机
VNC-Viewer-6.19.325:远程的桌面管理工具
启动虚拟机的管理服务
systemctl start libvirtd.service
systemctl enable libvirtd.service
创建虚拟机
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-type kvm #虚拟化的类型(qemu)
–os-type=linux #系统类型
–os-variant rhel7 #系统版本
–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
云主机没有swap分区
三.kvm虚拟机的virsh基础命令
1.KVM状态的命令
查看运行的KVM虚拟机状态
virsh list
查看所有的虚拟机状态
`virsh list --all`
kvm开机
`virsh start privi-server`
kvm重启
`virsh reboot privi-server`
kvm关机
`virsh ``shutdown` `privi-server`
kvm强制关机
`virsh destroy privi-server`
kvm暂停或挂起
`virsh suspend privi-server`
kvm从挂起状态恢复
`virsh resume privi-server`
kvm删除,但不会删除磁盘
`virsh undefine privi-server`
kvm设置随物理机启动而启动
`virsh autostart privi-server`
kvm关闭随物理机启动而启动
`virsh autostart --disable privi-server`
2.KVM文件的命令
KVM 虚拟机默认的配置文件在 /etc/libvirt/qemu 目录下,默认是以虚拟机名称命名的.xml文件
[root@oldboy ~]# ll /etc/libvirt/qemu
total 16
-rw------- 1 root root 4179 Oct 24 18:15 centos8.xml
修改配置文件
virsh edit web01
备份KVM虚拟机配置文件
virsh dumpxml web01 > /opt/vm_web01.xml
3.KVM虚拟机虚拟磁盘格式转换
raw:裸格式,占用空间比较大,不支持快照功能,性能好,不方便传输 总共50G占用也是50G
qcow2:实际生产常用,占用空间小,支持快照,性能比raw差一点,方便迁移 分配50G但只占用你所写的2G磁盘。
查看磁盘信息
qemu-img info /opt/centos2.raw
创建磁盘,默认为raw格式
qemu-img creat /opt/test.raw 5G
qemu-img create -f qcow2 /opt/test.qcow2 5G
调整磁盘大小
qemu-img resize /opt/test.raw 10G
qemu-img resize /opt/test.qcow2 +5G
转换格式
test qemu-img convert -f raw -O qcow2 /opt/test.raw /opt/qcow2
转换 源格式 目标格式 源文件 目标文件
4.KVM虚拟机快照管理
存储每raw格式,不支持快照
创建快照
virsh snapshot-create web01
virsh snapshot-create-as --name install_ok web01
查看快照
virsh snapshot-list web01
删除快照
virsh snapshot-delete web01 --snamshotname -install_ok
恢复快照
virsh snapshot-revert web01 --snapshotname install_ok
#恢复快照后需要校正时间 systemctl restart chronyd
快照存储位置
qemu-img info /opt/centos8.qcow2
删除快照
virsh snapshot-delete web01 --snamshotname install_ok
恢复快照
virsh snapshot-revert web01 --snapshotname install_ok
#恢复快照后需要校正时间 systemctl restart chronyd
快照存储位置
qemu-img info /opt/centos8.qcow2
5.完整克隆与链接克隆
1.完整克隆
全自动生成
virt-clone-auto-clone -o web01 -n web02
手动如何完成完整克隆?
cp web01.qcow2 web02.qcow2
virsh dumpxml web01 >web02.xml
vim web02.xml
#修改虚拟机的名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
virsh define web02.xml #加载配置文件
virsh start web02
2.链接克隆
手动生成
a.#生成虚拟机磁盘文件
qemu-img create -f qcow2 -b web01.qcow2 web02.qcow2
b.#生成虚拟机的配置文件
virsh dumpxml web01 >web02.xml
vim web02.xml
#修改虚拟机的名字
<name>web02</name>
#删除虚拟机uuid
<uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
#删除mac地址
<mac address='52:54:00:4e:5b:89'/>
#修改磁盘路径
<source file='/opt/web02.qcow2'/>
c.#导入虚拟机并进行启动测试
virsh define web02.xml
virsh start web02
全自动链接克隆
需要邪写脚本完成
#!/bin/bash
soure_clone=$1
dest_clone=$2
XML_DIR="/etc/libvirt/qemu"
virsh dumpxml $soure_clone > ${XML_DIR}/${dest_clone}.xml
#修改虚拟机的名字
sed -i "s#<name>${soure_clone}</name>#<name>${dest_clone}</name>#g" ${XML_DIR}/${dest_clone}.xml
#删除uuid
sed -i "/uuid/d" ${XML_DIR}/${dest_clone}.xml
#删除mac地址
sed -i "/mac address/d" ${XML_DIR}/${dest_clone}.xml
#修改磁盘文件路径
sed -ri "/source file/s#(.*/)(.*)('/>)#\1${dest_clone}.qcow2\3#g" ${XML_DIR}/${dest_clone}.xml
soure_cipan=$(awk -F "['']" '/source file/{print $2}' ${XML_DIR}/${soure_clone}.xml)
dest_cipan=${soure_cipan%/*}
qemu-img create -f qcow2 -b $soure_cipan $dest_cipan/${dest_clone}.qcow2
virsh define ${XML_DIR}/${dest_clone}.xml
virsh start $dest_clone
6.kvm虚拟机的桥接网络
看下面命令可知道,虚拟机默认的网络是NAT模式
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
创建桥接虚拟机
1.创建桥接网卡
virsh iface-bridge eth0 br0
#取消桥接网卡命令
virsh iface-unbridge br0
2.桥接模式创建虚拟机
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 bridge=br0 --graphics vnc,listen=0.0.0.0 -- noautoconsole
将已有虚拟机网络修改为桥接模式
1.关机状态下修改虚拟机配置文件
virsh edit web01
<interface type='bridge'>
<source bridge='br0'>
2.启动虚拟机,测试虚拟机网络
virsh start web01
7.热添加技术
1.kvm热添加硬盘
a.创建一块一盘
qemu-img create -f qcow2 web01_add01.qcow2 10G
b.
临时生效
virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2
永久生效
virsh attach-disk web01 /data/web01-add.qcow2 vdb --subdriver qcow2 --config
c.进入kvs虚拟机
virsh console web01
d.初始化硬盘并且挂载
#查看是否多了一块磁盘
fdisk -l
#格式化硬盘
mkfs.xfs /dev/vdb
#mount /dev/vdb /mnt
e.剥离硬盘
#临时剥离硬盘
virsh detach-disk web01 vdb
#永久剥离硬盘
virsh detach-disk web01 vdb --config
2.硬盘扩容
a.在虚拟机里把扩容盘挂载取消
umount /mnt
b.在宿主机上剥离硬盘
virsh detach-disk web01 vdb
c.在宿主机上调整容量
qemu-img resize /opt/web01-add01.qcow2 20G
d.在宿主机上再次附加硬盘
virsh attach-disk web01 /opt/web01-add01.qcow2 vdb --subdriver qcow2 --config
e.在kvm虚拟机中再次挂载扩容盘
mount /opt/web01-add01.qcow2 /mnt
f.在虚拟机里更新扩容盘超级块信息
xfs_growfs /dev/vdb
8.热添加内存
PS:添加的内存数,必须小于等于配置文件中规定的最大内存数
1.创建虚拟机时添加内存
–memory
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 bridge=br0 --graphics vnc,listen=0.0.0.0 -- noautoconsole
2.热添加内存
#临时添加
virsh setmem web01 1024M
#永久添加
virsh setmem web01 1024M --config
9.热添加cpu
1.创建虚拟机时添加内存
–vcpu
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 bridge=br0 --graphics vnc,listen=0.0.0.0 -- noautoconsole
2.热添加cpu
#临时
virsh setvcpus web01 2
#永久
virsh setcpus web01 2 --config
10.KVM虚拟机热迁移(两台宿主机)
关键点:
发送配置文件和磁盘信息,考虑链接克隆
共享磁盘文件(借助nfs服务器)
对方宿主机的内存
virsh migrate --live --verbose web01 qemu+ssh://10.0.0.101/system --unsafe
更多推荐
所有评论(0)