前面有一篇文档讨论了虚拟化环境下LVM是否还具有优势,主要是在我工作初期专门研究过Linux磁盘的Partation扩展的问题。
以前在参与虚拟化平台开发的时候我们会附带一个我们自己做好的一个有6G磁盘的Linux模板,由于这个Linux是Power架构的所以在安装操作系统的时候会默认给他分配一个主分区用作启动,然后又分了一个主分区挂载到/boot,又分了一个主分区挂载到swap(当时不知道为啥傻的非要弄个主分区给swap),这样下来磁盘就剩下一个主分区号给LVM用了。但是我们又不想把这个模板的磁盘做成6G大小不能扩展,然后就想到了一个骚操作。因为最后只剩下一个主分区号了,所以最后这个主分区我们给做成了扩展分区,然后在扩展分区上建逻辑分区。当用户创建虚拟机磁盘大于100G的时候,可以给扩展分区扩展大小,然后就可以创建新的逻辑分区了,然后逻辑分区建PV扩展VG扩LV啥的整个流程就通了。
下面是具体操作:
自带的模板创建完虚机后系统的分区情况:
可以发现整块磁盘有20G大,但是被用了的只用6G,此磁盘中有5个分区,其中sda1、sda2、sda3分区都是主分区,sda4是扩展分区,sda5是sda4上的逻辑分区。
通过上面的情况分析,现在整块磁盘有14G的空间没有被使用,但是已经没有可用的分区号去分配给这块空间。
使用分区工具parted,它可以把扩展分区(sda4)的大小扩大。
查看parted工具是否安装
没有安装的话配置本地yum源安装次工具
扩大扩展分区:
重启系统:
再看一下扩展分区(sda4)已经被扩大:
在剩余空间中创建分区
修改新建分区的类型,使其支持LVM
保存退出
刷新分区表
因为我们创建的分区是在sda上所以partprobe命令有可能刷新不了,所以得重启虚机。(其实不用重启,用echo '1' > /sys/block/sdb/device/rescan 这个命令应该能刷出来)
首先看一下/分区的大小,及/所在的lv
把刚划分的分区创建成LVM的PV
查看系统中vg的信息
把PV加入VG
比较vg信息
扩大/所在lv的大小
检查/所在lv的磁盘
扩大/的文件系统
查看/的文件系统大小
这是当时的文档记录,后边还有扩展swap啥的,就不往上贴了,其实这套流程到现在还是可以用的,如果磁盘最后一个分区是扩展分区的话是可以直接使用这个流程进行扩展的。当然我举的这个例子比较有局限性。