1、Linux系统中的软raid虽然企业使用的不多,但是对于新手来说用来理解学习raid的原理以及实现方式还是很不错的,目前企业中使用的一般都是硬件raid,硬件raid的性能、稳定性都更好一些。RAID能够对数据提供冗余,而LVM能够扩展磁盘大小,如果把两者结合起来会是神马情况呢?是否既能扩展又能冗余呢?

2、RAID是什么?

 独立硬盘冗余陈列(RAID,Redundant Array of Independent DIsks),原来的称呼是廉价磁盘冗余阵列(RAID,Redundant of Inexpensive Disks),简称磁盘阵列。其基本思想是把多个便宜的硬盘组合起来,组成一个磁盘阵列组,使性能达到超过价格昂贵、容量巨大的磁盘。RAID有很多种版本,综合来讲有一下好处:增强数据集成度,增强容错功能,增加容量。磁盘阵列一般分为以下几种:RAID0、RAID1、RAID4、RAID5、RAID6、RAID10、RAID01等。通俗的来将,RAID就是把多个磁盘组合成为一个逻辑扇区,而此时,操作系统只会把它当成一个磁盘,RAID一般用在服务上,并且是由多个完全一样的磁盘组合而成,随着硬盘越来越便宜,它成了大家的一个选择,特别是制作视频或者音频文件时。

3、RAID的几种类型:

 1)raid0: 至少需要两块磁盘,没有容错能力,读写性能都提升,100%

 2)raid1: 至少需要两块磁盘,镜像,硬件容错能力,读性能提升,写性能下降,50%

 3)raid4: 至少需要三块磁盘,允许一块盘出错,读写性能提升,(n-1)/n

 4)raid5: 至少需要三块磁盘,允许一块盘出错,读写性能提升,(n-1)/n

 5)raid6: 至少需要四块磁盘,允许两块盘出错,读写性能提升,(n-2)/n

 6)raid10: 至少需要四块磁盘,允许不同组内各坏一块盘,读写性能提升,50%

注意:RAID4和RAID5的区别:RAID4校验位在一块硬盘上,RAID5的校验位分散在每一块硬盘上。

4、RAID的创建命令:mdadm,此命令的配置文件为/etc/mdadm.conf

mdadm: 模式化的工具

-A:装配模式

 -A /path/to/raid_device DEVICES: 使用指定的设备装配并启动指定的RAID设备

-C:创建模式  

 1)-n #: 用于创建RAID设备的设备个数;

 2)-x #: 热备磁盘的个数;

 3)-l 级别:

 4)-a yes: 自动为创建的raid设备创建设备文件;

 5)-c Chunk_Size: 指定分块大小,默认为512,单位为KB

-F:监控模式

管理模式:

    1) -f:模拟损坏 mdadm /dev/md# -f /dev/sd#

    2)-r:移除硬盘 mdadm /dev/md# -r /dev/sd#

    3)-a:增加硬盘 mdadm /dev/md# -a /dev/sd#

-D:显示阵列的详细信息 --detail

-S:停止指定的RAID设备

watch命令:可以用来查看RAID的创建进度

使用格式:watch -n # 'COMMAND'

 -n #:每隔#长时间执行一次指定的命令;单位为秒

5、LVM是什么?

 逻辑卷管理器(LVM)是Linux核心提供的逻辑卷管理的一种功能,它在硬盘的硬盘分区之上又创建一个逻辑层以方便管理磁盘分区系统。

6、LVM中PV、VG、LV、PE、LE的概念:

 1)PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。

 2)VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。

 3)LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。

 4)PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。

 5)LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

7、LVM命令:

物理卷管理命令:pvcreate、pvremove、pvscan、pvs、pvdisplay、pvmove

卷组的管理命令:vgcreate、vgs、vgdisplay、vgextend、vgreduce、vgremove、vgrename

vgcreate:

 -s:设定PE大小,默认为4M

逻辑卷的管理命令:lvcreate、lvdisplay、lvs、lvextend、lvreduce、lvremove

lvcreate:

 -L:空间大小

 -n:lv名称

#lvcreate -L size -n name vg_name

逻辑卷扩展的步骤:

 1)先确定扩展的大小,并确保所属的卷组有足够的剩余空间

 2)扩展物理边界

    # lvextend -L Size /path/to/lv_device

 3)扩展逻辑边界

    # resize2fs /path/to/lv_device

缩减逻辑卷的步骤:

 1)卸载卷,并执行强制检测

 2)缩减逻辑边界:

    # resi2fs /path/to/lv_device Size

 3) 缩减物理边界:

    # lvreduce -L Size /path/to/lv_device

扩展卷组:

 1)准备要添加的物理卷

 2)扩展卷组,添加物理卷至卷组中

    # vgextend vg_name /path/to/pv_device

缩减卷组:

 1)确定要移除的物理卷的总空间大小,要小于VG当前的可用空间大小

 2)将要移除的物理卷上的所有PE移动至其他PV

    # pvmove /path/to/pv_device

 3) 缩减VG

    # vgreduce vg_name /path/to/pv_device

快照卷:逻辑卷的一种,通常为只读,可以保存某一时刻的状态。

    # lvcreate -s -L Size -n name -p r /path/to/raiginal_lv_devie

8、lvm原理图:

Linux—RAID和LVM的实现

9、具体实现:由于我硬盘空间有限,我这里就模拟四个分区当四块硬盘来使用。

Linux—RAID和LVM的实现

RAID5创建:

Linux—RAID和LVM的实现

创建过程:

Linux—RAID和LVM的实现

Linux—RAID和LVM的实现

创建结束:

Linux—RAID和LVM的实现

模拟损坏、重建过程:

Linux—RAID和LVM的实现


Linux—RAID和LVM的实现

Linux—RAID和LVM的实现

RAID5创建成功,硬盘的移除和替换这里不再在演示

对/dev/md0实现LVM:

 1) 创建PV

Linux—RAID和LVM的实现

 2) 创建VG

Linux—RAID和LVM的实现

Linux—RAID和LVM的实现

 3) 创建LV

Linux—RAID和LVM的实现

创建快照:

Linux—RAID和LVM的实现

Linux—RAID和LVM的实现

温馨提醒:生产环境中不要把RAID和LVM结合来使用,结合使用会出现问题。由于我这是实验环境,所以我直接在做好RAID5的磁盘上演示LVM的配置过程,扩展逻辑卷、缩减逻辑卷、扩展卷组、缩减卷组不再演示。。。感兴趣的朋友可以测试一下。