kvm虚拟机可以在线添加cpu、磁盘、内存、网卡等资源,也可以在线迁移虚拟机,这边博文记录这些技术的实现方法。有两点需要注意:

  • 这里主要操作是在web01虚拟机中进行,为了方便,我将它的网卡改成了桥接模式
  • 根分区的扩容时需要关机的

热添加磁盘

为虚拟机添加一块磁盘的流程:

  • 宿主机创建磁盘
  • 宿主机将磁盘附加给虚拟机
  • 虚拟机中格式化磁盘
  • 虚拟机中挂载并使用磁盘

操作过程记录如下:

虚拟机磁盘初始状态

[root@web01 ~]# fdisk -lDisk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b2376Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    20971519    10484736   83  Linux
[root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        10G  1.1G  9.0G  11% /
devtmpfs        486M     0  486M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M  6.7M  490M   2% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/0

宿主机操作

##创建磁盘
[root@kvm1 opt]# qemu-img create -f qcow2 web01-add1.qcow2 5G
Formatting 'web01-add1.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off ##将磁盘附加给web01
[root@kvm1 opt]# virsh attach-disk web01 /opt/web01-add1.qcow2 vdb --subdriver qcow2
Disk attached successfully

web01上操作

###查看磁盘情况,发现已经添加了一块5g的磁盘
[root@web01 ~]# fdisk -lDisk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b2376Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    20971519    10484736   83  LinuxDisk /dev/vdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes###格式化新磁盘
[root@web01 ~]# mkfs.xfs /dev/vdb ###挂载新磁盘
[root@web01 ~]# mkdir /add1
[root@web01 ~]# mount /dev/vdb /add1/###测试新磁盘可用性
[root@web01 ~]# cp /etc/hostname /add1/
[root@web01 ~]# cat /add1/hostname
web01

View Code

热添加磁盘容量(在线扩容)

紧接着上一节,在web01中操作,以扩容新增加的磁盘vdb为例,流程如下:

  • web01中卸载磁盘
  • 宿主机中把目标磁盘从web01中剥离
  • 宿主机中更改磁盘容量
  • 重新将磁盘附加给web01
  • web01中重新挂载磁盘
  • 刷新磁盘容量
  • 测试磁盘可用性

操作记录如下:

web01中umount磁盘

[root@web01 ~]# df -h |grep add1
/dev/vdb        5.0G   33M  5.0G   1% /add1
[root@web01 ~]# umount /add1/[root@web01 ~]# umount /add1/
umount: /add1/: not mounted

宿主机中操作

其中,剥离和重新附加操作,可以在web01中用fdisk -l命令验证效果,这里就不贴上来了。

###将磁盘从web01中剥离
[root@kvm1 opt]# virsh detach-disk web01 /opt/web01-add1.qcow2
Disk detached successfully###更改磁盘大小
[root@kvm1 opt]# qemu-img resize /opt/web01-add1.qcow2 +5G
Image resized.###重新将磁盘附加到web01
[root@kvm1 opt]# virsh attach-disk web01 /opt/web01-add1.qcow2 vdb --subdriver qcow2
Disk attached successfully

web01中重新挂载

[root@web01 ~]# mount /dev/vdb /add1/
[root@web01 ~]# df -h|grep add1
/dev/vdb        5.0G   33M  5.0G   1% /add1###将挂载写入配置文件,使永久生效
[root@web01 ~]# echo "mount /dev/vdb /add1/">>/etc/profile

刷新磁盘容量

由上面df -h返回结果可知,挂载分区依然显示5G,但用fdisk -l查看时,实际上vdb磁盘的大小为10G。这是因为在格式化磁盘的时候,容量已经写到磁盘中了。

当然,我们可以重新格式化磁盘来解决这个问题,但这样做会丢失磁盘数据。正确的操作如下:

###刷新磁盘容量
[root@web01 ~]# xfs_growfs /add1/
###验证
[root@web01 ~]# df -h|grep add1
/dev/vdb         10G   33M   10G   1% /add1

磁盘添加及扩容永久生效

以上的配置的硬盘扩展,在重启虚拟机后就会丢失,想要永久生效,使下面命令:

[root@kvm1 opt]# virsh attach-disk web01 /opt/web01-add1.qcow2 vdb --subdriver qcow2 --config
Disk attached successfully

这个命令中--config参数的作用,是把扩容相关的配置写入配置文件,可以查看web01的配置文件,发现以下内容被添加进来了

    <disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/opt/web01-add1.qcow2'/><target dev='vdb' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/></disk>

扩容根分区

扩容根分区需要在关闭虚拟机的时候进行,流程如下:

  • 查找根分区对应的磁盘文件(web01中df -h查看/分区对应的分区,然后宿主机中通过查看web01配置文件得到这个分区对应的磁盘文件)
  • 关闭web01
  • 扩展目标磁盘文件
  • 开启web01
  • web01中修改磁盘分区表
  • 重启web01
  • 刷新分区容量
  • 验证

操作记录如下(其中第一步确认磁盘文件就不贴上来了):

宿主机中扩展磁盘

[root@kvm1 opt]# virsh destroy web01
###更改磁盘容量,注意:resize方法不支持包含快照的磁盘文件,这里我是将快照文件删除后重新执行的
[root@kvm1 opt]# qemu-img resize /opt/centos.qcow2 +10G
[root@kvm1 opt]# virsh start web01

web01中修改分区表

这是使用fdisk -l查看,vdb的真实容量是20G,但df -h查看挂载分区显示10G,使用命令xfs_grows /也无法刷新到正确的容量。这是因为根分区的容量是写在分区表中的,这是我们需要重新设置分区表,操作如下:

###直接n一路回车,然后w保存即可,有兴趣的话可以p查看初始和修改完毕后的分区信息[root@web03 ~]# fdisk /dev/vda
#进入交互界面后操作如下
p #显示当前分区信息
d #删除分区
n #创建分区,一路回车
w #保存退出# 重启后操作

重启web01,刷新分区容量

重启web01后,df -h查看,根分区还是10G,这时再使用xfs_growfs /就可以刷新到正确的容量了。

[root@web01 ~]# xfs_growfs /
[root@web01 ~]# df -h|grep -w /
/dev/vda1        20G  1.1G   19G   6% /

热添加网卡

热添加网卡的操作很简单,只需要在宿主机中执行一条命令即可,需要理解的是一个参数--model的作用。先看看添加网卡的操作,然后结合效果进行说明

[root@kvm1 opt]# virsh attach-interface web01 --type bridge --source br0
[root@kvm1 opt]# virsh attach-interface web01 --type bridge --source br0 --model virtio

上面两条命令往web01中以不同模式分别添加了一块网卡,到web01中查看信息如下:

[root@web01 ~]# ip add show ens10
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:c9:ce:4d brd ff:ff:ff:ff:ff:ffinet 10.0.0.143/24 brd 10.0.0.255 scope global noprefixroute dynamic ens10valid_lft 1649sec preferred_lft 1649secinet6 fe80::a17:42ec:19e:e9de/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@web01 ~]# ip add show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:56:bb:59 brd ff:ff:ff:ff:ff:ffinet 10.0.0.144/24 brd 10.0.0.255 scope global noprefixroute dynamic eth1valid_lft 1704sec preferred_lft 1704secinet6 fe80::42e1:3c04:c56:69f5/64 scope link noprefixroute valid_lft forever preferred_lft forever

