有时候我们做主机规划时考虑的不够到位或者其他的原因会导致我们给的磁盘分区不够。这时我们只能够重新扩展磁盘容量了,如果再加一块硬盘上去,然后重新分区格式化,将原来的分区数据完整的复制到新的硬盘,最后将原来的分区给卸载重新挂载上新分区。这样的话,事情就会变得很繁琐了。而且有时候我们如果给的太多就会造成磁盘空间被浪费了。有么哦有更好的办法呢?答案是肯定的 。LVM就是为解决这种问题而存在的。
什么是LVM?
LVM的全名是Logical Volume Manager,即逻辑卷管理器。它可以整合多个物理分区或磁盘。,让他们看起来像是一个大磁盘一样,而且将来我们可以根据我们的需要将其中的物理分区或磁盘删除或增加。就是说,我们可以任意调整文件系统的容量。
LVM机制实现
将几个物理分区或磁盘通过软件组合成一个看起来独立的大磁盘。然后将这块大磁盘经过分成可用的分区(LV),最终实现挂载使用。本质上它是通过PE来进行数据交换的。将原本LV内PE转移到其他设备上以降低LV的容量,将其他设备中的PE加到现有的LV中以达到增加磁盘容量的目的。
物理卷(Physical Volume)
我们实际的分区需要用fdisk调整系统的标识符(system ID)成为LVM的标识符(8e),然后经过pvcreate的命令将其转换成为最底层的物理卷(pv)之后才能对这些pv加以利用。
卷组(Volume Group)
所谓的LVM大磁盘就是将许多的pv组合成一个VG,而此磁盘的大小与里面的PE有关。
物理扩展块(PE)
PE是使用vgcreate工具生成的。它是LVM中最小的存储块。我们文件与数据的写入都是由它来处理的。LVM默认的PE大小是4MB,我们可以把看看成文件系统中的快(block)。
逻辑卷(Logical Volume )
VG会被切成LV,LV才是最后可以被mke2fs(mkfs)格式化成为我们使用的分区。LV的大小与VG内的PE总数有关。同时为了方便用户管理lvm系统,LV的设备文件通常被指定与一下格式
/dev/vg_name/lv_name
具体实现流程图
1.用fsck工具分出四个区,且修改他们的分区标识符(system ID)为逻辑绝的标识符(8e)。
~]# fdisk /dev/sda
其中/dev/sda3、/dev/sda5、/dev/sda6刚加的分区,他们的大小分别为10G、5G、8G
强行让内核读分区
~]# partx -a /dev/sda
~]# cat /proc/partitions
2. PV阶段
首先我们用pv查看一下系统上的pv数量。
~]# pvdisplay 或pvs查看。
利用pvcreate工具生成pv。
~]# pvcreate /dev/sda{3,5}
~]# pvdisplay
注意这里PE的大小等于0。
3.VG阶段
利用vgcreate工具生成VG。
首先我们用vgs查看一下现有的vg。
~]# vgs
~]# vgcreate -s 16M myvg /dev/sda{3,5}
-s指定PE的大小这里为16M.
5.lv阶段
这里vg本来有15G,而我们现在只给了10G剩下的我们可以再后面扩展。
6.文件系统阶段。
~]# mke2fs -t ext3 -b 1024 -L lablel /dev/myvg/mylv
7.挂载使用
~]# mount /dev/myvg/mylv /mnt
扩展逻辑卷分两种两种
一种是直接扩张逻辑卷就行了利用原来vg里面原有的pe来放大lv的容量就能完成。
~]# lvextend -L 15G /dev/myvg/mylv
# resize2fs -f /dev/myvg/mylv
一种是需要先扩张物理边界再扩张逻辑边界。这种情况比较复杂,也较为常见。
下面我们就利用原来千剩下的/dev/sda6l来进行扩展。
首先利用pvcreate来构建pv。
~]# pvcreate /dev/sda6
利用vg
~]# vgextend myvg /dev/sda6
~]# lvextend /dev/myvg/mylv /dev/sda6
通过resize2fs将文件系?????统的总容量增加
~]# df -h
~]# resize2fs -f /dev/myvg/mylv
注意扩张文件系统不需要卸载,可以在线执行,而缩减文件系统则必须要卸载,即离线进行。
缩减文件系统
卸载文件系统必须要先卸载
~]# umount /mnt
这里将/dev/sda6抽离出来。
强制检测和修复分区。
~]# fsck -f /dev/myvg/mylv
缩减逻辑分区
~]# lvresize -L -8G /dev/myvg/mylv
缩减物理分区
~]# vgreduce /myvg /dev/sda6
移除pv
~]# pvremove /dev/sda6