一、场景
云主机使用的越来越多,现在几乎没有不使用云主机的,经常会碰到需要升级硬盘存储的操作,直接添加磁盘,或动态在原有的分区上扩容,所使用的方案大致有如下:
1、基于lvm格式 在线动态扩容
2、非lvm格式扩容
接下来我们就结合生产常用两种扩容方案及实践
二、LVM在线动态扩容
1、lvm原理概述
这里引用鸟哥说明
LVM 的重点在於『可以弹性的调整 filesystem 的容量!』而并非在於效能与数据保全上面。 需要文件的读写效能或者是数据的可靠性,请参考前面的 RAID 小节。 LVM 可以整合多个实体 partition 在一起, 让这些 partitions 看起来就像是一个磁碟一样!而且,还可以在未来新增或移除其他的实体 partition 到这个 LVM 管理的磁碟当中。 如此一来,整个磁碟空间的使用上,实在是相当的具有弹性啊! 既然 LVM 这么好用,那就让我们来试试
什么是 LVM: PV, PE, VG, LV 的意义
LVM 的全名是 Logical Volume Manager,中文可以翻译作逻辑卷轴管理员。之所以称为『卷轴』可能是因为可以将 filesystem 像卷轴一样伸长或缩短之故吧!LVM 的作法是将几个实体的 partitions (或 disk) 透过软件组合成为一块看起来是独立的大磁碟 (VG) ,然后将这块大磁碟再经过分割成为可使用分割槽 (LV), 最终就能够挂载使用了。但是为什么这样的系统可以进行 filesystem 的扩充或缩小呢?其实与一个称为 PE 的项目有关! 底下我们就得要针对这几个项目来好好聊聊!
Physical Volume, PV, 实体卷轴
我们实际的 partition 需要调整系统识别码 (system ID) 成为 8e (LVM 的识别码),然后再经过 pvcreate 的命令将他转成 LVM 最底层的实体卷轴 (PV) ,之后才能够将这些 PV 加以利用! 调整 system ID 的方是就是透过 fdisk 啦!
Volume Group, VG, 卷轴群组
所谓的 LVM 大磁碟就是将许多 PV 整合成这个 VG 的东西就是啦!所以 VG 就是 LVM 组合起来的大磁碟!这么想就好了。 那么这个大磁碟最大可以到多少容量呢?这与底下要说明的 PE 有关喔~因为每个 VG 最多仅能包含 65534 个 PE 而已。 如果使用 LVM 默认的参数,则一个 VG 最大可达 256GB 的容量啊!(参考底下的 PE 说明)
Physical Extend, PE, 实体延伸区块
LVM 默认使用 4MB 的 PE 区块,而 LVM 的 VG 最多仅能含有 65534 个 PE ,因此默认的 LVM VG 会有 4M*65534/(1024M/G)=256G。 这个 PE 很有趣喔!他是整个 LVM 最小的储存区块,也就是说,其实我们的文件数据都是藉由写入 PE 来处理的。 简单的说,这个 PE 就有点像文件系统里面的 block 大小啦。 这样说应该就比较好理解了吧?所以调整 PE 会影响到 VG 的最大容量喔!
Logical Volume, LV, 逻辑卷轴
最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分割槽的咚咚了!那么 LV 是否可以随意指定大小呢? 当然不可以!既然 PE 是整个 LVM 的最小储存单位,那么 LV 的大小就与在此 LV 内的 PE 总数有关。 为了方便使用者利用 LVM 来管理其系统,因此 LV 的装置档名通常指定为『 /dev/vgname/lvname 』的样式!
以下是lvm原理图:
说了这么多的原理,貌似还是有点蒙,接下来搞点实践~
2、实践
公司办公室有一套vmwa私有云群,给开发,测试提供虚拟机做环境,经常会有磁盘空间不足,接下来就给一台机器系统磁盘/分区 30G扩容到50G
首先在vmware集群中编辑-->将磁盘扩容到50G 如图:
接下来到虚拟机上操作步骤如下:
步骤:
1)、格式化新添加的磁盘空间(也可以是单独一块新磁盘)
2)、添加修改分区为8e格式
3)、刷新分区
4)、创建pv ( pvcreate)
5)、扩展VG
6)、lv扩容
![](/qrcode.jpg)
实际操作如下:
fdisk -l /dev/sdb
n
p
2
t
8e
w
不重启显示新分区信息
partx -a /dev/sdb2
创建新pv
pvcreate /dev/sdb2
扩展现有VG Name
vgextend vg_daemon6 /dev/sdb2
lv扩容:
#lvextend -L +20G /dev/vg_daemon6/LogVol00 # 注意 /dev/vg_daemon6/LogVol00 是通过df -TH 查询得到 的文件系统路径
Size of logical volume vg_daemon6/LogVol00 changed from 32.20 GiB (14321 extents) to 50.80 GiB (25649 extents).
Logical volume LogVol00 successfully resized.
刷新分区信息:
ext4:
#resize2fs /dev/mapper/vg_daemon6-LogVol00
xfs:
xfs_growfs /dev/mapper/centos-root
以上是基于lvm扩容,有时间服务器并没有基于lvm分区,如何是好?
3、扩容方法二
前提也是针对现有分区进行扩容
第一步也是在vmware集群或云平台上给物理机添加磁盘再通过工具在线扩容,可能需要重启
安装工具:
yum install -y cloud-utils
扩容前检测分区,以下是xfs格式化的避ext4使用e2fsck 工具
xfs_repair -f /dev/sda
growpart /dev/sda 1
xfs_growfs /dev/sda1
更多参考请点这里请添加链接描述
结束语:
在扩容前,最好是备份好重要资料,以防不测