从上面可以看出,使用 --model virtio参数后,新添加的网卡会以eth前缀命名,这是表象,内在的,virtio是优化过的虚拟机网卡驱动,性能比默认的好。

添加网卡永久生效

和扩展分区一样,可以用--config参数使网卡扩展永久生效

[root@kvm1 opt]# virsh attach-interface web01 --type bridge --source br0 --model virtio --config
[root@kvm1 opt]# virsh attach-interface web01 --type bridge --source br0 --config

查看配置文件,对比web01中ip add显示的网卡信息,会发现mac地址不一样,重启web01后,配置文件中的mac地址就应用到网卡了。

热添加内存和cpu

这两个技术,操作相似,也很简单,所以写在一起,他们的实现主要流程如下

使web01支持热添加内存

重新构建虚拟机,用参数指定最大内存

##web01关机、卸载
[root@kvm1 ~]# virsh destroy web01
[root@kvm1 ~]# virsh undefine web01###重新构建web01,注意:如果是按照我前几篇博客一路操作过来的,这里的web03是web01的链接克隆,也在使用web01的磁盘,所以要把web03也给关机并卸载,然后才能进行下面的操作
[root@kvm1 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=8 --disk /opt/centos.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole ###开机后查看状态
[root@kvm1 ~]# virsh list Id    Name                           State
----------------------------------------------------10    web01                          running

web01内存和cpu初始状态

[root@web01 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:            462         102         243           8         116         213
Swap:             0           0           0[root@web01 ~]# lscpu|egrep -i "^cpu\("
CPU(s):                1

宿主机中对web01的内存和cpu扩容

[root@kvm1 ~]# virsh setmem web01 1G
[root@kvm1 ~]# virsh setvcpus web01 3###使扩容永久生效
[root@kvm1 ~]# virsh setmem web01 1G --config
[root@kvm1 ~]# virsh setvcpus web01 3  --config

web01中验证

[root@web01 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:            974         103         753           8         118         722
Swap:             0           0           0[root@web01 ~]# lscpu|egrep -i "^cpu\("
CPU(s):                3

转载于:https://www.cnblogs.com/Go-Spurs-Go/p/10361914.html

kvm系列之四:热添加技术相关推荐

  1. 热修复系列——Android热修复技术进阶篇

    目录 1 前言 2 热修复技术 2.1 Dexposed 2.2 AndFix 2.3 QZone 2.4 Tinker 2.6 epic 2.7 YAHFA 2.8 FastHook 2.9 美团R ...

  2. Office 365系列之四:添加自定义域

    在实际的公司企业环境中,为了简化Office 365登陆地址.Exchange邮箱地址和Lync地址等就需要将自定义域添加到Office 365中,并在Office 365中管理该域. 1.  前提条 ...

  3. KVM libvirt的CPU热添加

    1.CentOS7.3: 需求:说明:默认有两个cpu,由于压力较大的情况下,需要在线添加一个1个cpu 添加cpu前,查看cpu信息 [root@localhost ~]# cat /proc/cp ...

  4. 面向对象的程序开发技术C++教学课件系列之四

    面向对象的程序开发技术C++教学课件系列之四 转载于:https://blog.51cto.com/hnxdd/13205

  5. kvm热添加和热迁移

    a.热添加磁盘 1.创建磁盘 qemu-img create -f qcow2 web01-add01.qcow2 5G 2.附加磁盘设备 virsh attach-disk web01 /opt/w ...

  6. 【KVM系列08】使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机

    第八章 使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 1. QEMU/KVM 迁移的概念 1.1 迁移效率的衡量 1.2 KVM 迁移的原理 1.3 使用命令行的方式做动态迁移 ...

  7. 【KVM系列07】使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照

    第七章 使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 1. QEMU/KVM 快照 1.1 概念 1.2 使用 virsh 实验 1.3 外部快照的删除 2. OpenSt ...

  8. 【KVM系列04】KVM的I/O 设备直接分配和SR-IOV

    第四章 I/O 设备直接分配和 SR-IOV 1. PCI/PCI-E 设备直接分配给虚机 (PCI Pass-through) 1.1 PCI/PCIe Pass-through 原理 1.2 在 ...

  9. Android热更新技术的研究与实现Sophix

    所以阿里爸爸一直在进步着呢,知道技术存在问题就要去解决问题,这不,从Dexposed-->AndFix-->HotFix-->Sophix,技术是越来越成熟了. Android热更新 ...

  10. Android热修复技术选型参考

    背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...

最新文章

  1. python输出数据到excel-使用python将大量数据导出到Excel中的小技巧分享
  2. ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler)
  3. 物理机Windows系统下使用SSH连接虚拟机Ubuntu
  4. spring service ,controller反向代理生成AOP代理类流程
  5. Java码农必须掌握的循环删除List元素的正确方法
  6. 军训分批(codevs 2751)
  7. 王道计算机组成原理 物理层整理 超详细版
  8. 企业级WEB的负载均衡高可用之LVS+Keepalived(3)
  9. 马斯克证实:特斯拉将加大在中国的投资和研发力度
  10. 7个等级 容灾等级_在餐厅吃饭竟是7级风险!最新社交风险等级出炉!
  11. 解析百度Apollo自动驾驶平台
  12. JS和JS是IE上JavaScript或JScript的缩写。
  13. 如何构建自己的Java学习体系?
  14. 使用TypeScript两年后,还值得吗?
  15. react加水印_【REACT】 水印生成方案
  16. c++运行错误: string subscript out of range
  17. LAN、WAN、WLAN、WIFI
  18. 华为手机左侧快捷方式_华为手机的这六个快捷键,让使用更简便!
  19. php 实现查询百度排名,查询百度关键词排名代码 php
  20. Cobar Client的使用

热门文章

  1. 相似文档查找算法之 simHash
  2. linux网卡参数配置方法,Linux网卡参数配置方法教程
  3. python编写量化交易程序英语_Python量化交易开源框架:AmazingQuant
  4. JavaSE基础 ——运算符
  5. Leetcode200岛屿数量(深搜)
  6. java中nul值的处理
  7. 关于 in与exist , not in与not exist 的区别
  8. 哈希值之逆序数与变进制
  9. 哈夫曼思维导图,第六章前半段思维导图
  10. getWriter() has already been called for this response