lvmraid vs. mdadm¶
我在改进 Gluster存储底层文件系统 ,对原有 CentOS 7 部署Gluster 11 改进为 LVM on Software RAID,以实现清晰的GlusterFS brick
,支持GlusterFS的Scale out。
这里有一个 Linux 软RAID 方案的选择问题: 究竟应该直接选择 LVM RAID( lvmraid ) 来完成一个软件层包含RAID+LVM ,还是采用 mdadm 软RAID构建 构建稳定的 Linux 软RAID 再在其上构建LVM ?
一句话概括¶
LVM RAID( lvmraid ) 是近年来逐渐在 Linux LVM逻辑卷管理 完善的新功能(特别是RAID5/6),RAID功能没有
mdadm
这样经历过长期的生产验证,并且也有反馈性能较差。Arch Linux 社区文档同时提供了 LVM RAID( lvmraid ) 以及 archlinux: LVM on software RAID 文档,采用 mdadm 软RAID构建 实现软RAID方案更为常见
备注
我在生产环境采用 mdadm 软RAID构建 构建稳定的 mdadm构建RAID10 ,然后在软RAID之上使用 Linux LVM逻辑卷管理 构建卷管理,最终部署 在软RAID10 + LVM上CentOS 7 部署Gluster 11
个人的实验室环境,我将模拟测试 LVM RAID( lvmraid ) 进行对比和学习
LVM和mdadm差异¶
LVM和 mdadm 软RAID构建 都是操作系统级别提供的存储管理软件:
LVM是磁盘控制器和操作系统之间的抽象层: 将多个磁盘空间合并为一个卷,然后划分为多个逻辑磁盘
LVM可以提供动态添加磁盘容量功能,但是LVM自身不提供任何数据冗余
LVM使用DM (Device Mapper)驱动程序来实现RAID,
LVM也支持绕过DM来创建RAID,但是通常性能较差
虽然LVM通过 条带化逻辑卷管理(LVM) 可以实现类似
RAID 0
的条代化性能优化(数据直接分发到多个磁盘),但是也带来了限制: 不得不使用正在使用磁盘数量的倍数来扩展磁盘,并且添加新磁盘组是,条代化不会同时在所有磁盘上进行,而是在每个磁盘组内部进行不过 LVM RAID( lvmraid ) 提供了统一的命令行接口,使用较为方便
mdadm 软RAID构建 主要就是提供冗余,直接和磁盘通信并且在物理层面上在磁盘之间分发数据
多个磁盘组成 mdadm 软RAID构建 RAID阵列在操作系统中显示为单独的磁盘驱动器
可以按照常规磁盘驱动器相同方式进行操作
mdadm
在内核级别添加了RAID支持(而LVM是使用MD驱动程序来处理磁盘)mdadm 软RAID构建 构建的软RAID具有最高的性能,因为它们没有任何其他驱动程序和实用程序形式的“中间人”来向驱动器发送命令
通常应该使用
mdadm
来构建软件RAID,更快,更可靠
结合LVM和mdadm¶

推荐方案是采用 LVM on software RAID
:
物理磁盘首先通过 mdadm 软RAID构建 构建出 Linux 软RAID
在软RAID之上,采用 Linux LVM逻辑卷管理 实现逻辑卷的划分和调整,可以充分使用磁盘空间并实现quota
注意: 当结合 软RAID + LVM ,必须将软RAID建立在底层,在软RAID之上构建LVM卷,否则会导致性能问题,并且非常难以维护(磁盘替换困难)