CentOS 6.4下LVM的使用
2014-10-29
背景
系统有9块盘,每个320GB,之前服务器(CentOS 6.3)上磁盘分配情况:选取一块盘作为系统盘,划分/boot
、swap
、/
、/home
;然后,将剩余的8块盘,逐个格式化,并mount到系统盘的某个目录下。现在的问题是:某系统要上线,需要一个足够大的空间来存储数据,如果使用上述的方案,每个目录最大的存储空间都只有320GB,还是不够大,今后可能面临分区扩容的问题,使用静态分区,扩容有些麻烦。而LVM(Logical Volume Management,逻辑卷管理)能够将多个磁盘/分区组合在一起,抽象为一个逻辑上的分区,即,利用LVM技术,8块盘可以组成一个2.5T大小的分区,这样问题就解决了。
注意:上面利用LVM来管理8块盘的方案,只是初步想法,不是最终方案。
LVM是什么
LVM(Logical Volume Management,逻辑卷管理),一大核心功能是:对磁盘分区进行动态管理。当前无论在Linux、类Unix以及其他Windowns操作系统上,都存在LVM管理软件。
LVM要解决的问题
LVM要解决的典型问题:一块磁盘的空间160GB,其存满数据后,需要扩容,怎么办?传统静态分区时,需要将磁盘中近160GB的数据复制到1TB的磁盘上,然后,使用1TB的磁盘替换掉原来160GB的磁盘即可(替换:只要是挂载点替换一下就可以了)。LVM有更好的思路,来解决这个问题吗?
LVM原理简介
要解决上面磁盘空间不足时,磁盘的扩容问题,LVM提供了一个基本思路:LVM将底层的磁盘封装抽象为逻辑卷(logical volume),上层应用不直接从物理磁盘分区中读数据,而是从逻辑卷中读数据;LVM负责底层磁盘到逻辑卷的映射和管理;增加底层磁盘时,通过LVM可以为逻辑卷动态扩充容量,而这对上层应用是无影响的(透明的)。说这么多,总结一点:LVM提高了磁盘管理的灵活性。
LVM原理详解
上面简要说了一点点LVM的基本原理,吃饭要吃饱、做事要做好,OK,把LVM的原理好好理解一下。有几个概念要好好说一说。
PV: Physical Volume
PV(Physical Volume),物理卷
- 物理卷在LVM系统中处于最底层。
- 物理卷可以是整个硬盘、硬盘上的分区或从逻辑上与磁盘分区具有同样功能的设备(如:RAID)。
- 物理卷是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
notes(ningg):为什么要有PV?直接使用物理分区不行吗?
VG: Volume Group
VG(Volume Group),卷组
- 卷组建立在物理卷之上,它由一个或多个物理卷组成。
- 卷组创建之后,可以动态地添加物理卷到卷组中,在卷组上可以创建一个或多个“LVM分区”(逻辑卷)。
- 一个LVM系统中可以只有一个卷组,也可以包含多个卷组。
- LVM的卷组类似于非LVM系统中的物理硬盘。
LG: Logical Volume
LG(Logical Volume),逻辑卷
- 逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间。
- 逻辑卷创建之后,其大小可以伸缩。
- LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如,/home或者/usr等)。
PE: Physical Extent
PE(Physical Extent),物理区域,
- 每一个物理卷被划分为基本单元(称为PE),具有唯一编号的PE是可以被LVM寻址的最小存储单元。
- PE的大小可根据实际情况在创建物理卷时指定,默认为4 MB。
- PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小需要一致。
LE: Logical Extent
LE(Logical Extent),逻辑区域
- 逻辑区域也被划分为可被寻址的基本单位(称为LE)。
- 在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
notes(ningg):PE、LE,是否与文件系统中block(逻辑块)类似?而block大,能够提升磁盘IO速度;但block过大,造成磁盘空间的浪费?
VGDA
和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的卷组描述符区域(Volume Group Descriptor Area, VGDA)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
注意:/boot分区不能位于卷组中,因为引导装载程序无法从逻辑卷中读取。如果你想把/分区放在逻辑卷上,必须创建一个与卷组分离的/boot分区。
小结
我们在创建好LV以后,我们会在 /dev 目录下看到我们的LV信息,例如 /dev/vgname/lvname, 我们每创建一个VG,其会在/dev目录下创建一个以该VG名字命名的文件夹,在该VG的基础上创建好LV以后,我们会在这个VG目录下多出一个以LV名字命名的逻辑卷。
下面我们来对整个LVM的工作原理进行一个总结:
- 物理磁盘/物理分区,被格式化为PV,本质:空间被划分为一个个的PE
- 不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
- LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
- LV现在就直接可以格式化后挂载使用了
- LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
notes(ningg):在创建PV时,需要物理磁盘/物理分区提前进行格式化吗?RE:不需要格式化的,直接创建PV就行。
CentOS的推荐配置doing..
使用LVM来管理磁盘时,CentOS有没有推荐的配置?
LVM只有优点吗? LVM有没有副作用?降低磁盘IO?耗费一定的磁盘空间?LVM管理时,有没有CPU、磁盘资源的浪费?
(下面还没有修改,参考来源:理解 LVM (Logical Volume Manager))
是否使用 LVM?
在决定是否使用 LVM 前请先了解下 LVM 的优缺点。
使用 LVM 的优势:
- 文件系统可以跨多个磁盘,因此大小不会受物理磁盘的限制。
- 可以在系统运行状态下动态地扩展文件系统大小。
- 可以增加新磁盘到 LVM 的存储池中。
- 可以以镜像的方式冗余重要数据到多个物理磁盘上。
- 可以很方便地导出整个卷组,并导入到另外一台机器上。
使用 LVM 的限制:
- 系统、文件系统出现问题时,LVM处理起来麻烦,关键要看处理者的能力
- 在从卷组中移除一个磁盘时必须使用 reducevg,否则会出问题。
- 当卷组中的一个磁盘损坏时,整个卷组都会受影响。
- 不能减小文件系统大小(受文件系统类型限制)。
- 因为加入了额外的操作,存储性能会受影响(使用 Stripe 的情况另当别论)。
- 使用 LVM 将获得更好的可扩展性和可操作性,但却损失了可靠性和存储性能,总的说来就是在这两者间选择。
使用要点
按需分配文件系统大小,不要一次性分配太大的空间给文件系统,剩余的空间可以放在存储池中,在需要时再扩充到文件系统中。 把不同的数据放在不同的卷组中,这样在做系统升级或数据迁移操作时会比较方便。
Linux下LVM命令
LVM要实现的如下几个功能:
- 创建PV、VG、LV
- 向VG中增加新的PV
- 从VG中移除PV
- 动态调整LV容量
- 删除PV、VG、LV
notes(ningg):LV本质由PE组成的,那一个LV对应的所有PE是均匀分布在PV上吗?有什么策略?
PV\VG\LV的创建、删除
来个表格吧:
命令 | 说明 |
---|---|
pvcreate |
创建PV |
pvdisplay /pvs |
查询PV详情 |
pvremove |
删除PV |
vgcreate |
创建VG |
vgdisplay /vgs |
查询VG详情 |
vgremove |
删除VG |
lvcreate |
基于VG创建LV |
lvdisplay /lvs |
查询LV详情 |
lvremove |
删除LV |
mkfs |
格式化LV |
mount |
挂载LV |
umount |
卸载LV |
注意:先删除LV,再删除VG,最后删除PV。
LV的动态调整doing…
LV的动态调整:参考LVM逻辑卷的拉伸及缩减,简单理解LVM(Logical Volume Manager)的基本原理
参考资料
杂谈
我一直坚持读第一手的资料,因此,这次我直接就想到了CentOS官网的文章;不过读起来还是有些羞涩的,第一次接触LVM,很多东西云里雾里,相反查到的几篇blog还是不错的,有配图、有简洁的表述;因此,个人感觉,对于很生疏的东西,查看网上的blog反倒是入门的好方法;有了简单的入门知识,又希望深入理解的,那再去查第一手的资料就好了。
原文地址:https://ningg.top/use-lvm/