前言:

  • KVM虚拟机的安装其实不是一个简单的事情,为什么要这么说呢?因为,KVM虚拟机在安装完毕后,我们可能会有很多定制化的需求,比如,更改虚拟机的root密码,安装一些常用软件,或者常用的软件环境。也会有扩容,缩容,增加逻辑盘以及打快照等等扩展需求。
  • 那么,KVM虚拟机的操作系统安装一般是什么要求呢?
  • 我想,第一,是需要最小化安装,这里最小化安装是为了降低KVM镜像的大小,使得镜像轻量化。第二,是关闭swap,因为很多环境是不能有swap的,相对于生产服务器来说,通常swap都是一个鸡肋的存在,并且像k8s这样的软件是禁止swap的,而关于swap 这就要求我们需要从底层开始设计操作系统了。第三,适当的内核优化。第四,KVM镜像安装的时候不能也不应该划分多个分区,应该是只划分一个根分区,这里的原因在于,扩容操作的时候只会从最后一个分区号后开始,而我们扩容通常是想扩容根分区,如果,根分区不是最后一个分区序号,那么,是无法扩容成功的(比如,一个KVM镜像会认为第一个磁盘是vda,而划分多个分区后,可能根分区是vda1,还存在其它分区,比如vda2,vda3,扩容操作的时候,将只能扩容vda3,扩容vda1或者2并不会成功的。)。

问题复现:

一,

安装操作系统的时候安装程序强制要求划分swap分区,因此,划分了一个swap分区,并且该分区是lvm格式的,导致后期想扩容根分区的时候扩容失败。

KVM虚拟机的分区划分如下:

 现在的情况就是,vda1根目录并不是顺位最后一个而是swap分区,并且该swap分区还是lvm格式,因此,希望将该swap分区卸载。

二,

卸载lvm格式的swap分区的步骤:

(1)

首先,我们通过三个命令得到lvm格式的swap详细信息,三个命令分别是lsblk,blkid和cat  /etc/fsatab

第一个命令知道了swap分区名字是/dev/vda2,第二个命令知道了这个lvm的pv名字是 /dev/mapper/centos-swap,挂载时使用的时pv名称,default模式挂载的。 

(2)

开始卸载了,卸载步骤如下:

  • 卸载swap挂载

swapoff 卸载swap分区,通过free命令验证。

  • 删除lv

先查询出lv的名字,然后删除,中间需要输入y确认一下。

  • 删除vg

同样的步骤,先查询vg的名字,然后删除vg

  • 删除pv

同样的配方,先查询出pv的名字,然后删除之。

  • 通过fdisk彻底删除分区

先查出磁盘分区情况,然后使用fdisk删除/dev/vda2,最后partprobe刷新磁盘状态,reboot。

 好了,恭喜你,即将进入dracut模式啦(重启时间比较长,5 6分钟吧)。报错如下图:

 WAIT!!!/etc/fstab里的挂载没有去掉的原因?

(3)

挂载根目录,找到 /etc/fsata文件注释掉最后那一行,这该OK了吧?

 其实是年轻啦,reboot后并没有卵用。WHY???因为grub里还有swap哦。重启后,仍然建立一个tmps ,仍然挂载根目录到此新目录上。

 这三个文件都修改完了,就可以愉快的重启啦,速度非常快的就进入系统啦。在重申一次,这三个文件的路径是 /tmps/etc/fstab ,   /tmps/default/grub   ,            /tmps/boot/grub2/grub.cfs

vim /boot/grub2/grub.cfg 
 vim /etc/default/grub 
vim /etc/fstab 

至此,lvm格式的swap就彻底删除了,当然了,不管任何时候删除前都需要查询清楚,我的分区很可能是和你的不一样的(根本原因在于,我安装KVM镜像的时候,是先划分的根分区,然后划分的swap分区,如果次序对调,根分区应该是/dev/vda2,而swap分区应该是/dev/vda1, 说人话就是分区的序号是和安装手法有关!!!!!!!!!!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