KVM虚拟化技术

KVM虚拟化

什么是虚拟化?

虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。

为什么要用虚拟化?

充分利用资源,软件运行环境的隔离,只有虚拟化才行实现。

场景1:同一台物理机运行多个php版本 php5.3(openssl,gd)  php5.5  php7.2
场景2:机房的迁移,解决了硬件和系统的依赖
场景3:openstacks环境,软件发布方式
场景4:开发环境和测试环境,使用虚拟化
场景5:业务的快速部署  

虚拟化:提高了资源的利用率,各个服务的安全性隔离,解决了系统和硬件之间的依赖

KVM虚拟化管理软件的安装

安装软件

yum install -y libvirt virt-install qemu-kvm
libvirt        # 虚拟机管理软件
virt-install   # 虚拟机的安装工具和克隆工具
qemu-kvm       # 管理虚拟机的虚拟磁盘

启动服务

systemctl start libvirtd.service
systemctl enable libvirtd.service

启动一个kvm虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.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               # 指定虚拟化类型
--os-type                 # 指定系统类型
--os-variant              # 指定系统版本
--name                    # 指定虚拟机的名称
--memory                  # 指定虚拟机内存
--vcpus                   # 指定虚拟机CPU
--disk                    # 指定虚拟机磁盘文件路径及名称、磁盘文件类型、磁盘空间
--cdrom                   # 指定虚拟机安装的镜像
--network                 # 指定网络
--graphics                # 
--noautocondole           # 不加改参数创建虚拟机的时候会夯住

raw和qcow2的区别

raw:裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输
qcow2:cow(copy on write)占用空间小,支持快照,性能比raw差一点,方便传输

KVM虚拟机的日常管理

查看虚拟机列表

virsh list
virsh list --all

开启虚拟机

virsh start centos7     # 最后跟的是KVM虚拟机的名称

关闭虚拟机

virsh shutdown centos7  # 正常关闭
virsh destroy centos7   # 拔电源

查看虚拟机配置

virsh dumpxml centos7
virsh dumpxml centos7 > centos7-off.xml

删除虚拟机

# 删除虚拟机之前先关闭虚拟机
virsh undefine centos7

导入虚拟机

virsh define centos7-off.xml

修改虚拟机配置

# 自带语法检查
virsh edit centos7

虚拟机重命名

virsh domrename centos7 centos-7

挂起虚拟机

virsh suspend centos-7

恢复虚拟机

virsh resume centos-7

查询vnc端口号

virsh vncdisplay centos-7

KVM虚拟机开机启动

# KVM虚拟机开机启动前提是libvirtd开机启动。
systemctl enable libvirtd
# KVM开启自启
virsh autostart centos-7

KVM虚拟机console登录

# 首先在虚拟机的内执行以下命令
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
# 重启KVM虚拟机,在KVM虚拟机内执行,重启后真正的虚拟机会关机
reboot
# 开启KVM虚拟机并使用console连接虚拟机
virsh start centos-7
virsh console centos-7

KVM虚拟机磁盘格式转换

qemu-img convert -f raw -O qcow2 /data/centos7.raw /data/centos7.qcow2

qemu-img命令管理

# 查看虚拟机磁盘文件信息
qemu-img info centos-7.raw
# 创建虚拟硬盘
qemu-img create -f qcow2 test.qcow2 10G
# 调整虚拟磁盘容量
qemu-img resize test.qcow2 +10G
# 转换磁盘格式
qemu-img convert -f raw -O qcow2 old.raw new.qcow2
                  原格式  新格式  原文件  新文件

创建KVM虚拟机快照

# 创建快照
virsh snapshot-create centos7
virsh snapshot-create-as centos7 --name install_ok
# 查看快照
virsh snapshot-list centos7
# 还原快照
virsh snapshot-revert centos7 --snapshowname centos7
# 删除快照
virsh snapshot-delete centos7  --snapshotname centos7

raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中.

KVM虚拟机克隆

完整克隆

virt-clone --auto-clone -o web01 -n web02

链接克隆

