Linux桌面虚拟化技术--KVM

虚拟化概念

虚拟化是一种资源管理技术,它是将计算机应硬件资源抽象、转换后呈现出来,它打破了实体结构空间不可切割的障碍,使用户可以比原本的组态以更好的方式来使用这些资源,常用的应用虚拟化方式有:
完全虚拟化:虚拟机模拟完整的底层硬件环境和特权指令的执行过程。代表软件有VMware Workstation、VirtualBox、qemu等
硬件辅助虚拟化:利用硬件辅助,比如Intel的intel-VT和AMD的AMD-V,来支持和处理敏感指令来实现完全虚拟化的功能。代表软件有VMware Workstation、Xen和本章所讲的KVM。
操作系统级虚拟化:内核通过创建多个虚拟机的操作系统实例来隔离不同的进程。比如Docker以及其它相关的容器技术。

为什么要使用虚拟化

  1. 提高现有资源的利用率。通过整合服务器资源,将共用的基础架构资源聚合起来,它打破了传统的“一台服务器一个应用程序”模式。
  2. 提高桌面的可管理性和安全性。目前大多数计算机都支持部署、管理和安全监视安全桌面环境,无论否能连接到网络,用户都可以在本地或远程的方式对这种环境进行访问。
  3. 提高硬件和应用程序的可用性,进而提高业务连续性。可安全地实现备份、迁移整个虚拟环境下而不会出现业务中断。
  4. 通过缩减物理基础架构和提高服务器/管理员比率,降低数据中心成本:由于服务及相关IT硬件更少,因此减少了占地空间,也减少了电力和散热需求。
  5. 实现了运营灵活性 :由于采用动态资源管理,加快了服务器部署并改进了桌面和应用程序部署,因此可响应市场的变化。

KVM安装以及使用

KVM全称为kernel-based Virtual Machine,即基于内核的虚拟机,它不需要额外使用专门的内核,因此性能相较于早之前的Xen性能更好,兼容性更强。
下载kvm软件

yum install -y libvirt virt-* qemu-kvm

安装一台kvm虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 2048 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=20 --cdrom /opt/rhel-server-7.3-x86_64-dvd.iso  --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

各参数含义:

--virt-type   #虚拟化的类型
--os-type=   #系统类型
--os-variant  #系统版本
--name    #虚拟机的名称
--memory   #指定内存大小
--disk    #磁盘格式、大小等相关配置。format=row|qcow2,其中row格式占用空间较大,不支持快照功能,但性能较好,不方便传输;qcow2占用空间小,支持快照,性能相对row差,方便传输
--cdrom  #系统镜像路径
--network=default  #default为nat模式
--graphics vnc     #需要下载vnc软件对kvm虚拟机安装操作系统

virsh常用命令

list列出正在运行的虚拟机 ,list --all列出所有
start开启虚拟机
shutdown关闭虚拟机
destroy暴力关机
dumpxml导出配置文件 。virsh dumpxml centos7 >/opt/centos7.xml
undefine移除虚拟机,如果未开机状态执行shutdown会将虚拟机的配置文件删除导致虚拟机也被删除,建议destroy后在undefine
define导入配置文件。virsh define /opt/centos7.xml
edit自带语法检查的编辑,virsh edit web
domrename对虚拟机名称重命名。virsh domrename centos7 web
suspend将虚拟机设为挂起状态
resume恢复虚拟机状态
vncdisplay显示虚拟机的vnc端口
  • kvm开启console控制台登录:
grubby --update-kernel=ALL --args="console=ttyS0"
reboot

磁盘格式转换

qemu-img info test.raw #查看磁盘信息
qemu-img create -f raw oldboy.qcow2 10G  #创建一块qcow2格式的虚拟磁盘
qemu-img convert -f raw(原格式) -O qcow2(输出格式) test.row(源磁盘路径文件) test.qcow2  #raw转qcow ,virsh edit web(名称) 改type处和source file处,重启kvm虚拟机生效

快照管理

virsh snapshot-create web(名称)
virsh snapshot-list web
virsh snapshot-revert web --snapshotname 1590506570(恢复快照到这个,恢复快照必须关闭虚拟机)
virsh snapshot-delete web --snapshotname 1590506570(删除这份快照)

