作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:
1.虚拟化介绍
2.kvm基本使用
3.kvm进阶使用(本小节属于)
4.kvm技术原理
5.vmware介绍&使用
6.小结
KVM(Kernel-based Virtual Machine)环境下虚拟机的扩缩容操作通常指的是调整虚拟机的资源(如CPU、内存、磁盘空间)。这些操作可以分为两类:在线扩缩容(也称为热添加或热调整)和离线扩缩容(也称为冷调整)。下面分别介绍这两种情况下的操作方法:
内存调整
内存和cpu相比较,cpu属于可以压缩资源,而内存一般认为是不可压缩的。这里的压缩可以理解我有2个cpu 我分给了2个人,在默认情况下如果这2个人都用满了,那么实际每个人就只能获得1个cpu,虚拟机会慢,但是不会崩溃。而内存则不一样,如果同样的情况,我们在前面讲Linux-sys虚拟文件系统的时候说过,内核为了保护系统的稳定性,会触发oom机制。所以一般情况下我们都不会对内存进行超售。
这里简单介绍下内存气球技术(Memory Ballooning),可以在虚拟机和宿主机之间进行交换。但是这个还需要虚拟机内部进行驱动安装,所以就只是简单的介绍,不讲解具体使用。
基本原理
内存回收机制:内存气球(Memory Ballooning)技术的核心是在虚拟机内部创建一个虚拟的 “内存气球”。当宿主机需要回收内存时,这个气球会在虚拟机操作系统的配合下 “充气”。具体来说,虚拟机操作系统会将一部分内存页面分配给气球,这些页面随后会被标记为不可用状态,从虚拟机的可用内存池中移除。然后,通过虚拟化层与宿主机之间的通信机制,这部分内存就可以被宿主机回收并用于其他用途,例如分配给其他虚拟机或者供宿主机自身的系统进程使用。
内存返还机制:相反,当虚拟机需要更多内存时,气球会 “放气”。这个过程涉及到虚拟机操作系统重新将之前分配给气球的内存页面标记为可用状态,使其再次成为虚拟机可用内存池的一部分。这种内存的返还操作可以根据虚拟机的实际需求动态进行,例如当虚拟机内的应用程序开始占用更多内存时,气球就会自动放气以满足应用程序的内存需求。
离线调整内存和cpu离线调整实际上是一样的,并不区分扩容和缩容,因为他是通过修改配置文件实现的,修改方法和修改cpu一样,具体修改方法参考kvm-扩缩容cpu
#memory 是虚拟机最大内存
#currentMemory 是当前虚拟机的使用的内存
#一般情况下这2个值是一样的,如果调整内存也是把这2个值修改
#如果涉及到内存气球,则他们是不一样的。
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
磁盘
严格来说磁盘扩缩容并不属于kvm的操作,而是属于文件系统或者说镜像文件的调整,比如我们需要调整某个镜像文件。
扩容前
当前虚拟机的磁盘大小是40G,在系统内部是使用1G给了boot分区,39G给了根分区。
扩容中
从宿主机给这个qcow2文件扩容了10G.
[root@localhost image]# qemu-img resize centos31.207.qcow2 +10G
Image resized.
[root@localhost image]#
扩容后
磁盘总大小显示到了50G,但是分区信息和文件系统都没变。
扩容磁盘
#可以看到vda的结束的块是83886079
fdisk /dev/vda
#删除分区,创建分区,保存分区
#顺序千万不能乱,分区号也不能选错
#可以看到vda的结束的块变成了104857599
fdisk /dev/vda
#这里我尝试了多次,都需要重启以后,vda2才会变成新的大小。才能执行扩容分区
#扩容文件系统,如果是ext4则是另外命令
xfs_growfs /dev/vda2
到这里我们就已经完成了扩容操作,我们可以看到主要是这几个步骤:
注:一般而言,我们磁盘只做扩容操作,不做缩容操作。