# a.生成虚拟机磁盘文件
qemu-img create -f qcow2 -b web01.qcow2 web02.qcow2
# b.生成虚拟机配置文件
virsh dumpxml web01 > web02.xml
# 修改配置文件
## 修改名字
## 删除uuid
## 磁盘文件地址
## 删除mac地址
# c.导入虚拟机
virsh define web02.xml

KVM虚拟机的桥接模式

创建桥接网卡

virsh iface-bridge eth0 br0

取消桥接网卡

virsh iface-unbridge br0

创建KVM桥接网络的虚拟机

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

热添加技术

KVM虚拟机在线热添加硬盘

# 临时添加
virsh attach-disk web04 --source /data/web04-add.qcow2 --target vdb --subdriver qcow2
# 永久添加
virsh attach-disk web04 --source /data/web04-add.qcow2 --target vdb --subdriver qcow2 --config

给KVM虚拟机添加新的硬盘

# 创建一个新的硬盘
qemu-img create -f qcow2 /data/new.qcow2 10G
# 附加新硬盘
virsh attach-disk web04 --source /data/new.qcow2 --target vdb --subdriver qcow2
# 虚拟机中
## 格式化硬盘
mkfs.xfs /dev/vdb
## 挂载硬盘
mount /dev/vdb /mnt

给KVM虚拟机硬盘扩容

# 虚拟机中
## 卸载硬盘
umount /mnt
# 物理机中
## 剥离硬盘
virsh detach-disk web04 --target vdb
## 扩容
qemu-img resize /data/new.qcow2 +10G
## 再插上硬盘
virsh attach-disk wbe04 --source /data/new.qcow2 --target vdb --subdriver qcow2
# 虚拟机中
## 挂载硬盘
mount /dev/vdb /mnt
## 重新加载
xfs_growfs /mnt
## 查看挂载
df -h

根磁盘扩容

# a.在宿主机上关闭虚拟机并调整虚拟机磁盘大小
qemu-img resize oldboy.qcow2 +10G
# b.虚拟机中fdisk重新调整分区
fdisk /dev/vda
# c.重启机器,执行xfs_growfs /dev/vda1
xfs_growfs /dev/vda1
## 注:ext4文件系统需要用:resize2fs /dev/vda1

KVM虚拟机在线热添加网卡

# 添加网卡
virsh attach-interface web04 --type bridge --source br0 --model virtio
virsh attach-interface web04 --type bridge --source br0 --model virtio --config
# 删除网卡
virsh detach-interface web04 --type bridge --mac 52:54:00:35:d3:71

KVM虚拟机在线热添加内存

# 创建新的虚拟机,指定最大的内存值
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
# 临时添加内存
virsh setmem web04 1024M 
# 永久添加内存
virsh setmem web04 1024M --config

KVM虚拟机在线热添加cpu

# 创建新的虚拟机,指定最大的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
virsh setvcpus web04 4
# 永久添加cpu
virsh setvcpus web04 4 --config

KVM虚拟机热迁移

冷迁移kvm虚拟机:配置文件,磁盘文件
热迁移kvm虚拟机:配置文件,nfs共享

KVM虚拟机实现热迁移

1:两边的环境(桥接网卡)
2:实现共享存储(nfs)
3:虚拟机桥接网络
4:在线热迁移

# 1.修改宿主机的主机名和hosts文件
hostnamectl set-hostanme KVM01
hostnamectl set-hostanme KVM02
echo "10.0.0.11 KVM01" >>/etc/hosts
echo "10.0.0.12 KVM02" >>/etc/hosts
# 2.创建nfs服务器
## 具体部署nfs服务这里不详细解释
systemctl restart rpcbind
systemctl restart nfs
# 3.宿主机挂载nfs
mount -t nfs 10.0.0.13:/data/ /opt
# 4.创建一个KVM虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name oldbi --memory 1024,maxmemory=2048 --vcpus 1,maxvcpus=10  --disk /opt/oldbi.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
# 5.热迁移
virsh migrate --live --verbose oldbi qemu+ssh://10.0.0.12/system --unsafe
发布了20 篇原创文章 · 获赞 10 · 访问量 7841
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览