前言:
- 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, 说人话就是分区的序号是和安装手法有关!!!!!!!!!!)