row格式占用空间较大,不支持快照功能,但性能较好,不方便传输;qcow2占用空间小,支持快照,性能相对row差,方便传输。

虚拟机克隆

1.创建完整克隆
virt-clone --auto-clone -o(old老的) web -n(new新的) web2
##也可以拷贝磁盘文件在生成一份配置文件(注意:如果原来的磁盘文件拍有快照可能导致克隆后的虚拟机起不来)
copy web.raw web2.raw
<name>web2</name>
删掉<uuid></uuid>这行,让它重新生成新的UUID。也可以用uuid-gen -r直接生成
删掉<mac address=''/>这行,会自动生成新的mac地址
2.创建连接克隆
##基于源磁盘文件,创建链接磁盘文件
qemu-img create -f qcow2 -b web.qcow2 web2.qcow2
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024 --vcpus 1 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

虚拟机的网络连接模式

NAT模式(网络地址转换)原理图:
在这里插入图片描述
在NAT模式下除了宿主机以外其余的任何网络是不能与kvm虚拟机通信的,如果我们在kvm虚拟机上部署了希望用户能够访问的服务,那么此时就需要用到桥接的模式,桥接模式原理图如下:
在这里插入图片描述
配置桥接模式:

#创建一块用于桥接的网卡br0
virsh iface-bridge eth0 br0
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024 --vcpus 1 --disk /opt/web2.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
#取消桥接网卡配置
virsh iface-unbridge br0

把之前不是桥接模式的kvm虚拟机配置成桥接模式只需在配置文件对应地方修改为:

<interface type='bridge'>
<mac address='52:54:00:82:70:a9'/>
 <source  bridge='br0'/>

然后重启虚拟机即可。

磁盘热添加、扩容

#创建一块虚拟磁盘
qemu-img create -f qcow2 c7.qcow2 5G
#临时挂载 [永久挂载]
virsh attach-disk centos7(名称)  c7.qcow2 vdb --subdriver qcow2  [--config]
格式化之后mount上去即可使用
#扩容
umount /dev/vdb /opt   //扩容之前避免数据损坏先卸载
qemu-img resize c7.qcow2 +10G  
mount /dev/vdb /opt     //重新挂载
xfs_growfs /opt      //生效
#对根分区扩容:先删除原来分区的分区表在重新分区,然后重启,最后xfs_growfs /即可
fdisk /dev/vda 
reboot
xfs_growfs /

热添加网卡

virsh attach-interface web04 --type bridge --source br0 --model virtio 
detach-interface web04 --type bridge --mac 52:54:00:67:21:cf

热添加内存

virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
#临时生效
setmem web2 1024 --live
#永久生效
setmem web2 1024 --config

热添加CPU

virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1,maxvcpus=3 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
setvcpus web2 3 --live
setvcpus web2 3 --config

kvm热迁移

kvm虚拟机主要分为两部分:磁盘文件和配置文件,通常情况下磁盘文件是越大的迁移所花费的时间就越长,要实现快速迁移kvm虚拟机可以通过共享存储(文件系统)来实现,只需要把虚拟机的磁盘文件放在共享目录上再挂载在我们指定的–disk路径即可。

#挂载
mount -t nfs 192.168.1.20:/data /opt
cp web2.qcow2 /opt/
#从磁盘启动
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1,maxvcpus=3 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
#迁移
virsh migrate --live web2 qemu+ssh://192.168.1.20/system --unsafe
#图形界面操作
yum install -y "GNOME Desktop" tigervnc-server virt-manager
#启动vnc服务
vncserver:1

esxi虚拟机迁移至kvm

先在esxi导出虚拟机为ova格式再上传至kvm宿主机。然后:
virt-v2v -i ova test.ova(本地的) -o local -os /v2v -of qcow2
mv /v2v/test-sda /v2v/test.qcow2
#执行安装
virt-install --virt-type kvm --os-type=linux --os-variant=rhel7 --name web2 --memory=1024,maxmemory=2048 --vcpus 1,maxvcpus=3 --disk /opt/web2.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值